Садржај
1. Робот Карел - линијски програми и бројачка петља
2. Робот Карел - условна петља и гранање
3. Робот Карел - задаци за вежбање
4. Корњача графика - линијски програми и петље
5. Корњача графика - гранање, угнежђене петље, функције, торке и листе
6. Корњача графика - задаци за вежбање
9. Израчунавања - коришћење и дефинисање функција
10. Израчунавања - задаци за вежбање
13. Контрола тока - вежбање
17. Програмирање 2Д графике - Увод у Pygame

2.2 Гранање

Покупи лоптицу ако је има

Наредни лавиринт је зачаран. Сваки пут када се робот покрене, лоптице на три поља испред њега се наместе другачије. Напиши програм којим робот купи све лоптице.

Робот треба три пута да се помери напред и да са сваког поља на које дође покупи лоптицу (ако на пољу има лоптица). Међутим, пре него што покупи лоптицу, он мора да провери да ли на том пољу уопште постоји лоптица. Провера услова у програмском језику Пајтон (а и у многим другим програмским језицима) врши се наредбом if, што на енглеском језику значи „ако“.

Подсетимо се, помоћу услова ima_loptica_na_polju испитујемо да ли на пољу има лоптица. Претходним кодом смо роботу рекли: „Ако на пољу на ком стојиш има лоптица, онда узми лоптицу“, чиме постижемо да Карел провери да ли на пољу има лоптица и да, ако их има, узме једну лоптицу. Приметићеш да је, слично као и код петљи, након услова наведена двотачка, а да је наредба која се извршава ако је услов испуњен мало увучена. То је обавезно и, ако то не испоштујеш, добићеш поруку о грешци, веома сличну као и код петљи.

У зависности од тога да ли је услов који проверавамо испуњен, ток програма се грана, па се наредба if назива и наредба гранања. Гранањем и наредбом if ћемо се много детаљније бавити на неком од наредних часова (ван контекста програма за робота Карела).

Дакле, да бисте решили задатак, комбиноваћете померање робота и наредбу гранања којом ћете проверавати да ли на пољу постоји лоптица пре него што је робот покупи.

Please try loading this page in HTML5 enabled web browsers. All the latest versions of famous browsers such as Internet explorer, Chrome, Firefox, Opera support HTML5.

(Карел_покупи_лоптицу_ако_је_има)

Приметићеш да се у претходном програму наредбе

понављају три пута и можеш употребити петљу for да добијеш једноставнији програм.

Please try loading this page in HTML5 enabled web browsers. All the latest versions of famous browsers such as Internet explorer, Chrome, Firefox, Opera support HTML5.

(Карел_покупи_лоптицу_ако_је_има_for)

И наредни лавиринт је зачаран и његова дужина се мења сваки пут када се робот покрене, при чему се лоптице на пољима поново непредвидиво размештају. Напиши програм којим робот у оваквом лавиринту купи све лоптице.

Пошто у овом случају робот не зна колико пута треба да се помери напред, употребићемо петљу while и померати робота напред докле год је то могуће.

Please try loading this page in HTML5 enabled web browsers. All the latest versions of famous browsers such as Internet explorer, Chrome, Firefox, Opera support HTML5.

(Карел_покупи_лоптицу_ако_је_има_while)

Узимање и остављање лоптица

Карел не зна где се налазе лоптице. Задатак му је да пређе три поља испред себе и притом узме лоптице са оних поља на којима се налазе а да их постави на она поља на којима се не налазе. У овом задатку Карел има неограничен број лоптица код себе тако да може да остави лоптицу када год је то потребно.

У ранијим програмима сте видели како робот може да иде три поља напред и да узима лоптице на које наиђе. Потребно је да тај програм проширите тако да робот оставља лоптице на празна поља. Најлакши начин да се то уради је да кажете следеће: „Ако је на пољу лоптица, онда је узми, а у супротном је остави.“ То се може остварити помоћу допуне наредби if помоћу речи else, која значи „у супротном“, тј. иначе.

Please try loading this page in HTML5 enabled web browsers. All the latest versions of famous browsers such as Internet explorer, Chrome, Firefox, Opera support HTML5.

(Карел_узми_и_остави_лоптице)

Дакле, уколико желимо да робот изврши неке наредбе ако је неки услов испуњен, а неке друге ако тај услов није испуњен, користимо наредбу if-else. Иза речи if наводи се услов, затим двотачка и потом наредбе које ће се извршити ако услов јесте испуњен. Након тога се наводи реч else поравната са речју if, затим се ставља двотачка, а наредбе које се извршавају ако услов наведен иза if није испуњен се такође увлаче.

Кретање укруг

Покушај да решиш и наредни, мало тежи задатак.

Напиши програм којим се роботу наређује да се креће укруг око лавиринта и да покупи све лоптице на које наиђе.

Једна идеја за решење је да четири пута поновимо наредбе којима робот иде напред докле год може и купи све лоптице на које наиђе.

Please try loading this page in HTML5 enabled web browsers. All the latest versions of famous browsers such as Internet explorer, Chrome, Firefox, Opera support HTML5.

(Карел_покупи_лоптице_у_круг_1)

Још једна идеја за решење може биће следећа. Ако робот може да се помери напред, онда ћемо му рећи да се помери напред и након тога ћемо му рећи да провери да ли се на пољу налази лоптица и да је узме. У супротном, ако робот не може да се помери напред, значи да је дошао до зида и тада ћемо му рећи да се окрене налево. Све ово ћемо понављати у једној петљи (која ће се извршити 20 пута, што је тачно број корака који је потребан да би робот обишао цео круг). Покушај да наредни код допуниш тако да робот успешно покупи све лоптице.

Please try loading this page in HTML5 enabled web browsers. All the latest versions of famous browsers such as Internet explorer, Chrome, Firefox, Opera support HTML5.

(Карел_покупи_лоптице_у_круг_2)

(Created using Swinx, RunestoneComponents and PetljaDoc)
© 2022 Petlja
A- A+