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.
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).
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).
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).
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.
Uputstva za jedno moguće rešenje: