Sei sulla pagina 1di 3

Iteration

Iteration is when a process gets repeated several times. Iteration is also sometimes
called looping or repetition.

If you created a program that displayed the word ‘hello’ five times. Imagine if you
had to write a program that displayed the word ‘hello’ twenty times or a hundred
times. You could do this by putting a hundred writeln statements in your program or
you could use iteration.

There are three different iterative statements in Pascal: while..do, repeat..until, and
for. The for loop is an example of definite iteration – used when it is known how
many times a process needs to be repeated. While and repeat are examples of
indefinite resolution – when it is not known in advance how many times a process
needs to be repeated, the process gets repeated until a condition is met. The
difference between repeat and while is that with repeat the process gets executed one
or more times, with a while loop the process gets executed zero or more times. Type
in the following program, compile and run it:

program countingVersion1;

begin
writeln(‘1’);
writeln(‘2’);
writeln(‘3’);
writeln(‘4’);
writeln(‘5’);
readln;
end.

The program works and displays the numbers 1 to 5. If you wanted to display the
first 100 numbers then you would need to have 100 writeln statements. An alternative
program that does the same thing would be:
program countingVersion2;

var count:integer;

begin
for count:=1 to 5 do
begin
writeln(count);
end;
readln;
end.

Type in the program, compile and run it.

Exercise 1

Alter the program countingVersion2 so that the first 20 numbers are displayed
instead of the first 5.

Type in the following program, compile it and try running it a few times:
Iteration

program averageStudentMark;
{A program that calculates the average mark that a class of students got on a test}

var noofstudents, total, count, mark:integer;


var average:real;

begin
total:=0;
write(‘How many students are there in the class?’);
readln(noofstudents);
for count:=1 to noofstudents do
begin
write(‘Enter a mark’);
readln(mark);
total:=total+mark;
end;
average:=total / noofstudents;
writeln(‘The average mark is: ‘, average:6:2);
readln;
end.

Exercise 2

a) Write a Pascal program that gets the user to enter a name. The name is stored
in a string variable. The program then needs to ask the user to enter a number,
that will be stored in an integer variable. The program then uses a for loop to
display the name entered by the user the number of times requested by the user.

b) Write a program that asks the user to enter the number of stars per row. The
program then asks the user to enter the number of rows to be displayed. The
program then uses for loops to display these stars. For example, entering 4 and 3
should display:
****
****
****
Hint: You can nest two for loops – put one for loop inside another

The while loop is an indefinite loop. The compound statement gets executed
continuously until a certain condition becomes true, with the for loop it was known
exactly how many times to repeat. Type in the program below, compile and run it.

program sayHello;

var continue:char;

begin
write(‘Press y to continue or any other key to finish ‘);
readln(continue);
while continue=’y’ do
begin
writeln(‘hello’);
write(‘Press y to continue or any other key to finish ‘);
readln(continue);
end;
end.
Iteration

This program keeps writing the word hello on the screen until the user presses any
key other than y. Notice that the instructions in the loop may not be executed at all, if
the user presses a key other than y at the start then the condition for the while loop
will not be met and so the loop will not be executed at all.

The operators that can be used in a condition for a while loop are the same as those
that could be used for a condition in an if statement.

Exercise 3
a) Write a Pascal program that gets the user to enter a number. Store this
number in an integer variable. Use a while loop to print the number and then
take one away from it. Keep doing this until the number becomes 0.

b) What would happen if the user entered a negative number when asked for a
number in your program from part a? Extension: how could you alter your
program so that the countdown will only happen when a positive number has
been entered?

c) Write in a program that reads in numbers from the user and adds them to a
running total using a while loop (make sure that your total variable is set to 0
before the loop starts). Each time the user is asked if they want to enter another
number, if they type in n then the loop should stop. After the user enters n then
the total should be displayed and then the program finishes.

d) Alter your program in part c so that instead of asking the user if they want to
enter another number the loop stops if the user enters the number -1. This is an
example of a rogue value. Make sure the rogue value is not added to the total.

The repeat loop is also an indefinite loop. The compound statement gets executed
continuously until a certain condition becomes true. The difference between repeat
and while is that with repeat the compound statement always gets executed at least
once, as the condition is tested at the end of the loop. With a while loop the condition
is tested at the start of the loop meaning that the compound statement might not get
executed at all. Type in the program below, compile and run it.

program sayHello;

var continue:char;

begin
repeat
writeln(‘hello’);
write(‘Press y to continue or any other key to finish ‘);
readln(continue);
until continue <> ‘y’;
end.

Exercise 4
Alter your program from exercise 1 part c from the previous Pascal guide (about
selection). The program should make use of a repeat statement to keep asking
the user for a password until a valid password is entered.

Potrebbero piacerti anche