home *** CD-ROM | disk | FTP | other *** search
-
-
-
- Chapter 10
- STANDARD INPUT/OUTPUT
-
-
- WE'VE USED THIS ALREADY
- _________________________________________________________________
-
- 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 about them 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. WRITELNX.PAS
- They are therefore merely identifiers that could ================
- be changed, but there should never be a reason
- to do so. Let's get on to our first example
- program WRITELNX.PAS which has lots of output.
-
-
-
- MANY OUTPUT STATEMENTS
- _________________________________________________________________
-
- Pascal has two output statements with only slight differences 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.PAS, 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 two integer output statements in lines 13 and 14. The
- first simply directs the system to output Index twice, and it
- outputs the value 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 in lines 19 and 20 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 as illustrated in lines 21 through 23, tells the
- system how many digits you want displayed after the decimal point.
-
-
-
- Page 10-1
-
- Chapter 10 - Standard Input/Output
-
- 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.
- Compile and run this program and observe the results.
-
- The new data types in TURBO Pascal which were described in chapter
- 3 of this tutorial are output in the same manner as those
- illustrated in the program WRITELNX.PAS.
-
-
-
- NOW FOR SOME INPUT FROM THE KEYBOARD
- _________________________________________________________________
-
- The example file READINT.PAS will illustrate ===============
- reading some integer data from the keyboard. A READINT.PAS
- message is output by line 8 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. Therefore, 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
- values are read in and stored in their respective variables with
- the one statement. If less than three are entered at the keyboard,
- 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 in lines 19 through 25 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.PAS, 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, and a carriage return. 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
- three more numbers, 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
-
- Page 10-2
-
- Chapter 10 - Standard Input/Output
-
- 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 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 TURBO Pascal will 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.PAS will illustrate ================
- how to read real numbers into the computer. It READREAL.PAS
- 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.PAS, will ================
- read in one character each time through the loop READCHAR.PAS
- 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
-
- Page 10-3
-
- Chapter 10 - Standard Input/Output
-
- possible to crash this program because any character you enter will
- be valid.
-
- Finally, READSTRG.PAS will also read up to 10 ================
- characters, but since a string is a dynamic READSTRG.PAS
- 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 PRINTOUT.PAS
- data to the printer. The example file ================
- PRINTOUT.PAS 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 in lines 9 and 10 with the device
- identifier included, namely Output. This is only done to show you
- the general form of the Write statements, but if you desire, you
- can add the standard device identifier to every monitor output.
-
- There are many statements in this program with the device
- identifier Lst, which is the standard name for the list device or
- the printer. It should be obvious to you that the first field is
- the device selector which is used to direct the output to the
- desired device.
-
-
-
- Page 10-4
-
- Chapter 10 - Standard Input/Output
-
- 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.
-
-
-
- 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 10-5