Ее для дальнейшей работы и научились задавать . Теперь перейдем непосредственно к составлению алгоритмов для Робота с использованием простых команд.
Если вам больше нравится информация в формате видеоуроков, то на сайте есть видеоурок
У любого исполнителя должна быть система команд (СКИ — система команд исполнителя ). Система команд исполнителя — совокупность всех команд, которые может выполнить исполнитель. В качестве примера рассмотрим дрессированную собаку. Она умеет выполнять некоторые команды — «Сидеть», «Лежать», «Рядом» и т. п. Это и есть ее система команд.
У нашего Робота тоже есть система команд. Сегодня мы рассмотрим простые команды Робота . Всего их 5:
Результат выполнения этих команд понятен из их названия:
Эти команды можно писать с клавиатуры, а можно использовать горячие клавиши (нажав их команды будут вставляться автоматически):
Обратите внимание, что набирать нужную комбинацию горячих клавиш нужно не привычным нам способом! Мы привыкли нажимать клавиши одновременно, а здесь их нужно нажимать последовательно . К примеру, чтобы ввести команду вверх, нужно нажать Escape, отпустить ее и после этого нажать стрелку вверх. Это нужно помнить.
Теперь мы готовы написать первый алгоритм для Робота. Предлагаю начать с простого — нарисуем квадрат со стороной 3 клетки. Поехали!
Запускаем Кумир, его. Можно начинать писать программу? Конечно нет! Мы же не ! Делаем это. Предлагаю использовать вот такую:
Вот теперь все готово. Начинаем писать программу. Пока она выглядит так
Удаляем символ «|» и называем наш алгоритм «Квадрат»
Предлагаю рисовать квадрат, двигаясь по часовой стрелке. Для начала закрасим текущую клетку, дав команду закрасить . Потом делаем шаг вправо и опять закрашиваем клетку. И еще раз шаг вправо и закрасить.
Попробуем запустить программу и посмотреть что же получилось. Для запуска нажимаем F9 или же кнопку на панели инструментов
В результате мы должны увидеть вот такую картину
Если такое окно Робота у вас не появилось, то на панели инструментов щелкните «Показать окно Робота » или в меню Робот выберите пункт «Показать окно Робота «. Продолжаем дальше.
Теперь мы будем двигаться вниз и закрашивать правую сторону квадрата:
вниз
закрасить
вниз
закрасить
Потом пойдем влево, закрашивая нижнюю границу квадрата
влево
закрасить
влево
закрасить
У нас осталась одна незакрашенная клетка. Закрасим ее
вверх
закрасить
Все готово! В итоге наша программа выглядит так:
использовать Робот
алг Квадрат
нач
закрасить
вправо
закрасить
вправо
закрасить
вниз
закрасить
вниз
закрасить
Исполнитель Робот существует в на прямоугольном поле, разбитом на клетки, между которыми могут стоять стены и умещается целиком в одной клетке. Робот может передвигаться по полю, закрашивать клетки, измерять температуру и радиацию. Робот не может проходить сквозь стены, но может проверять, есть ли рядом с ним стена.
Система команд исполнителя «Робот» включает:
Команды-действий
Команды-проверки
Команда | Описание |
лог слева свободно | Возвращает да, если робот может перейти влево, иначе - нет. |
лог справа свободно | Возвращает да, если робот может перейти вправо, иначе -нет. |
лог сверху свободно | Возвращает да, если робот может перейти вверх, иначе - нет. |
лог снизу свободно | Возвращает да, если робот может перейти вниз, иначе - нет. |
лог слева стена | Возвращает да, если слева от робота находится стена, иначе- нет. |
лог справа стена | Возвращает да, если справа от робота находится стена, иначе- нет. |
лог сверху стена | Возвращает да, если сверху от робота находится стена, иначе- нет. |
лог снизу стена | Возвращает да, если снизу от робота находится стена, иначе- нет. |
лог клетка закрашена | Возвращает да, если клетка закрашена, и нет, если клетка незакрашена. |
лог клетка чистая | Возвращает нет, если клетка закрашена, и да, если клетка незакрашена. |
Команды-измерения
Пусть требуется перевести из клетки слева от стены в клетку справа от
стены:
Алгоритм может выглядеть так:
использовать Робот
алг
пример 1
нач
. вниз
. вправо
. вверх
кон
Если же попытать провести Робота через стену, то возникнет отказ. Робот врежется в стену и больше не сможет выполнять команды дальше.
Напишем алгоритм прохождения роботом лабиринта из точки А в Б:
использовать Робот
алг
из А в Б
нач
. вправо
. вверх
; вверх
;
вправо
; вниз
;
вниз
; вправо
. вверх
; вверх
; вправо
;
вниз
; вниз
;
вправо
кон
Команды прохождения каждого участка можно сгруппировать в одну строку - это сокращает запись алгоритма и делает его более понятным. Для того чтобы записать команды в одну строку их нужно разделить точкой с запятой.
Исполнитель Робот Система команд исполнителя Робот Команды перемещения: вверх, вниз, влево, вправо Робот перемещается на одну клетку вверх, вниз, влево, вправо. Команда закрасить – закрашивает клетку, в которой стоит Робот. Проверка истинности условия: сверху свободно, снизу свободно, слева свободно, справа свободно Робот проверяет истинность условия отсутствия стены у той клетки, где находится Робот. Можно использовать запись составных условий, образованных логическими операциями И, ИЛИ, НЕ.
Исполнитель Робот Непосредственное редактирование обстановки Все команды редактирования обстановки выполняются с помощью мыши: поставить/убрать стену – щелкнуть по границе между клетками, закрасить/очистить клетку – щелкнуть по клетке, переместить Робота – перетащить мышью в нужную клетку.
Исполнитель Робот Команды меню Робот Показать поле Робота Делает видимым окно наблюдения за Роботом. Напечатать обстановку Создает файл в формате PDF, изображающий текущую обстановку в цветном или в черно-белом варианте. Сохранить обстановку в файл Создает текстовый файл с описанием обстановки во внутреннем формате *.fil. Этот файл в дальнейшем может быть загружен в качестве стартовой обстановки (команда Сменить стартовую обстановку) или при редактировании стартовой обстановки (команда Открыть окна редактирования стартовой обстановки). Сменить как стартовую обстановку Устанавливает новое имя файла стартовой обстановки (с помощью стандартного диалога) и загружает новую стартовую обстановку. Вернуться в стартовую обстановку Делает стартовую обстановку текущей.
Исполнитель Робот Изображение текущей обстановки в окне наблюдения Изображение текущей обстановки всегда полностью помещается в рабочем поле окна наблюдения за Роботом. Фон рабочего поля – зеленый. Закрашенные клетки – серые. Между клетками – тонкие черные линии. Стены Изображаются толстыми желтыми линиями. В клетке рабочего поля окна наблюдения Робот изображается ромбиком.
Исполнитель Робот Пример 1. Составим алгоритм с именем «Ход конем», что бы Роботу попасть из точки А в точку Б (Рис.3). Алгоритм имеет вид (Рис. 4.). После его исполнения Робот переместиться в нужную точку (Рис.5). Алгоритм, записанный на языке исполнителя называется программой. Рис.3Рис.4 Рис.5
Программа Кумир
Исполнитель Робот
Кто такой исполнитель Робот?
Настройка среды Кумир для исполнителя Робот
Стартовая обстановка Робота
Нажмите на Редактировать обстановку
Исполнитель Робот. Простые команды.
Результат выполнения этих команд понятен из их названия:
Пример алгоритма
Если известно сколько клеток нужно закрасить, то алгоритм решения будет следующим!
Задание №1
Циклы
нц раз
…
кц
Здесь мы должны указать количество повторений (число) и команды, которые будут повторяться. Команды, которые повторяются в цикле называют телом цикла.
Задание №2
сверху свободно
снизу свободно
слева свободно
справа свободно
сверху стена
снизу стена
слева стена
справа стена
Структура цикла с условием
нц пока справа свободно
вправо
закрасить
кц
Задание №3
Задание №4
Решение задач:
Задание №5
Ответ на задание №5
закрасить
Начало цикла (нц) и условие (пока не(снизу свободно)) - пишутся на одной строчке.
Конструкция если
Задание №7
Длины стен неизвестны.
Ответ на задание №7
пока не сверху свободно
закрасить
вправо
пока сверху свободно
вправо
пока справа свободно
закрасить
вправо
пока не справа свободно
закрасить
вниз
пока справа свободно
вниз
пока не справа свободно
закрасить
вниз
Задание №8
Длины стен неизвестны.
В каждой стене есть ровно один проход, точное место прохода и его ширина неизвестны.
Ответ на задание №8
пока сверху свободно
пока не сверху свободно
закрасить
пока сверху свободно
пока не сверху свободно
закрасить
пока не снизу свободно
закрасить
пока снизу свободно
пока не снизу свободно
закрасить
Задание №9
Длины стен неизвестны.
В каждой стене есть ровно один проход, точное место прохода и его ширина неизвестны.
Ответ на задание №9
пока снизу свободно
пока не снизу свободно
закрасить
пока снизу свободно
пока не снизу свободно
закрасить
пока не сверху свободно
закрасить
пока сверху свободно
пока не сверху свободно
закрасить
Задание №10
Длины стен неизвестны.
В каждой стене есть ровно один проход, точное место прохода и его ширина неизвестны.
Ответ на задание №10
пока слева свободно
пока не слева свободно
закрасить
пока слева свободно
пока не слева свободно
закрасить
пока не справа свободно
закрасить
пока справа свободно
пока не справа свободно
закрасить
Задание №11
Длины стен неизвестны.
В каждой стене есть ровно один проход, точное место прохода и его ширина неизвестны.
Ответ на задание №11
пока не сверху свободно
пока не сверху свободно
закрасить
пока снизу свободно
пока не сверху свободно
закрасить
Задание №12
На бесконечном поле имеется лестница. Сначала лестница спускается вниз справа налево, затем спускается вниз слева направо. Высота каждой ступени - одна клетка, ширина - две клетки. Робот находится справа от верхней ступени лестницы. Количество ступенек, ведущих влево, и количество ступенек, ведущих вправо, неизвестно. На рисунке указан один из возможных способов расположения лестницы и Робота (Робот обозначен буквой «Р»).
Ответ на задание №12
Двигаемся вниз под лестницей справа налево, пока не дойдем до стыка лестниц:
нц пока снизу свободно
вниз
влево
влево
Двигаемся вниз до конца спускающейся лестницы, закрашивая нужные клетки на пути:
нц пока не слева свободно
закрасить
вправо
закрасить
вправо
вниз
Ответ на задание №13
нц пока слева свободно
закрасить
влево
вверх
нц пока не слева свободно
закрасить
вверх
Задание №14
На бесконечном поле имеется прямоугольник, ограниченный стенами. Длины сторон прямоугольника неизвестны. Робот находится внутри прямоугольника. На рисунке указан один из возможных способов расположения стен и Робота (Робот обозначен буквой «Р»).
Ответ на задание №14
пока справа свободно
вправо
пока сверху свободно
вверх
закрасить
нц пока слева свободно
влево
закрасить
Ответ на задание №15
пока справа свободно
закрасить
вправо
пока снизу свободно
закрасить
вниз
закрасить
пока не (снизу свободно)
влево
вниз
пока не (справа свободно)
закрасить
вниз
закрасить
вправо
пока не (сверху свободно)
закрасить
вправо
Ответ на задание №16
пока не справа свободно
закрасить
вниз
закрасить
вправо
пока не сверху свободно
закрасить
вправо
пока сверху свободно
вверх
пока справа свободно
закрасить
вправо
пока не справа свободно
закрасить
вниз
Робот существует в определенной обстановке (прямоугольном клетчатом поле). Между некоторыми клетками поля могут быть расположены стены. Некоторые клетки могут быть закрашены (рис. 3.11).
Робот занимает ровно одну клетку поля.
По командам вверх, вниз, влево и вправо Робот перемещается в соседнюю клетку в указанном направлении. Если на пути оказывается стена, то происходит отказ - выдается сообщение о невозможности выполнить очередную команду.
По команде закрасить Робот закрашивает клетку, в которой стоит. Если клетка уже была закрашена, то она закрасится повторно, хотя никаких видимых изменений не произойдет.
Робот может исполнять только правильно записанные команды. Если вместо команды вниз написать внис, то Робот эту запись не поймет и сразу же сообщит об ошибке.
Ошибки: 1 синтаксические; 2. логические
Описания обстановок хранятся в текстовых файлах специального формата (формат.fil).
Текущая - обстановка, в которой находится Робот в данный момент (включая информацию о положении Робота).
Стартовая - обстановка, в которую принудительно помещается Робот в начале выполнения программы, использующей Робот.
Порядок работы:
2. Указать Исполнителя:
Меню Вставка →Использовать Робот
3. Написать алгоритм решения задачи.
4. Выполнить алгоритм (Меню Выполнение →Выполнить непрерывно /F9)
Система команд исполнителя Робот в системе КУМИР
Команда |
Действие |
вверх |
Робот перемещается на 1 клетку вверх |
вниз |
Робот перемещается на 1 клетку вниз |
влево |
Робот перемещается на 1 клетку влево |
вправо |
Робот перемещается на 1 клетку вправо |
закрасить |
Робот закрашивает клетку, в которой находится |
справа свободно |
Робот проверяет выполнение соответствующего простого условия |
слева свободно |
↓ |
сверху свободно |
↓ |
снизу свободно |
↓ |
клетка закрашена |
↓ |
клетка чистая |
↓ |
Цикл
– организация повторения действий, пока верно некоторое условие.
Тело цикла – набор повторяемых действий.
Условие –
логическое выражение (простое или сложное (составное))
Типы циклов:
1.Цикл «Повторять n раз» 2. Цикл «Пока»
нц n раз
нц пока
. . Тело цикла. . Тело цикла
кц
кц
Пример: нц пока справа свободно
Общий вид цикла «Повторять n раз:
ПОВТОРИТЬ n РАЗ
КОНЕЦ
кц
Общий вид цикла «пока»:
ПОКА ДЕЛАТЬ
КОНЕЦ
Составные условия
образуются из одного или нескольких простых условий и служебных слов И, ИЛИ, НЕ.
Пусть А - сверху свободно, В - справа свободно, тогда составное условие А И В - сверху свободно И справа свободно.
Пример: Пусть А – клетка закрашена (простое условие).
Проверка составного условия НЕ А:
а) А - выполнено, НЕ А (НЕ закрашено) - не выполнено.
б) А - не выполнено, НЕ А (НЕ закрашено) - выполнено.
Ветвление - форма организации действий, при которой в зависимости от выполнения или невыполнения некоторого условия совершается либо одна, либо другая последовательность действий.
Общий вид команды ЕСЛИ:
ЕСЛИ ТО ИНАЧЕ
КОНЕЦ
В языке КУМИР:
Полное ветвление: Неполное ветвление:
если
то
если
то
иначе
все все
Вспомогательный алгоритм - алгоритм, решающий некоторую подзадачу основной задачи.
В системе КУМИР вспомогательные алгоритмы пишутся в конце основной программы (после служебного слова кон ), вызываются на выполнение в основой программе по имени.
Вопросы и задания
1. Приведите все алгоритмы из трех команд, которые переместят Робота из исходного положения в клетку Б.
Существует ли для этой задачи алгоритм, при выполнении которого Робот делает:
а) два шага; б) четыре шага; в) пять шагов; г) семь шагов?
7. Известны два вспомогательных алгоритма Робота
Нарисуйте, что получится при выполнении Роботом следующих основных алгоритмов:
а) нц 5 раз
узор_1 вправо; вправо; |
б) нц 7 раз
узор_2 вправо; вправо |
в) вправо; вправо; вправо вверх; вверх вправо; вправо; вправо вниз; вниз
|
г) вправо; вправо вправо; вправо |
8. Составьте алгоритмы, под управлением которых Робот закрасит указанные клетки:
10. Известно, что где-то правее Робота есть закрашенная клетка.
Составьте алгоритм, под управлением которого Робот закрасит ряд клеток до закрашенной клетки и вернется в исходное положение.
11. Известно, что Робот находится рядом с левым входом в горизонтальный коридор.
12. Известно, что Робот находится где-то в горизонтальном коридоре. Ни одна из клеток коридора не закрашена.
Составьте алгоритм, под управлением которого Робот закрасит все клетки этого коридора и вернется в исходное положение.
Составьте алгоритм, который закрашивает клетки:
а) ниже каждой закрашенной клетки;
б) выше и ниже каждой закрашенной клетки.
нц пока клетка закрашена
ЕСЛИ справа свободно ТО
вправо; закрась
кц
15. Напишите программу, с помощью которой Робот сможет попасть в клетку Б во всех трех лабиринтах.
Задачи ГИА
Дано
оридор2. Робот находится в верхней клетке узкого вертикального коридора. Ширина коридора – одна клетка, длина коридора может быть произвольной.
Напишите для Робота алгоритм, закрашивающий все клетки внутри коридора и возвращающий Робота в исходную позицию. Например, для приведенного выше рисунка Робот должен закрасить следующие клетки (см.рисунок):
Дано
апишите алгоритм для Робота, закрашивающий все клетки, расположенные выше стены и прилегающие к ней, независимо от размеров стены и начального положения Робота. Например, для приведенного рисунка Робот должен закрасить следующие клетки:
Конечное положение Робота может быть произвольным. При выполнении алгоритма Робот не должен разрушаться.
Напишите для Робота алгоритм, закрашивающий все клетки, расположенные левее вертикальной стены и выше горизонтальной стены и прилегающие к ним. Робот должен закрасить только клетки, удовлетворяющие данному условию. Например, для приведённого выше рисунка Робот должен закрасить следующие клетки (см. рисунок).
Напишите для Робота алгоритм, закрашивающий прилегающие к стене клетки, сверху и снизу, начиная с левой и через одну. Робот должен закрасить только клетки, удовлетворяющие данному условию. Например, для приведѐнного рисунка а) Робот должен закрасить следующие клетки (см. рис. б).
Конечное положение Робота может быть произвольным. Алгоритм должен решать задачу для произвольного размера стены и любой допустимой начальной позиции Робота.
Р | |||||
B1102_ГИА2011
На бесконечном поле имеются две горизонтальные стены. Длина стен неизвестна. Расстояние между стенами неизвестно. Робот находится над нижней стеной в клетке, расположенной у ее левого края. Напишите для Робота алгоритм, закрашивающий все клетки, расположенные выше нижней стены и ниже верхней стены и прилегающие к ним. Робот должен закрасить только клетки, удовлетворяющие данному условию. Например, для приведенного выше рисунка робот должен закрасить следующие клетки (см. рисунок):
Конечное расположение робота может быть произвольным. Алгоритм должен решать задачу для произвольного размера поля и любого допустимого расположения стен внутри прямоугольного поля. При исполнении алгоритма Робот не должен разрушиться.
В1103_ГИА_2011
Напишите для Робота алгоритм, закрашивающий все клетки, расположенные выше горизонтальной стены и правее вертикальной стены и прилегающие к ним. Робот должен закрасить только клетки, удовлетворяющие данному условию. Например, для приведённого выше рисунка Робот должен закрасить следующие клетки (см. рисунок).