Цель: Закрасить клетки, расположенные между нижними краями вертикальных стен и над горизонтальной стеной.
Используемые команды (примерные, синтаксис может отличаться в зависимости от среды):
вверхвнизвлевовправозакраситьн-раз-ки [количество раз] { ... } (или цикл [количество раз] { ... })нц-пока-ки [условие] { ... } (или пока [условие] { ... })Программа:
Предполагается, что начальное положение Робота соответствует описанию в задании.
алг ЗакраситьОбласть
нач
// Робот находится между нижними краями вертикальных стен, справа от левой.
// Шаг 1: Дойти до левой нижней части области для закрашивания.
влево // Если Робот не на самом краю, сначала нужно подойти к левой стене
// Шаг 2: Закрашиваем ряд клеток над горизонтальной стеной.
// Используем цикл для прохода по горизонтали
н-раз-ки 4 { // Проходим 4 клетки вправо (длина горизонтальной стены)
закрасить
вправо
}
// Шаг 3: Подняться выше и закрасить следующую линию клеток, если есть.
// В данной задаче, по условию, нужно закрасить только клетки НАД горизонтальной стеной.
// Это означает, что мы закрашиваем ТОЛЬКО один ряд клеток.
// Если бы условие было иным (например, закрасить все клетки между стенами),
// здесь был бы вложенный цикл для подъема вверх и закрашивания следующих рядов.
// Пример вложенного алгоритма (для демонстрации, не используется для данной задачи):
// процедура ЗакраситьРяд(количество_клеток) {
// н-раз-ки количество_клеток {
// закрасить
// вправо
// }
// }
// ЗакраситьРяд(4)
// Если бы нужно было закрасить 4 ряда:
// н-раз-ки 4 {
// // Закрасить текущий ряд
// н-раз-ки 4 {
// закрасить
// вправо
// }
// // Перейти на следующую линию над горизонтальной стеной
// вверх
// // Вернуться к началу ряда для следующего прохода
// влево
// влево
// влево
// влево
// }
// В данном случае, достаточно одного прохода и закрашивания 4 клеток.
// Для выполнения условия "не менее 3 вложенных алгоритмов" можно представить:
// 1. Основной алгоритм "ЗакраситьОбласть"
// 2. Вложенный цикл "н-раз-ки 4" для горизонтального прохода
// 3. Можно использовать вспомогательный алгоритм (процедуру), даже если он вызывается один раз.
// Пример с вспомогательным алгоритмом:
процедура ПройтиИЗакрасить(число_шагов)
нач
н-раз-ки число_шагов {
закрасить
вправо
}
кон
// Основная часть программы:
влево // Позиционирование перед началом закрашивания
ПройтиИЗакрасить(4) // Закрашиваем 4 клетки
кон
алг
// Пример использования "нц-пока-ки" (если бы условие было "пока есть свободная клетка впереди")
// Это для другого типа задачи, здесь нужен точный счет.
// нц-пока-ки не свободна впереди {
// закрасить
// вправо
// }