Turbo Pascal (Borland Pascal) 7.0. Руководство пользователя

       

Операторы повтора (цикла)


Если в программе возникает необходимость неоднократного выполнения некоторых операторов, то для этого используются операторы повтора (цикла). В языке Паскаль различают три вида операторов цикла: цикл с предусловием (while), цикл с постусловием (repeat) и цикл с параметром (for).

Если число требуемых повторений заранее известно, то используется оператор, называемый оператором цикла с параметром.

Оператор цикла с параметром имеет два варианта записи:

1) for := to do

2) for := downto do



Имя переменной – параметр цикла, простая переменная целого типа; - операторы или оператор. Цикл повторяется до тех пор пока значение параметра лежит в интервале между начальным и конечным значениями. В первом варианте при каждом повторении цикла значение параметра увеличивается на 1, во втором - уменьшается на 1.

При первом обращении к оператору for вначале определяются начальное и конечное значения, и присваивается параметру цикла начальное значение. После этого циклически повторяются следующие действия.

1. Проверяется условие параметр цикла

2. Если условие выполнено, то оператор продолжает работу (выполняется оператор в теле цикла), если условие не выполнено, то оператор завершает работу и управление в программе передается на оператор, следующий за циклом.

3. Значение параметра изменяется (увеличивается на 1 или уменьшается на 1).

Если в теле цикла располагается более одного оператора, то они заключаются в операторные скобки begin … end;





Пример 1. Вывести на экран таблицу перевода из градусов по шкале Цельсия в градусы по Фаренгейту для значений от 15°С до 30°С с шагом в 1°С. Перевод осуществляется по формуле: F=C*1.8+32.

Program zf; Var i:integer; f:real; Begin Writeln(‘Температура’); For i:=15 to 30 do Begin F:=i*1.8+32; Writeln(‘по Цельсию’, i, ‘по Фаренгейту’, f:5:2); End; End.

Пример 2. Вывести на экран натуральные числа от 1 до 9 в обратном порядке.

Program z; Var i:integer; Begin For i:=9 downto 1 do Writeln(i); End.

Если число повторений заранее неизвестно, а задано лишь условие его повторения (или окончания), то используются операторы while и repeat. Оператор While часто называют оператором цикла с предусловием. Так как проверка условия выполнения цикла производится в самом начале оператора.


Общий вид:
While do

;

Тело цикла – простой или составной оператор или операторы. Если операторов в теле цикла несколько, то тело цикла заключается в операторные скобки begin…end.

Перед каждым выполнением тела цикла вычисляется значение выражения условия. Если результат – «истина», тело цикла выполняется и снова вычисляется выражение условия. Если результат–«ложь», происходят выход из цикла и переход к первому после while оператору.

Пример. Найти сумму 10 произвольных чисел.

Program z; Const N=10; Var k, x, s: integer; Begin k:=0; s:=0; {k- количество введенных чисел} while k < n do begin k:=k+1; write(‘Введите число’); readln(x); s:=s+x; end; writeln(‘Сумма чисел равна’, s); end.

Оператор цикла repeat аналогичен оператору while, но отличается от него, во-первых, тем, что условие проверяется после очередного выполнения операторов тела цикла и таким образом гарантируется хотя бы однократное выполнение цикла. Во-вторых, тем, что критерием прекращения цикла является равенство выражения константе true . За это данный оператор часто называют циклом с постусловием, так как он прекращает выполняться, как только условие, записанное после слова until, выполнится. Оператор цикла repeat состоит из заголовка, тела и условия окончания.

Общий вид:
Repeat

. . . . .

until

Вначале выполняется тело цикла, затем проверяется условие выхода из цикла. В любом случае этот цикл выполняется хотя бы один раз. Если условие не выполняется, т.е. результатом выражения является False, то цикл активизируется еще раз. Если условие выполнено, то происходит выход из цикла. Использования операторных скобок, в случае, если тело цикла состоит из нескольких операторов, не требуется.

Пример. Составить программу, которая вводит и суммирует целые числа. Если введено значение 999, то на экран выводится результат суммирования.

Program s; Var x, s:integer; Begin S:=0; Repeat Write(‘Ввести число’); Readln(x); If x<>999 then s:=s+x; Until x=999; Writeln(‘Сумма введенных чисел’, s); End.

Содержание раздела