home *** CD-ROM | disk | FTP | other *** search
- CHAPTER 10 - Standard Input/Output
-
-
-
- During the course of this tutorial we have been using
- the WRITE and WRITELN procedures to display data, and it is
- now time to discuss them fully. Actually there is little to
- be said that has not already been said, but in order to get
- all of the data in one place they will be redefined here.
- As mentioned earlier, WRITE and WRITELN are not actually
- reserved words but are procedure calls. They are therefore
- merely identifiers that could be changed but there should
- never be a reason to do so. Lets get on to our first
- example program WRITELNX which has lots of output.
-
- MANY OUTPUT STATEMENTS
-
- Pascal has two output statements that are only slightly
- different in the way they work. The WRITELN statement
- outputs all of the data specified within it, then returns
- the cursor to the beginning of the next line. The WRITE
- statement outputs all of the data specified within it, then
- leaves the cursor at the next character where additional
- data can be output. The WRITE statement can therefore be
- used to output a line in bits and pieces if desired for
- programming convenience. The first example program for this
- chapter, WRITELNX, has many output statements for your
- observation. All outputs are repeated so you can observe
- where the present field ends and the next starts.
-
- Observe the INTEGER output statements. The first simply
- directs the system to output "index" twice, and it does with
- no separating blanks. The second statement says to output
- "index" twice also, but it instructs the system to put each
- output in a field 15 characters wide with the data right
- justified in the field. This makes the output look much
- better. This illustrates that you have complete control
- over the appearance of your output data.
-
- The REAL output statements are similar to the integer
- except that when the data is put into a field 15 characters
- wide, it is still displayed in scientific format. Adding a
- second field descriptor tells the system how many digits you
- want displayed after the decimal point. The next few lines
- illustrate the second field and its use.
-
- The BOOLEAN, CHAR, and STRING examples should be self
- explanatory. Notice that when the string is output, even
- though the string has been defined as a maximum of 10
- characters, it has been assigned a string of only 8
- characters, so only 8 characters are output.
-
-
-
-
-
- Page 46
-
-
-
-
-
-
-
-
-
- CHAPTER 10 - Standard Input/Output
-
-
- NOW FOR SOME INPUT FROM THE KEYBOARD
-
- The example file READINT will illustrate reading some
- integer data from the keyboard. A message is output with an
- interesting fact that should be pointed out. Anyplace where
- Pascal uses a string variable or constant, it uses the
- apostrophe for a delimiter. Thus, anyplace where an
- apostrophe is used in a string, it will end the string. Two
- apostrophes in a row will be construed as a single
- apostrophe within the string and will not terminate the
- string. The term 'READ' within the string will therefore be
- displayed as shown earlier in this sentence.
-
- The variable "index" is used to loop five times through
- a sequence of statements with one READ statement in it. The
- three integer variables are read in and stored with the one
- statement. If less than three are input in the statement,
- only as many as are read in will be defined, the rest will
- be unchanged. Following completion of the first loop, there
- is a second loop that will be executed 5 times with only one
- minor change, the READ statement is replaced by the READLN
- statement. At this point it would be best run this program
- trying several variations with input data.
-
- When you run READINT, it will request three integers.
- Reply with three small integers of your choice with as many
- blank spaces between each as you desire, followed by a
- carriage return. The system will echo your three numbers
- back out, and request three more. Respond with only one
- number this time, different from each of the first three.
- You will get your new number followed by your previous
- second and third number indicating that you did not re-enter
- the last two integer variables. Enter all three again, this
- time including a negative number and observe the echo once
- again.
-
- Continue entering numbers until the system outputs the
- message indicating that it will now be using the 'READLN'
- for reading data. At this point enter the same numbers that
- you did in the previous section and notice the difference,
- which is only very slight. Each time you hit the enter key
- to cause the computer to process the data you have just
- given it, it will echo the carriage return to the display,
- and the "Thank you" message will be on a new line. When
- entering data from the keyboard, the only difference in READ
- and READLN is whether or not the carriage return is echoed
- to the display following the data read operation.
-
- It should not be a surprise to you that after you enter
- the data, the data is stored within the program and can be
-
-
-
- Page 47
-
-
-
-
-
-
-
-
-
- CHAPTER 10 - Standard Input/Output
-
-
- used anywhere that integer data is legal for use. Thus, you
- could read in an integer, and use the integer to control the
- number of times through a loop, as a CASE selector, etc.
-
- TIME TO CRASH THE COMPUTER
-
- Crashing the computer will not hurt a thing. Rerun the
- above program and instead of entering integer data, enter
- some real data with decimal points, or even some character
- data. The computer should display some kind of message
- indicating that you have caused an I/O error (Input/Output),
- and most implementations of Pascal will probably abort
- operation (that simply means to stop the program and return
- control to the operating system). No harm has been done,
- simply start it again to enter more numbers or errors.
-
- READING REAL NUMBERS
-
- The example program READREAL will illustrate how to read
- real numbers into the computer. It will read an integer and
- three real numbers each time through the loop. It is
- perfectly fine to give the system a number without a decimal
- point for a real number. The computer will simply read it
- as a decimal number with zeros after the decimal point and
- consider it as a real number internally. As you found out in
- the last example program, however, it is not permissible to
- include a decimal point in the data if the computer is
- looking for an integer variable. Include some character
- data for a real number and crash the system in this program
- too.
-
- READING CHARACTER DATA
-
- The next example program, READCHAR, will read in one
- character each time through the loop and display it for you.
- Try entering more than one character and you will see that
- the extra characters will simply be ignored. It is not
- possible to crash this program because any character you
- enter will be valid.
-
- The next example, READARRY, will read in a string of
- characters and display them for you. Up to 10 characters
- will be read, and if less than 10 are read, the rest will be
- blank filled. Try entering 10 characters, then 4, to see
- that the residual 6 characters are blanked out before
- storing and printing. Since the array is fixed at ten
- characters, ten characters are always printed out, including
- trailing blanks.
-
-
-
-
-
- Page 48
-
-
-
-
-
-
-
-
-
- CHAPTER 10 - Standard Input/Output
-
-
- Finally READSTRG will also read up to 10 characters, but
- since a string is a dynamic length variable, it will only
- print out the characters you input each time, up to the
- maximum of 10 as defined in the VAR declaration. It will
- display trailing blanks if you type them in because blanks
- are valid characters.
-
- BULLET PROOF PROGRAMMING
-
- It can be frustrating to be running a program and have
- it declare an I/O error and terminate operation simply
- because you have entered an incorrect character. The
- integer and real data inputs defined earlier in this chapter
- are fine for quick little programs to do specific
- calculations, but if you are writing a large applications
- program it is better to use another technique. Since the
- character and string inputs cannot abort operation of the
- program, it is best to use them to input the variable data
- and check the data internally under your own program
- control. An error message can then be given to the operator
- and another opportunity granted to input the correct data.
- All well written large application programs use this
- technique.
-
- HOW DO I PRINT SOMETHING ON THE PRINTER
-
- With all of the Pascal knowledge you now have, it is the
- simplest thing in the world to get data to the printer. The
- example file PRINTOUT will show you graphically how to do
- it. Every WRITE or WRITELN statement is required to have a
- device identifier prior to the first output field. If there
- is none, it is automatically defaulted to the standard
- output device, the display monitor. The example program has
- a few outputs to the monitor with the device identifier
- included, namely "output". This is only done to show you
- the general form of the WRITE statements. There are also
- many statements in this program with the display identifier
- "lst", which is the standard name for the "list" device or
- the printer. Compile and run this program with your printer
- turned on for some printer output.
-
- Just to supply you with a bit more information, every
- READ and READLN statement is also required to have a device
- identifier prior to the first input field. As you may
- suspect, it is also defaulted to "input" if none is
- specified, and the standard input device is the keyboard.
-
-
-
-
-
-
-
- Page 49
-
-
-
-
-
-
-
-
-
- CHAPTER 10 - Standard Input/Output
-
-
- PROGRAMMING EXERCISE
-
- 1. Write a program containing a loop to read in a character
- string up to 60 characters long, then print the string
- on your printer. When you run the program, you will have
- the simplest word processing program in the world. Be
- sure to include a test to end the loop, such as when
- "END" is typed in.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Page 50