Как да направите определен брой повторения в идол. Разклоняване в езика идол

Как да направите определен брой повторения в идол.  Разклоняване в езика идол
Как да направите определен брой повторения в идол. Разклоняване в езика идол

Въведение в програмата Idol и усвояване на основите на програмирането.

В него учениците могат да придобият практически умения за създаване и отстраняване на грешки в алгоритъм, работейки с такива изпълнители като Robot, Draftsman, Aquarius, Grasshopper, Turtle.

Когато изучавате един от най-трудните раздели на компютърните науки, „алгоритмизация и програмиране“.

Цел на разработката :

Изтегли:


Преглед:

Методическа разработка по информатика.

Тема: „Робот изпълнител в програмата KuMir в уроците по информатика“

учител по технологии "Информатика и ИКТ"

Обяснителна бележка

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

Методическа разработкакомпилиран за уроци по информатикаУпражнявайте се на компютъра: работа с изпълнител на образователен алгоритъм; компилация от линейни, разклонени и циклични алгоритмиуправление на изпълнителя; съставяне на алгоритми със сложна структура; използване на спомагателни алгоритми (процедури, подпрограми).

Студентите трябва да знаят:

  • какво е изпълнител; SKI Robot, среда на Robot изпълнителя;
  • какво е алгоритъм;кои са основните свойства на алгоритъма;
  • начини за писане на алгоритми: блок-схеми, образователен алгоритмичен език;основни алгоритмични структури: следване, разклоняване, цикъл; структури
  • алгоритми; ⇒ задаване на спомагателни алгоритми; технологии за конструиране на сложни алгоритми:

Студентите трябва да могат да:

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

Урок 1 (2 часа) Урок 1.

Робот изпълнител.Командна система на изпълнителя.

План на урока.

  1. Описание на СКИ изпълнителя, средата на изпълнителя.

2. Анализ на типични алгоритми на роботи.

По време на часовете.

Нека да разгледаме описанието на художника.

Художник среда: Изпълнител Роботът може да се движи през лабиринт, начертан върху равнина, разделена на клетки.

СКИ робот : прости команди: нагоре, надолу, наляво, надясно, рисуване.

Логически команди: (проверки на условия)

отгоре безплатно отдолу безплатно

ляво свободно дясно свободно.

Логически връзки: И, НЕ, ИЛИ:

Пример: (Не е оставено свободно) или (Не е свободно вдясно)

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

Ако условието тогава все още няма условия

Поредица от команди поредица от команди

това е всичко kts

(В CMM от 2009 г. командите на робота бяха различни от познатите на децата, което доведе дообъркване :)

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

Ако условието тогава nts за сега условието да направя

Поредица от команди поредица от команди

край край

Обща формаПрозорци на програмата Idol. Графична среда на робота:

В KIMs демо версияФорматът на отбора за 2010 г. е променен наобичаен

Процедурата за създаване на алгоритъм:

1.Екипи Инструменти - Редактиране начална среда начертайте стени върху полето на робота и поставете робота в първоначалната му позиция.

2.Екипи Робот - Промяна на началната средаподдържат новата среда.

3.Екипи Вмъкване - Използвайте роботпосочете художника.

4. В прозореца на документа запишете алгоритъма, като използвате менютоПоставете.

5. Използване на команди за изпълнение – изпълнявайте алгоритъма непрекъснато (или стъпка по стъпка).

6. Обмислете резултата от изпълнението на алгоритъма и, ако е необходимо, го отстранете.

Урок 1 (2 часа) Урок 2.

Практическа работа "Компилация на линейни алгоритми“.

Задачи: 1. Робот в произволна точка от полето. Оцветете клетката над, под и вдясно от първоначалната позиция.

  1. Робот в произволна точка на полето. Преместете робота 4 квадрата надясно, оцветявайки ги.
  2. Създайте нова начална среда, като нарисувате върху полето квадрат със страна 4 квадрата. Запазете настройката като начална.
  3. Създайте нова начална среда, като начертаете коридор на полето с проходи в стените. Запазете средата като obst2.fil. Променете началната среда на новосъздадената.

