Наредба 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.

(Karel_if__take_first_ball_only)

Овде је започето једно решење, потребно је допунити if наредбе одговарајућим условима.

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

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

  • други услов је наметнут захтевима овог задатка, а то је да Карел узима лоптицу само ако пре тога није већ узео неку лоптицу.

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

Узми лоптицу на суседном пољу

На табли се налази само једна лоптица. Карел и лоптица се налазе на два суседна поља, између којих нема зида (Карела од лоптице дели само један корак, ако се пре тога окрене ка лоптици). Између осталих поља може а не мора бити зидова. Карел треба да узме лоптицу и при томе није битно на којем пољу ће да остане када се програм заврши.

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

Једна од идеја је да у сваком од 4 смера покушамо Карелом корак напред и узимање лоптице. При сваком од 4 покушаја могу да наступе разни случајеви:

  • могуће је да у том смеру нема поља напред

  • могуће је да постоји поље испред Карела, али да на њему нема лоптице

  • могуће је да постоји поље и да је на њему лоптица

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

Захваљујући овом довођењу Карела на исто стање (позиција и оријентација) после било ког од три горе набројана случаја, за сваки следећи покушај тачно знамо од ког Кареловог стања почињемо. Остаје да након сваког покушаја окренемо Карела ка следећем смеру у којем ћемо покушати да дођемо до лоптице (на лево или на десно).

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.

(Karel_if__take_neighboring_ball)

Прати пут

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

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.

(Karel_if__take_ball_no_branches)

Упутства за једно могуће решење:

Скрећи

Постоји само једна лоптица и Карел треба да је узме. Да би стигао до лоптице, Карел треба да иде право само кад не може да скрене ни лево ни десно (неће се појавити раскрснице на којима се може скренути и лево и десно).

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.

(Karel_if__p1_left_p2_right_p3_forward)

Упутства за једно могуће решење:

Лево кад год може

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

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.

(Karel_if_p1_left_p2_forward)

Упутства за једно могуће решење: