|
Последовательное выполнение команд в программе определяется структурой следование. Для организации повторяющихся действий в алгоритме используется команда цикла. Команда ветвления позволяет выполнять одну или другую последовательность команд в зависимости от истинности условия.
Команды цикла и ветвления управляют порядком выполнения других команд в программе и относятся к командам управления. Использование алгоритмической конструкции следование предполагает отсутствие управляющих конструкций. Рассмотрим примеры алгоритмов, содержащих несколько алгоритмических конструкций. Пример 16.1. Написать программу для закраски некоторых клеток на поле. Окончание движения Робота определяет стена справа. По пути нужно закрасить те клетки, сверху над которыми есть стена. Для решения задачи Робот при движении вправо должен проверять каждую клетку на своем пути. Если условие сверху стена выполняется, то Робот закрашивает эту клетку. После проверки клетки Робот сдвигается вправо. Эти действия выполняются в цикле пока справа нет стены. В этой задаче внутри конструкции цикла используется конструкция ветвления. Пример 16.2. Робот должен дойти до конца «коридора» переменного размера. В «коридоре» может быть поворот влево или вправо. Для решения задачи Робот сначала перемещается вверх, до тех пор, пока истинно условие нет стены сверху. Стена, появившаяся сверху, означает, что начался поворот «коридора». Если слева нет стены, то в «коридоре» надо поворачивать влево, иначе «коридоре» Робот поворачивает вправо. Дальше двигаемся в выбранном направлении, пока не дойдем до стены. Пример 16.3. *Роботу необходимо переместиться из верхнего левого угла поля в нижний левый угол. При этом, на поле присутствуют стены. Робот начинает движение вправо до правой границы поля и спускается на одну клетку вниз. Затем, движение продолжается влево до левой границы поля и, также, – спуск вниз на одну клетку. Эти действия Робот должен повторить 4 раза. В данной задаче внутри цикла с параметром используются два других цикла с предусловием.
Один из возможных вариантов вложенных циклов представлена на блок-схеме в примере 16.4. Как видно из примеров, базовые алгоритмические структуры можно комбинировать друг с другом так, как этого требует алгоритм решения задачи.
|
Пример 16.1. Одна из возможных начальных обстановок.
Пример 16.2. Одна из возможных начальных обстановок.
Пример 16.3. *Начальная обстановка Программа для исполнителя Робот:
Пример 16.4. Блок-схема вложенных циклов. |
1. Назовите базовые алгоритмические конструкции.
2. Какие базовые алгоритмические конструкции относят к элементам управления?
3. Приведите примеры использования базовых алгоритмических конструкций.
4. *Что такое вложенный цикл?
Упражнения
1. Объясните, какие алгоритмические конструкции используются в приведенных ниже программах. Нарисуйте блок-схемы данных алгоритмов. Предложите пример начальной обстановки, в которой алгоритм выполнится корректно.
| а) | б) |
| from pyrob.api import *@task def upr_16_1(): while wall_left(): fill_cell() move_down()run_tasks() |
from pyrob.api import *@task def upr_16_2(): while cell_is_filled(): if not all_left(): move_left()run_tasks() |
2. Для решения задачи upr_16_2 Миша написал программу, но она работает неправильно. Какие ошибки допустил Миша?
![]() |
from pyrob.api import *
@task run_tasks() |
| 3. Заполните пропуски (многоточие на желтом фоне) в программе решения задачи upr_16_3 так, чтобы она работала верно.
В строке поля Робота может быть произвольное количество клеток. |
![]() |
4. Решите задачу upr_16_4, используя внутри цикла команду ветвления.
![]() |
![]() |
5. *Решите задачу upr_16_5, используя вложенные циклы. Размер поля заранее не известен.
6. *Придумайте задачу для исполнителя Робот, в которой будут использоваться различные алгоритмические конструкции.









