12.03.2022

Циклический алгоритм, операторы цикла while, repeat, for, использование в решении задач

Циклический алгоритм, операторы цикла 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.Верно ли, что данное число простое?

Задача 5. Известны максимальные скорости каждой из 10 иномарок легковых автомобилей. Определить, какой автомобиль (по номеру) самый быстрый.

Комментариев нет:

Отправить комментарий