have to be some standardpredefined types they usually include numbers and logical values if an ordering exists among the individual valuesthen the type is said to be ordered or scalar in oberonall unstructured types are orderedin the case of explicit enumerationthe values are assumed to be ordered by their enumeration sequence with this tool in handit is possible to define primitive types and to build conglomeratesstructured types up to an arbitrary degree of nesting in practiceit is not sufficient to have only one general method of combining constituent types into structure with due regard to practical problems of representation and usea general-purpose programming language must offer several methods of structuring in mathematical sensethey are equivalentthey differ in the operators available to select components of these structures the basic structuring methods presented here are the arraythe recordthe setand the sequence more complicated structures are not usually defined as static typesbut are instead dynamically generated during the execution of the programwhen they may vary in size and shape such structures are the subject of chap and include listsringstreesand generalfinite graphs variables and data types are introduced in program in order to be used for computation to this enda set of operators must be available for each standard data type programming languages offers certain set of primitivestandard operatorsand likewise with each structuring method distinct operation and notation for selecting component the task of composition of operations is often considered the heart of the art of programming howeverit will become evident that the appropriate composition of data is equally fundamental and essential the most important basic operators are comparison and assignmenti the test for equality (and for order in the case of ordered types)and the command to enforce equality the fundamental difference between these two operations is emphasized by the clear distinction in their denotation throughout this text test for equalityx (an expression with value true or falseassignment to xx : ( statement making equal to ythese fundamental operators are defined for most data typesbut it should be noted that their execution may involve substantial amount of computational effortif the data are large and highly structured for the standard primitive data typeswe postulate not only the availability of assignment and comparisonbut also set of operators to create (computenew values thus we introduce the standard operations of arithmetic for numeric types and the elementary operators of propositional logic for logical values standard primitive types standard primitive types are those types that are available on most computers as built-in features they include the whole numbersthe logical truth valuesand set of printable characters on many computers fractional numbers are also incorporatedtogether with the standard arithmetic operations we denote these types by the identifiers integerrealbooleancharset the type integer the type integer comprises subset of the whole numbers whose size may vary among individual computer systems if computer uses its to represent an integer in two' complement notationthen the admissible values must satisfy - - < - it is assumed that all operations on data of this type are exact and correspond to the ordinary laws of arithmeticand that the computation will be interrupted in the case of result lying outside the representable subset this event is called overflow the standard operators are the four basic arithmetic operations of addition (+)subtraction ()multiplication (and