Materjalid koostas ja kursuse viib läbi
Tartu Ülikooli arvutiteaduse instituudi programmeerimise õpetamise töörühm
Muutujatest kordavalt
Püüame mõne näite varal kordavalt üle vaadata muutujatele väärtuse andmise. Muutujale väärtuse andmist nimetavad programmeerijad väärtuse omistamiseks ehk väärtustamiseks ning lauset, mille abil seda tehakse, omistuslauseks. Järgnevas näites on 5 omistuslauset.
arv1 = 5 arv2 = arv1 + 5/2 minu_lemmiktegevused = "uisutamine" + " ja " + "joonistamine" + " ja " + "hommikusöök voodis" sinu_lemmiktegevused = input("Palun sisestage oma lemmiktegevused: ") vanus = int(input("Palun sisestage oma vanus: "))
Vaatleme igat rida eraldi ning püüame välja selgitada, mis seal juhtub.
1. rida
arv1 = 5
- Esimese sammuna arvutatakse välja omistuslause parem pool. Omistuslause paremasse poolde kuulub kõik, mis jääb võrdusmärgist paremale. Hetkel on selleks arv 5. Kuna arvu 5 väärtus ongi 5, siis midagi enamat sellega vaja teha pole – saime parema poole väärtuse teada.
- Omistuslause vasakus pooles määratakse muutuja nimi, millesse tuleks parema poole väärtus salvestada. Hetkel on selle muutuja nimeks arv1, kuid tegelikult ei ole programmi seisukohalt oluline, mis selle muutuja nimeks saab – see on oluline vaid programmi lugejale, kes on ikka inimene. Seega praegu omistatakse väärtus 5 muutujale nimega arv1.
2. rida
arv2 = arv1 + 5/2
- Esmalt tuleb jällegi arvutada omistuslause parema poole väärtus. Seekord on arvutamine pisut keerulisem. Järgides korrektset tehete järjekorda, teame, et kõigepealt tuleb arvutada 5/2 väärtus ning seejärel tuleb see liita väärtusele, mida sisaldab muutuja arv1. Avaldise 5/2 väärtus on 2.5, selle liidame arvule 5 (sest muutuja arv1 sisaldab väärtust 5) ning saame teada, et omistuslause parema poole väärtus on 7.5.
- Lause vasakus pooles öeldakse, et just muutuja nimega arv2 peaks saama eelnimetatud väärtuse. Seega saab muutuja arv2 väärtuseks nüüd 7.5.
3. rida
minu_lemmiktegevused = "uisutamine" + " ja " + "joonistamine" + " ja " + "hommikusöök voodis"
- Alustame taas parema poole väärtustamisest. Tegemist on sõnede liitmisega ehk järjestkirjutamisega. Tulemuseks saame sõne “uisutamine ja joonistamine ja hommikusöök voodis”.
- Parema poole väärtus tuleb salvestada vasakul pool kirjeldatud muutujasse. Nii saab muutuja minu_lemmiktegevused väärtuseks “uisutamine ja joonistamine ja hommikusöök voodis”.
Siinkohal võiks märgata, et me ei pea muutujatele väärtuste andmise juures otseselt ütlema, mis tüüpi väärtusega on tegemist, Python saab sellest ise aru. (Kõrvalepõige: paljudes teistes programmeerimiskeeltes peab iga muutuja korral selgelt ütlema, mis tüüpi muutujaga on tegemist, nt keeles Java tuleks siin toodud esimene rida kirjutada nii: int arv1 = 5;.)
4. rida
sinu_lemmiktegevused = input("Palun sisestage oma lemmiktegevused: ")
- Kuidas tuleks selle lause parem pool väärtustada? Programmi kirjutamise ajal ei olegi ju väärtus teada! Väärtuse omandab see avaldis alles programmi töö jooksul (siis kui kasutaja on vastava sisendi esitanud). Kui programmi käivitatakse mitu korda, siis võib ka parema poole väärtus muutuda. Isegi kui me ei tea parema poole konkreetset väärtust, siis teame selle väärtuse tüüpi. Funktsioon input() tagastab alati sõne-tüüpi väärtuse.
- Programmi töö ajal funktsioonist input() saadud väärtus hoiustatakse muutujasse nimega sinu_lemmiktegevused, kusjuures me teame, et selle muutuja tüüp on kindlasti sõne.
5. rida
vanus = int(input("Palun sisestage oma vanus: "))
- Eelmisele reale sarnaselt on siingi kasutatud funktsiooni input(). Kuid kuna nüüd on küsitud kasutaja vanust, siis peaksime selle (täis)arvuks teisendama. See käib funktsiooni int() abil. Nimelt tuleb kirjapildis int( ) sulgude vahele tühiku asemele panna see (sõne)väärtus, mille soovime täisarvuks teisendada. Hetkel on selleks kasutaja sisend, seega peamegi kogu input()-konstruktsiooni sinna sulgude vahele paigutama. Näiteks kui kasutaja sisestaks oma vanuseks 42, siis oleks parema poole väärtuseks esmalt int(input(“Palun sisestage oma vanus: ”)), siis int(“42”) ning lõpuks 42.
- Nagu ikka, salvestatakse saadud väärtus 42 muutujasse nimega vanus.
Muide, sõna int tuleneb ingliskeelsest sõnast integer, mis tähendab otsetõlkes täisarvu.
Loodame, et käesolev tekst tegi kogu muutujamaailma veel arusaadavamaks. Kui Teil tekkis küsimusi mõne näite kohta, siis esmalt püüdke ise disainida eksperiment, mis vastuse annaks. Kui jääb mõni asi, mida Te ise selgitada ei oska, siis edastage oma küsimus julgesti aadressile prog@ut.ee.