13.1. Алгоритмы с цикламиВ окружающем мире можно наблюдать ситуации, при которых различные действия, процессы и события повторяются. Некоторые повторяются несколько раз и завершаются. Человеку также регулярно приходится выполнять повторяющиеся действия: умываться, готовить еду, посещать парикмахерскую, ходить на работу и др. Как правило, человек составляет программы, в которых каждая команда в отдельности и весь алгоритм в целом выполняются за конечное число повторений.
Существует несколько возможностей управлять тем, сколько раз будет повторяться тело цикла.
Цикл с параметром организует выполнение команд тела цикла заранее известное число раз (пример 13.1). Параметр цикла играет роль счётчика и определяет нумерацию повторов тела цикла. Часто нумерацию начинают с 0 и ограничивают числом N. Цикл выполнится N раз для значений 0, 1, …, N – 1. Если нумерация установлена двумя произвольными числами N1 (начальное значение) и N2 (конечное значение), то цикл выполнится (N2 – N1) раз (примеры 13.2, 13.3). Алгоритмическая конструкция цикла с параметром может изображаться на блок-схеме следующим образом:
Для записи цикла с параметром в языке Python используется команда for. Формат записи команды: for i in range (N1, N2): Строка for i in range (N1, N2): является заголовком цикла. Эту строку можно прочитать следующим образом: «Для переменной 𝑖 в диапазоне от 𝑁1 до 𝑁2 делай». Переменную 𝑖 называют переменной (параметром) цикла. Одно выполнение тела цикла называют итерацией цикла. Процесс работы цикла for описан в примере 13.4. Команды тела цикла записываются со сдвигом относительно заголовка цикла. for i in range (N): Такая запись соответствует записи for i in range (0, N): Если переменная цикла должна изменятся не на 1, то можно задать шаг ее изменения: for i in range (N1, N2, h): В этом случае при каждой итерации цикла значение переменной i будет изменяться на величину h. Значение h может быть положительным или отрицательным целым числом, но не может равняться нулю (пример 13.5). 13.2. Использование команды цикла с параметром для исполнителя Робот
|
Пример 13.1. Приготовление пельменей. 1. Вскипятить воду 2. Для i от 1 до 10 повторять 2.1. Достать пельмень из упаковки 3. Варить 7 минут В данном примере параметр цикла i изменяется от 1 до 10. Действия «Достать пельмень из упаковки» и «Бросить пельмень в кипящую воду» составляют тело цикла. Тело цикла выполнится 10 раз (для значений i = 1, 2, … 10). Пример 13.2. Вычислить an (например, 35 = 243. Алгоритм возведения числа в степень может быть описан следующим образом: 1. Ввести значения a и n. Пример 13.3. В фольклорных произведениях часто встречается Алгоритм победы над Змеем Горынычем может быть описан следующим образом: 1. Найти Змея Горыныча Блок-схема данного алгоритма: Пример 13.4. Работа цикла for i in range (N1, N2).
Пример 13.6. Начальная обстановка.
Результат работы программы: Пример 13.7. Начальная обстановка.
|
1. Какие циклические процессы, происходящие в окружающем мире, вы можете назвать?
2. Что понимают под алгоритмической конструкцией повторение?
3. Что такое тело цикла?
4. Что такое команда цикл с параметром?
5. Какие ключевые слова входят в описание заголовка цикла с параметром в Python?
6. Что такое итерация цикла?
7. Какие есть способы записи команды цикла в языке Python?
Упражнения
1. Опишите словесно или изобразите с помощью блок-схемы следующие алгоритмы:
1. Рисование в графическом редакторе следующего изображения (повторить 4 раза рисование квадрата с диагоналями и закрашенными областями):
2. Сверление 10 отверстий
3. Сервировка стола к обеду на 6 персон.
4. Каждую минуту бактерия делится на две. Изначально есть одна бактерия. За бактериями наблюдали 10 минут. Определите количество бактерий в конце наблюдения. Заполните таблицу согласно алгоритму.
2. Семиклассник Вася после школы пригласил своего друга Колю помочь ему в решении 5 задач по математике. В гостях Коля посоветовал Васе провести остаток дня, воспользовавшись следующим алгоритмом, записанным в виде блок-схемы. Почему Вася получил двойку по математике?
3. Составьте программу для решения задачи upr_13_3. Сравните алгоритм решения этой задачи с примером 13.5. Что у них общего? Чем они отличаются?
4. Составьте программу для решения задачи upr_13_4. Сравните ее решение с упражнением 3 и примером 13.5.
|
5. Составьте программу для решения задачи upr_13_5. Используйте вспомогательный алгоритм для решения задачи. |
6. *Составьте программу для решения задачи upr_13_6. Используйте вспомогательный алгоритм для решения задачи. |
|
7. Составьте программу для решения задачи upr_13_7. |
8. *Составьте программу для решения задачи upr_13_8. |
9. Для решения задачи upr_13_9 Петя составил алгоритм и записал программу. Петин младший брат Олег удалил несколько команд. Сколько команд удалил Олег? Восстановите программу, которую написал Петя.
10. Вася пытается представить, как можно было бы использовать роботов в различных ситуациях, описанных в литературных произведениях. Например, для Тома Сойера, которого тетушка Поли отправила красить забор, Вася придумал робота-маляра. Вася решил, что такому роботу в системе команд достаточно одной команды: покрась доску. Алгоритм покраски забора из 20 досок Вася записал так:
1. установить робота у левого края забора
2. для i = 0..20 повторять
3. покрась доску
Сможет ли робот-маляр покрасить забор? В чем ошибка Васи? Исправьте алгоритм, добавив необходимую(-ые) команду(-ы)












