Основные алгоритмические конструкции. Повторение. Цикл с заданным числом повторений
Когда учитель заранее знает, какое количество тетрадей дано ему на проверку, реализовать алгоритм проверки тетрадей можно с использованием циклической конструкции с фиксированным числом повторений. Эти конструкции удобно использовать в таких задачах, как подсчет факториала числа n, вычисление n степени числа и им подобных, где заранее известно, сколько раз необходимо выполнить повторения. С помощью блок-схемы такую конструкцию можно записать следующим образом:
Пример цикла с параметром:
Пришиваем пуговицы
Приведем пример алгоритма с использованием циклической конструкции с фиксированным числом повторений.
Пример 1. Рабочий день курьера.
Курьеру дано задание развести документы по десяти адресам. Адреса известны курьеру заранее, и он заранее прокладывает маршрут своего движения.
- 1. Приехать в главный офис.
- 2. Забрать документы.
- 3. Повторить 10 раз пункты с 4-го по 7-й.
- 4. Поехать по очередному в списке документов адресу.
- 5. Найти нужного человека.
- 6. Отдать документ.
- 7. Получить подпись.
- 8. Приехать в главный офис.
- 9. Отчитаться о проделанной работе.
Операторы циклов
Для реализации каждой циклической конструкции в языках программирования предусмотрен свой оператор цикла.
Вдействительности в программировании можно обойтись одной циклической конструкцией с предусловием. Однако для удобства программирования во многих языках реализованы все три циклические конструкции.
Реализация циклических конструкций в целом во многих языках очень похожа:
| Цикл с предусловием | Цикл с постусловием | Цикл с фиксированным числом повторений |
Pascal | while выражение do оператор; | repeat Список операторов until (выражение); | for переменная := <начальное значение> {to | downto} <конечное значение> do оператор; |
Семантика этих операторов в разных языках также схожа:
Цикл с предусловием | Цикл с постусловием | Цикл с фиксированным числом повторений |
Сначала проверяется условие, определяющее вход в цикл. Если оно истинно, то выполняются операторы тела цикла. | Сначала выполняются операторы тела цикла, а после проверяется условие, которое определяет выход из цикла. | Цикл выполняется от начального до конечного значения счетчика с указанным шагом. |
Стоит отметить, что в циклах с пред- и постусловием в разных языках программирования выход из цикла может определяться как истинным, так и ложным условием, все зависит от конкретной реализации оператора. Например, в языке Pascal в цикле с предусловием выход из цикла происходит в том случае, если условие стало ложным, а в цикле с постусловием, наоборот, выход из цикла происходит в том случае, если проверяемое условие стало истинным.
Приведем примеры использования циклических конструкций в разных языках программирования.
Пример 2
Задача: Подсчитать сумму квадратов первых n натуральных чисел.
Эту задачу одинаково удобно решать двумя способами: используя цикл с предусловием или используя цикл с фиксированным числом повторений. Теперь рассмотрим фрагменты программ для обоих вариантов.
| Использование цикла с предусловием | Цикл с фиксированным числом повторений |
Pascal | write('Введите n: ');
readln(n);
s:= 0;
i:= 0;
while i < n do
begin
i:= i + 1;
s:= s + i * i
end;
writeln('Сумма квадратов равна ', s);
| write('Введите n: ');
readln(n);
s:= 0;
for i:= 1 to n do
s:= s + i * i;
writeln('Сумма квадратов равна ', s);
|
Наглядные примеры циклических алгоритмов
Пример 3. Вычисление среднего значения последовательности чисел, заканчивающейся нулем (цикл с предусловием)
Pascal
program Average;
var a, s: real;
n: integer;
begin
s:= 0;
n:= 0;
write('Введите a');
read(a);
while a <> 0 do
begin
s:= s + a;
n:= n + 1;
write('Введите a');
read(a)
end;
if n > 0 then
write('Среднее = ', s / n)
end.
Пример 4. Вычисление суммы последовательности чисел, заканчивающейся нулем (цикл с постусловием). По условию мы должны ввести хотя бы одно число. Если последовательность пустая, то первым числом будет число 0, но его все равно придется ввести. Поэтому логично использовать для записи алгоритма цикл с постусловием, то есть осуществлять проверку после того, как мы ввели число.
Pascal
program Sum;
var a, s: real;
begin
s:= 0;
repeat
write(‘Введите a’);
read(a);
s:= s + a;
until a = 0;
writeln(‘Сумма = ‘, s)
end.
Пример 5. Вычисление целой неотрицательной степени ненулевого числа N (цикл с фиксированным числом повторений)
Pascal
program power;
var i, n: integer;
s, x: real;
begin
write ('Введите число и степень x, n: '); readln(x, n);
s:= 1;
for i:= 1 to n do
s:= s * x
writeln ('x^n = ', s)
end.
-->