- •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.7. Запись нескольких команд в одной строке
Правила алгоритмического языка разрешают записывать в одной строке несколько команд через точку с запятой. Пусть требуется перевести Робота из клетки А в клетку Б (рис. 3, а).
Путь, который должен пройти Робот, можно разбить на пять одинаковых участков (рис. 3, б). Команды прохождения каждого участка удобно сгруппировать в одну строку — это сокращает запись алгоритма и делает его более понятным:
Рис. 3
а
А2
дано | Робот в клетке А (рис. 16 а)
надо | Робот в клетке Б (рис. 16 а)
нач
в верх; вверх; вправо; вниз; вниз; вправо
вверх; вверх; вправо; вниз; вниз; вправо
вверх; вверх; вправо; вниз; вниз; вправо
вверх; вверх; вправо; вниз; вниз; вправо
вверх; вверх; вправо; вниз; вниз; вправо
кон
ЗАДАЧИ И УПРАЖНЕНИЯ
Дан алгоритм, в котором стерты комментарии и название:
а
А3
дано |
надо |
нач
в верх; закрасить; вниз
вправо; закрасить; влево
вниз; закрасить; вверх
влево; закрасить; вправо
кон
б
А4
дано |
надо |
нач
в верх; вправо; закрасить
вниз; вниз; закрасить
влево; влево; закрасить
вверх; вверх; закрасить
вправо; вниз
кон
Для каждого случая — а) и б) — опишите движение Робота в процессе выполнения соответствующего алгоритма. Нарисуйте начальное и конечное положения Робота и закрашенные в результате выполнения клетки. Придумайте подходящее название алгоритма и впишите комментарии после слов дано и надо
Измените алгоритм решения задачи 1б) так, чтобы при его исполнении Робот:
а) прошел тем же маршрутом, но ничего не закрашивал;
б) закрасил все клетки, в которых он побывал.
Известно, что на поле Робота нет стен и закрашенных клеток. Не делая рисунка, определите, сколько клеток будет закрашено после выполнения следующих команд:
-
а)
закрасить
б)
закрасить
вправо
вправо
вверх
закрасить
закрасить
закрасить
вправо
вправо
закрасить
вправо
вверх
закрасить
закрасить
закрасить
закрасить
закрасить
вправо
вправо
Известно, что на поле Робота имеется одна стена, равная по длине стороне клетки, а попытка выполнить последовательность команд из задачи 3а) приводит к отказу. Составьте последовательность команд, при выполнении которой сохранится конечное положение Робота, закрашены будут те же клетки, а отказа не возникнет.
Составьте алгоритм, при выполнении которого Робот переместится из клетки А в клетку В (рис. 4)
Рис. 4
Составьте алгоритм, который переводит Робота из А в Б и закрашивает клетки, отмеченные точками (рис. 5)
Рис. 5
Петя составил алгоритм, а Коля стер в нем одну команду:
А5
алг
дано | стен на поле нет
надо | Робот погулял и вернулся в исходное положение
нач
вверх
вправо
???
вниз
влево
влево
кон
Определите, какую команду стер Коля, если известно, что при выполнении составленного Петей алгоритма Робот возвращался в исходное положение.
Петя составил алгоритм, при выполнении которого Робот вернулся в исходное положение. Коля стер одну из команд. При выполнении Колиного алгоритма Робот также вернулся в исходное положение. Какую команду стер Коля?
Петя составил алгоритм, при выполнении которого на поле без стен Робот вернулся в исходное положение. Коля переставил две команды местами. Докажите, что при выполнении Колиного алгоритма Робот также вернется в исходное положение.
Петя составил алгоритм для Робота, который на поле без стен и закрашенных клеток закрашивает 5 клеток. Коля переставил в алгоритме две соседние команды. Может ли новый алгоритм закрашивать: а) 3; б) 4; в) 5; г) 6; д) 7 клеток?
Петя составил алгоритм, при выполнении которого Робот закрашивает 5 клеток. Коля переставил в алгоритме две команды (необязательно соседние). Может ли новый алгоритм закрашивать: а) 0; б) 1; в) 5; г) 7; д) 100 клеток?
Петя составил алгоритм, переводящий Робота из клетки А в клетку Б с закрашиванием каких-то клеток. Что должен сделать Коля с этим алгоритмом, чтобы получить алгоритм, переводящий Робота из Б в А и закрашивающий те же клетки?