$$ \newcommand{\floor}[1]{\left\lfloor{#1}\right\rfloor} \newcommand{\ceil}[1]{\left\lceil{#1}\right\rceil} \renewcommand{\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{\mss}{\,\mathrm{\frac{m}{s^2}}} \newcommand{\mmin}{\,\mathrm{\frac{m}{min}}} \newcommand{\smin}{\,\mathrm{\frac{s}{min}}} $$

Prijavi problem


Obeleži sve kategorije koje odgovaraju problemu

Još detalja - opišite nam problem


Uspešno ste prijavili problem!
Status problema i sve dodatne informacije možete pratiti klikom na link.
Nažalost nismo trenutno u mogućnosti da obradimo vaš zahtev.
Molimo vas da pokušate kasnije.

Naredba if - vežbanje

U ovom delu ćemo samo uvežbavati upotrebu if naredbe i njeno kombinovanje sa petljama.

Zadaci za vežbu

Idi do kraja i uzmi samo jednu

Karel treba da stigne do kraja hodnika, a da usput uzme samo prvu lopticu na koju naiđe. Polje sa koga Karel polazi nikad nema lopticu, a i Karel je na početku bez loptica.

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)

Ovde je započeto jedno rešenje, potrebno je dopuniti if naredbe odgovarajućim uslovima.

Karel treba da uzme lopticu samo ako su ispunjena dva uslova:

  • jedan je uslov koji proveravamo pri svakom uzimanju loptice (bez tog uslova program bi mogao da se prekine zbog neizvodljive operacije).

  • drugi uslov je nametnut zahtevima ovog zadatka, a to je da Karel uzima lopticu samo ako pre toga nije već uzeo neku lopticu.

Redosled ispitivanja ova dva uslova nije bitan, svakako oba treba da budu ispunjena da bi Karel uzeo lopticu.

Uzmi lopticu na susednom polju

Na tabli se nalazi samo jedna loptica. Karel i loptica se nalaze na dva susedna polja, između kojih nema zida (Karela od loptice deli samo jedan korak, ako se pre toga okrene ka loptici). Između ostalih polja može a ne mora biti zidova. Karel treba da uzme lopticu i pri tome nije bitno na kojem polju će da ostane kada se program završi.

Kao i obično, pokrenite program više puta da biste ga testirali na različitim primerima.

Jedna od ideja je da u svakom od 4 smera pokušamo Karelom korak napred i uzimanje loptice. Pri svakom od 4 pokušaja mogu da nastupe razni slučajevi:

  • moguće je da u tom smeru nema polja napred

  • moguće je da postoji polje ispred Karela, ali da na njemu nema loptice

  • moguće je da postoji polje i da je na njemu loptica

Pri pokušaju u sledećem smeru nam je mnogo jednostavnije ako ne moramo da vodimo računa o tome da li je Karel u prethodnom smeru našao polje bez loptice, ili nije našao ni polje. Radi toga je potrebno da Karel, kada završi pokušaj u jednom smeru, stane na isti način kada je bio na praznom polju, kao i kada polja nije ni bilo. Kada polja u datom smeru nema, Karel će ostati na početnom polju, okrenut u tom smeru. Najjednostavnije za nastavak traganja je da Karela ostavimo na istom polju i u istom položaju i kada se vrati sa praznog susednog polja. U stvari, neće smetati ako to uradimo i kada Karel uzme lopticu (može da dogoditi da Karel nepotrebno nastavi da traži, ali neće doći do greške).

Zahvaljujući ovom dovođenju Karela na isto stanje (pozicija i orijentacija) posle bilo kog od tri gore nabrojana slučaja, za svaki sledeći pokušaj tačno znamo od kog Karelovog stanja počinjemo. Ostaje da nakon svakog pokušaja okrenemo Karela ka sledećem smeru u kojem ćemo pokušati da dođemo do loptice (na levo ili na desno).

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)

Prati put

Postoji samo jedna loptica i Karel treba da je uzme. Put do loptice je krivudav, ali nema raskrsnica (uvek postoji samo jedan nastavak puta, čak i sa polaznog polja).

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)

Uputstva za jedno moguće rešenje:

Skreći

Postoji samo jedna loptica i Karel treba da je uzme. Da bi stigao do loptice, Karel treba da ide pravo samo kad ne može da skrene ni levo ni desno (neće se pojaviti raskrsnice na kojima se može skrenuti i levo i desno).

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)

Uputstva za jedno moguće rešenje:

Levo kad god može

Postoji samo jedna loptica i Karel treba da je uzme. Karel će do loptice uvek stići tako što skrene levo kad god može, a inače ide pravo (kad ne može ni levo ni pravo, znači da je stigao). Karel je na početku okrenut kako treba i prvi korak mu je uvek pravo.

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)

Uputstva za jedno moguće rešenje: