Вопрос:

Задание 12.1: Напишите для Робота программу, использующую не менее 3 вложенных алгоритмов; закрашивающую все клетки, расположенные между нижними краями вертикальных стен и над горизонтальной стеной. Вы можете использовать цикл «н-раз-ки» или «нц-пока-ки». Робот должен закрасить только клетки, удовлетворяющие данному условию. На рисунке показаны клетки, которые Робот должен закрасить (см. рисунок).

Смотреть решения всех заданий с листа

Ответ:

Алгоритм для Робота (закрашивание клеток):

Цель: Закрасить клетки, расположенные между нижними краями вертикальных стен и над горизонтальной стеной.

Используемые команды (примерные, синтаксис может отличаться в зависимости от среды):

  • вверх
  • вниз
  • влево
  • вправо
  • закрасить
  • н-раз-ки [количество раз] { ... } (или цикл [количество раз] { ... })
  • нц-пока-ки [условие] { ... } (или пока [условие] { ... })

Программа:

Предполагается, что начальное положение Робота соответствует описанию в задании.

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

  // Если бы нужно было закрасить 4 ряда:
  // н-раз-ки 4 {
  //   // Закрасить текущий ряд
  //   н-раз-ки 4 {
  //     закрасить
  //     вправо
  //   }
  //   // Перейти на следующую линию над горизонтальной стеной
  //   вверх
  //   // Вернуться к началу ряда для следующего прохода
  //   влево
  //   влево
  //   влево
  //   влево
  // }

// В данном случае, достаточно одного прохода и закрашивания 4 клеток.

// Для выполнения условия "не менее 3 вложенных алгоритмов" можно представить:
// 1. Основной алгоритм "ЗакраситьОбласть"
// 2. Вложенный цикл "н-раз-ки 4" для горизонтального прохода
// 3. Можно использовать вспомогательный алгоритм (процедуру), даже если он вызывается один раз.

// Пример с вспомогательным алгоритмом:
процедура ПройтиИЗакрасить(число_шагов)
нач
  н-раз-ки число_шагов {
    закрасить
    вправо
  }
кон

// Основная часть программы:
  влево // Позиционирование перед началом закрашивания
  ПройтиИЗакрасить(4) // Закрашиваем 4 клетки

кон
алг

// Пример использования "нц-пока-ки" (если бы условие было "пока есть свободная клетка впереди")
// Это для другого типа задачи, здесь нужен точный счет.
// нц-пока-ки не свободна впереди {
//   закрасить
//   вправо
// }

ГДЗ по фото 📸
Подать жалобу Правообладателю