Те се научиха да го настройват за по-нататъшна работа. Сега нека преминем директно към компилирането на алгоритми за робота с помощта на прости команди.

Ако предпочитате информация във формат на видео уроци, то сайтът разполага с видео уроци

Всеки изпълнител трябва да има командна система ( СКИкомандна система на изпълнителя). Командна система на изпълнителя- съвкупността от всички команди, които изпълнителят може да изпълни. Като пример, помислете за обучено куче. Тя знае как да изпълнява някои команди - "Седни", "Легни", "Напред" и т.н. Това е нейната командна система.

Прости команди за роботи

Нашият робот също има командна система. Днес ще разгледаме прости команди на робота. Има общо 5:

  • нагоре
  • наляво
  • точно
  • боядисайте

Резултатът от изпълнението на тези команди е ясен от името им:

  1. нагоре— преместете робота една клетка нагоре
  2. път надолу— преместете робота една клетка надолу
  3. наляво— преместете робота една клетка наляво
  4. точно— преместете робота една клетка надясно
  5. боядисайте— боя върху текущата клетка (клетката, в която се намира роботът).

Тези команди могат да бъдат написани от клавиатурата или можете да използвате горещи клавиши (като ги натиснете, командите ще бъдат вмъкнати автоматично):

  • нагоре - бягство, нагоре (стрелка нагоре)
  • надолу - бягство, надолу (стрелка надолу)
  • ляво - бягство, ляво (стрелка наляво)
  • надясно - бягство, надясно (стрелка надясно)
  • боядисване - Escape, Space (space)

Моля, обърнете внимание, че трябва да наберете желаната комбинация от горещи клавиши не по обичайния начин!Свикнали сме да натискаме клавиши едновременно, но тук те са необходими натиснете последователно. Например, за да въведете командата нагоре, трябва да натиснете Escape, да го пуснете и след това да натиснете стрелката нагоре. Това трябва да се помни.

Сега сме готови да напишем първия алгоритъм за робота. Предлагам да започнем с прост - начертайте квадрат със страна от 3 клетки. Отивам!

Пускаме Idol, това. Мога ли да започна да пиша програма? Разбира се, че не! Ние не сме! Хайде да го направим. Предлагам да използвате този:

Сега всичко е готово. Нека започнем да пишем програмата. Стига да изглежда така

Изтрийте символа "|" и наречете нашия алгоритъм "Квадрат"

Предлагам да нарисувате квадрат, движейки се по посока на часовниковата стрелка. Първо рисувайте текущата клетка, като подадете командата боядисайте. След това правим крачка надясно и отново боядисваме клетката. И отново стъпете надясно и рисувайте.

Нека се опитаме да стартираме програмата и да видим какво се е случило. Натиснете за стартиране F9или бутона на лентата с инструменти

В резултат на това трябва да видим нещо подобно

Ако нямате такъв прозорец на Robot, тогава в лентата с инструменти щракнете върху " Показване на прозореца на робота” или в менюто на робота изберете елемента „ Показване на прозореца на робота". Продължаваме по-нататък.

Сега ще се преместим надолу и ще рисуваме върху дясната страна на квадрата:

път надолу

боядисайте

път надолу

боядисайте

След това да отидем наляво, рисувайки долната граница на квадрата

наляво

боядисайте

наляво

боядисайте

Остана ни една небоядисана клетка. Нека го нарисуваме

нагоре

боядисайте

Всичко е готово! В резултат нашата програма изглежда така:

използвайте робот

алг Квадрат

рано

боядисайте

точно

боядисайте

точно

боядисайте

път надолу

боядисайте

път надолу

боядисайте

Роботът изпълнител има командна система. Обмисли прости команди на робота. Има общо 5:

    нагоре- преместете робота една клетка нагоре

    път надолу- преместете робота една клетка надолу

    наляво- преместете робота една клетка наляво

    точно- преместете робота една клетка надясно

    боядисайте

Упражнение 1.Начертайте квадрат със страна от 3 клетки.

Изстрелване на Кумир

Изтрийте символа "|" и наречете нашия алгоритъм „Квадрат“ (до служебната дума алгпишете Квадрат)

боядисайте

боядисайте

боядисайте

Стартирайте програмата и вижте какво ще се случи. Натиснете за стартиране F9или бутона на лентата с инструменти Стартирайте програма

Ако нямате такъв прозорец на Robot, тогава в лентата с инструменти щракнете върху " Показване на прозореца на робота” или в менюто на робота изберете елемента „ Показване на прозореца на робота". Продължаваме по-нататък:

път надолу

боядисайте

