Оператор повтора — циклы (for, repeat, while)

Надпись for, while, repeat

Оператор повтора (цикла) предназначен для неоднократного повторения выполнения отдельного участка кода.

Существует три различных цикла: FOR, WHILE и REPEAT, каждый из которых работает с постусловием (REPEAT) и предусловием (FOR, WHILE ). Цикл с предусловием означает, что программа выполняет цикл только после проверки условия, а для цикла с постусловием условие проверяется только после выполнения цикла. Условие в цикле необходимо для его завершения. Чтобы прервать любой цикл во время выполнения, необходимо внутри него поместить функцию BREAK (с англ. "прервать"). Однако BREAK предназначена для остановки лишь одного цикла, следовательно, чтобы непременно остановить два вложенных цикла необходимо внутрь каждого из них поместить BREAK.

Цикл FOR

Структура цикла FOR следующая:

...
for i:=1 to 10 do
s:=s+10;
...

Вначале ставим ключевое слово FOR. Переменная I - счетчик (всегда целый (INTEGER) числовой тип переменной). В данном примере счетчик увеличивается с 1 до 10. При этом переменная S каждый раз увеличивается на 10. Чтобы данный цикл уменьшать с большего числа до меньшего, вместо TO поставим DOWNTO:

...
for i:=10 downto 1 do
s:=s+1;
...

Вторая строка в примере повторяется десять раз. Чтобы повторять несколько действий нужно поставить BEGIN:

...
for i:=1 to 10 do
begin
if i=5 then
break;
writeln(i);
end;
...

В данном примере цикл выведет числа в порядке возрастания от 1 до 4. Во время пятого повторения цикла, он прервется функцией BREAK.

Цикл WHILE

Структура цикла WHILE следующая:

while a<b do
begin
a:=a+1;

...
while a<10 do
a:=a+1;
...

Вначале ставим ключевое слово WHILE. Затем прописываем условие, при котором будет выполняться цикл и ставим ключевое слово DO, после которого прописываем действия, которые необходимо повторить. Как только логическое значение условия станет FALSE (ложь), цикл автоматически завершится. В данном примере действие A:=A+1 будет повторяться до тех пор, пока переменная A не станет больше 10.

Вообще цикл WHILE (с англ. "пока"), чтобы не запутаться, можно читать следующим образом: "Пока переменная A меньше десяти, выполнить следующее действие: в переменную A присвоить значение A плюс один" (или "... значение переменной A увеличить на единицу"). Следовательно, как только значение переменной A станет больше, либо равным 10, цикл сразу же завершится.

Цикл REPEAT

Структура цикла REPEAT следующая:

...
repeat
a:=a+1;
until a=10;
...

Вначале ставим ключевое слово REPEAT. Затем выполняется часть кода до ключевого слова UNTIL, после которого задается условие. Между REPEAT и UNTIL BEGIN и END, в отличие от циклов FOR и WHILE, ставить не нужно. В данном примере  цикл завершается только тогда, когда значение переменной A станет равным 10.

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

...
a:=1;
s:=0;
n:=0;
while n<>5 do
begin
a:=a+1;
s:=s+a;
n:=n+1; end;
...
...
a:=1;
s:=0;
for i:=1 to 5 do
begin
a:=a+1;
s:=s+a;
n:=n+1;
end;
...
...
a:=1;
s:=0;
n:=0;
repeat
a:=a+1;
s:=s+a;
n:=n+1;
until n=5;
...

Задания:

  • Найти квадрат нечетных чисел.
  • Вывести на экран среднее арифметическое вводимых чисел, сколько введено чисел и их сумму.
  • Найти сумму делителей числа A.
  • Проверить, является ли число совершенным (равным сумме всех его делителей).
  • Выяснить, является ли введенное число неполным (делится только на себя и на единицу).


Ответы к заданиям предыдущей статьи:

  • Написать программу, отображающую на экране времена года, при вводе номера месяца.

Для составления этой программы необходимо не только хорошо знать каждый месяц по порядку, но и знать для каждого месяца свое время года. Однако не исключено, что пользователь может ввести число, не соответствующее числу месяца. В этом случае обработаем оператор case таким образом, чтобы в остальных случаях (кроме цифр 1-12) программа выводила ошибку при вводе. В результате получится следующий код:

Времена года на Паскаль

  • Написать программу преобразования цифр (0-10) в слова.

Так как ничего больше, кроме того, что нужно перевести все цифры в слова, не требуется, переведем каждую цифру, используя case:

Pascal Преобразование цифр в слова

  • Составить программу, которая меняла бы окончания, в зависимости от возраста человека ("мне 1 год", "мне 4 года", "мне 75 лет").

Программа "Сколько лет" на Паскаль

Перед составлением программы необходимо проанализировать, в каком случае окончание предложения будет "год", в каком "года", а в каком "лет". После тщательного перебора цифр было выяснено, что всегда, когда последняя цифра возраста становится "1", мы говорим "год": "двадцать один год", "пятьдесят один год"... Если цифра возраста находится в диапазоне от 2 до 4, мы говорим "года": "тридцать три года", "шестьдесят два года"... В остальных случаях мы говорим "лет": "сорок лет", "семьдесят восемь лет"... Однако исключением стал возраст от 10 до 20 лет. Нельзя сказать, что мне одиннадцать год, или мне тринадцать года. Таким образом, используя case, обрабатываем данное исключение: от 5 до 20 пишем "лет".

Напоминаю, что после оператора case begin ставить не нужно. Но его нужно обязательно закрыть (end). Чтобы не запутаться с end, я решил выделить только ту часть программы, которая принадлежит case, немного отодвинув ее вправо. Сама программа при этом не изменится. Просто таким образом программа станет более наглядной для каждого программиста и с ней будет проще разобраться.


 

<<Предыдущая статья                                     Следующая статья >>

Опубликовано:

Читайте также:
Заказывайте товары и услуги:

Комментарии (0)
Оставить комментарий