Урок 2 (2 часа) Урок 1.

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

Анализ на CMM задачи с помощта на Robot performer.

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

alg kim 2009

начало

ако не е свободен отдолу

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

всичко

ако не е свободен отдолу

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

всичко

ако не е свободен отдолу

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

всичко

кон

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

alg kim 2010

начало

ако не е свободен отдолу

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

всичко

ако не е свободен отдолу

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

всичко

ако не е свободен отдолу

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

всичко

кон

и т.н. роб. номер 14. Компилиране и отстраняване на грешки на разклонени алгоритми

Задачи. Вижте прикачения файл.

Урок 3. Циклични алгоритми. Урок 1-2

Мишена: разкрива същността на концепцията за цикъл в алгоритмите, показва формите на запис на цикли в алгоритми, дава умения за създаване и запис на циклични алгоритми.

и т.н. роб. номер 15. Компилация и отстраняване на грешки на циклични алгоритми

1. Създайте алгоритъм, който рисува всички вътрешни клетки, съседни на стената.

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

алг

начало

nts правото е безплатно за сега

боядисвам; точно

kts

nts дъното е безплатно за сега

боядисвам; надолу

kts

nts все още не са свободни отдолу

боядисвам; наляво

kts

кон

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

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

алг

начало

nts правото е безплатно за сега

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

kts

кон

3. Създайте алгоритъм, който рисува всички клетки, разположени между две стени.

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

алг уч3

начало

nts все още (не е свободен отгоре) или (не е свободен отдолу)

точно

ако (не е свободен отгоре) и (не е свободен отдолу)

Че

боядисайте

всичко

kts

кон

4. Създайте алгоритъм, който рисува всички клетки около правоъгълна стена.

alg uch4

начало

боядисвам;

nts все още не са свободни отдясно

боядисвам;

kts

боядисвам; правилно

nts все още не са свободни отдолу

боядисване; надясно;

kts

боя над;надолу

nts все още не са свободни отляво

боя върху;надолу;

kts

боядисване; ляво

nts не са на върха, но са безплатни

боядисвам; наляво;

kts

кон

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

алг уч5

начало

точно

nts все още не са свободни отдолу

боядисвам; точно

kts

боядисвам; надолу

nts лявата е свободна за сега

боядисвам; наляво

kts

nts все още не са свободни отляво

боядисвам; надолу

kts

боядисване; ляво; боядисване; нагоре;

nts безплатно отгоре за сега

боядисвам; нагоре

kts

nts не са на върха, но са безплатни

боядисвам; наляво

kts

кон

Урок 4 Урок 1

Помощни алгоритми.

Мишена: въведе понятието основни и спомагателен алгоритъм; обясняват правилата за използване на спомагателния алгоритъм; анализирайте примери за алгоритми, като използвате спомагателни.

План на урока

1.Въвеждане на нови термини (основни и спомагателни алгоритми, извиквания) и обяснение на нови понятия.

2. Анализ на примери за решаване на проблеми с помощта на спомагателен алгоритъм.

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

В процеса на решаване на задача всеки спомагателен алгоритъм може, ако е необходимо, да бъде разделен на по-малки спомагателни алгоритми.

Извиква се командата за изпълнение на спомагателния алгоритъмпредизвикателство и се записва в тялото на основния алгоритъм.

Същият алгоритъм може да се счита за основен и спомагателен по отношение на други алгоритми. В алгоритмичния език основният алгоритъм се записва първо, а спомагателните се записват подред.

Задача 1:

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

Решение

Анализ на дъската:

Задача 2. Роботът е в горния ляв ъгъл на полето. Няма стени и изписани килии. Създайте алгоритъм, който рисува в шахматна дъска квадрат с размери 8 x 8. Крайната позиция на робота може да бъде произволна.

Урок 4 Урок 2

Практическа работа на компютър „Решаване на проблем с помощта на спомагателни алгоритми“.

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

План на урока

1. Задачата се изпълнява изцяло на компютър. Учениците получават задачи и ги изпълняват софтуерна средаИдол. Резултатите от работата се запазват като файлове за последваща проверка.

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

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

