$$ \newcommand{\floor}[1]{\left\lfloor{#1}\right\rfloor} \newcommand{\ceil}[1]{\left\lceil{#1}\right\rceil} \newcommand{\mod}{\,\mathrm{mod}\,} \renewcommand{\div}{\,\mathrm{div}\,} \newcommand{\metar}{\,\mathrm{m}} \newcommand{\cm}{\,\mathrm{cm}} \newcommand{\dm}{\,\mathrm{dm}} \newcommand{\litar}{\,\mathrm{l}} \newcommand{\km}{\,\mathrm{km}} \newcommand{\s}{\,\mathrm{s}} \newcommand{\h}{\,\mathrm{h}} \newcommand{\minut}{\,\mathrm{min}} \newcommand{\kmh}{\,\mathrm{\frac{km}{h}}} \newcommand{\ms}{\,\mathrm{\frac{m}{s}}} \newcommand{\mmin}{\,\mathrm{\frac{m}{min}}} \newcommand{\smin}{\,\mathrm{\frac{s}{min}}} $$
Hour of Code / Пчела и условне наредбе (одлуке)

Пчела и условне наредбе (одлуке)

У претходним лекцијама смо видели једноставне наредбе које ће роботи, птичице и остали извршити чим их прочитају. Међутим, некада нам требају посебне наредбе у којима робот мора да размисли да ли треба да их изврши или не. На пример, "иди напред" је једноставна наредба, али вероватно би неко ко је извршава требало да размисли да ли је испред неки зид или провалија пре него што је изврши. Овакве наредбе имају неке услове или питања (да ли је испред провалија?) које нам говори да треба да размислимо од том питању пре него што одлучимо да извршимо наредбу.

За овакве проблеме можемо да користимо наредбе са одлукама:

Наредбе одлуке су наредбе у којима морамо да поставимо неко питање (услов) и у зависности од одговора урадимо једну наредбу или нешто друго.

На пример замислите да се возите аутомобилом и наилазите на раскрсницу на којој пут десно води у Суботицу. Ако треба да размислимо да ли да скренемо десно морали би да донесемо овакву одлуку:

 

Плава наредба је наредбa одлуке. Наредба одлуке у себи има неки услов или питање, на пример „Ако идеш у Суботицу уради…“  или „Да ли идеш у Суботицу?“ ако је одговор на ово питање ДА, онда ће се извршити наредба „скрени десно“ и наставићемо путем за Суботицу. Ако је одговор НЕ неће се извршити ова наредба и наставићемо даље.

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

Погледајте на следећем видеу како се решавају задаци са одлукама

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

Пробајте да решите овај проблем на сајту часа програмирања.

У овом примеру смо рекли пчели шта да уради ако је одговор ДА (тј. да узме нектар), а ако је одговор НЕ онда да не ради ништа.

Замислите да на пољу које је прекривено облаком може да буде или цвет или саће. Ако се пчела нађе на цвету, онда треба да сакупи нектар са њега, али ако није на цвету онда треба да направи мед. Да бисмо написали наредбе за овај проблем можемо да ставимо две наредбе одлуке једну иза друге као на слици:

Као што можете да приметите, наредбе одлуке можемо да користимо као и све остале наредбе. Можемо да их стављамо једну иза друге, између осталих наредби, можемо да ставимо наредбу понављања уместо три наредбе помери се напред, итд.

Некада можемо да користимо и посебну наредбу одлуке којој можемо да кажемо шта треба да се уради ако је одговор ДА, а шта да се уради ако је одговор НЕ. Оваква наредба би изгледала овако:

Домаћи задатак

Помозите пчели да дође до цветова и саћа на сајту часа програмирања :

  • Ниво 1 https://studio.code.org/s/course3/stage/7/puzzle/1 . У овим проблемима ћете видети облаке који прекривају цвеће и саће на ливади. Користите наредбе које сте видели у овој лекцији да проверите испод сваког облака да ли је цвет или саће, а онда реците пчели да ли да на том пољу узме нектар или да направи мед.
  • Ниво 2 https://studio.code.org/s/course2/stage/13/puzzle/1. У овим проблемима ћете видети цветове на којима пчела може да узме једну или више порција нектара. На ливади ћете видети две врсте цветова - црвене и љубичасте. На црвеним цветовима пише колико порција нектара пчела може да узме, али на љубичастим то не пише (можда чак и нема нектара на неком цвету). Када пчела стане на љубичасти цвет, користите наредбе одлуке да кажете пчели да провери колико има нектара на љубичастом цвету и онда да одлучи колико нектара да узме са љубичастог цвета.

Када испробате ове примере проверите своје знање на тесту у овој лекцији.