Простые команды. Исполнитель Робот. Циклы

Весь процесс состоит из двух этапов: сборки и программирования. Чтобы собрать хорошего робота, нужны знания в механике. Чтобы запрограммировать робота на определённые действия, нужно знать язык, который поймёт системная плата или программный блок. Школьными знаниями по информатике тут не обойтись.

Где взять материал?

Сначала нужно решить, как вы хотите собирать робота: из готовых наборов или самостоятельно подбирать материалы. Преимущество набора в том, что вам не нужно искать детали по отдельности. Чаще всего из одного набора можно собрать несколько устройств.

Конструкция, собранная не из готового набора, называется открытой системой. У неё тоже есть свои плюсы: ваш робот будет индивидуальностью, и вы сами сможете улучшать конструкцию. Но времени и сил потратите однозначно больше.

Из чего состоит робот?

Корпус – металлическое или пластмассовое «тело» , к которому прикрепляются остальные детали. У каждого робота есть источник энергии – батарейки или аккумулятор. В зависимости от того, какую задачу будет выполнять робот, выбирают датчики: они могут определять цвет и свет, реагировать на касание.

Чтобы заставить робота двигаться, понадобятся моторы. «Голова» всего механизма – системная плата или программный блок. С их помощью робот подключается к компьютеру и получает набор задач.

Как заставить его что‑то делать?

Чтобы робот выполнил какое‑то действие, нужно создать компьютерную программу. Сложность этого этапа зависит от сборки. Если робот собран из набора Lego Mindstorms или mBot, то с их программным обеспечением справятся даже дети.

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

Почему робот может не выполнить программу?

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

Можно научиться собирать и программировать в школе?

Несмотря на то что робототехника не входит в школьную программу, преподаватели по физике и информатике могут научить ребёнка собирать и программировать. В Белгороде в некоторых школах есть кружки, где делают роботов.

«После уроков с учителями физики и информатики мы учимся программировать. Уже умеем работать в LegoMindstorms и Robolab (программное обеспечение для роботов – прим. авт. ). Также иногда учимся делать 3D-чертежи деталей», – рассказали ученики Белгородского инженерного юношеского лицея-интерната и участники «РобоФеста-2018» Антон Першин и Дмитрий Чернов .

Где, кроме школы, можно стать робототехником?

В инжиниринговой школе БелГУ есть класс, в котором учат собирать и программировать роботов. В 2017 году в Белгороде открылся «Кванториум» , в котором робототехнике учат школьников с девяти лет.

Чтобы стать настоящим робототехником, можно поступить на робототехнический факультет. В Белгороде пока таких нет, но в БГТУ им. Шухова есть кафедра технической кибернетики . Её студенты занимают призовые места на всероссийских соревнованиях по робототехнике.

Можно ли научиться самому?

Да. Есть множество ресурсов в Интернете, на которых можно узнать, из чего собрать и как запрограммировать робота.

Будет ли робот полезным?

Его можно приспособить под бытовые задачи и сделать помощником в доме. В Интернете есть много примеров, как домашние изобретатели создают роботов для выпечки блинов или уборки квартиры.

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

Принять участие в таких соревнованиях, как «РобоФест». На них в зависимости от возраста и направления существуют разные номинации. В основном у каждого вида робота есть трасса, на которой он выполняет задания: захватить кубик или прочертить линию. Есть и статичные системы, в которых судьи оценивают презентацию проекта и работу механизмов.

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

Редакция благодарит за помощь в создании материала участников «РобоФеста-2018» Дмитрия Агафонова , Дмитрия Чернова , Антона Першина и Данила Мигрина .

Наталья Малыхина

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

Система команд исполнителя «Робот» включает:

  • 5 команд, вызывающих действия Робота (влево, вправо, вверх, вниз, закрасить)
  • 10 команд проверки условий:
  • 8 команд вида [слева/справа/снизу/сверху] [стена/свободно]
  • 2 команды вида клетка [закрашена/чистая]
  • 2 команды измерения (температура, радиация)

Команды-действий

Команды-проверки

