Давайте подробнейшим образом разберём задачу.
Задача:
Роботу нужно закрасить клетки, расположенные непосредственно выше и ниже горизонтальной стены, состоящей из 4 клеток. Мы будем использовать циклы для выполнения этой задачи.
Определение расположения:
- Вертикальная стена высотой 6 клеток.
- Горизонтальная стена длиной 4 клетки располагается ниже вертикальной стены, с одним проходом шириной 1 клетка.
- Робот находится слева от верхнего края вертикальной стены.
Наглядное представление:
1 2 3 4 5 6
1 В В В В В В
2 В Р В В В В
3 В В В В В В
4 В В В П В В
5 В В В В В В
6 В В В В В В
- В - клетки, которые нужно закрасить.
- Р - позиция робота.
- П - проход между стенами.
Алгоритм:
Сначала мы должны понять, какие шаги должен совершить Робот. В нашем случае Робот должен:
- Подняться на одну клетку выше горизонтальной стены.
- Закрасить 4 клетки, расположенные над стеной (т.е. закрасить клетки в строке выше).
- Опуститься на 2 клетки вниз, чтобы закрасить 4 клетки, расположенные под стеной (т.е. закрасить клетки в строке ниже).
Решение с пояснением:
Для данной задачи мы можем использовать следующие циклы:
- Цикл "пока" (
while) для обработки закрашиваемых клеток.
Вот как это может выглядеть:
1. Перейти на клетку (1, 2) (выше горизонтальной стены)
2. Пока не достигли правого конца горизонтальной стены:
2.1 Закрасить текущую клетку
2.2 Перейти вправо (в следующую клетку)
3. Вернуться в исходное положение (1, 2)
4. Пойти вниз на 2 клетки
5. Перейти на клетку (3, 2) (ниже горизонтальной стены)
6. Пока не достигли правого конца горизонтальной стены:
6.1 Закрасить текущую клетку
6.2 Перейти вправо (в следующую клетку)
Программа на Кумире:
Вот пример кода на языке Кумир:
начало
позиция(0, 1) // Позиция запуска
для i от 0 до 3 цикл // Цикл по клеткам, расположенным выше
закрасить(0, 1 + i) // Закрашиваем верхнюю стену
конец
позиция(0, 2) // Возвращаемся к верхней стене
вниз(2) // Опускаемся на 2 клетки
для i от 0 до 3 цикл // Цикл по клеткам, расположенным ниже
закрасить(0, 1 + i) // Закрашиваем нижнюю стену
конец
конец
Пояснения к коду:
- Используется цикл
для, чтобы пройтись по клеткам. закрасить(x, y)— функция, которая закрашивает клетку на позиции(x, y).позиция(x, y)— устанавливает текущую позицию робота.
Если возникли дополнительные вопросы по алгоритму или коду, не стесняйтесь спрашивать!