Циклы в Паскале

Когда в алгоритме некоторое действие нужно выполнить несколько раз, используются циклы. В программирование цикл — это многократное повторение определенных инструкций. Циклы состоят из заголовка и тела. Заголовок содержит в себе условия, которые определяют работу цикла, а тело – повторяющиеся действия. В ЯП Pascal есть три вида циклов:

цикл с параметром;

цикл с предусловием;

цикл с постусловием.

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

For — цикл с параметром

Цикл с параметром, известный также как цикл со счетчиком, используется при известном количестве повторений. Он имеет две формы записи:

  1. For <счетчик>:=< начальное значение> To <конечное значение> Do <тело цикла>;
  2. For <счетчик>:=<начальное значение> Downto <конечное значение> Do <тело цикла>;

Счетчик – это переменная порядкового типа. Начальное и конечное значение должны быть того же типа, что и счетчик. Тело выполняется до тех пор пока условие истинно.

Формы записи, представленные выше, отличаются словами To и Downto. Если Вы используете цикл с To, то значение счетчика с каждым шагом будет увеличиваться на единицу, а если с Downto, то уменьшаться. Из этого следует, что в первом варианте начальное значение не должно превышать конечное, во втором — верно противоположное. В программе ниже, указанное пользователем количество раз, будут выводиться символы.

1
2
3
4
5
6
7
8
9
10
program for_primer;
uses crt;
var i, x: integer;
begin
write(‘X=’);
readln(x);
for i:=1 to x do
write(#3, #6);
readkey;
end.

Здесь тело цикла не заключено в Begin-End, так как оператор всего один. Но если их будет больше, то операторные скобки обязательны. Стоит также отметить, что счетчик по выходу из цикла не будет иметь определенного значения, но если цикл закончиться раньше положенного, то счетчик сохранит последнее, записанное в него значение.

While – цикл с предусловием

Оператор While – начинает описание цикла с предусловием. Такой вид цикла нужен, в тех алгоритмах, где число повторений неизвестно заранее. В общем виде он выглядит так:

While <выражение> Do <тело цикла>;

Если выражение истинно, то тело выполняется, иначе цикл завершается. Поэтому нужно составить такой код, чтобы на какой-то из итераций выражение стало ложным, и цикл не выполнялся бесконечно.

Пример программы написанный с использованием цикла While:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
program while_primer;
uses crt;
var i, x, limit: integer;
begin
write(‘Предел=’);
readln(limit);
write(‘ Числа Фибоначчи: ‘);
i:=1; x:=1;
while i<=limit do
begin
write(i,‘ ‘);
i:=i+x;
x:=ix;
end;
readkey;
end.

В данном коде использовался составной оператор Begin-End, так как операторов в теле цикла несколько.

Repeat – цикл с постусловием

Главной особенностью цикла с постусловием (часто встречается название: цикл-ДО) является выполнение его тела минимум один раз. Это связано с тем, что условие записывается в конце и соответственно вначале выполнится тело, а затем провериться условие. Формально он выглядит так:

Repeat

<тело цикла>

Until <условие>

В противоположность двум рассмотренным прежде циклам, этот прекращает свое выполнение тогда, когда условие становиться истинным, т. е. чтобы итерации продолжались условие должно быть ложно. Рассмотрим работу цикла с постусловием на примере:

1
2
3
4
5
6
7
8
9
10
11
12
program repeat_primer;
uses crt;
var i, otvet: integer;
begin
i:=1;
repeat
i:=i+1;
write(i,‘+’,i,‘*2=’);
read(otvet);
until otvet<>i+i*2;
readkey;
end.

Программа продолжает работать до тех пор, пока пользователь не допустит ошибку в ответе. Думаю, Вы заметили, что в примере (непосредственно в цикле) составной оператор Begin-End, несмотря на количество операторов не поставлен. Просто его роль выполняют слова repeat и until.

Для переходных манипуляций с циклом обычно используются три оператора:

Goto – переходит в отмеченную область;

Break – производит безусловный выход из цикла;

Continue – осуществляет переход к новой итерации.

Рейтинг
( Пока оценок нет )
Загрузка ...