Top.Mail.Ru

Команды исполнителя Робот

Исполнитель Робот умеет перемещаться по лабиринту, начерченному на плоскости, разбитой на клетки. Между соседними клетками может стоять стена, через которую робот пройти не может. Для перемещения робота используются команды-приказы:

вверх   вниз   влево   вправо

Робот умеет закрашивать клетку, в которой находится, с помощью команды

закрасить

Также робот умеет проверять, свободен ли путь в каждом из четырёх возможных направлений, с помощью команд проверки:

сверху свободно    снизу свободно    слева свободно    справа свободно

. . . . .
x
Код для исполнителя
нц пока не справа свободно или
не слева свободно или
не сверху свободно или
не снизу свободно
    если не слева свободно то
        закрасить  вверх
    все
    если не сверху свободно то
        закрасить  вправо
    все
    если не справа свободно то
        закрасить  вниз
    все
    если не снизу свободно то
        закрасить  влево
    все
кц

Условия в программах

Конструкция условий

В условиях используются ключевые слова "если", "то", "все" в сочетании с командами проверки в следующем порядке:

если команда-проверка то
    последовательность команд
все

Для чего нужны условия?

Условия используют для того, чтобы определить, следует ли выполнять то или иное действие. При истинности команды-проверки будет выполняться последовательность команд, стоящая после "то", в противном случае команды, стоящие после "то", выполнены не будут.

Пример условия

Например, для передвижения вправо, если справа нет стенки, и закрашивания клетки можно использовать такой алгоритм:

если справа свободно то
    вправо
    закрасить
все

Ключевое слово "иначе"

Если необходимо выполнить разные действия в зависимости от того, истинна команда-проверка или нет, применяют следующую конструкцию:

если справа свободно то
    вправо
    закрасить
иначе
    влево
    закрасить
все

Если справа будет свободно, то робот переместится вправо и закрасит клетку, если же справа не будет свободно, то робот переместится влево и закрасит клетку.

Вложенные условия

Условия могут быть вложены друг в друга, как матрешки, например:

если справа свободно то
    если снизу свободно то
        вниз
        закрасить
    все
все

Если справа будет свободно, то будет проверено, нет ли стены снизу, и только тогда робот переместится вниз и закрасит клетку.


Логические операции

Составные условия

В одном условии можно использовать несколько команд-проверок, применяя логические операции "и", "или", "не", например:

если справа свободно и не снизу свободно то
    вправо
    закрасить
все

Логическая операция "И"

Операция "И", соединяющая команды-проверки, будет истинна только тогда, когда все команды-проверки будут истинными.

Логическая операция "ИЛИ"

Операция "ИЛИ", соединяющая команды-проверки, будет истинна тогда, когда хотя бы одна из команд-проверок будет истинной.

Логическая операция "НЕ"

Логическое отрицание, стоящее перед командой-проверкой, меняет её значение на противоположное. Если результат команды-проверки истинен, то стоящая перед ней "НЕ" поменяет результат на ложный. А если результат проверки ложен, то "НЕ" сделает его истинным.
"НЕ" следует ставить перед командой, но не внутри нее, например, "не справа свободно" будет правильным написанием, а "справа не свободно" — неправильным.
Представить работу операции "НЕ" удобно, если в своей голове заменять ее на слова "НЕВЕРНО, ЧТО". Например, "НЕВЕРНО, ЧТО справа свободно".

Старшинство логических операций

Самой младшей является "ИЛИ", затем "И", а самая старшая — "НЕ". Порядок выполнения логических операций можно задавать при помощи скобок.

Цикл с условием

С помощью циклов можно многократно повторять действия робота до тех пор, пока условие в цикле будет истинным

Операторные скобки цикла

Цикл должен начинаться с ключевого слова "нц", что означает "начало цикла", и заканчиваться ключевым словом "кц", что означает "конец цикла".

Условие цикла

После "кц" ставится ключевое слово "пока", после которого ставится команда-проверка, например:

нц пока справа свободно
    вправо
кц

В данном примере робот будет двигаться вправо, пока это возможно.

Условия в циклах могут быть составными, например:

нц пока справа свободно и не сверху свободно
    вправо
кц

Вложенные циклы

Циклы могут быть вложенными, например:

нц пока не снизу свободно
    нц пока не снизу свободно
        вправо
    кц
    вниз
    нц пока снизу свободно и не слева свободно
        закрасить
        вниз
        закрасить
    кц
кц

В данном примере основной цикл содержит два вложенных цикла. Пример решает задачу на картинке.