Institute of Computer Science
  1. Courses
  2. 2023/24 spring
  3. Introduction to Programming II (MTAT.03.256)
ET
Log in

Introduction to Programming II 2023/24 spring

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

3.1 Järjend ja ennik 3.2 Hulk 3.3 Sõnastik 3.4 Andmestruktuuride võrdlus 3.5 Sõne 3.6 Silmaring: Andmebaasid

  • 4. Viitamine ja muteerimine
  • 5. Testimine ja silumine. Rekursioon
  • 6. Rekursioon II
  • 7. Objektorienteeritud programmeerimine
III OSA sisukord

3.5 SÕNE

Sõne kui andmestruktuur

Oleme sõnedega juba oma kursuste päris algusosast alates tuttavad. Teame, et sõnet raamistavad ülakomad või jutumärgid. Teame, et sõnetüüpi tähistatakse str ning näiteks arvmuutuja väärtusele vastava sõnetüüpi väärtuse saame funktsiooniga str. Seda viimast on meil olnud tarvis, kui pikemas tekstis tahame arvmuutuja väärtust kasutada.

a = 16
print("Arvu väärtus on " + str(a))

Siin materjalis aga vaatleme sõnet kui andmestruktuuri ja võrdleme seda teiste andmestruktuuridega, eriti järjendi ja ennikuga. Nimelt on sõne järjendi ja ennikuga päris mitmes mõttes sarnane.

Järjendi ja enniku puhul saame teatud elemendi indeksi abil kätte.

järjend = [1, 2, 5, 6]
ennik = (1, 2, 5, 6)
print(järjend[3])
print(ennik[3])

Proovime sama ka sõne korral.

sõne ="1256"
print(sõne[3])

Mis tüüpi aga on sõne elemendid?

Ülesanne


Mitmetes keeltes on tõesti olemas eraldi andmetüüp sümbolite/märkide jaoks (nt char). Pythonis, aga pole ja nii käsitletakse sõne elemente ühemärgiliste sõnedena.

Sarnaselt järjendile ja ennikule saame ka sõne puhul for tsükliga ühekaupa elementidele ligi, näiteks väljastamiseks.

for element in järjend:
    print(element)


for element in ennik:
    print(element)


for element in sõne:
    print(element)

Sama saab korraldada ka indeksite abil.

for i in range(len(järjend)):
    print(järjend[i])


for i in range(len(ennik)):
    print(ennik[i])


for i in range(len(sõne)):
    print(sõne[i])

Tsüklis võime elemente ka muidugi muul moel kasutada, kui ainult ekraanile toomiseks.

Näiteks võime iga elemendi korral leida, mitu korda ta üldse selles sõnes leidub.

sõne = "Kui Arno isaga koolimajja jõudis, olid tunnid juba alanud"
for märk in sõne:
    print(märk + " on sõnes " + str(sõne.count(märk)) + " korda")

Samuti töötavad ka sõne puhul funktsioonid min ja max 

Ülesanne


Sarnaselt saame järjendeid, ennikuid ja sõnesid ka viilutada.

print(järjend[1:3])
print(ennik[1:3])
print(sõne[1:3])

Kõik eelnevad näited töötasid sarnaselt sõne, järjendi ja enniku korral. Proovime nüüd neid võimalusi, kus järjend ja ennik erinevad, sõne puhul. Nimelt on erinevused selles osas, kas elemente saab muuta ja kas saab neid lisada ja eemaldada. Järjendi puhul saab muuta, lisada ja eemaldada, enniku puhul mitte.

Kuidas on lood sõnes elemendi väärtuse muutmisega?

Ülesanne


Proovigem nüüd sõne pikkust muuta.

Ülesanne


Samuti ei õnnestu sõne ja enniku puhul elemendi eemaldamine käsu del või funktsiooni remove abil.

Seega võib öelda, et sõne kui andmestruktuur sarnaneb pigem enniku kui järjendiga. Tegemist on muutmatute (mittemuteeritavate) andmestruktuuridega.

Selle muutmatuse väite valguses võib tunduda vastuolulisena näiteks funktsiooni replace tegevus, millega nagu saaks sõnet elemente asendades muuta.

nimi = "Gerd"
nimi2 = nimi.replace("d", "t")
print(nimi)
print(nimi2)

Tegelikult siiski esialgne sõne ei muutu.


III OSA sisukord
  • Institute of Computer Science
  • Faculty of Science and Technology
  • University of Tartu
In case of technical problems or questions write to:

Contact the course organizers with the organizational and course content questions.
The proprietary copyrights of educational materials belong to the University of Tartu. The use of educational materials is permitted for the purposes and under the conditions provided for in the copyright law for the free use of a work. When using educational materials, the user is obligated to give credit to the author of the educational materials.
The use of educational materials for other purposes is allowed only with the prior written consent of the University of Tartu.
Terms of use for the Courses environment