Занятие 8. Алгоритмическая конструкция ветвление

(поделиться сведениями)

Ветвление (альтернатива)

На предыдущем занятии был рассмотрен способ многократного выполнения участка кода с помощью рекурсии. Благодаря рекурсии были разработаны короткие программы, позволяющие рисовать горизонтальную линию любой длины или любое количество флажков.

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

Аварийное завершение программы даже после выполнения поставленной задачи — плохая практика. Чтобы предотвратить выход исполнителя за пределы рабочего поля, надо перед рисованием очередного элемента оценить сложившуюся на рабочем поле ситуацию. Если перед исполнителем достаточно пространства для рисования ещё одного элемента, то можно продолжить рисование. В противном случае выполнение программы надо завершить.

Алгоритмическая конструкция, которая ставит выполнение команд в зависимость от какого-то условия, называется ветвлением или альтернативой. На графических схемах алгоритмов ветвление изображается, как показано на рисунке 8.1. Проверяемое условие записывается в ромбе. После ромба выполнение программы может пойти по одному из двух путей в зависимости от результата проверки условия.

Ромб с условием
Рис. 8.1. Изображение алгоритмической конструкции ветвление на графических схемах алгоритмов.

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

Ветвление в ГРИС Букашка

Для проверки ситуации на рабочем поле в СКИ ГРИС Букашка имеются следующие команды:

если впереди край, то
…
(команды, которые выполняются, если перед исполнителем находится край рабочего поля)
…
конец ветвления

и

если впереди не край, то
…
(команды, которые выполняются, если перед исполнителем находится клетка рабочего поля)
…
конец ветвления

Эти команды позволяют реализовать два варианта неполной альтернативы. Если проверяемое в инструкции если …, то условие соответствует действительности, то выполняются команды между этой инструкцией и инструкцией конец ветвления. В противном случае, если условие не соответствует действительности, эти команды не выполняются, а управление сразу передаётся команде, следующей за инструкцией конец ветвления.

Доработаем программу рисования горизонтальной линии так, чтобы она завершала свою работу без ошибок.