- •7. Алгоритмы управления исполнителями.
- •7.1. Исполнитель Робот
- •7.2. Программное управление исполнителем
- •7.3. Общий вид алгоритма
- •7.4. Комментарии в алгоритмическом языке
- •7.5. Исполнение алгоритма
- •7.6. Ошибки в алгоритмах
- •7.7. Запись нескольких команд в одной строке
- •8. Вспомогательные алгоритмы
- •8.1. Понятие о вспомогательном алгоритме
- •Основные и вспомогательные алгоритмы
- •8.3. Пример использования вспомогательных алгоритмов
- •8.4. Метод последовательного уточнения
- •8.5. Заголовки вспомогательных алгоритмов
- •8.6. Разделение труда между компьютером и исполнителями
- •9 Цикл n раз
- •9.1. Пример алгоритма с циклом n раз
- •9.2. Общий вид цикла n раз
- •9.3. Короткие алгоритмы могут описывать длинные последовательности действий
- •9 А15 .4. Внутри цикла можно вызывать вспомогательные алгоритмы
- •9.5. Внутри цикла могут быть другие циклы
- •10. Цикл пока
- •10.1. Команды-вопросы Робота
- •10.2. Цикл пока
- •10.3. Диалог Компьютер — Робот при выполнении цикла пока
- •10.4. Общий вид цикла пока
- •10.5. Цикл n раз и цикл пока
- •10.6. Условия в цикле пока
- •10.7. Свойства цикла пока
- •1. Тело цикла может не выполниться ни разу
- •2. Выполнение цикла может не завершиться
- •3. Условие цикла не проверяется в процессе выполнения тела цикла
- •4. Перед каждым выполнением тела цикла условие обязательно выполняется.
- •5. Сразу после окончания цикла условие не выполняется
- •10.8. Составление алгоритмов с циклом пока
- •10.9. Примеры построения алгоритмов
- •1. Закрашивание ряда
- •2. Закрашивание коридора произвольной длины
- •3. Выход в левый верхний угол в лабиринте
- •11. Команды ветвления и контроля
- •11.1. Пример алгоритма с командой если
- •11.2. Общий вид команды если
- •11.3. Команды контроля
- •11.4. Пример алгоритма с командой утв
- •11.5. Выбор из многих вариантов
- •11.6 Общий вид команды выбор
- •12 Анализ и тестирование алгоритмов
- •12.1. Результаты труда программиста
- •12.2. Что такое правильный алгоритм
- •12.3. Пример рассуждения, подтверждающего правильность алгоритма
- •12.4. Тестирование алгоритмов
11.6 Общий вид команды выбор
В общем виде команда выбор записывается так:
выбор при условие 1 : серия 1 при условие 2 : серия 2 …. при условие н : серия н иначе серия н+1 все |
выбор при условие 1 : серия 1 при условие 2 : серия 2 …. при условие н : серия н все |
Графическая схема выполнения команды выбор показана на рисунке 32.
Рис. 32
Допустимо любое количество условий и соответствующих им серий команд. Как и в команде если, серия н + 1 вместе со служебным словом иначе может отсутствовать.
При выполнении команды выбор компьютер последовательно проверяет условия: условие 1, условие 2 и т. д. Как только очередное условие окажется верным, компьютер выполняет соответствующую ему серию команд и прекращает выполнение команды выбор, переходя к командам, записанным после слова все. Оставшиеся условия не проверяются и серии не выполняются.
Например, если Робот стоит в чистом поле без стен, то при выполнении алгоритма "уйти из клетки" первое условие (сверху свободно) оказывается верным, компьютер командует Роботу вверх, и на этом исполнение алгоритма заканчивается.
Если все условия проверены и ни одно из них не соблюдается, то выполняется серия команд, записанная после слова иначе, или, если слова иначе нет, никакие команды не выполняются.
ЗАДАЧИ И УПРАЖНЕНИЯ
1. На поле Робота стен нет. В ряду из десяти клеток правее Робота некоторые клетки закрашены. Составьте алгоритм, который закрашивает клетки:
а) ниже каждой закрашенной;
б) выше и ниже каждой закрашенной;
в) левее каждой закрашенной;
г) правее каждой закрашенной;
д) левее и правее каждой закрашенной.
2. Воспользовавшись вспомогательными алгоритмами "вверх до стены", "вниз до стены", "вправо до стены", "влево до стены", составьте алгоритмы со следующими заголовками:
а) алг переход в противоположный угол
дано | Робот стоит в каком-то углу прямоугольника,
| огороженного стенами. Других стен нет
надо | Робот в противоположном углу
б) алг к противоположной стене
дано I Робот стоит у стены (но не в углу) внутри прямо-
| угольника, обнесенного со всех сторон стенами;
| внутри прямоугольника других стен нет
надо | Робот перешел к противоположной стене
3. Петя решил сделать алгоритм "уйти из клетки" более понятным и не использовать команду выбор. Вот что у него получилось:
а
А30
дано | Робот в клетке, из которой есть выход
надо | Робот вышел из исходной клетки
нач
е сли сверху свободно
| то вверх
все :'
если справа свободно
| то вправо
все
если снизу свободно
[ то вниз
все
если слева свободно
| то влево
все
кон
Всегда ли после выполнения этого алгоритма Робот выйдет из исходной клетки?
Робот внутри коридора без боковых выходов, идущего в неизвестном направлении. Составьте алгоритм, выводящий Робота из коридора.
Робот внутри тупика неизвестного направления. Составьте алгоритм, выводящий Робота из тупика.
Робот на перекрестке, от которого отходят один коридор (без боковых выходов) и три тупика. Составьте алгоритм, после выполнения которого, Робот окажется с противоположной стороны коридора.