§ 10. Алгоритмическая конструкция повторение

10.1. Алгоритмы с циклами

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

Как правило, человек составляет программы, в которых каждая команда в отдельности и весь алгоритм в целом выполняются за конечное число повторений.

Алгоритмическая конструкция повторение (цикл) определяет последовательность действий, выполняемых многократно. Эту последовательность действий называют телом цикла.

Существует несколько возможностей управлять тем, сколько раз будет повторяться тело цикла.

Алгоритмическая конструкция цикл с параметром (цикл со счетчиком) — способ организации цикла, при котором количество повторов зависит от начального и конечного значений параметра цикла.

Таким образом, цикл с параметром организует выполнение команд тела цикла заранее известное число раз (пример 10.1).

Параметр цикла определяет нумерацию действий в цикле. Параметр цикла может принимать только целые значения. Часто нумерацию начинают с 1 и заканчивают числом N (пример 10.2). В этом случае цикл выполнится N раз. Если нумерация установлена двумя произвольными числами N1 (начальное значение) и N2 (конечное значение), то цикл выполнится (N2 – N1 + 1) раз.

Алгоритмическая конструкция цикла с параметром может изображаться на блок-схеме следующим образом (значение параметра изменяется от 1 до N):

В данной конструкции в прямоугольнике(ах) записываются повторяющиеся команды алгоритма (тело цикла), которые выполняются N раз (Да). При этом после каждого выполнения команд тела цикла происходит проверка, который раз выполняется цикл. На блок-схеме переход на проверку условия изображается в виде стрелки, выходящей из тела цикла и возвращающейся к проверке. Как только команды тела цикла выполнятся N раз (Нет), цикл завершается (пример 10.3). Если N  0, то команда тела цикла не выполнится ни разу.

10.2. Использование команды цикла с параметром для исполнителя Робот

Чтобы составлять алгоритмы с циклами для компьютерного исполнителя Робот, нужно знать, как записывается команда цикла.

Для записи цикла с параметром используется команда for. Формат записи команды:

for var i:= N1 to N2 do1

begin

тело цикла;

end;

Строка for var i:= N1 to N2 do является заголовком цикла. Эту строку можно прочитать следующим образом: «Для переменной i от N1 до N2 делай». Если N N1, то команды тела цикла выполнятся (N2 – N1 + 1) раз, иначе цикл не выполнится ни разу.

Операторные скобки — пара слов, определяющих в языке программирования блок команд, воспринимаемый как единое целое, как одна команда.

Слова begin и end; являются операторными скобками в языке Pascal. Если тело цикла состоит из одной команды, операторные скобки можно опустить.

Пример 10.4. Решим задачу с2 из встроенного задачника.

Робот должен закрасить клетки поля, перемещаясь вправо. Для закрашивания всех 10 клеток поля нужно в цикле выполнить 10 раз команды:

закрасить;

вправо.

Данные команды образуют тело цикла.

Командами, образующими тело цикла, могут быть любые команды из системы команд исполнителя. Кроме того, в теле цикла может вызываться вспомогательный алгоритм. Использование вспомогательного алгоритма позволит сократить запись тела цикла и сделает программу более понятной.

Пример 10.5. Решим задачу с7 из встроенного задачника.

На поле исполнителя Робот присутствуют стены. При обходе стен Робот выполняет следующие команды:

закрасить; вниз;

закрасить; влево;

закрасить; вверх;

закрасить; влево.

Чтобы решить задачу, Робот должен повторить эти команды 5 раз. Оформим данные команды как вспомогательный алгоритм kvadrat и вызовем его в цикле.

В рассмотренном примере тело цикла состоит из одной команды kvadrat, поэтому операторные скобки begin end; можно не использовать.

Понятие цикла используется в различных сферах человеческой деятельности.

Под циклом понимают совокупность явлений, процессов, составляющих кругооборот в течение определенного промежутка времени. С этой точки зрения можно говорить о годовом цикле вращения Земли вокруг Солнца или о производственном цикле.

Цикло м называют тот или иной круг наук: гуманитарный цикл наук, физико-математический цикл.

