home *** CD-ROM | disk | FTP | other *** search
-
-
-
- Chapter 3
- SIMPLE DATA TYPES
-
-
- WHAT IS A DATA TYPE?
- _________________________________________________________________
-
- A type in Pascal, and in several other popular programming
- languages, defines a variable in such a way that it defines a range
- of values which the variable is capable of storing, and it also
- defines a set of operations that are permissible to be performed
- on variables of that type. TURBO Pascal has eight basic data types
- which are predefined and can be used anywhere in a program provided
- you use them properly. This chapter is devoted to illustrating the
- use of these eight data types by defining the allowable range of
- values that can be assigned to them, and by illustrating the
- operations that can be done to variables of these types. The eight
- types and a very brief description follows;
-
- integer Whole numbers from -32768 to 32767
- byte The integers from 0 to 255
- real Floating point numbers from 1E-38 to 1E+38
- boolean Can only have the value TRUE or FALSE
- char Any character in the ASCII character set
- shortint The integers from -128 to 127
- word The integers from 0 to 65535
- longint The integers from -2147483648 to 2147483647
-
- Please note that four of these types of data (char, shortint, word,
- and longint) are not a part of the standard Pascal definition but
- are included as extensions to the TURBO Pascal compiler.
-
- In addition to the above data types TURBO Pascal version 5.0 and
- later have the following data types available;
-
- single Real type with 7 significant digits
- double Real type with 15 significant digits
- extended Real type with 19 significant digits
- comp The integers from about -10E18 to 10E18
-
- TURBO Pascal version 5.0 and newer have these four types available
- which use the 80X87 math coprocessor. Because TURBO Pascal has a
- software emulator for the floating point operations, an 80X87 math
- coprocessor is not absolutely required to use these new types with
- these versions. Of course, your resulting program will run much
- faster if you have the coprocessor available for use by the
- program.
-
- A complete definition of the available types for each compiler can
- be found in the TURBO Pascal reference manual. It would be good
- to read these pages now for a good definition prior to learning how
- to define and use them in a program. Note that all of these will
- be used in example programs in this chapter.
-
-
- Page 3-1
-
- Chapter 3 - Simple Data Types
-
- OUR FIRST VARIABLES
- _________________________________________________________________
-
- The integers are by far the easiest to ==============
- understand so we will start with a simple INTVAR.PAS
- program that uses some integers in a very simple ==============
- way. Load INTVAR.PAS into your TURBO system and
- let's take a look at it.
-
- Immediately following the program statement is another reserved
- word, var. This reserved word is used to define a variable before
- it can be used anywhere in the program. There is an unbroken rule
- of Pascal that states "Nothing can be used until it is defined."
- The compiler will complain by indicating a compilation error if
- you try to use a variable without properly defining it. It seems
- a bit bothersome to have to define every variable prior to its use,
- but this rule will catch many spelling errors of variables before
- they cause trouble. Some other languages will simply define a new
- variable with the new name and go merrily on its way producing some
- well formatted garbage for you.
-
- Notice that there is only one use of the reserved word var, but it
- is used to define three different variables, Count, X, and Y. Once
- the word var is recognized, the compiler will continue to recognize
- variable definitions line after line until it finds another
- reserved word. It would be permissible to put a var on the second
- line also but it is not necessary. It would also be permissible
- to put all three variables on one line but your particular
- programming style will dictate where you put the three variables.
- Following the colon on each line is the word integer which is a
- standard identifier, and is therefore different from a reserved
- word. A standard identifier is predefined like a reserved word,
- but you can redefine it, thereby losing its original purpose and
- meaning. For now and for a long time, don't do that.
-
-
- OUR FIRST ARITHMETIC
- _________________________________________________________________
-
- Now that we have three variables defined as integer type variables,
- we are free to use them in a program in any way we desire as long
- as we use them properly. If we tried to assign a real value to X,
- the compiler will generate an error, and prevent a garbage output.
- Observe the start of the main body of the program. There are three
- statements assigning values to X, Y, and Count. A fine point of
- mathematics would state that Count is only equal to the value of
- X+Y until one of them is modified, therefore the equal sign used
- in so many other languages is not used here. The sign := is used,
- and can be read as "is replaced by the value of," when reading a
- listing. Another quicker way is to use the word "gets". Thus X
- := X + 1 would be read, "X gets the value of X plus 1". We will
- see later that the simple equal sign is reserved for another use
- in Pascal.
-
- Page 3-2
-
- Chapter 3 - Simple Data Types
-
- The first three statements give X the value of 12, Y the value of
- 13, and Count the value of 12 + 13 or 25. If we have a requirement
- to get those values out of the computer, we need another extension
- to the Writeln statement. The first part of the data within the
- parentheses should be very familiar to you now, but the second part
- is new.
-
- Multiple outputs can be handled within one Writeln if the fields
- are separated by a comma. To output a variable, simply write the
- variable's name in the output field. The number following the
- variable in each case is the number of output columns to be used
- by the output data. This number is optional and can be omitted
- allowing the system to use as many columns as it needs. For
- purposes of illustration, they have all been assigned different
- numbers of columns. At this point, you can compile and run
- INTVAR.PAS and examine its output.
-
-
- To illustrate the various ways to output data, ===============
- load INTVAR2.PAS and observe that even though INTVAR2.PAS
- the output is identical, it is output in a ===============
- completely different manner. The Writeln
- statements are broken into pieces and the
- individual pieces are output with Write and Writeln statements.
- Observe especially that a Writeln all by itself simply moves the
- cursor to the beginning of a new line on the video monitor.
-
- Compile and run this program and observe its output after you are
- certain that the two programs are actually identical.
-
-
- NOW LET'S USE LOTS OF VARIABLES
- _________________________________________________________________
-
- Load ALLVAR.PAS to observe a short program using ==============
- five of the basic data types. The variables are ALLVAR.PAS
- simply assigned values and the values are ==============
- printed. A complete and detailed description of
- the options available in the Write statement is
- given in the TURBO Pascal reference manual. Check the index to
- find this information for the version you are using. It would be
- to your advantage to read this section at this time since very
- little explanation will be given about Write statements from this
- point on. We will discuss the method by which we can write to disk
- files or other output devices in a later chapter of this tutorial.
-
- Back to the basic types. Pascal does lots of cross checking for
- obvious errors. It is illegal to assign the value of any variable
- with a value that is of the wrong type or outside the allowable
- range of that variable. There are routines to convert from one
- system to another when that is necessary. Suppose, for example,
- that you wished to use the value of an integer in a calculation of
- real numbers. That is possible by first converting the integer
- into a real number of the same value and using the new real type
-
- Page 3-3
-
- Chapter 3 - Simple Data Types
-
- variable in the desired calculations. The new real type variable
- must of course be defined in a var statement as a real type
- variable before it can be used. Details of how to do several
- conversions of this kind will be given in the example program named
- CONVERT.PAS later in this chapter.
-
- Since we have some variables defined, it would ================
- be nice to use the properties of computers for REALMATH.PAS
- which they are famous, namely some arithmetic. ================
- Two programs are available for your observation
- to illustrate the various kinds of math
- available, REALMATH.PAS using real variables, and INTMATH.PAS using
- integer variables. You can edit, compile, and run these on your
- own with no comment from me except the comments embedded into the
- source files. You should output some of the results using the
- method of outputting illustrated in line 24 of the previous example
- program. Read the definition of how to do this in your TURBO
- Pascal User's Guide.
-
- The example program named INTMATH.PAS ===============
- illustrates some of the math capabilities of INTMATH.PAS
- Pascal when using integer class variables. A ===============
- byte type variable is used just like an integer
- variable but with a much smaller allowable
- range. Only one byte of computer memory is used for each variable
- defined as a byte type variable, but 2 are used for each integer
- type variable.
-
-
- BOOLEAN VARIABLES
- _________________________________________________________________
-
- Let's take a look at a boolean variable, which is only allowed to
- take on two different values, TRUE or FALSE. This variable is used
- for loop controls, end of file indicators or any other TRUE or
- FALSE conditions in the program. Variables can be compared to
- determine a boolean value. A complete list of the relational
- operators available with Pascal is given in the following list.
-
- = equal to
- <> not equal to
- > greater than
- < less than
- >= greater than or equal to
- <= less than or equal to
-
- These operators can be used to compare any of ================
- the simple types of data including integer, BOOLMATH.PAS
- char, byte, and real type variables or ================
- constants, and they can be used to compare
- boolean variables. An illustration is the best
- way to learn about the boolean variable so load BOOLMATH.PAS and
- observe it.
-
-
- Page 3-4
-
- Chapter 3 - Simple Data Types
-
- In BOOLMATH.PAS we define a few boolean variables and two integer
- type variables for use in the program and begin by assigning values
- to the two integer variables. The expression Junk = Who in line
- 14 is actually a boolean operation that is not true since the value
- of Junk is not equal to the value of Who, The result is therefore
- FALSE and that value is assigned to the boolean variable A. The
- boolean variable B is assigned the value of TRUE because the
- boolean expression Junk = (Who - 1) is true. The boolean variables
- C and D are likewise assigned some values in a manner that should
- not need any comment. After assigning a value to the variable with
- the big name, the values are all printed out. Note that if either
- A or B is TRUE, the result is TRUE in line 18.
-
-
- WHERE DO WE USE THE BOOLEAN VARIABLES?
- _________________________________________________________________
-
- We will find many uses for the boolean type variable when we study
- the loops and conditional statements soon, but until then we can
- only learn what they are. Often, in a conditional statement, you
- will want to do something if both of two things are true, in which
- case you will use the reserved word and with two boolean
- expressions. If both are true, the result will be true. Line 29
- is an example of this. If the boolean variables B, C, and D, are
- all true, then the result will be true and A will be assigned the
- value of TRUE. If any one of them is false, the result will be
- false and A will be assigned the value of FALSE.
-
- In Line 31, where the or operator is illustrated, if any of the
- three boolean variables is true, the result will be true, and if
- all three are false, the result will be false. Another boolean
- operator is the not which is illustrated in line 30. Examine line
- 33 which says the result is true only if the variable Junk is one
- less than Who, or if Junk is equal to Who. This should indicate
- the level of flexibility available with a boolean variable.
-
- Compile and run this program, then add some additional printout to
- see if the boolean variables change in the manner you think they
- should in the last few statements.
-
-
- SHORT CIRCUIT OR COMPLETE EVALUATION?
- _________________________________________________________________
-
- Suppose you have several boolean expressions "and"ed together, and
- when evaluation starts, the first expression results in a FALSE.
- Since the first expression is FALSE, it is impossible for the
- following expressions to ever allow the final result to be TRUE
- because the first FALSE will force the answer to be FALSE. It
- seems like a waste of execution time to continue evaluating terms
- if the final result is already known, but that is exactly what
- standard Pascal will do because of the language definition. This
- is known as complete evaluation of a boolean expression. If the
- system is smart enough to realize that the final result is known,
-
- Page 3-5
-
- Chapter 3 - Simple Data Types
-
- it could stop evaluation as soon as the final result is known.
- This is known as short circuit evaluation of a boolean expression,
- and could also be applied if a term of an "or"ed boolean expression
- resulted in a TRUE, since the result would always be TRUE.
-
- TURBO Pascal versions 5.0 and later, allows you to choose between
- complete evaluation or short circuit evaluation. The default for
- these compilers is the short circuit form but it can be changed
- through the Options menu when you are using the integrated
- environment, or through use of a compiler directive.
-
-
- LET'S LOOK AT THE CHAR TYPE VARIABLE
- _________________________________________________________________
-
- A char type variable is a very useful variable, ================
- but usually not when used alone. It is very CHARDEMO.PAS
- powerful when used in an array or some other ================
- user defined data structure which is beyond the
- scope of this chapter. A very simple program,
- CHARDEMO.PAS is included to give you an idea of how a char type
- variable can be used. Study, then compile and run CHARDEMO.PAS for
- a very brief idea of what the char type variable is used for.
-
- Examine the sample program CONVERT.PAS for ===============
- several examples of converting data from one CONVERT.PAS
- simple variable to another. The comments make ===============
- the program self explanatory.
-
-
- EXTENDED INTEGER TYPES
- _________________________________________________________________
-
- Display the program EXTINT.PAS for an example of ==============
- using the extended integer types available with EXTINT.PAS
- the Pascal compiler. Four variables are defined ==============
- and values assigned to each, then the results
- are displayed. When you compile and run the
- program, you will see that the variable Big_int can indeed handle
- a rather large number.
-
- It must be pointed out that the calculation in lines 13 and 21
- result in a different answer even though they appear to be
- calculating the same thing. An explanation is in order. The
- quantity named MaxInt used in lines 10 and 13 is a constant built
- into the system that represents the largest value that an integer
- type variable can store. On the first page of this chapter we
- defined that as 32767 and when running the program you will find
- that Index displays that value as it should. The constant MaxInt
- has a type that is of a universal_integer type as do all of the
- numeric constants in line 13. The result then is calculated to the
- number of significant digits dictated by the left hand side of the
- assignment statement which is of type longint resulting in a very
- large number.
-
- Page 3-6
-
- Chapter 3 - Simple Data Types
-
-
- When we get to line 21, however, the variable Index is of type
- integer so the calculations are done as though the constants were
- of type integer also which causes some of the more significant
- digits to be truncated. The truncated result is converted to type
- longint and assigned to the variable Big_int and the truncated
- value is displayed by line 22.
-
- After that discussion it should be apparent to you that it is
- important what types you use for your variables. It must be
- emphasized that it would not be wise to use all large type
- variables because they use more storage space and slow down
- calculations. Experience will dictate the proper data types to use
- for each application.
-
-
- EXTENDED REAL TYPES
- _________________________________________________________________
-
- Display the program EXTREAL.PAS for an example ===============
- using the new "real" types available with the EXTREAL.PAS
- newer versions of TURBO Pascal. ===============
-
- If you are using a version of TURBO Pascal which
- is 5.0 or newer, you can use the 80X87 math coprocessor. If you
- do not have a math coprocessor, TURBO Pascal version 5.0 and newer
- has an emulator mode which can be used as instructed in the User's
- Guide. Keep in mind that, even though the emulator will allow you
- to use these newer data types, the resulting program will execute
- much slower due to the extra calculations required.
-
- This program should be self explanatory so nothing will be said
- except that when you run it, you can observe the relative accuracy
- of each of the variable types. Once again, you should keep in mind
- that use of the larger "real" types costs you extra storage space
- and reduced run-time speed, but gives you more accuracy.
-
-
- PROGRAMMING EXERCISE
- _________________________________________________________________
-
- 1. Write a program containing several variable definitions and
- do some math on them, printing out the results.
-
-
-
-
-
-
-
-
-
-
-
-
- Page 3-7