ветвление
На предыдущем занятии был рассмотрен способ многократного выполнения участка кода с помощью рекурсии. Благодаря рекурсии были разработаны короткие программы, позволяющие рисовать горизонтальную линию любой длины или любое количество флажков.
К сожалению, все эти программы завершались с ошибкой. Дело в том, что при выполнении программы в конце концов исполнитель достигает края рабочего поля и пытается выйти за его пределы, что приводит к аварии.
Аварийное завершение программы даже после выполнения поставленной задачи — плохая практика. Чтобы предотвратить выход исполнителя за пределы рабочего поля, надо перед рисованием очередного элемента оценить сложившуюся на рабочем поле ситуацию. Если перед исполнителем достаточно пространства для рисования ещё одного элемента, то можно продолжить рисование. В противном случае выполнение программы надо завершить.
Алгоритмическая конструкция, которая ставит выполнение команд в зависимость от какого-то условия, называется ветвлением
или альтернативой
. На графических схемах алгоритмов ветвление изображается, как показано на рисунке 8.1. Проверяемое условие записывается в ромбе. После ромба выполнение программы может пойти по одному из двух путей в зависимости от результата проверки условия.
ветвлениена графических схемах алгоритмов.
На рисунке изображена так называемая полная альтернатива
. Но на практике одна из ветвей может не содержать команд, и тогда получается неполная альтернатива
, команды которой выполняются только при выполнении или не выполнении условия.
Букашка
Для проверки ситуации на рабочем поле в СКИ ГРИС Букашка
имеются следующие команды:
если впереди край, то
…
(команды, которые выполняются, если перед исполнителем находится край рабочего поля)
…
конец ветвления
и
если впереди не край, то
…
(команды, которые выполняются, если перед исполнителем находится клетка рабочего поля)
…
конец ветвления
Эти команды позволяют реализовать два варианта неполной альтернативы. Если проверяемое в инструкции
условие соответствует действительности, то выполняются команды между этой инструкцией и инструкцией если …, то
. В противном случае, если условие не соответствует действительности, эти команды не выполняются, а управление сразу передаётся команде, следующей за инструкцией конец ветвления
.конец ветвления
Доработаем программу рисования горизонтальной линии так, чтобы она завершала свою работу без ошибок.