home *** CD-ROM | disk | FTP | other *** search
- CHAPTER 4 - The Pascal loops and control structures
-
-
- Every program we have examined to this point has been a
-
- simple one pass through with no statements being repeated.
-
- As in all other languages, Pascal has extensive capabilities
-
- to do looping and conditional branching. We will look at
-
- these now.
-
- THE FOR LOOP
-
- We will start with what may be the easiest structure to
-
- understand, the FOR loop. This is used to repeat a single
-
- Pascal statement any number of times we desire. Load
-
- LOOPDEMO and we will discuss the loops presented there.
-
- The first example is the simplest and is simply a repeat
-
- of a WRITELN 7 times. We have three new reserved words,
-
- FOR, TO, and DO which are used as shown. Any simple
-
- variable of type INTEGER, BYTE, or CHAR can be used for the
-
- loop index and it must be defined in a VAR statement.
-
- Following the DO reserved word is any single Pascal
-
- statement that will be repeated the specified number of
-
- times. Note that the loop is an incrementing loop but
-
- substitution of DOWNTO for TO will make it a decrementing
-
- loop as is illustrated in the last example in this program.
-
- A COMPOUND PASCAL STATEMENT
-
- The second example contains our first compound Pascal
-
- statement. It was mentioned in Chapter 1 that the BEGIN END
-
- pair of reserved words could be used to mark the limits of a
-
- compound statement. In this case, the single statement
-
- starting with the BEGIN and extending through and including
-
- the END statement is the single Pascal statement that will
-
- be executed 10 times. A second variable "total" has been
-
- introduced to simply add another operation to the loop. Any
-
- valid Pascal operation can be performed within the BEGIN END
-
- pair, including another loop, thus resulting in nested loops
-
- to whatever depth you desire.
-
- The third example shows how the CHAR variable could be
-
- used in a FOR loop. Pascal requires that the loop variable,
-
- the starting point, and the ending point all be of the same
-
- type or it will generate an error message.
-
- The fourth example is a decrementing loop as mentioned
-
- earlier.
-
- THE IF STATEMENT
-
- Now we will look at the conditional branching
-
- capability, or at least one of them, the IF statement. Load
-
- IFDEMO for an onscreen look at the IF THEN pair of reserved
-
-
-
- Page 15
-
-
-
-
-
-
-
-
-
- CHAPTER 4 - The Pascal loops and control structures
-
-
- words. Any condition that can be reduced to a boolean
-
- answer is put between the IF THEN pair of words. If the
-
- resulting expression resolves to TRUE, then the following
-
- single Pascal statement is executed, and if it resolves to
-
- FALSE, then the following single statement is skipped over.
-
- Of course, you can probably guess that the single statement
-
- can be replaced with a compound statement bracketed with a
-
- BEGIN END pair and you are correct. Study example 1 and you
-
- will see that the line will always be printed in this
-
- particular fragment. It is very difficult to come up with a
-
- good example without combining some of the control
-
- structures which we will do in the next file.
-
- The second example is similar to the first but with the
-
- single statement replaced with a compound statement and
-
- should be easy to understand.
-
- The third example contains a new reserved word, ELSE.
-
- When the IF condition is FALSE, the single statement is
-
- skipped and if a semicolon is encountered, the IF clause is
-
- totally complete. If instead of a semicolon, the reserved
-
- word ELSE is encountered, then the single Pascal statement
-
- following ELSE is executed. One and only one of the single
-
- statements will be executed every time the IF statement is
-
- encountered in the program. Examination of the third
-
- example should clear this up in your mind.
-
- THE IF-THEN-ELSE "block"
-
- Put on your thinking cap because the next principle is
-
- difficult to grasp at first but will suddenly clear up and
-
- be one of the most useful facts of Pascal programming.
-
- Since the entire IF THEN ELSE "block" of code is itself a
-
- single Pascal statement, by definition, it can be used
-
- anywhere that an executable statement is legal without BEGIN
-
- END separators. This is shown in the fourth example of the
-
- IFDEMO Pascal example program. The IF THEN ELSE construct
-
- is one of the most used, most useful, and therefore most
-
- important aspects of PASCAL. For this reason you should
-
- become very familiar with it.
-
- Try changing some of the conditions in the example
-
- program to see if you can get it to print when you expect it
-
- to just for your own practice and enjoyment. When you are
-
- ready, we will go on to a program with loops and conditional
-
- statements.
-
- LOOPS AND IFS TOGETHER
-
- Load LOOPIF and observe it for a few minutes. It
-
- contains most of what you have studied so far and should be
-
-
-
- Page 16
-
-
-
-
-
-
-
-
-
- CHAPTER 4 - The Pascal loops and control structures
-
-
- understandable to you at this point. It contains a loop
-
- with two IF statements within it, and another loop within
-
- one of the IF statements.
-
- An easily made error should be pointed out at this time.
-
- If an extraneous semicolon were put at the end of the second
-
- IF statement, the code following the statement would always
-
- be executed because the "null" statement (the nothing
-
- statement between the THEN and the semicolon) would be the
-
- conditional statement. The compiler would not generate an
-
- error and you would get no warning. Add a semicolon after
-
- the IF statement to see the error.
-
- FINALLY, A MEANINGFUL PROGRAM
-
- Load TEMPCONV and study its structure. Run it and you
-
- will have a list of Centigrade to Fahrenheit temperature
-
- conversions with a few added notes. Load, examine, and run
-
- DUMBCONV for a good example of poor variable naming. The
-
- structure of the program is identical to the last program
-
- and when you run it, you will see that it is identical in
-
- output, but it is difficult to understand what it does by
-
- studying the listing. These programs should both be easily
-
- understood by you by now, so we will go on to our next
-
- Pascal control structure.
-
- THE REPEAT UNTIL LOOP
-
- The next two Pascal structures are very similar because
-
- they are both indefinite loops (indefinite because they are
-
- not executed a fixed number of times). One of the loops is
-
- evaluated at the top and the other at the bottom. It will
-
- probably be easier to start with the REPEAT UNTIL structure
-
- which is the loop that is evaluated at the bottom.
-
- Retrieve the file REPEATLP to see a repeat loop. Two
-
- more reserved words are defined here, namely REPEAT and
-
- UNTIL. This rather simple construct simply repeats all
-
- statements between the two reserved words until the boolean
-
- expression following the UNTIL is found to be TRUE. This is
-
- the only expression I know of that operates on a range of
-
- statements rather than a single statement and BEGIN END
-
- delimiters are not required. A word of caution is in order
-
- here. Since the loop is executed until some condition
-
- becomes TRUE, it is possible that the condition will never
-
- be TRUE and the loop will never terminate.
-
- THE WHILE LOOP
-
- The file WHILELP contains an example of another new
-
- construct, the WHILE loop. This uses the WHILE DO reserved
-
-
-
- Page 17
-
-
-
-
-
-
-
-
-
- CHAPTER 4 - The Pascal loops and control structures
-
-
- words and will execute one Pascal statement (or one compound
-
- statement bounded with BEGIN END) continuously until the
-
- boolean expression between the two words becomes FALSE.
-
- This loop is also indeterminate and could, like the REPEAT
-
- UNTIL, never terminate. You should therefore exercise care
-
- in using it.
-
- THE CASE STATEMENT
-
- The final control structure introduces yet another
-
- reserved word, CASE. The CASE construct actually should be
-
- included with the IF statement since it is a conditional
-
- execution statement, but I chose to save it for last because
-
- it is rather unusual and will probably be used less than the
-
- others we have discussed in this chapter.
-
- The CASE statement is used to select one of many
-
- possible simple Pascal statements to execute based on the
-
- value of a simple variable. Load the file CASEDEMO and
-
- observe the program for an example of a case statement. The
-
- variable between the CASE and OF reserved words is the
-
- variable used to make the selection. Following that, the
-
- various selections are given in the form of a possible value
-
- or range, a colon, a single Pascal statement, and a
-
- semicolon. Following the list of selections, an ELSE can be
-
- added to cover the possibility that none of the selections
-
- were executed. Finally, an END; statement is used to
-
- terminate the case construct. Note that this is one of the
-
- few places in Pascal that an END is used without a
-
- corresponding BEGIN.
-
- The example file uses "count" for a variable and prints
-
- the numbers one through five in text form, and declares that
-
- numbers outside this range are not in the allowable list.
-
- The program should be self explanatory beyond that point.
-
- This is admittedly a very brief explanation of the CASE
-
- statement but you will have no trouble using it when you
-
- have need for it. You can study it in detail at that time.
-
- This brings us to the end of chapter 4 and you now have
-
- enough information to write essentially any program desired
-
- in Pascal. There would be a few difficulties if you
-
- attempted to try to program without the further topics
-
- coming up in the next chapters. The additional topics will
-
- greatly add to the flexibility of Pascal and will greatly
-
- ease programming in it.
-
-
-
-
-
-
-
-
- Page 18
-
-
-
-
-
-
-
-
-
- CHAPTER 4 - The Pascal loops and control structures
-
-
- PROGRAMMING EXERCISES
-
- 1. Write a program that lists the numbers from 1 to 12 and
-
- writes a special message beside the number representing
-
- your month of birth.
-
- 2. Write a program that lists all of the numbers from 1 to
-
- 12 except for the numbers 2 and 9.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Page 19
-