Arvutiteaduse instituut
  1. Kursused
  2. 2016/17 kevad
  3. Programmeerimise alused II (LTAT.TK.001)
EN
Logi sisse

Programmeerimise alused II 2016/17 kevad

  • Kursuse info
  • 1. Kahemõõtmeline järjend
  • 2. Kahekordne tsükkel
  • 3. Andmestruktuurid
  • 4. Viitamine ja muteerimine

4.1 Viitamine 4.2 Muteerimine 4.3 Järjendi muteerimine 4.4 Funktsioon ja muteerimine 4.5 Kordamine 4.6 Silmaring: Objekt-orienteeritud programmeerimine

  • 5. Testimine ja silumine. Rekursioon
  • 6. Rekursioon II
  • 7. Projekt?
  • Korraldajad
IV OSA sisukord

4.1 VIITAMINE

Viidad ja väärtused

Selles osas avame natuke sügavamalt erinevat tüüpi muutujate ja väärtuste olemust. Mis täpsemalt juhtub, kui muutujale antakse väärtus? Ja mis juhtub siis, kui seda väärtust tahta muuta või sama väärtust anda teisele muutujale?

Muutujale saab väärtuse omistada võrdusmärgi abil. Oleme seda teinud juba meie kursuste algusest peale. Näiteks a = 6 toimel saab muutuja a väärtuseks 6. Harilikult meile sellest teadmisest piisab. Siiski on huvitav ja mingites olukordades ka vajalik teada, et tegelikult salvestatakse x = 6 toimel muutujasse x hoopis viit objektile, mis tähistab mälus arvu 6.

Seda viita saame me näha täisarvuna funktsiooni id abil.

x = 6
print(id(x))

Väljastatakse arv 1464424800, mis on unikaalne ja konstantne kogu objekti eluea jooksul.

Thonnyl on head võimalused väärtuste ja viitade jälgimiseks.

Kui avada Variables-aken (View --> Variables), siis näeme, et x-i väärtus on 6.

Kui aga avame ka Heap-akna (View --> Heap), siis näeme, et muutuja juures on kirjas hoopis viit ja viida juures väärtus. Natuke segadust võib tekitada see, et funktsioon id andis viidaks 1464424800, aga Thonnys Variables- ja Heap-akendes paistab 0x57495960. Tegelikult on tegemist siiski sama arvuga, 0x57495960 on lihtsalt kuueteistkümnendsüsteemis.

Samamoodi on viidad ja väärtused ka teiste andmetüüpidega. Võtame kasutusele näiteks veel ühe sõne, ühe järjendi ja ühe enniku.

x = 6
sõn = "Tere"
jär = [1, 6, -5]
enn = (5, 7, -7, 8)

Näeme, et Heap-aknas, on rohkem asju, kui ainult muutujate viidad, aga teisi me praegu ei vaata.

Mitmel muutujal sama viit

Kui nüüd teha omistus y = x, siis muutujasse y salvestatakse sama viit ja uut täisarvu objekti ei looda. Samuti on ka teiste andmetüüpide puhul.

x = 6
y = x
sõn = "Tere"
sõn2 = sõn
jär = [1, 6, -5]
jär2 = jär
enn = (5, 7, -7, 8)
enn2 = enn

Jooniselt näeme, millised muutujad viitavad samale objektile.

Sama viidaga muutujaid võib veel rohkem olla.

jär3 = jär2
jär4 = jär2

Mis aga juhtub, kui näiteks anda mingitele uutele muutujatele kohe need samad väärtused?

x = 6
y = x
sõn = "Tere"
sõn2 = sõn
jär = [1, 6, -5]
jär2 = jär
enn = (5, 7, -7, 8)
enn2 = enn
z = 6
sõn_uus = "Tere"
jär_uus = [1, 6, -5]
enn_uus = (5, 7, -7, 8)

Näeme, et arvu ja sõne puhul on nüüd viit ikka sama, aga järjendi ja enniku puhul mitte. Sama näiteks ka tühja enniku puhul on erinevate muutujate korral viit sama.

tühi_ennik = ()
tühi_ennik2= () 

Järjendi korral aga ei juhtu seda kunagi. Räägime sellest lähemalt järgmise peatüki lõpus.


IV OSA sisukord
  • Arvutiteaduse instituut
  • Loodus- ja täppisteaduste valdkond
  • Tartu Ülikool
Tehniliste probleemide või küsimuste korral kirjuta:

Kursuse sisu ja korralduslike küsimustega pöörduge kursuse korraldajate poole.
Õppematerjalide varalised autoriõigused kuuluvad Tartu Ülikoolile. Õppematerjalide kasutamine on lubatud autoriõiguse seaduses ettenähtud teose vaba kasutamise eesmärkidel ja tingimustel. Õppematerjalide kasutamisel on kasutaja kohustatud viitama õppematerjalide autorile.
Õppematerjalide kasutamine muudel eesmärkidel on lubatud ainult Tartu Ülikooli eelneval kirjalikul nõusolekul.
Tartu Ülikooli arvutiteaduse instituudi kursuste läbiviimist toetavad järgmised programmid:
euroopa sotsiaalfondi logo