Найти в Дзене
Pascal для "чайников"

Виды циклов в pascal на примере вывода чисел Фибоначчи

В Pascal используется три вида циклов.
В ситуации, когда необходимо повторение каких-то операторов определенное количество раз, без учета каких-либо условий, то используется цикл FOR. В этом цикле используется целочисленный индекс, который увеличивается на 1 до тех пор, пока цикл не достигнет конечного значения (его еще называют цикл со счетчиком).
Например, цикл For i := 3 to 7 do write

В Pascal используется три вида циклов.

В ситуации, когда необходимо повторение каких-то операторов определенное количество раз, без учета каких-либо условий, то используется цикл FOR. В этом цикле используется целочисленный индекс, который увеличивается на 1 до тех пор, пока цикл не достигнет конечного значения (его еще называют цикл со счетчиком).

Например, цикл For i := 3 to 7 do write ('A'); выведет на экран "AAAAA".

Отсчет в цикле также возможен и в сторону уменьшения индекса.

Цикл For i := 10 downto 5 do write ('3'); выведет на экран '333333'.

Если есть необходимость повторять определенные команды до тех пор, пока условие, указанное в описании цикла "верно", то используется цикл WHILE <условие> DO (цикл с предусловием).

Например,

i := 1; While i < 7 do i := i + 3;

Пока переменная i меньше 7 цикл будет работать. Если условие изначально принимает значение "ложь", то тело цикла (команды внутри цикла) не повторится ни одного раза. В нашем примере цикл повторится 2 раза, т.к. после второго раза переменная i станет равна 7 и условие примет значение "ложь" и произойдет выход из цикла. Не забываем в цикле изменять переменную (или переменные), которые участвуют в условии цикла, чтобы не произошло "зацикливания".

Иногда есть необходимость выполнения каких-то команд хотя бы один раз и только потом проверяется условие, которое может отправить программу на повтор тех же операторов до тех пор, пока проверяемое условие не станет "верным".

В этом случае используется цикл REPEAT ....... UNTIL <условие>; (цикл с постусловием).

Например, i:=1; Repeat i := i+3; Until i > 10;

Эти команды означают: повторять тело цикла до тех пор пока условие не станет "верным", т.е. до тех пор пока i не станет больше 10, тогда программа выйдет из цикла и продолжит выполнять программу дальше. Здесь также не забываем изменять в теле цикла переменную(ые), которые участвуют в условии выхода из цикла.

Стоит обратить внимание, что циклы WHILE и REPEAT отличаются не только тем, что в первом случае у нас идет сначала условие, а потом цикл, а во втором случае - наоборот. Но и в том, что в цикле WHILE происходит выполнение тела цикла, если условие "верно", а во втором случае тело цикла повторяется до тех пор пока постусловие не станет "верным".

Рассмотрим использование всех трех видов цикла в программе, по выдаче на экран n-ого количества чисел Фибоначчи.

var a,b,s,n,i : integer;

begin

write ('Введите кол-во чисел Фибоначчи, которое надо вывести на экран: ');

read(n);

a:=0; b:=1; // задаем два начальных числа

if n > 0 then write (a:3);

// пошаговый цикл

For i := 2 to n do

begin

write (b:5);

s:=a+b;

a:=b;

b:=s;

end;

writeln;

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

a:=0; b:=1; // задаем два начальных числа

if n > 0 then write (a:3);

i:=2;

while i <= n do

begin

write (b:5);

s:=a+b;

a:=b;

b:=s;

i := i+1; // не забываем изменять переменную

end;

writeln;

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

a:=0; b:=1; // задаем два начальных числа

i := 2;

if n > 0 then write (a:3);

repeat

write (b:5);

s:=a+b;

a:=b;

b:=s;

i := i+1; // не забываем изменять переменную

until i > n;

end.

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

-2