knowledge that the data are to be stored in computermay lead to binarypositional representation of integersand the final decision could be to represent binary digits by the electric charge in semiconductor storage device evidentlythe first decision in this chain is mainly influenced by the problem situationand the later ones are progressively dependent on the tool and its technology thusit can hardly be required that programmer decide on the number representation to be employedor even on the storage device characteristics these lower-level decisions can be left to the designers of computer equipmentwho have the most information available on current technology with which to make sensible choice that will be acceptable for all (or almost allapplications where numbers play role in this contextthe significance of programming languages becomes apparent programming language represents an abstract computer capable of interpreting the terms used in this languagewhich may embody certain level of abstraction from the objects used by the actual machine thusthe programmer who uses such higher-level language will be freed (and barredfrom questions of number representationif the number is an elementary object in the realm of this language the importance of using language that offers convenient set of basic abstractions common to most problems of data processing lies mainly in the area of reliability of the resulting programs it is easier to design program based on reasoning with familiar notions of numberssetssequencesand repetitions than on bitsstorage unitsand jumps of coursean actual computer represents all datawhether numberssetsor sequencesas large mass of bits but this is irrelevant to the programmer as long as he or she does not have to worry about the details of representation of the chosen abstractionsand as long as he or she can rest assured that the corresponding representation chosen by the computer (or compileris reasonable for the stated purposes the closer the abstractions are to given computerthe easier it is to make representation choice for the engineer or implementor of the languageand the higher is the probability that single choice will be suitable for all (or almost allconceivable applications this fact sets definite limits on the degree of abstraction from given real computer for exampleit would not make sense to include geometric objects as basic data items in general-purpose languagesince their proper repesentation willbecause of its inherent complexitybe largely dependent on the operations to be applied to these objects the nature and frequency of these operations willhowevernot be known to the designer of general-purpose language and its compilerand any choice the designer makes may be inappropriate for some potential applications in this book these deliberations determine the choice of notation for the description of algorithms and their data clearlywe wish to use familiar notions of mathematicssuch as numberssetssequencesand so onrather than computer-dependent entities such as bitstrings but equally clearly we wish to use notation for which efficient compilers are known to exist it is equally unwise to use closely machineoriented and machine-dependent languageas it is unhelpful to describe computer programs in an abstract notation that leaves problems of representation widely open the programming language pascal had been designed in an attempt to find compromise between these extremesand the successor languages modula- and oberon are the result of decades of experience [ - oberon retains pascal' basic concepts and incorporates some improvements and some extensionsit is used throughout this book [ - it has been successfully implemented on several computersand it has been shown that the notation is sufficiently close to real machines that the chosen features and their representations can be clearly explained the language is also sufficiently close to other languagesand hence the lessons taught here may equally well be applied in their use the concept of data type in mathematics it is customary to classify variables according to certain important characteristics clear distinctions are made between realcomplexand logical variables or between variables representing individual valuesor sets of valuesor sets of setsor between functionsfunctionalssets of functionsand