Исполнитель Робот

КуМир (Комплект Учебных МИРов) - система программирования, предназначенная для поддержки начальных курсов информатики и программирования в средней и высшей школе.

Бесплатно скачать КуМир для Windows можно на официальном сайте разработчика данного ПО, для этого пройдите по ссылке https://www.niisi.ru/kumir/dl.htm.

Теория:

Система команд исполнителя РОБОТ, «живущего» в прямоугольном лабиринте на клетчатой плоскости, включает в себя пять команд–приказы и четыре команды проверки условия.

Команды–приказы:

  • вверх

  • вниз

  • влево

  • вправо

  • закрасить

При выполнении любой из этих команд РОБОТ перемещается на одну клетку соответственно: вверх ↑, вниз ↓, влево ←, вправо → и закрашивает клетку, в которой находится.

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

вверх — Escape, Up (стрелка вверх)

вниз — Escape, Down (стрелка вниз)

влево — Escape, Left (стрелка влево)

вправо — Escape, Right (стрелка вправо)

закрасить — Escape, Space (пробел)


Обратите внимание, что набирать нужную комбинацию горячих клавиш нужно не привычным нам способом! Мы привыкли нажимать клавиши одновременно, а здесь их нужно нажимать последовательно. К примеру, чтобы ввести команду вверх, нужно нажать Escape, отпустить ее и после этого нажать стрелку вверх. Это нужно помнить.

Если РОБОТ начнёт движение в сторону находящейся рядом с ним стены, то он разрушится, и выполнение программы прервётся.

Другие четыре команды проверяют истинность условия отсутствия стены у каждой стороны той клетки, где находится РОБОТ:

  1. сверху не стена или сверху свободно

  2. снизу не стена или снизу свободно

  3. слева не стена или слева свободно

  4. справа не стена или справа свободно


  1. сверху стена или сверху не свободно

  2. снизу стена или снизу не свободно

  3. слева стена или слева не свободно

  4. справа стена или справа не свободно

Цикл со счетчиком

Цикл со счетчиком применяется когда заранее известно сколько повторений необходимо сделать.

Для того, чтобы написать цикл со счетчиком для исполнителя необходимо знать его синтаксис. А он такой:

нц <количество повторений> раз

<команда 1>

<команда 2>

<команда n>

кц

Здесь мы должны указать количество повторений (число) и команды, которые будут повторяться. Команды, которые повторяются в цикле называют телом цикла.

В системе КуМир цикл "n раз" записывается при помощи следующей конструкции:

нц n раз

набор команд

кц

n - число повторений цикла.

Пример алгоритма для исполнителя Робот в системе КуМир:

использовать Робот

алг задание

нач

нц 5 раз

вправо

закрасить

кц

кон

В результате работы программы исполнитель Робот пройдёт вправо на 1 клетку и закрасит её. Затем повторит те же действия ещё 4 раза. Таким образом, Робот переместится вправо на 5 клеток и закрасит их.

Цикл с параметром (или цикл с предусловием)

Цикл с предусловиемцикл, который выполняется пока истинно некоторое условие, указанное перед его началом.

Это условие проверяется до выполнения тела цикла, поэтому тело может быть не выполнено ни разу (если условие с самого начала ложно).

На языке КуМир цикл с предусловием имеет следующий вид:

нц пока <условие>

<тело цикла>

кц

Теперь давайте решим следующую задачу для Робота — нарисовать вертикальную линию от левой до правой границы поля использую цикл с условием. Изначально Робот находится в левом верхнем углу.

Давайте сначала сформулируем словесный алгоритм — т. е. опишем словами что нужно делать Роботу. Этот алгоритм будет звучать примерно так:

«Пока справа свободно делай шаг вправо и закрашивай клетку»

В результате Робот пробежит по всем клеткам вправо и будет их закрашивать до тех пор, пока справа не окажется стена.

Исходный код нашей программы для Робота будет примерно такой:

использовать Робот

алг

нач

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

вправо

закрасить

кц

кон


Примеры

Пример №1: На бесконечном поле есть горизонтальная и вертикальная стены. Левый конец горизонтальной стены соединён с нижним концом вертикальной стены. Длины стен неизвестны. В каждой стене есть ровно один проход, точное место прохода и его ширина неизвестны. Робот находится в клетке, расположенной непосредственно над горизонтальной стеной у её правого конца.

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

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


Детализация плана действий Робота.

  1. Закрасить все клетки слева до прохода в горизонтальной стене.

  2. Перейти через проход до горизонтальной стены.

  3. Двигаться влево до вертикальной стены и закрашивать все клетки, расположенные непосредственно выше горизонтальной стены.

  4. Закрасить все клетки справа от вертикальной стены до прохода.

  5. Перейти через проход до вертикальной стены.

  6. Закрасить все клетки справа от вертикальной стены.


Исходный код нашей программы для Робота будет примерно такой:

использовать Робот

алг

нач

нц пока снизу стена

закрасить

влево

кц

нц пока снизу не стена

влево

кц

нц пока слева не стена

закрасить

влево

кц

нц пока слева стена

закрасить

вверх

кц

нц пока слева не стена

вверх

кц

нц пока слева стена

закрасить

вверх

кц


кон

Видео:

Знакомство со средой программирования КуМир

#1 Цикл n раз

#2 Цикл n раз

Цикл Пока