Massiivid üldiselt

From Wikiversity

< 6. nädala teemad

Struktuursed andmetüübid[edit]

Ühe kaupa väärtuste muutujatesse salvestamine on suuremate andmehulkade puhul praktiliselt võimatu. Eriti tülikas, et mitte öelda võimatu, on aga nende järgnev töötlemine. Kui suuremat kogust andmeid on vaja korraga meeles pidada, sobivad selleks nn struktuursed andmetüübid. Palju väärtuseid ühendatakse ühtsesse struktuuri, millel on üks nimi ja kindel süsteem, kuidas kõigile väärtustele ligi pääseb. Lisaks võib andmete paiknemisjärjekord struktuuris anda edasi täiendavat infot (nt nimed tähestiku järjekorras, palgad suuruse järjekorras vms).

Vanim struktuurne andmetüüp on massiiv (array), kus hoitakse ühte tüüpi väärtuseid (näiteks ainult täisarve). Massiivi tüüpi muutujale antakse nimi ja iga andmeüksust, mis massiivis kirjas, kutsutakse massiivi elemendiks. Massiivi elemendid on nummerdatud ja massiivi nime ning vastava numbri ehk indeksi järgi saab väärtust omistada või küsida. Erinevad programmeerimiskeeled käsitlevad indekseerimist erinevalt. Kõige esimesel tasemel võib indeksist mõelda kui elemendi kaugusest massiivi algusest nn offset. See tähendab, et indeksid algavad 0-st ja kui massiivis on N elementi, on viimase elemendi indeks N-1. Indekseerimise reeglid võivad ka vabamad olla - näiteks lubada kirjeldada suvalisi indeksite vahemikke, kasutada indeksitena lisaks täisarvudele märke vms. Kuna massiivi kasutamise reeglid võivad erineda, siis tuleb uuele keelele üleminekul end kindlasti uue keele reeglitega kurssii viia.

Kui massiivile eraldatakse mälu staatiliselt, tähendab see, et kõik vajaminev mälu püütakse võtta jadamisi ja see tagab programmi töö vältel ka kõige kiirema ligipääsu suvalisele massiivi elemendile. Tema mälupesa aadress on lihtsalt massiivi algusaadressi, indeksi ja massiivielemendi andmetüübi suuruse järgi väljaarvutatav.

Loogilises plaanis tuleks samuti massiivis hoida ühte tüüpi väärtuseid, näiteks ainult üliõpilaste pikkuseid. Selline kord ja süsteem on vajalik selleks, et andmete töötlemine massiivis oleks võimalikult lihtne. Teine klassikaline, kuid massiivist palju noorem struktuurne andmetüüp on kirje (record), mis on ettenähtud erinevat tüüpi andmete koos hoidmiseks. Kirje abil tuleks seostada sellised andmed, mis reaalsuses kuidagi omavahel seotud on, näiteks ühe objekti juurde kuuluvad (inimese nimi, sünniaasta, pikkus, kinga number jms).

Näited massiviist:

arvud[12] = 2000
print(a[3,6])

Massiivi arvud 12-le elemendile omistatakse väärtus 2000 ja massiivi a 3 rea 6nda elemendei väärtus trükitakse ekraanile.

< 6. nädala teemad