Циклический алгоритм, операторы цикла while, repeat, for, использование в решении задач
По своей структуре алгоритмы делят на следующие типы:
- линейный
- разветвляющийся
- циклический
В этой публикации речь пойдет о циклическом алгоритме и его реализации в языке программирования Паскаль, приведем решения задач с использованием операторов цикла.
Циклический алгоритм – это алгоритм, в котором действия повторяются многократно.
В языке Паскаль для описания циклического алгоритма используют операторы цикла, такие как:
- оператор цикла с предусловием while
- оператор цикла с постусловием repeat
- оператор цикла с параметром for, его еще называют оператор цикла с счетчиком.
Оператор цикла с предусловием while
Формат оператора |
Перевод слов |
while условие do begin операторы; end; |
Пока условие делай тело цикла |
Как работает оператор цикла while
Пока условие ИСТИНА выполняются операторы между словами begin и end (тело цикла).
Приведем примеры фрагментов программы с оператором цикла while
Пример 1
k:=2;
while
k<=4 do
begin
k:=k+1;
end;
Пока условие k<=4 ИСТИНА выполняется оператор k:=k+1 (тело цикла).
Таблица пошагового выполнения фрагмента программы
Шаг |
k |
k<=4 |
1 |
2 |
2<=4 да |
2 |
2+1=3 |
3<=4 да |
3 |
3+1=4 |
4<=4 да |
4 |
4+1=5 |
5<=4 нет |
Таким образом, тело цикла выполнилось 3 раза. Переменная k управляет работой цикла.
Пример 2
k:=10;
while
k<5 do
begin
k:=k+1;
end;
Таблица пошагового выполнения фрагмента программы
Шаг |
k |
k<5 |
1 |
10 |
10<5 нет |
В этом примере тело цикла ни разу не выполнилось, так как условие продолжения цикла ложно. Поэтому оператор цикла while называют оператором цикла с предусловием, сначала осуществляется проверка условия, а только потом выполняется тело цикла.
Использование оператора цикла while в решении задач
Задача 1. С клавиатуры вводятся числа до первого введенного 0. Сколько чисел было введено?
Задача 2. Натуральное число N вводится с клавиатуры. Найти сумму чисел 1+1/2+1/3+…+1/N.
Задача 3. Дано натуральное число N.Вывести на экран цифры данного числа в столбец.
Оператор цикла с постусловием repeat
Формат оператора |
Перевод слов |
repeat операторы; until
условие; |
Повторяй тело цикла пока условие ложно |
Как работает оператор цикла repeat
Выполняются операторы между словами repeat и until (тело цикла), пока условие ложно.
Приведем примеры фрагментов программы с оператором цикла repeat
Пример 1
k:=0;
repeat
k:=k+1;
until
k>5;
Выполняется оператор k:=k+1, пока k>5 ложно.
Таблица пошагового выполнения фрагмента программы
Шаг |
k |
k<=4 |
1 |
0 |
|
2 |
1 |
1>5 нет |
3 |
2 |
2>5 нет |
4 |
3 |
3>5 нет |
5 |
4 |
4>5 нет |
6 |
5 |
5>5 нет |
7 |
6 |
6>5 да |
Тело цикла выполнилось 6 раз. Переменная k управляет работой цикла.
Пример 2
k:=0;
repeat
k:=k+1;
until k>=1;
Выполняется оператор k:=k+1, пока k>=1 ложно.
Таблица пошагового выполнения фрагмента программы
Шаг |
k |
k<=4 |
1 |
0 |
|
2 |
1 |
1>=1 да |
Тело цикла выполнилось 1 раз. Условие стало истинным после первой итерации. Оператор цикла repeat называют оператором цикла с постусловием, так как сначала выполняется тело цикла, а затем проверяется условие выхода из цикла. Таким образом, тело цикла в операторе repeat всегда выполнится хотя бы один раз.
Оператор цикла for с параметром
(счетчиком)
Формат оператора |
Перевод слов |
for
k:=a to b do begin операторы; end; |
Для счетчика k от начального значения a до конечного значения b делай тело цикла. |
Как работает оператор цикла for с параметром
Выполняются операторы между словами begin и end (тело цикла) пока счетчик меняет свое значение от начального до конечного с шагом 1. Увеличение счетчика на 1 происходит автоматически.
Приведем примеры фрагментов программы с оператором цикла for
Пример 1
for k:=1 to 5 do
begin
write(k,’ ‘);
end;
Оператор write(k,’ ‘) выполняется ровно 5 раз для значений k=1,2,3,4 и 5. В результате на экран будут выведены числа от 1 до 5.
Пример 2
for k:=10 to 10 do
begin
write(k,’ ‘);
end;
Оператор write(k,’ ‘) выполняется ровно 1 раз для значения k=10. В результате на экран будет выведено одно число 10.
Пример 3
for k:=5 to 1 do
begin
write(k,’ ‘);
end;
Оператор write(k,’ ‘) ни разу не выполнится, так как конечное значение счетчика меньше начального (1<5).
Таким образом, для того чтобы тело цикла выполнилось хотя бы один раз, необходимо, чтобы конечное значение счетчика было больше или равно начальному значению.
Другой способ использования оператора цикла с параметром for
Формат оператора |
Перевод слов |
for
k:=a downto b do begin операторы; end; |
Для счетчика k от начального значения a до конечного значения b делай тело цикла. |
В данном случае для работы цикла конечное
значение счетчика b должно быть меньше или равно начального значения a.
Пример 1
for k:=5 downto 1 do
begin
write(k,’ ‘);
end;
Оператор write(k,’ ‘) выполняется ровно 5 раз для значений k=5,4,3,2 и 1. В результате на экран будут выведены числа от 5 до 1.
Пример 2
for k:=10 downto 20 do
begin
write(k,’ ‘);
end;
Оператор write(k,’ ‘) ни разу не выполнится, так как конечное значение счетчика больше начального (20>10).
Использование оператора цикла for в решении задач
Задача 1. Дано целое число A.Вывести на экран в столбец 30 раз число A.
Задача 2. Вывести на экран в столбец все натуральные двузначные числа.
Задача 3. Вывести на экран таблицу умножения на 2 для чисел от 1 до 9.
Задача 4. Дано натуральное число N.Верно ли, что данное число простое?
Комментариев нет:
Отправить комментарий