Контрольные задания > Напишите для Робота программу, закрашивающую все клетки, расположенные непосредственно над горизонтальной стеной и под горизонтальной стеной. Робот должен закрасить только клетки, удовлетворяющие данному условию. Например, для приведённого выше рисунка Робот должен закрасить следующие клетки (см. рисунок).
Вопрос:
Напишите для Робота программу, закрашивающую все клетки, расположенные непосредственно над горизонтальной стеной и под горизонтальной стеной. Робот должен закрасить только клетки, удовлетворяющие данному условию. Например, для приведённого выше рисунка Робот должен закрасить следующие клетки (см. рисунок).
Для решения данной задачи на языке Кумир, можно использовать следующий алгоритм:
кумир
алг
нач
нц пока не стена сверху
вверх
кц
вправо
закрасить
нц пока не стена справа
вправо
закрасить
кц
вниз
влево
закрасить
нц пока не стена слева
влево
закрасить
кц
кон
Объяснение алгоритма:
1. `алг` – начало алгоритма.
2. `нач` – начало основной части алгоритма.
3. `нц пока не стена сверху` – начало цикла, который выполняется до тех пор, пока робот не упрется в верхнюю стену.
4. `вверх` – команда роботу переместиться на одну клетку вверх.
5. `кц` – конец цикла.
6. `вправо` - сдвигаемся вправо от верхней стены
7. `закрасить` – закрашиваем текущую клетку.
8. `нц пока не стена справа` – начало цикла, который выполняется до тех пор, пока робот не упрется в правую стену.
9. `вправо` – команда роботу переместиться на одну клетку вправо.
10. `закрасить` – закрашиваем текущую клетку.
11. `кц` – конец цикла.
12. `вниз` - сдвигаемся вниз от верхней стены.
13. `влево` - сдвигаемся влево от нижней стены.
14. `закрасить` – закрашиваем текущую клетку.
15. `нц пока не стена слева` – начало цикла, который выполняется до тех пор, пока робот не упрется в левую стену.
16. `влево` – команда роботу переместиться на одну клетку влево.
17. `закрасить` – закрашиваем текущую клетку.
18. `кц` – конец цикла.
19. `кон` – конец алгоритма.
Этот алгоритм предполагает, что начальное положение робота находится непосредственно под горизонтальной стеной. Алгоритм сначала находит верхнюю стену, а затем закрашивает все клетки непосредственно над и под этой стеной.
Обратите внимание:
* Алгоритм предполагает, что робот не должен разрушиться, то есть не должен выйти за пределы поля.
* Конечное расположение робота может быть произвольным, главное, чтобы все требуемые клетки были закрашены.
Пример закрашенных клеток для приведённого рисунка:
Предположим, что начальное положение робота обозначено буквой «P» на вашем рисунке. Тогда робот закрасит все клетки, находящиеся непосредственно над горизонтальной линией и непосредственно под ней.