Домашна работа: Измислете алгоритъм, който рисува следното изображение: За да разрешите проблема, използвайте два спомагателни алгоритъма.

Урок 5 Урок 1-2

Тест

„Изготвяне на алгоритъм в средата на Robot executor.“

Мишена: тестват придобитите знания за създаване и способност за анализиране на алгоритми в софтуерната среда Idol.

Задачи за тестова работаса разделени по ниво на трудност и включват 3 задачи с изпълнител Робот (задача 1 и 2 - за разклоняване и цикли, задача 3 - за използване на спомагателен алгоритъм.) Текстовете на задачите са дадени в приложението.

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

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

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

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

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

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

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

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

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

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

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

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

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


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

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

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

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

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

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


Екип

Действие

нагоре

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

надолу

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

наляво

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

точно

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

боядисайте

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

свободно вдясно

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

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



безплатно отгоре



безплатно отдолу



клетката е боядисана



клетката е чиста



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

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

Тялото на цикъла енабор от повтарящи се действия.

състояние -логически израз (прост или сложен (съставен))
Видове цикли:

1.Цикъл „Повторете n пъти“ 2. Цикл „Докато“
nts n пъти nts за сега
. . Тялото на цикъла. . Тяло на примка
kts kts

Пример: nts за сегасвободно вдясно


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

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

КРАЙ
kts

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

НАПРАВИ ГО ЧАО

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


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

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


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

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

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

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

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


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

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

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

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

КРАЙ

На езика на ICON:

Пълно разклонение: Непълно разклонение:
Ако Че Ако Че

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

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

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

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

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

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

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

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


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


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

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


а)

nts 5 пъти


модел_1

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


б)

nts 7 пъти


модел_2

дясно; точно


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

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

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

надолу; надолу


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

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



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

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

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

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

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

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


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

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

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

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


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

nts за сегаклетката е боядисана

АКОсвободно вдясно ЧЕ

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

Да се
ц

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


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

З

Постижения на GIA


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

  1. ДА СЕ
    Необходимо

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

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

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


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


Необходимо

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

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



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


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


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

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



Р

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

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

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

б
1102_GIA2011

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

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


IN
1103_GIA_2011


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

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

Хирянов Тимофей Федорович

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

Условно изпълнен код

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

Ако<условие>
Че
<действия>
всичко

алтернатива

В блок-схемата тестването на състоянието може да служи като принцип за избор на алтернативни операции. Тоест, ако условието е вярно, изпълнението ще върви по една траектория, а ако е невярно, тогава по друга. В езика KuMir цикълът с предварително условие има следната форма:

Ако<условие>
Че
<действия>
в противен случай
<альтернативные действия>
всичко


Условия за робота:
лява стена
стена вдясно
стена отдолу
стена отгоре
клетката е боядисана
оставен свободен
свободно вдясно
безплатно отдолу
безплатно отгоре
клетката е чиста

Цикл с предварително условие

Цикъл с предварително условие е цикъл, който работи толкова дълго, колкото дадено условие, зададено преди да започне, е вярно. Това условие се проверява преди да бъде изпълнено тялото на цикъла, така че тялото може да не бъде изпълнено дори веднъж (ако условието е невярно от самото начало). В повечето процедурни езици за програмиране той се реализира от оператора while, откъдето идва и второто му име - цикъл while. В езика KuMir цикълът с предварително условие има следната форма:

nts за сега<условие>
<тело цикла>
kts

Цикъл с постусловие

Цикъл с постусловие е цикъл, в който условието се проверява след изпълнение на тялото на цикъла. От това следва, че тялото винаги се изпълнява поне веднъж. В езика Pascal този цикъл се реализира от оператора repeat..until, в C - do...while.
На езика KuMir цикъл с постусловие има следната форма:

nc
<тело цикла>
kts_pri<условие>

Примка с брояч

Цикъл с брояч е цикъл, в който дадена променлива променя стойността си от дадена първоначална стойност до крайна стойност с определена стъпка, като за всяка стойност на тази променлива тялото на цикъла се изпълнява веднъж. В повечето процедурни програмни езици той се реализира от оператора за, който определя брояча (така наречената "променлива на цикъла"), необходимия брой преминавания (или граничната стойност на брояча) и, евентуално, стъпката, на която се променя броячът. На езика KuMir цикъл с брояч има следната форма:

цяло
nc за a от 0 до 9
...тяло на примка
kts

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

Алгоритъм за рисуване на спирала:

използвайте Draftsman
алг
начало
. придвижете се до точка(3,3)
. спуснете писалката
. завой(1); завой(3); завой(5); завой(7); завой (9)
. повдигнете писалката
кон
alg turn(arg thing)
начало
. движение по вектор(a, 0)
. движение по вектор(0, -а)
. движение по вектор(-a-1.0)
. движение по вектор(0, a+1)
кон

Обърнете внимание на командния блок:

Намотка (1); завой(3); завой(5); завой(7); завой (9)

Спомагателният алгоритъм „turn(arg thing a)“ се извиква 5 пъти, но не може да бъде извикан в цикъла „N пъти“, защото всеки път, когато се извиква с различни значенияаргумент.

Но можете да забележите, че стойностите на аргумента се променят от 1 до 9, като всеки път се увеличават с 2. Това означава, че може да ни помогне цикъл с брояч. Този тип цикъл се нарича още цикъл „for“.

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

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

Общ изглед на цикъл с брояч:

nc за<счетчик>от<нач. знач.>преди<кон. знач.>[стъпка<знач.>]
<тело цикла (последовательность команд)>
kts

Не е необходимо да се посочва стъпката, ако не е посочена, се счита за равна на единица.

Сега можем да пренапишем „спиралния“ алгоритъм по следния начин:

използвайте Draftsman
алг
начало
. придвижете се до точка(3,3)
. спуснете писалката
. цял размер
. nts за размер от 1 до 9 стъпка 2
. . намотка (размер)
. kts
. повдигнете писалката
кон
alg turn(arg thing)
начало
. движение по вектор(a, 0)
. движение по вектор(0, -а)
. движение по вектор(-a-1.0)
. движение по вектор(0, a+1)
кон

В този пример променливата на брояча „size“ ще получи стойностите: 1, 3, 5, 7, 9. Т.е. Цикълът ще бъде изпълнен 5 пъти. За всяка стойност на променливата „size“ тялото на цикъла ще бъде изпълнено веднъж; в нашия пример това е извикване на спомагателния алгоритъм „turn(arg thing)“.

Преди да използвате променлива за първи път, трябва да я опишете, т.е. да посочите какъв тип е. Това се прави в нашата програма в реда „integer size“, т.е. посочваме, че ще използваме променливата „size“ за съхраняване на цели числа и следователно трябва да отделим памет за нея. Ще говорим повече за променливите малко по-късно.

Блоковата схема на такъв алгоритъм изглежда така:

Нека да разгледаме друг пример:

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

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

алг квадрат (арг неща x, y, страна)
начало
. придвижете се до точка(x, y)
. движение по вектор(-страна/2, страна/2)
. спуснете писалката
. движение по вектор(страна, 0)
. движение по вектор(0, -страна)
. движение по вектор(-страна, 0)
. движение по вектор(0, страна)
. повдигнете писалката
кон

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

За да направим това, ще използваме цикъла „for“. Проучете примерната програма:

използвайте Draftsman
alg фигура1
начало
. цяло z
. nc за z от 2 до 10 стъпка 2
. . квадрат (0, 0, z)
. kts
кон
алг квадрат (арг неща x, y, страна)
начало
. придвижете се до точка(x, y)
. движение по вектор(-страна/2, страна/2)
. спуснете писалката
. движение по вектор(страна, 0)
. движение по вектор(0, -страна)
. движение по вектор(-страна, 0)
. движение по вектор(0, страна)
. повдигнете писалката
кон

В този пример променливата “z” ще получи стойностите: 2, 4, 6, 8, 10. Т.е. Цикълът ще бъде изпълнен 5 пъти. За всяка стойност на „z“ тялото на цикъла ще бъде изпълнено веднъж, в нашия пример това е извикване на квадрата на спомагателния алгоритъм.