Команда Описание
лог слева свободно Возвращает да, если робот может перейти влево, иначе - нет.
лог справа свободно Возвращает да, если робот может перейти вправо, иначе -нет.
лог сверху свободно Возвращает да, если робот может перейти вверх, иначе - нет.
лог снизу свободно Возвращает да, если робот может перейти вниз, иначе - нет.
лог слева стена Возвращает да, если слева от робота находится стена, иначе- нет.
лог справа стена Возвращает да, если справа от робота находится стена, иначе- нет.
лог сверху стена Возвращает да, если сверху от робота находится стена, иначе- нет.
лог снизу стена Возвращает да, если снизу от робота находится стена, иначе- нет.
лог клетка закрашена Возвращает да, если клетка закрашена, и нет, если клетка незакрашена.
лог клетка чистая Возвращает нет, если клетка закрашена, и да, если клетка незакрашена.

Команды-измерения

Пусть требуется перевести из клетки слева от стены в клетку справа от стены:

Алгоритм может выглядеть так:

использовать Робот
алг пример 1
нач
. вниз
. вправо
. вверх
кон

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


Напишем алгоритм прохождения роботом лабиринта из точки А в Б:

использовать Робот
алг из А в Б
нач
. вправо

. вверх ; вверх ; вправо ; вниз ; вниз ; вправо
. вверх ; вверх ; вправо ; вниз ; вниз ; вправо
кон

Команды прохождения каждого участка можно сгруппировать в одну строку - это сокращает запись алгоритма и делает его более понятным. Для того чтобы записать команды в одну строку их нужно разделить точкой с запятой.




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




Исполнитель Робот Непосредственное редактирование обстановки Все команды редактирования обстановки выполняются с помощью мыши: поставить/убрать стену – щелкнуть по границе между клетками, закрасить/очистить клетку – щелкнуть по клетке, переместить Робота – перетащить мышью в нужную клетку.


Исполнитель Робот Команды меню Робот Показать поле Робота Делает видимым окно наблюдения за Роботом. Напечатать обстановку Создает файл в формате PDF, изображающий текущую обстановку в цветном или в черно-белом варианте. Сохранить обстановку в файл Создает текстовый файл с описанием обстановки во внутреннем формате *.fil. Этот файл в дальнейшем может быть загружен в качестве стартовой обстановки (команда Сменить стартовую обстановку) или при редактировании стартовой обстановки (команда Открыть окна редактирования стартовой обстановки). Сменить как стартовую обстановку Устанавливает новое имя файла стартовой обстановки (с помощью стандартного диалога) и загружает новую стартовую обстановку. Вернуться в стартовую обстановку Делает стартовую обстановку текущей.


Исполнитель Робот Изображение текущей обстановки в окне наблюдения Изображение текущей обстановки всегда полностью помещается в рабочем поле окна наблюдения за Роботом. Фон рабочего поля – зеленый. Закрашенные клетки – серые. Между клетками – тонкие черные линии. Стены Изображаются толстыми желтыми линиями. В клетке рабочего поля окна наблюдения Робот изображается ромбиком.


Исполнитель Робот Пример 1. Составим алгоритм с именем «Ход конем», что бы Роботу попасть из точки А в точку Б (Рис.3). Алгоритм имеет вид (Рис. 4.). После его исполнения Робот переместиться в нужную точку (Рис.5). Алгоритм, записанный на языке исполнителя называется программой. Рис.3Рис.4 Рис.5











Программа Кумир

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


Кто такой исполнитель Робот?

  • Представьте себе клетчатое поле (как лист из тетради в клеточку) на котором находится некий объект, который мы назовем Робот. Используя специальные команды, мы можем этим Роботом управлять - перемещать его по клеткам, закрашивать клетки. И в большинстве случаев наша задача будет заключаться в том, чтобы написать такую программу для Робота, выполняя которую он будет закрашивать определенные клетки.

Настройка среды Кумир для исполнителя Робот

  • Запущенная программа Кумир выглядит так.

Стартовая обстановка Робота

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

Нажмите на Редактировать обстановку



Исполнитель Робот. Простые команды.

  • вверх
  • вниз
  • влево
  • вправо
  • закрасить

Результат выполнения этих команд понятен из их названия:

  • вверх - переместить Робота на одну клетку вверх
  • вниз - переместить Робота на одну клетку вниз
  • влево - переместить Робота на одну клетку влево
  • вправо - переместить Робота на одну клетку вправо
  • закрасить - закрасить текущую клетку (клетку в которой находится Робот).

Пример алгоритма

  • Сначала необходимо написать фразу:
  • использовать Робот

Если известно сколько клеток нужно закрасить, то алгоритм решения будет следующим!


Задание №1

  • Напишите программу для решения следующей задачи, если известно сколько клеток нужно закрасить

Циклы

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

нц раз

кц

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



