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