Преди да използвате променлива за първи път, трябва да я опишете, т.е. да посочите какъв тип е. Това се прави в нашата програма в реда „int z“, т.е. посочваме, че ще използваме променливата „z“ за съхраняване на цели числа и следователно трябва да отделим памет за нея. Ще говорим повече за променливите малко по-късно.

Както забелязахте, алгоритъмът използва не само числа, но и алгебрични изрази, формули като „-страна/2“. В компютърните науки тези изрази се наричат аритметика. Правилата на езика позволяват, когато пишете алгоритми, където можете да напишете число, можете да напишете и произволен аритметичен израз.

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

Така, какво е цикъл? Представете си, че сме в час по физическо и сме изправени пред задача направете 7 клякания. Тази задача може да бъде написана като линеен алгоритъм и тогава ще изглежда по следния начин:

направете клек

направете клек

направете клек

направете клек

направете клек

направете клек

направете клек

Тоест повторихме командата „направете клек“ 7 пъти. Има ли смисъл да пиша 7 еднакви команди? Може да е по-лесно да дадете команда направете 7 клякания? Разбира се, че е по-просто и по-правилно. Това е цикълът. Можете сами да си спомните примери за цикли от живота - има доста от тях.

По този начин линеен алгоритъм, където едни и същи команди се повтарят, можем да организираме като цикличен алгоритъм- така:

повторете 7 пъти

направете клек

край на цикъла

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

Видове цикли.

Примка с контра.

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

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

nc<брой повторения> пъти

<команда 1>

<команда 2>

<команда n>

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

Нека да разгледаме това с пример.

Първоначално роботът беше в горната лява клетка.

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

боядисайте

точно

боядисайте

точно

боядисайте

точно

боядисайте

точно

боядисайте

точно

боядисайте

точно

боядисайте

точно

Както можете да видите, командите за рисуване и надясно се повтарят 7 пъти. Нека сега пренапишем програмата с помощта на цикъл. Между другото, за да вмъкнете цикъл във вашата програма, можете да отидете в менюто ПоставетеИзбери предмет цък-цък-цъкили натиснете една от клавишните комбинации Esc, P(руска буква R) или Esc, H(латинската буква H). освен това клавишите трябва да се натискат последователно- първо Esc, отпуснете го и чак след това P или H.

И така, ето го нашият циклична програмаще изглежда така:

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

nts 7 пъти

боядисайте

точно

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

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

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

При решаване на задача 19 от Държавната академична информатика по компютърни науки с робот, използването на цикъл с брояч няма да работи. Тъй като полето там по правило е безкрайно и стените нямат определена дължина. Следователно няма да можем да определим броя на повторенията за цикъл с брояч. Но няма значение - ще ни помогне цикъл с условие.

Да се ​​върнем към физическото възпитание и да променим проблема. В края на краищата, някой може да не успее да направи 7 клякания, докато друг е в състояние да направи 27. Възможно ли е това да се вземе предвид при създаването на цикъл? Със сигурност. Само сега ще използваме не брояч (брой повторения), а условие. Например, преди да се изморите, правете клякания. В този случай човекът няма да прави определен брой клякания, а ще кляка, докато се умори. И нашият цикъл на абстрактен език ще приеме следната форма:

Чао не е уморен

направете клек

край на цикъла

Думите не са уморени в нашия случай - това е условие. Когато е вярно, цикълът се изпълнява. Ако е false (уморен), тялото на цикъла няма да бъде изпълнено. Роботът изпълнител има няколко условия

безплатно отгоре

безплатно отдолу

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

свободно вдясно

стена отгоре

стена отдолу

лява стена

стена вдясно

Но в условията на задача 19 от GIA са посочени само първите 4. Така че ще използваме само тях.

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

Нека първо формулираме словесен алгоритъм – тоест да опишем с думи какво трябва да направи Роботът. Този алгоритъм ще звучи по следния начин:

« Докато има свободно място отдясно, направете крачка надясно и оцветете клетката »

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

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

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

nts правото е безплатно за сега

точно

боядисайте

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