Вопрос
В чем отличие цикла (for), повтора (repeat) и while?
Ответ
Цикл For — конечный, Repeat и While — циклы с постусловием и предусловием соответственно.
Цикл
while (condition) do
begin
…
end;
выполняется до тех пор, пока condition равно true.
Цикл
repeat
…
until (condition)
выполняется до тех пор, пока condition НЕ равно true.
Главная разница между этими циклами (кроме противоположности условий) в том, что если условие цикла while не выполняется, операторы между begin/end не будут выполнены ни разу. Что касается repeat, операторы между repeat/until выполнятся как минимум однажды, независимо от значения condition.
Проще говоря (и это видно из самих циклов), while выполняет проверку ДО выполнения цикла, а repeat — ПОСЛЕ. С помощью операторов GOTO и IF это можно отобразить так:
-repeat-
label_start_cycle:
…
if not(condition) then
goto label_start_cycle;
-while-
goto label_check_condition;
label_cycle:
…
label_check_condition:
if (condition) then
goto label_cycle;
Что же касается FOR, это цикл со счетчиком.
Т.е. при выполнении такого участка программы
for i:=1 to 5 do
writeln(i);
на экране отобразятся числа от 1 до 5. Этот цикл можно заменить эквивалентом с использованием while:
i:=1;
while i<=5 do
begin
writeln(i);
i:=i+1;
end;
Очевидно, что при использовании for программа выглядит короче и понятнее :)
Copyright 2000-2004 Сообщество Чайников
Контактная информация