ebSkola

3.1 Zarošanās un operatori

Stundas uzdevums: Identificēt salīdzināšanas operatorus, izstrādāt koda zarošanās loģiku un pārbaudīt programmas lēmumu pieņemšanas plūsmu dažādās situācijās.

2.4.14. Izmanto algoritmu vadības struktūras (sazarojumi, cikli).

70 min plāns: Teorija un paraugs (~10 min) · 1. uzdevums (~15 min) - izmēģini salīdzināšanas operatorus · 2. uzdevums (~25 min) - uzraksti vecuma pārbaudītāju ar if/elif/else · 3. uzdevums (~20 min) - iztestē visus trīs zarus. Papildu uzdevumu sāc tikai tad, ja pārējie trīs ir gatavi.

Pirms sāc: atver VS Code un izveido failu zarosanas.py. Atceries: Python blokus atdala ar atkāpi, tāpēc uzmani, lai kods zem if būtu nobīdīts pa labi.

Teorija: Datora lēmumu pieņemšana

Lai programma darītu dažādas lietas atkarībā no situācijas, tiek izmantota Branching (Zarošanās). Dators pieņem lēmumus, pārbaudot, vai apgalvojums ir True (Patiess) vai False (Aplams).

Salīdzināšanas operatori

  • == (Vienāds ar) / != (Nav vienāds ar)
  • > (Lielāks) / < (Mazāks)
  • >= (Lielāks vai vienāds) / <= (Mazāks vai vienāds)
# Salīdzināšanas piemērs
print(5 == 5)   # Izvada: True
print(10 < 2)   # Izvada: False
print("Jānis" == "jānis") # Izvada: False (Reģistrjutīgs!)

if, elif un else struktūra

Lēmumu pieņemšanas ķēde darbojas no augšas uz leju. Tiklīdz atrodas pirmais True nosacījums, tas tiek izpildīts, bet pārējie tiek ignorēti.

  • if (Ja) - Pirmā un obligātā pārbaude.
  • elif (Citādi ja) - Papildu pārbaudes (var būt vairākas).
  • else (Citādi) - Izpildās tikai tad, ja visi iepriekšējie bija False.
# Zarošanās piemērs
punkti = 85
if punkti >= 90:
    print("Izcili!")
elif punkti >= 70:
    print("Labi!")
else:
    print("Jāmācās vēl.")

Praktiskie uzdevumi

1. uzdevums -

Izmēģini salīdzināšanas operatorus

Beigās tu redzēsi, ka salīdzinājums vienmēr dod tikai True vai False.

  1. Ieraksti rindu print(5 == 5) un palaid.
  2. Ieraksti rindu print(5 != 5) un palaid.
  3. Ieraksti rindas ar print(10 > 3) un print(10 <= 3).
  4. Pieraksti README.md failā, kurš izsaukums deva True un kurš False.
  5. Ieraksti print(5 = 5) un palaid - tā ir apzināta kļūda.
  6. Pieraksti, kāds kļūdas nosaukums parādījās, un salabo atpakaļ uz ==.

Gatavs, kad: tu vari pateikt, ka = piešķir vērtību, bet == salīdzina.

2. uzdevums -

Uzraksti vecuma pārbaudītāju

Beigās programma pateiks, vai lietotājs ir pilngadīgs, nepilngadīgs vai ievadīja muļķības.

  1. Ieraksti vecums = int(input("Cik Tev gadu? ")).
  2. Ieraksti if vecums >= 18: un zem tā ar atkāpi izdrukā Tu esi pilngadīgs..
  3. Pievieno elif vecums > 0: un zem tā izdrukā Tu vēl esi nepilngadīgs..
  4. Pievieno else: un zem tā izdrukā kļūdas paziņojumu.
  5. Pārbaudi, vai visas trīs izdrukas ir vienādi nobīdītas pa labi.
  6. Palaid un ievadi 20.

Gatavs, kad: ar 20 programma izdrukā tikai vienu rindu - Tu esi pilngadīgs.

3. uzdevums -

Iztestē visus trīs zarus

Beigās tu būsi pārliecinājies, ka katrs zars tiešām strādā.

  1. Palaid programmu ar vecumu 20 un pieraksti izvadi.
  2. Palaid ar vecumu 12 un pieraksti izvadi.
  3. Palaid ar vecumu -5 un pieraksti izvadi.
  4. Palaid ar vecumu 18 - pārbaudi, kurš zars nostrādā tieši uz robežas.
  5. Nomaini >= uz > un palaid ar 18 vēlreiz.
  6. Ieliec >= atpakaļ.
  7. Pieraksti vienu secinājumu: kāpēc robežvērtība jāpārbauda atsevišķi.

Gatavs, kad: tev ir pierakstītas četras dažādas izvades, un tu zini, ko dara = pie >.

Papildu uzdevums - Pievieno ceturto grupu

Ja pamatdarbs ir gatavs, sadali lietotājus sīkāk.

  1. Pievieno zaru senioriem: elif vecums >= 65:.
  2. Ieliec to pareizajā vietā - padomā, kurš nosacījums jāpārbauda pirmais.
  3. Palaid ar vecumu 70 un pārbaudi, kurš zars nostrādāja.
  4. Pārkārto zarus, ja nostrādāja nepareizais.
  5. Pieraksti, kāpēc if/elif secība ir svarīga.

Gatavs, kad: ar vecumu 70 programma izdrukā senioru ziņu, nevis Tu esi pilngadīgs.

Biežākās kļūdas (un kā tās labot):

  • Viena vienādības zīme: = nozīmē vērtības piešķiršanu (saglabāšanu), bet == nozīmē salīdzināšanu.
    # Slikti (izraisīs SyntaxError):
    if x = 5: 
    
    # Labi:
    if x == 5:
  • IndentationError (Atkāpju kļūda): Python blokus strukturē ar atstarpēm. Kods zem if ir jāiebīda tieši par vienu Tab (vai 4 atstarpēm).
    # Slikti:
    if True:
    print("Darbojas")
    
    # Labi:
    if True:
        print("Darbojas")
  • Pazudis kols (:): Zarošanās atslēgvārdu (if, elif, else) rindiņai vienmēr jābeidzas ar kolu.

Koda piemērs: Zarošanās plūsma

# Lietotāja ievade
vecums = int(input("Cik Tev gadu? "))

# Zarošanās pārbaude
if vecums >= 18:
    print("Tu esi pilngadīgs.") 
elif vecums > 0:
    print("Tu vēl esi nepilngadīgs.")
else:
    print("Kļūda: Vecums nevar būt negatīvs vai nulle!")
Cik Tev gadu? 15
Tu vēl esi nepilngadīgs.