Что такое цикл?
Давайте отвлечемся на некоторое время от программирования и попытаемся на природных явлениях, примерах из повседневной жизни человека, а затем и его мыслительной деятельности дать понятие цикла.
Если вас спросят, что такое цикл, то, наверное, вы не задумываясь ответите, что это повторяемость
чего-то.
И это совершенно правильно!
Повторяемость времен года в природе - это цикл, кругооборот воды в природе - это цикл, смена дня и ночи - это цикл и многие другие процессы в природе повторяются, образуя циклы или, что чаще нами употребляется, цикличность.
Циклы в математике - явление очень часто встречающееся.
Например, пока
натуральные числа меньше 10, тогда надо суммировать их.
Другими словами, мы находим сумму чисел от 1 до 10.
В этом примере повторяется сложение натуральных чисел, пока выполняется условие
(числа меньше 10).
Такие циклы называются циклами с предыдущим условием или, коротко, с предусловием, потому что условие записывается перед выполнением повторяющейся группы операторов.
Цикл в программировании - это многократно выполняемая группа команд, часть программы.
Сразу заметим, что в программе может быть такая ситуация, когда цикл вообще не выполняться ни разу.
На языке Паскаль возможны циклы с предусловием, которые организуются с помощью оператора:
while (пока) ... do (выполнять) ...
Формат оператора: while <условие> do <операция>.
Работа оператора заключается в том, что операция выполняется до тех пор, пока будет выполняться условие, указанное в операторе while.
Если операция содержит не один оператор, а несколько, то их объединяют с помощью ОПЕРАТОРНЫХ СКОБОК begin и end, например;
while <условие> do
begin
S1; S2; S3; ...
end;
В этом примере символами s1, s2, s3, ... обозначены операторы.
Действие цикла while
... do ... можно изобразить графически следующей схемой (см.
рис. 20):
Рис. 20
Рассмотрим работу оператора while ... do ... на примере.
Пример 1. Определить и вывести на экран цифры целого числа n.
Разберем математику этого вопроса на частном примере.
Найдем цифры числа 4538. Для этого надо найти остаток от деления 4538 на 10 с помощью операции нахождения остатка от деления целых чисел (mod):
4538 mod 10 = 8, получим последнюю цифру числа (она же является первой справа).
Выдаем сообщение: "1 - я цифра справа равна 8".
После этого выполним целочисленное деление заданного числа 4538 на 10, получим 453 (остаток отбрасывается):
4538 div 10 = 453.
Далее процесс повторяем:
2 - й раз; 453 mod 10 = 3
2 - я цифра справа равна 3,
453 div 10 = 45,
3 - й раз; 45 mod 10 = 5,
3 - я цифра справа равна 5,
45 div 10 = 4,
4 - й раз; 4 mod 10 = 4,
4 - я цифра справа равна 4,
4 div 10 = 0.
Обратите внимание! Процесс будет продолжаться пока
число n не равно нулю. Как только оно станет равно нулю цикл заканчивается.
В программе еще надо указывать какая по счету цифра в числе справа. Для этого надо завести еще одну переменную в качестве счетчика. Эта переменная каждый цикл должна увеличиваться на 1.
Программа
Program
Problem1; {Опред. и вывод на экран цифр числа.}
uses WinCrt;
var
n, p, i : integer;
begin
write('Введите натуральное число n <= 32767 '); readln(n);
i := 1;
while n <> 0 do
begin
p := n mod 10;
writeln(i, ' - я цифра справа равна ', p);
n := n div 10;
i := i + 1
end
end.
Построение
программы и ее работа.
В разделе описаний
Переменная n для целого числа, p - для цифр числа, i - счетчик цифр.
В разделе операторов
С помощью оператора write выводится на экран запрос для пользователя о вводе целого числа. Оператор readln заносит его значение в память и присваивает переменной n.
Счетчику i устанавливается первоначальное значение 1.
В операторе while записывается условие (пока n не равно 0), при котором цикл будет выполняться.
Так как в цикле несколько операторов, то используются операторные скобки
begin ... end.
В них записаны операторы:
p := n mod 10; - определяется последняя цифра;
writeln(i,' - я цифра справа равна ', p); - выводится на экран порядковый номер цифры справа и сама эта цифра;
n := n div
10; - от числа "зачеркивается" последняя цифра;
i := i + 1; - счетчик увеличивается на 1.