Kontrolloni dhe vendosni

Deklarimi while doli shumë e dobishme, sepse duke e përdorur atë ne ishim në gjendje të zgjidhnim detyra më të larmishme. Sidoqoftë, shembulli i mëposhtëm tregon se ka detyra të thjeshta që nuk mund t’i zgjidhim me ato që kemi mësuar deri më tani.

Le të themi se në disa situata ju duhet të lëvizni Karel vetëm për një katror nëse është e mundur (nëse nuk është e mundur, Kareli duhet të mbetet aty ku është).

Natyrisht, ne kemi nevojë për një deklarim të re, e cila do t’i tregojë Karelit “nëse mund të shkoni përpara, lëvizni një vend”.

If

Deklarimi që na nevojitet në rastin e përshkruar është pohimi if, i cili gjithashtu ekziston në pothuajse të gjitha gjuhët e programimit. Në Python, ajo (në formën e saj më të thjeshtë) është shkruar si kjo:

Ne shohim që shkrimi i deklarims if është shumë i ngjashëm me shkrimin e një deklarate while. Nën deklarimn if mund të vendosim edhe një ose më shumë deklarime të tjera, të cilat përbëjnë trupin e deklarims if. Të njëjtat rregulla vlejnë për shkrimin e : pas kushtit dhe për deklarimet e indentifikimit që ekzekutohen nëse plotësohet kushti. Dallimi është se deklarimet në trupin e një deklarate if nuk do të përsëriten - nëse plotësohet kushti, ato do të bëhen vetëm një herë.

    Deklarimi if nganjëherë quhet deklarim branching statement sepse rrjedhja e ekzekutimit të programit degëzohet në këtë stendë: deklarim tjetër që duhet të ekzekutohet varet nga përgjigja e pyetjes nga gjendja.

Në shembullin e mësipërm, duhet të shkruajmë:

Le të shohim disa detyra në të cilat (përveç deklaratave tashmë të njohura) përdoret deklarim if.

Merr një top, nëse ka

Ka një kuti përpara Karelit, me zero ose më shumë topa. Shkruaj një program që i thotë Karelit të lëvizë në atë kuti, dhe pastaj të marrësh saktësisht një top nëse ka të paktën një top në fushë.

    Drejtoni programin disa herë për ta provuar atë në shembuj të ndryshëm.

Në rastin tonë, kushti do të jetë is_ball_on_square (), dhe komanda që ekzekutohet me kusht është pick_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_one_if_any)

Shko në fund te rrugës dhe merr një top nëse është e mundur

Ka të paktën një shesh para Karelit, dhe mund të ketë ndonjë numër prej tyre. Çdo katror ka zero ose më shumë topa. Kareli duhet të marr saktësisht një top nga secili katror në të cilin ka një top.

   Drejtoni programin disa herë për ta provuar atë në shembuj të ndryshëm.

Këtu është e nevojshme të përdorni deklarimn while për avancimin përpara, dhe në trupin e loop wile, pas çdo hapi përpara, duhet të përdoret një deklarim if për të kontrolluar nëse Karel qëndron në një kuti me një top në ajo apo jo.

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__many_squares_take_one_if_any)

Nëse nuk bën këtë, bëj atë (if-else)

Në disa detyra, një gjë duhet të bëhet nëse plotësohet një kusht i caktuar, dhe diçka tjetër nëse nuk përmbushet. Në këtë rast, ne mund të përdorim formën e zgjeruar të një deklarate if, e cila duket si kjo:

Në formën e zgjeruar të fjalisë if, pjesa e parë (deri tek fjala else) ka të njëjtën pamje dhe kuptim si më parë. Nën atë pjesë, është shkruar fjala else, në mënyrë të barabartë si fjala if, e ndjekur nga një :. Në rreshtat e mëposhtëm shkruajmë një ose më shumë deklarime të tjera, të cilat përbëjnë trupin të degës tjetër. Ky grup i dytë i deklaratave është i theksuar në një nivel më të dobët se fjala else më lart, dhe ekzekutohet nëse nuk përmbushet kushti i specifikuar në fjalinë “if”.

Shembull - marrja dhe hedhja e topave

Ka 3 kuti para Karelit, dhe në secilën prej tyre mund të ketë ose një top ose pa topa. Kareli duhet të marrë topa nga kutitë që kanë topa mbi ta dhe të vendosë një top në secilin katror që fillimisht ishte i zbrazët. Karel ka topa të mjaftueshëm me të në fillim.

Duke përdorur formën e re, të zgjeruar të fjalisë if, ne mund t’i themi Karelit: “Nëse ka një top në kuti, atëherë merr atë top, përndryshe hedh një top”, në mënyrë që detyra të zgjidhet lehtë:

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_else_put)

Kapni topat që mund të arrini

Një labirint përbëhet nga dy rreshta. Karel është në rreshtin e sipërm, i cili është plotësisht i zbrazët dhe i kalueshëm. Në rreshtin e poshtëm mund të ketë pengesa, ose sheshe me një top. Detyra e Karel është të marr të gjitha topat.

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_all_from_lower_row)

Vepro vetëm kur diçka nuk përmbushet

Le të themi që Kareli duhet të kthehet majtas nëse ai nuk mund të ecë përpara (nëse ai mund të shkojë përpara, ai nuk duhet të bëjë asgjë).

Sipas rregullave të shkrimit të një deklarimi if, pas kushtit (në trupin e degës së parë) duhet të ketë të paktën një deklaratë, dhe sipas logjikës së detyrës, ne nuk kemi nevojë për deklarata në atë vend. Në situata të tilla mund të shkruajmë:

or

Në rastin e parë, ne përdorim deklarim të veçantë pass që nuk bën asgjë. Duke vepruar kështu, ne kënaqim sintaksën (rregullat e shkrimit) dhe marrim një program që funksionon ashtu siç dëshirojmë.

Në rastin e dytë, duke përdorur fjalën not, bëjmë gjendjen e kundërt, që do të thotë se gjendja e deklarims if është e kënaqur kur Karel nuk mund të shkojë përpara. Në këtë rast, degët ndryshojnë role, kështu që dega if bëhet ajo që nuk është më e nevojshme.

Në disa detyra të ardhshme, ka diçka për të bërë vetëm kur kushti nuk plotësohet.

Shko ne një kuti bosh

Fillimisht, Kareli mund të përballet me secilën palë, por ai mund të fillojë të lëvizë vetëm në një drejtim. Kareli duhet të kthehet në sheshin e lirë dhe të bëjë një hap.

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__turn_to_free_square)

Ne ofrojmë 2 zgjidhje të shkurtra:

Vendosni topa aty ku nuk ka

Ekziston një numër i panjohur i kutive përpara Karelit, dhe, secila prej tyre mund të përmbajë një top ose asnjë top. Karel ka mjaft topa, dhe ai duhet të vendosë një top në çdo kuti të zbrazët.

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__fill_the_empty_squares)