път надолу

боядисайте

След това да отидем наляво, рисувайки долната граница на квадрата

наляво

боядисайте

наляво

боядисайте

Остана ни една небоядисана клетка. Нека го нарисуваме

нагоре

боядисайте

Всичко е готово! В резултат нашата програма изглежда така:

използвайте робот

alg Square

боядисайте

боядисайте

боядисайте

боядисайте

боядисайте

боядисайте

боядисайте

боядисайте

Задача 2.Използвайки прости команди на роботи,напишете програма, която рисува буква П, Р, З, З, Т, С.

Условен цикъл.

Роботът изпълнител има няколко условия: горе свободно долу свободно ляво свободно дясно свободно горна стена долна стена

лява стена дясна стена

Задача 3 .

рисувам вертикална линияот лявата до дясната граница на полето използвам цикъл с условие. Първоначално роботът е в горния ляв ъгъл.

Източникнашата програма за роботи ще бъде нещо подобно:

използвайте робот

алг

рано

боядисайте

nc докато е свободен

точно

боядисайте

kts

кон

В резултат на изпълнението на тази програма ще видим следната картина:

Задача 4.Напишете програма, която ще направи рамка около работното поле на робота, независимо от неговия размер. Разбира се, използвайки условни цикли. В резултат на това трябва да се окаже така:


Целият процес се състои от два етапа: асемблиране и програмиране. Събирам добър роботнеобходими са познания по механика. За да програмирате робот за определени действия, трябва да знаете език, който ще разбере дънна платкаили програмен блок. Тук не са достатъчни училищните знания по информатика.

Къде да вземем материал?

Първо трябва да решите как искате да сглобите робота: от готови комплекти или сами да изберете материали. Предимството на комплекта е, че не се налага да търсите частите поотделно. Най-често няколко устройства могат да бъдат сглобени от един комплект.

Конструкция, която не е сглобена от готов комплект, се нарича отворена система. Той също има своите предимства: вашият робот ще бъде индивидуален и вие сами ще можете да подобрите дизайна. Но определено ще отделите повече време и усилия.

От какво е направен роботът?

Корпус - метален или пластмасов "тяло", към който са прикрепени останалите части. Всеки робот има източник на енергия - батерии или акумулатор. В зависимост от това каква задача ще изпълнява роботът, се избират сензори: те могат да разпознават цвят и светлина и да реагират на допир.

За да накарате робота да се движи, имате нужда от двигатели. "Глава"на целия механизъм - дънната платка или програмния блок. С тяхна помощ роботът се свързва с компютъра и получава набор от задачи.

Как да го накарам да направи нещо?

За да може роботът да извърши някакво действие, трябва да създадете компютърна програма. Сложността на тази стъпка зависи от монтажа. Ако роботът е сглобен от комплект Лего Mindstormsили mBot, дори децата могат да се справят с техния софтуер.

Ако сами създавате робот, трябва да научите основите на програмирането и езика, на който ще напишете програмата, като C ++.

Защо роботът не може да изпълни програмата?

Стигайки до ново място, той може да се заблуди и да изпълни програмата неправилно. За да може роботът да направи всичко правилно, е необходимо да настроите сензорите. Например, твърде яркото осветление може да попречи на правилното разпознаване на цветовете. В зависимост от повърхността, върху която се движи роботът, се регулира мощността на двигателите.

Мога ли да се науча да асемблирам и програмирам в училище?

Въпреки факта, че роботиката не е включена в училищната програма, учителите по физика и информатика могат да научат дете как да сглобява и програмира. В Белгород някои училища имат кръжоци, където правят роботи.

„След уроци с учители по физика и информатика се учим да програмираме. Вече знаем как да работим в LegoMindstorms и Robolab ( софтуерза роботи - прибл. изд.). Понякога се учим как да правим 3D чертежи на части“, казаха ученици от Белгородския инженерен младежки интернат и участници в RoboFest-2018 Антон Першини Дмитрий Чернов.

Къде, освен в училище, човек може да стане робот?

Инженерното училище на BelSU има клас, в който учат как да сглобяват и програмират роботи. През 2017 г. Quantorium отвори врати в Белгород, където учениците се обучават на роботика от деветгодишна възраст.

За да станете истински робот, можете да влезете във факултета по роботика. В Белгород все още няма такива хора, но в BSTU im. Шухов има катедра по техническа кибернетика. Нейните ученици печелят награди на всеруски състезания по роботика.

Можете ли да научите сами?

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

Ще бъде ли полезен роботът?

Може да се адаптира за ежедневни задачи и да стане помощник в къщата. В интернет има много примери как домашни изобретатели създават роботи за печене на палачинки или почистване на апартамент.

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

Участвайте в състезания като RoboFest. Има различни номинации в зависимост от възрастта и посоката. По принцип всеки тип робот има писта, на която изпълнява задачи: улавяне на куб или чертане на линия. Има и статични системи, в които съдиите оценяват представянето на проекта и работата на механизмите.

По правило участниците идват на състезания с сглобени от роботии в подготовката те отделят време само за калибриране на сензори и настройка на програмата.

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

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

Робот за контрол на изпълнителя в системата КУМИР

Роботът съществува в определена среда (правоъгълно карирано поле). Между някои клетки на полето могат да бъдат разположени стени. Някои клетки може да са защриховани (фиг. 3.11).

Роботът заема точно една клетка от полето.

При команди нагоре, надолу, наляво и надясно, роботът се придвижва до следващата клетка в указаната посока. Ако има стена по пътя, тогава възниква повреда - показва се съобщение за невъзможността за изпълнение на следващата команда.

При команда за боядисване, роботът боядисва клетката, в която стои. Ако клетката вече е била боядисана, тя ще бъде боядисана отново, въпреки че няма да настъпят видими промени.

Роботът може да изпълнява само правилно написани команди. Ако запишете вместо командата down, тогава роботът няма да разбере този запис и веднага ще съобщи за грешка.

О
грешки: 1 синтактична; 2. логичен

Описанията на сцените се съхраняват в текстови файловеспециален формат (.fil формат).

Текущ- средата, в която се намира роботът този момент(включително информация за позицията на робота).

У дома- средата, в която Роботът е принудително поставен в началото на изпълнението на програмата, използваща Робота.

Оперативна процедура:


  1. питам начална средаспоред задачата:
Меню Инструменти → Промяна на началната среда на робота (начертайте средата според условието на задачата, дайте име, запишете в личната папка)

2. Посочете Изпълнителя:

Вмъкване на меню → Използване на робот

3. Напишете алгоритъм за решаване на задачата.

4. Стартирайте алгоритъма (Меню Изпълнение → Изпълнение непрекъснато / F9)

Системата от команди на робота-изпълнител в системата KUMIR


Екип

Действие

нагоре

Роботът се придвижва с 1 клетка нагоре

път надолу

Роботът се движи надолу с 1 клетка

наляво

Роботът се премества 1 клетка наляво

точно

Роботът се премества с 1 клетка надясно

боядисайте

Роботът рисува клетката, в която се намира

точно безплатно

Роботът проверява изпълнението на съответния простоусловия

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



отгоре свободен



дъно хлабаво



клетката е засенчена



клетка чиста



Циклични алгоритми

Цикълорганизиране на повтарящи се действия, докато определено условие е вярно .

тяло на примка -набор от повтарящи се действия.

състояние -булев израз (прост или сложен (съставен))
Типове цикли:

1.Цикъл "Повторете n пъти" 2. Цикл "Чао"
nc n пъти nts чао
. . Тяло на примка. . Тяло на примка
kts kts

Пример: nts чаоточно безплатно


Общ изглед на цикъла "Повторете n пъти:

ПОВТОРЕНИЕ n ПЪТИ

КРАЙ
kts

Общ изглед на цикъла while:

ДОКАТО ДА НАПРАВИТЕ

КРАЙ
Сложни условияобразувани от един или повече прости условияи служебни думи И, ИЛИ, НЕ.


Съставно състояние А и Б(където A, B са прости условия) е изпълнено, когато всяко от двете прости условия, включени в него, е изпълнено.

Нека А - безплатно отгоре AT - свободно вдяснослед това сложното условие А и Б- свободно отгоре И свободно отдясно.


Съставно състояние А ИЛИ Б е изпълнено, когато е изпълнено поне едно от двете прости условия, включени в него: отгоре безплатно ИЛИ отдясно безплатно
Съставно състояние НЕ А- изпълнено, когато условие А не е изпълнено.

Пример:Нека A е защрихована клетка (просто условие).

П Проверка на сложното условие НЕ A:

а) А - готово, НЕ А (НЕ защриховано) - не е готово.

б) А - не е направено, НЕ А (НЕ е защриховано) - направено.


Разклонителна команда

Разклоняване -форма на организация на действията, при която в зависимост от изпълнението или неизпълнението на определено условие се извършва една или друга последователност от действия.

Общ изглед на командата IF:

АКО ТОГАВА В ПРОТИВЕН СЛУЧАЙ

КРАЙ

На езика КУМИР:

Пълно разклонение: Частично разклонение:
ако тогава ако тогава

в противен случай

всички всички

Помощен алгоритъм- алгоритъм, който решава някакъв подзадача на основния проблем.

В системата KUMIR спомагателните алгоритми се записват в края на основната програма (след официална дума кон) се извикват за изпълнение в основната програма по име.

AT анкети и задачи

1. Дайте всички алгоритми на трите команди, които ще преместят робота от първоначалната му позиция в клетка B.

Има ли алгоритъм за тази задача, по време на който роботът прави:

а) две стъпки б) четири стъпки; в) пет стъпки; г) седем стъпки?


  1. Петя направи алгоритъм, който прехвърля робота от клетка А в клетка Б, като някои клетки са боядисани. Какво трябва да направи Коля с този алгоритъм, за да получи алгоритъм, който отвежда робота от B до A и попълва същите клетки?


7. Известни са двама спомагателни алгоритмиробот

Начертайте какво се случва, когато роботът изпълнява следните основни алгоритми:


а)

nc 5 пъти


модел_1

дясно; дясно;


б)

nc 7 пъти


модел_2

дясно; точно


в)
дясно; дясно; точно

нагоре; нагоре

дясно; дясно; точно

път надолу; път надолу


G)
дясно; точно
дясно; точно

8. Създайте алгоритми, при които роботът ще рисува върху посочените клетки:



9. Известно е, че някъде вдясно от робота има стена. Съставете алгоритъм, под управлението на който роботът ще рисува няколко клетки до стената и ще се върне в първоначалната си позиция.

10. Известно е, че някъде вдясно от робота има защрихована клетка.

ОТ напуснете алгоритъма, под контрола на който роботът ще рисува определен брой клетки до защрихованата клетка и ще се върне в първоначалната си позиция.

11. Известно е, че Роботът се намира близо до левия вход на хоризонталния коридор.

12. Известно е, че роботът е някъде в хоризонталния коридор. Нито една от клетките на коридора не е боядисана.

Направете алгоритъм, под контрола на който роботът ще рисува върху всички клетки на този коридор и ще се върне в първоначалната си позиция.


13. В ред от десет клетки вдясно от робота някои клетки са защриховани.

ОТ оставете алгоритъма, който рисува клетките:

а) под всяка защрихована клетка;

б) над и под всяка защрихована клетка.


14. Какво може да се каже за коректността на следния фрагмент от алгоритъма?

nts чаоклетката е засенчена

АКОточно безплатно ТОГАВА

дясно; боядисайте

да се
° С

15. Напишете програма, с която роботът може да стигне до клетка B и в трите лабиринта.


16. Напишете програма, след която роботът ще може да премине по коридора от долния ляв ъгъл на полето до горния десен. Коридорът е с ширина една клетка и се простира в посока от ляво-долу-дясно-нагоре. Пример за възможен коридор е показан на фигурата.

З

adachi GIA


  1. Коридор1. Роботът е някъде във вертикалния коридор. Нито една от клетките на коридора не е боядисана. Създайте алгоритъм, при който роботът ще рисува върху всички клетки на този коридор и ще се върне в първоначалната си позиция.

  1. Да се
    Необходимо

    дадени
    коридор 2. Роботът се намира в горната клетка на тесен вертикален коридор. Ширината на коридора е една клетка, дължината на коридора може да бъде произволна.

Възможен вариант на първоначалното местоположение на робота е показан на фигурата (роботът е обозначен с буквата "P")

Напишете алгоритъм за робота, който запълва всички клетки в коридора и връща робота в първоначалната му позиция. Например, за снимката по-горе, роботът трябва да рисува върху следните клетки (вижте снимката):


  1. На безкрайното поле има дълга хоризонтална стена. Дължината на стената е неизвестна. Роботът е в една от клетките точно над стената. Първоначалната позиция на робота също е неизвестна. Една от възможните позиции:
з


Необходимо

дадени
Напишете алгоритъм за робота, който рисува всички клетки над и в съседство със стената, независимо от размера на стената и първоначалната позиция на робота. Например, за дадения чертеж, роботът трябва да рисува върху следните клетки:

