| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248 |
- TURBO-LESSONS - A Pascal Tutorial Version 1.01 Page 38
- TURBO-LESSON 10: WHILE STATEMENT
- OBJECTIVES - In lesson 10 you will learn about:
- 1. CONSTant declaration
- 2. WHILE statement
- 3. Delay timing loop
- 1. CONSTant declaration.
- In the declaration section of the Pascal programs in previous
- lessons, only VAR and PROGRAM have appeared.
- CONST is used to declare constants and assign values to them.
- The form is:
- CONST Constant_Name_1 = Value_1;
- Constant_Name_2 = Value_2;
- .
- .
- .
- Constant_Name_n = Value_n;
- Some examples:
- CONST PI = 3.14159;
- Fahr_Freeze = 32;
- Cels_Freeze = 0;
- Message_1 = 'This is a string constant';
- ##### DO:
- Run PROG10 a time or two to see what it does.
- ##### DO:
- Edit the constant declaration, Wobble_Size = 5;
- to Wobble_Size = 10;
- Run the program. What effect did you see from the change?
- Œ
- TURBO-LESSONS - A Pascal Tutorial Version 1.01 Page 39
- ##### DO:
- Change the value of Left_Edge to 20 and run the program.
- To understand how Left_Edge and Wobble_Size work, look at the
- WriteLn statement:
- WriteLn(': ':Left_Edge, First:Index, Last:2, Message);
- (1) ': ' is printed in the right 2 columns of a field whose
- width is determined by the value of Left_Edge.
- (2) First initial is printed in the rightmost column of a field
- of width, Index. Note that Index is changing in the FOR
- loop, so the width of this field changes.
- (3) Last initial is printed next in the rightmost column of a
- 2-character wide field.
- (4) The string constant, Message, is printed immediately to the
- right of Last initial.
- ##### DO:
- Run the program several times with the values of the constants
- reset to various values. (LIVE DANGEROUSLY - try some wild
- values: 50 for Wobble_Size or 70 for Left_Edge. Your CRT won't
- explode! At least mine hasn't - yet!)
- 2. WHILE statement.
- The three Pascal REPETITION Structures are:
- (1) WHILE
- (2) REPEAT
- (3) FOR
- The form of the WHILE statement is:
- WHILE condition DO statement;
- Note that the statement is often a block statement and appears:
- WHILE condition DO
- BEGIN
- Statement_1;
- Statement_2;
- .
- .
- .
- Statement_n;
- END;
- The WHILE is executed "while" the condition is true.
- Contrast the REPEAT which is executed while the condition is
- false, UNTIL the condition becomes true.
- Œ
- TURBO-LESSONS - A Pascal Tutorial Version 1.01 Page 40
- ##### DO:
- Run PROG10 again, using 0 as the number "less than 8".
- How many times was the loop executed?
- You could substitute REPEAT for WHILE in PROG10.
- ##### DO:
- Replace: WHILE Count > 0 DO
- with: REPEAT
- add: UNTIL Count = 0; after: END; {WHILE}
- (Notice that you don't have to remove the BEGIN END when you
- change the loop from WHILE to REPEAT. They are not needed in
- the REPEAT statement, but a block statement is always acceptable
- wherever a simple statement can be used.)
- Run the program several times to verify that it still works the
- same as with the WHILE loop.
- ##### DO:
- Run the program with 0 for the "number less than 8".
- How many times was the loop executed?
- Notice that the WHILE loop may be executed 0 times, but the
- REPEAT loop is always executed at least once, since the condition
- is not checked until the end of the loop.
- NOTE: YOU SHOULD BE ON THE LOOKOUT FOR SUCH CONTRASTS BETWEEN
- "INTERCHANGEABLE" STATEMENTS. CHOOSING THE BEST STATEMENT
- TO USE IN EACH CASE IS BASED ON THIS KIND OF AWARENESS.
- ##### DO:
- Change the REPEAT loop back to the original WHILE loop.
- (An easy way would be to load a fresh copy of the original
- PROG10.)
- Change the WHILE statement to accept only Last initials less than
- 'G'.
- WHILE Last < 'G' DO
- Run the program. How did it work?
- The WHILE loop didn't terminate at all - you had to abort the
- program, right? (If it is still executing, use Ctrl-C or Ctrl-
- Scroll-Lock.)
- Œ
- TURBO-LESSONS - A Pascal Tutorial Version 1.01 Page 41
- One of the things needed in controlling loops: something in the
- loop must be related to the condition.
- In the original WHILE loop, the Count was being decreased in the
- loop.
- When the condition was changed to (Last < 'G'), the loop no
- longer has any effect on the condition.
- Either the loop will not be executed at all, if Last is = or >
- 'G', or it will execute indefinitely if Last is < 'G'.
- ##### DO:
- Change the WHILE statement to:
- WHILE (Last < 'G') AND (Count > 0) DO
- Run the program several times using last initials before and
- after G in the alphabet.
- ##### DO:
- Run the program with last initial of 'a' (lower-case a).
- How many times did the loop execute?
- Why?
- The ASCII value of 'G' is 71. The ASCII value of 'a' is 91. So
- 'a' is > 'G'. (More on how to handle this problem in a later
- lesson.)
- 3. Delay timing loop.
- You may have noticed the "wobble" proceeds faster in one
- direction than the other. This is due to a timing delay in the
- first WHILE loop.
- FOR Delay := 1 to 500 DO; {Do nothing, except loop}
- This looks a little strange? There should be a statement after
- the DO?
- Pascal has a "null" statement for just such times as this. When
- a statement is required, but none is present, Pascal just
- substitutes its "null" or "do-nothing" statement.
- Œ
- TURBO-LESSONS - A Pascal Tutorial Version 1.01 Page 42
- ##### DO:
- Change the delay in the loop from 500 to 2000 and run the
- program.
- ##### DO:
- Add a timing loop to the other WHILE loop and run the program.
- How did it work?
- You didn't forget to add BEGIN END when you added the delay
- statement, did you?
- One last little twist on timing loops:
- ##### DO:
- Change the Wobble_Size to 10.
- Change both delay statements to:
- FOR Delay := 1 to 500 * Index DO;
- Run the program. Note that delays don't have to be constant.
- This delay varies as the FOR loop progresses!
- NOTE: I HOPE YOU HAVE ENJOYED THESE FIRST 10 TURBO-LESSONS. YOUR
- COMMENTS AND SUGGESTIONS WOULD BE WELCOME!
|