- •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. Тестирование алгоритмов
7.5. Исполнение алгоритма
Получив приказ исполнить алгоритм, компьютер выполняет следующие действия:
Находит в памяти алгоритм с указанным именем.
Проверяет, соблюдаются ли начальные условия, указанные в строке дано (в примерах этого параграфа в дано пишутся только комментарии, но позднее мы научимся помещать там условия, которые компьютер сможет проверять).
Последовательно читает команды после строки нач и передает их исполнителю. Каждый такой приказ на выполнение команды называется вызовом этой команды.
Встретив строку кон, проверяет, достигнута ли цель алгоритма, указанная в строке надо (см. примечание к п. 2).
Заканчивает выполнение алгоритма.
Пример. Компьютер получает приказ исполнить алгоритм "ход конем".
Компьютер находит в памяти алгоритм А1.
В строке дано записан комментарий — компьютер его пропускает.
Компьютер последовательно командует Роботу вправо, вправо, вниз. Робот исполняет эти команды.
В строке надо помещен комментарий — компьютер его пропускает.
Компьютер заканчивает выполнение алгоритма "ход конем".
7.6. Ошибки в алгоритмах
Если при составлении алгоритма мы случайно вместо вниз напишем внис или вместо вправо — направо, то компьютер нашу запись не поймет и, даже не приступая к выполнению алгоритма, сообщит об ошибке. Ошибки в записи алгоритма называются синтаксическими.
Но даже если все команды записаны правильно, это еще не значит, что алгоритм составлен без ошибок. Ошибки в составлении алгоритма называются логическими.
Иногда логическая ошибка может привести к отказу — невозможности выполнить очередную команду. Например, при попытке выполнить алгоритм "ход конем" (А1) в обстановке, изображенной на рисунке 2, компьютер попытается последовательно вызвать команды вправо, вправо, вниз. Однако вторую команду вправо Робот выполнить не сможет — возникает отказ. Получив от исполнителя сигнал отказа, компьютер сообщает об ошибке и прекращает выполнение алгоритма.
Рис. 2
У каждого исполнителя могут быть свои причины отказов. Отказ Робота возникает при попытке идти сквозь стену.
Ошибки в алгоритме не всегда приводят к отказам. Возможны логические ошибки, не обнаруживаемые компьютером ни до, ни во время выполнения алгоритма. Так, если в алгоритме А1 мы вместо вправо случайно напишем влево, то компьютер выполнит алгоритм, Робот из клетки А переместится в клетку В (см. рис. 2), но никаких сообщений об ошибках мы не получим (да и откуда компьютеру знать, куда мы на самом деле хотели переместить Робота!).
В правильно составленных алгоритмах никаких ошибок быть не должно. Но если синтаксические ошибки обычно легко устранимы, то поиск и устранение логических ошибок могут оказаться весьма трудным делом. Таким образом, все возможные ошибки можно представить в виде таблицы:
Таблица 1. Ошибки в алгоритмах.
№ |
Смысл ошибки |
Название |
Пример |
1 |
Цель не достигнута |
Логическая |
Робот не попал куда надо |
2 |
Команда не входит в СКИ |
Синтаксическая |
наверх, направо |
3 |
Авария при попытке исполнения команды |
Семантическая (отказ) |
Попытка пройти сквозь стену |