Zanka while

Doslej smo videli, da računalnik načeloma izvaja stavke našega programa po vrsti, kot so zapisani v programu, vsakega enkrat. S pogojnimi stavki smo se tudi naučili doseči, da izvajanje nek del programa preskoči (če pogoj ni izpolnjen). Kaj pa, če hočemo, da se nek del programa izvede večkrat? Tedaj lahko uporabimo zanko.

Primer

Izvedi Počisti



Stavek while označuje, da gre za zanko; za njim pride pogoj za nadaljevanje – v našem primeru je to n <= 10, torej se zanka izvaja, dokler je pogoj n <= 10 izpolnjen. Pri vsaki ponovitvi zanke se izvedeta stavka print(n) (ki izpiše trenutno vrednost n) in n = n + 1 (ki poveča n za 1).

Oglejmo si drug primer problema, ki ga je veliko lažje rešiti z zanko kot brez nje.

Primer

Če poskušamo to nalogo reševati ročno, se bomo hitro utrudili in najbrž tudi zmotili: računati moramo 2 · 1 = 2; 2 · 2 = 4; 2 · 4 = 8; 2 · 8 = 16; 2 · 16 = 32; in tako naprej še kar nekaj časa, pri čemer bi na koncu morali vse te zmnožke še sešteti. Dolgo, ponavljajoče se zaporedje enih in istih operacij je kot nalašč za reševanje z računalnikom. Poskusimo napisati program sahovnica.py, ki reši našo nalogo:

skupajZrn = 0
zrnNaPolju = 1 # število zrn na 1. polju
skupajZrn = skupajZrn + zrnNaPolju
zrnNaPolju = zrnNaPolju * 2 # število na 2. polju
skupajZrn = skupajZrn + zrnNaPolju
zrnNaPolju = zrnNaPolju * 2 # število na 3. polju
skupajZrn = skupajZrn + zrnNaPolju
zrnNaPolju = zrnNaPolju * 2 # število na 4. polju
skupajZrn = skupajZrn + zrnNaPolju
...
print(skupajZrn)

V spremenljivki zrnNaPolju hranimo število zrn na trenutnem polju, v skupajZrn pa skupno število zrn na vseh doslej obdelanih poljih. Ko se premaknemo na naslednje polje, moramo zrnNaPolju pomnožiti z 2, da dobimo število zrn na tem naslednjem polju (ki je dvakrat tolikšno kot na prejšnjem), nato pa to število prištejemo k skupnemu številu zrn na vseh poljih doslej (torej k spremenljivki skupajZrn).