Задание №2

  • Напишите программу для решения следующей задачи, используя цикл со счетчиком

  • 2. Цикл с условием- пока условие истинно-цикл выполняется, если ложно-то не выполняется
  • У исполнителя Робот есть несколько условий

сверху свободно

снизу свободно

слева свободно

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

сверху стена

снизу стена

слева стена

справа стена

  • Можно использовать частицы: НЕ, И, ИЛИ

Структура цикла с условием

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

вправо

закрасить

кц



Задание №3

  • Напишите программу для решения следующей задачи, используя цикл с условием:

Задание №4

  • Напишите программу для решения следующей задачи, используя циклы с условием:



Решение задач:

  • 2. Робота надо перевести из стартового положения в конечное, закрашивая стенки


Задание №5

  • На бесконечном поле имеется горизонтальная стена. Длина стены неизвестна. Робот находится сверху от стены в левом ее конце. На рисунке приведено расположение робота относительно стены (робот обозначен буквой «Р»):

Ответ на задание №5

  • нц пока не (снизу свободно)

закрасить

Начало цикла (нц) и условие (пока не(снизу свободно)) - пишутся на одной строчке.



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

  • сверху свободно снизу свободно слева свободно справа свободно
  • Эти команды можно использовать вместе с условием «если» , имеющим следующий вид:
  • если условие то
  • последовательность команд
  • Например, для передвижения на одну клетку вправо, если справа нет стенки, и закрашивания клетки можно использовать такой алгоритм:
  • если справа свободно то
  • вправо
  • закрасить

Задание №7

Длины стен неизвестны.


Ответ на задание №7

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

за­кра­сить

впра­во

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

впра­во

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

за­кра­сить

впра­во

пока не спра­ва сво­бод­но

за­кра­сить

вниз

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

вниз

пока не спра­ва сво­бод­но

за­кра­сить

вниз


Задание №8

Длины стен неизвестны.

В каждой стене есть ровно один проход, точное место прохода и его ширина неизвестны.


Ответ на задание №8

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

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

за­кра­сить

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

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

за­кра­сить

пока не снизу сво­бод­но

за­кра­сить

пока снизу сво­бод­но

пока не снизу сво­бод­но

за­кра­сить


Задание №9

Длины стен неизвестны.

В каждой стене есть ровно один проход, точное место прохода и его ширина неизвестны.


Ответ на задание №9

пока снизу сво­бод­но

пока не снизу сво­бод­но

за­кра­сить

пока снизу сво­бод­но

пока не снизу сво­бод­но

за­кра­сить

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

за­кра­сить

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

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

за­кра­сить


Задание №10

Длины стен неизвестны.

В каждой стене есть ровно один проход, точное место прохода и его ширина неизвестны.


Ответ на задание №10

пока с­ле­ва сво­бод­но

пока не слева сво­бод­но

за­кра­сить

пока слева сво­бод­но

пока не с­ле­ва сво­бод­но

за­кра­сить

пока не спра­ва сво­бод­но

за­кра­сить

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

пока не спра­ва сво­бод­но

за­кра­сить


Задание №11

Длины стен неизвестны.

В каждой стене есть ровно один проход, точное место прохода и его ширина неизвестны.


Ответ на задание №11

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

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

за­кра­сить

пока снизу сво­бод­но

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

за­кра­сить


Задание №12

На бес­ко­неч­ном поле име­ет­ся лест­ни­ца. Сна­ча­ла лест­ни­ца спус­ка­ет­ся вниз спра­ва на­ле­во, затем спус­ка­ет­ся вниз слева на­пра­во. Вы­со­та каж­дой сту­пе­ни - одна клет­ка, ши­ри­на - две клет­ки. Робот на­хо­дит­ся спра­ва от верх­ней сту­пе­ни лест­ни­цы. Ко­ли­че­ство сту­пе­нек, ве­ду­щих влево, и ко­ли­че­ство сту­пе­нек, ве­ду­щих впра­во, не­из­вест­но. На ри­сун­ке ука­зан один из воз­мож­ных спо­со­бов рас­по­ло­же­ния лест­ни­цы и Ро­бо­та (Робот обо­зна­чен бук­вой «Р»).


Ответ на задание №12

Дви­га­ем­ся вниз под лест­ни­цей спра­ва на­ле­во, пока не дой­дем до стыка лест­ниц:

нц пока снизу сво­бод­но

вниз

влево

влево

Дви­га­ем­ся вниз до конца спус­ка­ю­щей­ся лест­ни­цы, за­кра­ши­вая нуж­ные клет­ки на пути:

нц пока не слева сво­бод­но

за­кра­сить

впра­во

за­кра­сить

впра­во

вниз



Ответ на задание №13

нц пока слева сво­бод­но

за­кра­сить

влево

вверх

нц пока не слева сво­бод­но

за­кра­сить

вверх


Задание №14

На бес­ко­неч­ном поле име­ет­ся пря­мо­уголь­ник, огра­ни­чен­ный сте­на­ми. Длины сто­рон пря­мо­уголь­ни­ка не­из­вест­ны. Робот на­хо­дит­ся внут­ри пря­мо­уголь­ни­ка. На ри­сун­ке ука­зан один из воз­мож­ных спо­со­бов рас­по­ло­же­ния стен и Ро­бо­та (Робот обо­зна­чен бук­вой «Р»).


Ответ на задание №14

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

впра­во

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

вверх

за­кра­сить

нц пока слева сво­бод­но

влево

за­кра­сить



Ответ на задание №15

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

за­кра­сить

впра­во

пока снизу сво­бод­но

за­кра­сить

вниз

за­кра­сить

пока не (снизу сво­бод­но)

влево

вниз

пока не (спра­ва сво­бод­но)

за­кра­сить

вниз

за­кра­сить

впра­во

пока не (свер­ху сво­бод­но)

за­кра­сить

впра­во



Ответ на задание №16

пока не спра­ва сво­бод­но

за­кра­сить

вниз

за­кра­сить

впра­во

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

за­кра­сить

впра­во

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

вверх

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

за­кра­сить

впра­во

пока не спра­ва сво­бод­но

за­кра­сить

вниз



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

Если вам больше нравится информация в формате видеоуроков, то на сайте есть видеоурок

У любого исполнителя должна быть система команд (СКИ система команд исполнителя ). Система команд исполнителя — совокупность всех команд, которые может выполнить исполнитель. В качестве примера рассмотрим дрессированную собаку. Она умеет выполнять некоторые команды — «Сидеть», «Лежать», «Рядом» и т. п. Это и есть ее система команд.

Простые команды Робота

У нашего Робота тоже есть система команд. Сегодня мы рассмотрим простые команды Робота . Всего их 5:

  • вверх
  • влево
  • вправо
  • закрасить

Результат выполнения этих команд понятен из их названия:

  1. вверх — переместить Робота на одну клетку вверх
  2. вниз — переместить Робота на одну клетку вниз
  3. влево — переместить Робота на одну клетку влево
  4. вправо — переместить Робота на одну клетку вправо
  5. закрасить — закрасить текущую клетку (клетку в которой находится Робот).

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

  • вверх — Escape, Up (стрелка вверх)
  • вниз — Escape, Down (стрелка вниз)
  • влево — Escape, Left (стрелка влево)
  • вправо — Escape, Right (стрелка вправо)
  • закрасить — Escape, Space (пробел)

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

Теперь мы готовы написать первый алгоритм для Робота. Предлагаю начать с простого — нарисуем квадрат со стороной 3 клетки. Поехали!

Запускаем Кумир, его. Можно начинать писать программу? Конечно нет! Мы же не ! Делаем это. Предлагаю использовать вот такую:

Вот теперь все готово. Начинаем писать программу. Пока она выглядит так

Удаляем символ «|» и называем наш алгоритм «Квадрат»

Предлагаю рисовать квадрат, двигаясь по часовой стрелке. Для начала закрасим текущую клетку, дав команду закрасить . Потом делаем шаг вправо и опять закрашиваем клетку. И еще раз шаг вправо и закрасить.

Попробуем запустить программу и посмотреть что же получилось. Для запуска нажимаем F9 или же кнопку на панели инструментов

В результате мы должны увидеть вот такую картину

Если такое окно Робота у вас не появилось, то на панели инструментов щелкните «Показать окно Робота » или в меню Робот выберите пункт «Показать окно Робота «. Продолжаем дальше.

Теперь мы будем двигаться вниз и закрашивать правую сторону квадрата:

вниз

закрасить

вниз

закрасить

Потом пойдем влево, закрашивая нижнюю границу квадрата

влево

закрасить

влево

закрасить

У нас осталась одна незакрашенная клетка. Закрасим ее

вверх

закрасить

Все готово! В итоге наша программа выглядит так:

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

алг Квадрат

нач

закрасить

вправо

закрасить

вправо

закрасить

вниз

закрасить

вниз

закрасить