Объясните пожалуйста как работают циклы (for, while, repeat) в Паскале.
Желательно максимально простым и понятным языком, без использования супер-заумных терминов
Ответы
Цикл For
"Цикл со счётчиком"
В начале присваивает заданной переменной (переменная-счётчик) начальное число. Переменной-счётчиком может быть любая переменная типа integer, затем в зависимости от направления прибавляет (to) или убавляет (downto) счётчик на единицу. Цикл начинает повторение пока счётчик будет меньше или равен второму числу. Когда счётчик стал больше второго числа, цикл выполняет строки команд до конца, но уже не начинает повторять из снова.
В строках с командами цикла не должно быть команды, которая изменяет значение счётчика, иначе будет ошибка. Счётчик нельзя изменять внутри цикла пока он идёт.
Запись
for ПеременнаяСчётчик := Число Направление Второечисло do
begin
Строки с командами, которые должен повторять цикл;
end;
Пример
Программа, которая выводит числа от 5 до 10 и в конце пишет "Конец"
program raf105;
var i: integer;
begin
for i:=5 to 10 do
begin
writeln(i);
end;
writeln('Конец');
end.
Цикл While
"Цикл с условием старта"
Начинает повторение, только если соблюдено заданное условие
Запись
while Условие do
begin
Строки с командами, которые должен повторять цикл;
end;
Пример
Программа, которая просит ввести 1, если введено не 1, то просит ввести снова. Когда введено 1, пишет "Вы ввели 1. Конец"
program raf105;
var a: integer;
begin
write('Введите 1: ');
readln(a);
while a <> 1 do
begin
write('Вы ввели не 1. Введите число снова: ');
readln(a);
end;
writeln('Вы ввели 1. Конец');
end.
Цикл Repeat
"Цикл с условием завершения"
Похож на цикл While, только заканчивает повторение, если соблюдено условие. Обычно используется если цикл нужно повторить хотя бы 1 раз.
Запись
repeat
Строки с командами, которые должен повторять цикл;
until Условие;
Пример
Программа, которая запрашивает пароль, если введено 123, то выводит "Конец" если введено не 123, то выводит сообщение "Введите пароль снова"
program raf105;
var a: integer;
begin
a:= 0;
repeat
if a = 0
then write('Введите пароль: ')
else write('Введите пароль снова: ');
readln(a);
until a = 123;
writeln('Конец');
end.