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

2.3. Гранање

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

Помози роботу да покупи лоптицу на пољу, ако је има.

Подсетимо се, помоћу услова ima_loptica_na_polju испитујемо да ли на пољу има лоптица.

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

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

У зависности од тога да ли је услов који проверавамо испуњен, ток програма се грана, па се наредба 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 није испуњен се такође увлаче.

Утврдимо потпуни облик if наредбе:

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