Контрольные задания > 12.1. На бесконечном поле имеется вертикальная стена. Длина стены 6 клеток. От нижнего конца стены вправо отходит горизонтальная стена длиной 4 клетки, в стене есть ровно один проход, шириною 1 клетка. Робот находится в клетке, расположенной справа от верхнего края вертикальной стены. На рисунке указано расположение стен и Робота. Робот обозначен буквой «Р». Напишите для Робота программу, использующую 4 циклических алгоритма, закрашивающую все клетки, расположенные непосредственно ниже и выше горизонтальной стены. Вы можете использовать цикл нц-раз-кц или нц-пока-кц. Робот должен закрасить только клетки, удовлетворяющие данному условию. На рисунке показаны клетки, которые Робот должен закрасить (см. рисунок). Конечное расположение Робота может быть произвольным. При исполнении алгоритма Робот не должен разрушиться. Выполнение алгоритма должно завершиться. Алгоритм может быть выполнен в среде формального исполнителя или записан в текстовом редакторе. Сохраните алгоритм в формате программы Кумир или в текстовом файле. Название файла и каталог для сохранения Вам сообщат организаторы.
Вопрос:
12.1. На бесконечном поле имеется вертикальная стена. Длина стены 6 клеток. От нижнего конца стены вправо отходит горизонтальная стена длиной 4 клетки, в стене есть ровно один проход, шириною 1 клетка. Робот находится в клетке, расположенной справа от верхнего края вертикальной стены. На рисунке указано расположение стен и Робота. Робот обозначен буквой «Р». Напишите для Робота программу, использующую 4 циклических алгоритма, закрашивающую все клетки, расположенные непосредственно ниже и выше горизонтальной стены. Вы можете использовать цикл нц-раз-кц или нц-пока-кц. Робот должен закрасить только клетки, удовлетворяющие данному условию. На рисунке показаны клетки, которые Робот должен закрасить (см. рисунок). Конечное расположение Робота может быть произвольным. При исполнении алгоритма Робот не должен разрушиться. Выполнение алгоритма должно завершиться. Алгоритм может быть выполнен в среде формального исполнителя или записан в текстовом редакторе. Сохраните алгоритм в формате программы Кумир или в текстовом файле. Название файла и каталог для сохранения Вам сообщат организаторы.
Для решения данной задачи, нам необходимо написать программу для Робота, которая закрасит клетки, расположенные непосредственно ниже и выше вертикальной стены, учитывая проход в стене. Используем 4 циклических алгоритма.
Программа на Кумире может выглядеть следующим образом:
кумир
алг
нач
нц 6 раз
вниз
закрасить
кц
вверх
вверх
нц 4 раз
вверх
закрасить
кц
кон
Пояснения к программе:
1. `алг` - начало алгоритма.
2. `нач` - начало основной части алгоритма.
3. `нц 6 раз` - начало цикла, который повторится 6 раз (длина вертикальной стены).
4. `вниз` - команда роботу переместиться на одну клетку вниз.
5. `закрасить` - команда роботу закрасить текущую клетку.
6. `кц` - конец цикла.
7. `вверх` - команда роботу переместиться на одну клетку вверх.
8. `нц 4 раз` - начало цикла, который повторится 4 раз (количество клеток выше верхнего края стены, которые нужно закрасить).
9. `кон` - конец алгоритма.
Обратите внимание: Эта программа предполагает, что Робот изначально находится справа от верхнего края вертикальной стены. Программа сначала закрашивает 6 клеток вниз, затем возвращается наверх и закрашивает еще 4 клетки выше верхнего края стены.
Важно: Данный алгоритм предполагает, что проход в стене находится на известном месте. Если место прохода заранее не известно, необходимо использовать условные операторы и циклы `нц пока` для определения границ стены и прохода.
Ответ: Программа закрашивает клетки ниже и выше вертикальной стены, как показано на рисунке.