Крайната позиция на робота може да бъде произволна. При изпълнение на алгоритъма, Роботът не трябва да бъде унищожен.



  1. На безкрайното поле има дълга вертикална стена. Дължината на стената е неизвестна. Роботът е в една от клетките, разположени точно вдясно от стената. Първоначалната позиция на робота също е неизвестна. Една от възможните позиции на робота е показана на фигурата (роботът е маркиран с буквата „P“): Напишете алгоритъм за работа, който рисува върху всички клетки, съседни на стената: отляво, като започнете отгоре небоядисани и през един; вдясно, като се започне от долната засенчена и през една. Роботът трябва да боядисва само клетките, които удовлетворяват това състояние. Например, за горната фигура, роботът трябва да попълни следните клетки (вижте фигурата): Крайното местоположение на робота може да бъде произволно. Алгоритъмът трябва да реши проблема за произволен размер на стената и всяка валидна начална позиция на робота. При изпълнение на алгоритъма, роботът не трябва да се срива.


Напишете алгоритъм за робота, който рисува всички клетки, разположени вляво от вертикалната стена и над хоризонталната стена и съседни на тях. Роботът трябва да боядисва само клетките, които отговарят на това условие. Например, за горната снимка, роботът трябва да рисува върху следните клетки (вижте снимката).


з напишете алгоритъм за робота, който рисува съседните на стената клетки отгоре и отдолу, започвайки отляво и през една. Роботът трябва да боядисва само клетките, които отговарят на това условие. Например, за дадената фигура a) Роботът трябва да рисува върху следните клетки (виж Фиг. b).

Крайната позиция на робота може да бъде произволна. Алгоритъмът трябва да реши проблема за произволен размер на стената и всяка валидна начална позиция на робота.



Р

  1. На безкрайното поле има дълга вертикална стена. Дължината на стената е неизвестна. Роботът е в една от клетките, разположени точно вляво от стената. Първоначалната позиция на робота също е неизвестна. Една от възможните позиции на робота е показана на фигурата (роботът е обозначен с буквата "P"):
Напишете за работа алгоритъм, който рисува върху всички клетки, съседни на стената:

  • всичко отляво;

  • вдясно, започвайки отгоре небоядисани и през един.
Роботът трябва да боядисва само клетките, които отговарят на това условие.

б
1102_GIA2011

На безкрайното поле има две хоризонтални стени. Дължината на стените е неизвестна. Разстоянието между стените е неизвестно. Роботът е разположен над долната стена в клетка, разположена в левия му край. Напишете алгоритъм за робота, който рисува всички клетки, разположени над долната стена и под горната стена и съседни на тях. Роботът трябва да боядисва само клетките, които отговарят на това условие. Например, за горния чертеж, роботът трябва да попълни следните клетки (вижте фигурата):

Крайното местоположение на робота може да бъде произволно. Алгоритъмът трябва да реши задачата за произволен размер на полето и всяко допустимо разположение на стените вътре в правоъгълно поле. При изпълнение на алгоритъма, роботът не трябва да се срива.


AT
1103_GIA_2011


На безкрайното поле има хоризонтална стена. Дължината на стената е неизвестна. От десния край на стената се простира вертикална стена надолу, също с неизвестна дължина. Роботът е разположен над хоризонтална стена в клетка, разположена в левия й край. Фигурата показва един от възможни начиниместоположението на стените и робота (роботът е обозначен с буквата "P").

Напишете алгоритъм за робота, който рисува всички клетки, разположени над хоризонталната стена и вдясно от вертикалната стена и съседни на тях. Роботът трябва да боядисва само клетките, които отговарят на това условие. Например, за горната снимка, роботът трябва да рисува върху следните клетки (вижте снимката).

Роботът Изпълнител съществува в правоъгълно поле, разделено на клетки, между които може да има стени и се побира изцяло в една клетка. Роботът може да се движи из полето, да рисува клетки, да измерва температура и радиация. Роботът не може да минава през стени, но може да проверява дали има стена до него.

Командната система на изпълнителя "Робот" включва:

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

действия-команди

Проверете командите

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

Команди за измерване

Нека се изисква прехвърляне от клетката отляво на стената в клетката отдясно на стената:

Алгоритъмът може да изглежда така:

използвайте робот
alg пример 1
рано
. път надолу
. точно
. нагоре
кон

Ако се опитате да преведете робота през стената, тогава ще се случи провал. Роботът ще се блъсна в стената и повече няма да може да следва команди по-нататък.


Нека напишем алгоритъм за робота, за да премине лабиринта от точка А до точка Б:

използвайте робот
alg от А до Б
рано
. точно

. нагоре ; нагоре ; дясно ; път надолу; път надолу; точно
. нагоре ; нагоре ; дясно ; път надолу; път надолу; точно
кон

Командите за преминаване на всяка секция могат да бъдат групирани в един ред - това съкращава записа на алгоритъма и го прави по-разбираем. За да изпишете командите на един ред, те трябва да бъдат разделени с точка и запетая.