Циклом является законченный ряд каких-либо произведений, чего-либо излагаемого, исполняемого: цикл лекций, цикл стихотворений.

Понятие цикла используется в математике, химии, биологии, геологии, музыке, литературе, информатике и других науках.

Пример 10.1. Приготовление пельменей.

    1. Вскипятить воду.
    2. Для i = 1..10 повторять:

      1. 2.1.
        Достать пельмень из упаковки.
      2. 2.2.
        Бросить пельмень в кипящую воду.
    3. Варить 7 минут.

В данном примере параметр цикла i изменяется от 1 до 10. Действия «достать пельмень из упаковки» и «бросить пельмень в кипящую воду» выполняются 10 раз и составляют тело цикла.

Блок-схема данного алгоритма будет выглядеть следующим образом:

Пример 10.2. Вычислим an (например, 35 = 243). Алгоритм возведения числа в степень может быть описан следующим образом:

    1. Ввести значения a и n .
    2. Определить начальное значение результата r = 1.
    3. Для i = 1.. n повторять:
      1. 3.1.Умножить результат на a .
  1. Записать результат.

Пример 10.3. В фольклорных произведениях часто встречается многоголовый Змей Горыныч (количество голов может быть, например, 7). Алгоритм победы над Змеем Горынычем может быть описан следующим образом:

    1. Найти Змея Горыныча.
    2. Для i = 1.. 7 повторять:
      1. 2.1. Отрубить голову Змею Горынычу.
  1. Отпраздновать победу.

Блок-схема данного алгоритма:

Н. М. Кочергин. «Змей Горыныч». 1960-е гг.

Пример 10.4. Начальная обстановка:

Программа для исполнителя Робот:

Пример 10.5. Начальная обстановка:

Программа для исполнителя Робот:



1. Что понимают под алгоритмической конструкцией повторение?



2. Выберите из предложенных вариантов правильную запись цикла с параметром



3. Что такое операторные скобки?



  1. Опишите словесно или изобразите с помощью блок-схемы следующие алгоритмы:

    1. Рисование в графическом редакторе изображения из 4 квадратов с диагоналями и закрашенными областями:

    2. Каждую минуту бактерия делится на две. Изначально есть одна бактерия. За бактериями наблюдали 10 минут. Определите количество бактерий в конце наблюдения. Заполните таблицу согласно алгоритму.

      Время, мин

      0

      1

      2

      3

      4

      5

      6

      7

      8

      9

      10

      Кол-во бактерий

      1

      2

    3. Сверление 10 отверстий.

    4. Сервировка стола к обеду на 6 персон.

      Семиклассник Андрей после школы пригласил своего друга Юру помочь ему в решении 5 задач по математике. В гостях Юра посоветовал Андрею провести остаток дня, воспользовавшись следующим алгоритмом, записанным в виде блок-схемы. Почему Андрей получил двойку по математике?

       
  2. Составьте программу для решения задачи с3 из встроенного задачника. Сравните алгоритм решения этой задачи с примером 10.4. Что у них общего? Чем они отличаются?

  1. Составьте программу для решения задачи с4 из встроенного задачника. Сравните ее решение с предыдущим упражнением и примером 10.4.

  2. Составьте программу для решения задачи с8 из встроенного задачника. Используйте вспомогательный алгоритм.

  1. Составьте программу для решения задачи с5 из встроенного задачника.

  2. Для решения задачи с14 Петя составил алгоритм и записал программу. Петин младший брат Олег удалил несколько команд. Сколько команд удалил Олег? Восстановите программу, которую написал Петя.

     

     

     

  3. Максим пытается представить, как можно было бы использовать роботов в различных ситуациях, описанных в литературных произведениях. Например, для Тома Сойера, которого тетушка Полли отправила красить забор, Максим придумал робота-маляра и решил, что такому роботу достаточно одной команды: покрась доску. Алгоритм покраски забора из 20 досок Максим записал так:

    1. Установить робота у левого края забора.
    2. Для = 1..20 повторять:
      1. 2.1. Покрась доску.

    Сможет ли робот-маляр покрасить забор? В чем ошибка Максима? Исправьте алгоритм, добавив необходимую(ые) команду(ы).