Programmēšana • 6. nodarbība

Cikli Python valodā

Iemācies atkārtot darbības ar for un while cikliem. Apvieno ciklus ar skaitļiem, nosacījumiem un simbolu virknēm.

01 • Ideja

Kā cikls atkārto darbības?

Cikls ļauj atkārtot koda darbības. Lai saprastu, kāpēc ciklam vajadzīgs apstāšanās nosacījums, vispirms aplūkosim ciklu, kas nebeidzas.

Jautājums pārdomām: Kas notiktu, ja programma atkārtotu vienu un to pašu darbību bezgalīgi?

Šajā nodarbībā pētīsim, kā while nosacījums nosaka, vai cikls sākas un kad tas apstājas.

02 • Bezgalīgs cikls

Kāpēc bezgalība ciklā nav vēlama?

Šajā piemērā nosacījums vienmēr ir patiess, tāpēc programma turpina drukāt tekstu un cikls nebeidzas pats no sevis.

Bezgalīgs while cikls — piemēru tikai izlasi

while True:
    print("Cikls turpinās...")

Šo piemēru nepalaid darbībā. Tas nepārtraukti izvada tekstu, aizņem datora resursus un neļauj programmai pāriet pie nākamajām darbībām. Terminālī to parasti var pārtraukt ar Ctrl+C, taču lietotājam tas ir neērti un var traucēt citām programmām.

Drošā ciklā jābūt skaidram veidam, kā tas beidzas: nosacījumam kādā brīdī jākļūst aplamam vai arī jāparedz apzināta pārtraukšana.
03 • Patiesi un aplami nosacījumi

Kad while sākas un kad apstājas?

while False: cikls nesākas

Nosacījumu pārbauda pirms pirmās iterācijas. Tā kā False ir aplams, cikla ķermenis tiek izlaists.

while False:
    print("Šis teksts neparādīsies")

print("Cikls tika izlaists.")
Cikls tika izlaists.

while True: cikls neapstājas pats

True vienmēr ir patiess. Ja nosacījums netiek mainīts un ciklā nav pārtraukšanas, darbības atkārtojas bezgalīgi.

while True:
    print("Atkārtojas")

Šis ir bezgalīga cikla piemērs. To nepalaid darbībā.

Salīdzinājumam: cikls ar mainīgu nosacījumu var sākties un vēlāk apstāties. Tālāk skaitītājs mainīsies katrā atkārtojumā, līdz nosacījums kļūs aplams.
04 • Skaitīšana

Skaitītājs ar while

Skaitītājs ir mainīgais, kas seko līdzi cikla atkārtojumiem. To maina katrā solī, lai programma sasniegtu apstāšanās nosacījumu.

Skaitīšana uz priekšu

skaititajs = 1
while skaititajs <= 5:
    print(skaititajs, end=" ")
    skaititajs = skaititajs + 1
print("\nCikls beidzās.")
1 2 3 4 5 Cikls beidzās.

Sākumā skaitītājs ir 1. Katrā reizē to palielina par 1. Kad tas kļūst 6, nosacījums vairs nav patiess un cikls apstājas.

Skaitīšana atpakaļ

atlikusas_sekundes = 3
while atlikusas_sekundes > 0:
    print(atlikusas_sekundes)
    atlikusas_sekundes = atlikusas_sekundes - 1
print("Starts!")
3 2 1 Starts!

Šoreiz skaitītājs katrā cikla solī samazinās par 1.

05 • Cikli un zarojumi

Nosacījumi cikla iekšienē

Cikla iekšienē var izmantot iepriekš apgūto if un else. Atlikuma operators % palīdz noteikt, vai skaitlis dalās ar 2.

Pāra un nepāra skaitļi

skaititajs = 1
while skaititajs <= 5:
    if skaititajs % 2 == 0:
        print(f"{skaititajs} ir pāra skaitlis")
    else:
        print(f"{skaititajs} ir nepāra skaitlis")
    skaititajs = skaititajs + 1
1 ir nepāra skaitlis 2 ir pāra skaitlis 3 ir nepāra skaitlis 4 ir pāra skaitlis 5 ir nepāra skaitlis
06 • Aprēķini

Skaitļu summas aprēķins ar while

Skaitītājs nosaka nākamo pieskaitāmo skaitli, bet summa uzkrāj rezultātu.

Skaitļu summa no 1 līdz 5

skaititajs = 1
summa = 0
while skaititajs <= 5:
    summa = summa + skaititajs
    skaititajs = skaititajs + 1
print(f"Summa ir {summa}.")
Summa ir 15.
07 • Praktizē

Praktiskie uzdevumi

1. Pārbaudi while False

Izveido ciklu ar nosacījumu False. Pievieno pēc cikla rindu, kas parāda, ka programma turpinās.

2. Skaitīšana uz priekšu un atpakaļ

Ar while skaiti no 1 līdz 5, pēc tam no 5 līdz 1. Maini skaitītāju pareizajā virzienā.

3. Pāra skaitļi

Izmanto while un if/else, lai pārbaudītu skaitļus no 1 līdz 20 un atzīmētu pāra skaitļus.

4. Summa līdz 100

Aprēķini skaitļu no 1 līdz 100 summu ar while ciklu un mainīgo, kas uzkrāj rezultātu.

Drošības atgādinājums: neizmanto nekontrolētu while True. Pārliecinies, ka ciklam ir skaidrs beigu nosacījums.
Komentāru atgādinājums: Pievieno komentāru, kas paskaidro, kāpēc skaitītājs jāmaina, lai while cikls apstātos.
08 • Atceries

Ko esi apguvis?

  • while pārbauda nosacījumu pirms katra cikla soļa: ar False cikls nesākas, bet nemainīgs True cikls nebeidzas pats.
  • Bezgalīgs cikls var nepārtraukti izvadīt datus, aizņemt resursus un apturēt pārējās programmas darbības.
  • Skaitītāju ciklā var palielināt vai samazināt, lai nosacījums kļūtu aplams un cikls apstātos.
  • Ciklā var izmantot zarojumus, aritmētiku un mainīgos rezultāta uzkrāšanai.
09 • Pārbaudi zināšanas

Pašpārbaudes tests

Pārbaudi savas zināšanas par while cikliem un skaitītājiem!