Esittely latautuu. Ole hyvä ja odota

Esittely latautuu. Ole hyvä ja odota

2.8 TIETO- JA TALLETUSRAKENTEET

Samankaltaiset esitykset


Esitys aiheesta: "2.8 TIETO- JA TALLETUSRAKENTEET"— Esityksen transkriptio:

1 2.8 TIETO- JA TALLETUSRAKENTEET
Edellä olleissa esimerkeissä algoritmien käsittelemä tieto on ollut rakenteeltaan yksinkertaista, kuten lukuja, merkkejä totuusarvoja. Esimerkiksi asetuslauseessa r:=(k*p*t)/100 r, k, p, ja t ovat yksinkertaisia (ei-rakenteisia) muuttujia. Reaalimaailmassa on tarvetta myös edellisiä monimutkaisempien tietokokonaisuuksien käsittelyyn.

2 Tällaiset loogisesti yhteenkuuluvat tiedot muodostavat tietorakenteen (data structure).
Algoritmien pystyvät käsittelemään näitä rakenteita ja usein algoritmit kuvaavat prosesseja, jotka muuntavat yhden tietorakenteen toiseksi (esim. syöttötiedot tulostiedoksi).

3 Yksittäisellä tietoalkiolla on tyyppi, joka kertoo, joka kertoo millaisia arvoja tarkasteltava tietoalkio voi saada ja millaisia operaatioita alkioon voi soveltaa. Tietorakenteet muodostetaan tietoalkioista. Ohjelmointikielissä on valmiiksi määritelty kaikki yleisimmät yksinkertaiset tietotyypit. Lisäksi kielissä on välineet tietorakenteiden konstruoimiseksi.

4 Tavallisimpia yksinkertaisia tyyppejä:
reaaliluvut (Real) kokonaisluvut (Integer) totuusarvot (Boolean) merkit (Char) ’Tyyppi’ tarkoittaa kahta asiaa: minkälaisia arvoja ko. tietoalkio voi saada ja mitkä operaatiot ovat mahdollisia.

5 Esimerkki: Tyyppi Integer: ohjelmointikielissä
ilmoitetaan millä vaihteluvälillä kokonais- lukujen tulee olla (esim  tai usein jokin tätä suurempi vv.) Lisäksi ilmoitetaan mitä kokonaisluku- operaatioita on käytössä, esim.: + - * / DIV MOD

6 Vastaavat arvoalueet ja operaatiot
ilmoitetaan kaikille muillekin yksinkertaisille perustyypeille kunkin kielen yhteydessä.

7 Tietorakenteisiin liittyy kaksi
ominaisuutta: abstrakti malli eli abstrakti tietotyyppi ADT (abstract data type) talletusrakenne (storage structure)

8 Mitä ADT tarkoittaa ? tarkastellaan mallin mukaisten alkioiden oleellisia piirteitä malli on riippumaton käytettävästä ohjelmointikielestä alkiot kuvataan niiden käytöksen avulla (operaatiot ja niiden vaikutus)

9 Abstraktien tietotyyppien avulla siis
mallinnetaan tietoalkioita ohjelmointikielistä ja talletusrakenteista riippumattomasti. Tässä tarkastellaan seuraavia yleisimpiä adt- tyyppejä: lista, jono, pino, puu ja graafi. Niiden toteutukseen käytetään mm. seuraavia talletusrakenteita: tietue, taulukko ja linkitetty rakenne.

10 2.8.2 Talletusrakenteita Tietue (record) Taulukko (array tai table)
Linkitetty rakenne

11 Tietue Loogisesti yhteenkuuluvat tiedot kootaan
yhdeksi tietorakenteeksi, jolle annetaan nimi. Tietue (record) muodostuu kentistä (field). Oliokielissä likimain vastaava rakenne on luokka (class).

12 Tietue Esimerkki: yhdestä henkilöstä tieto-
järjestelmään kerättävät tiedot voidaan koota tietueeksi. Tällöin kenttinä voisivat olla mm. sukunimi, etunimi, syntymäaika, osoite,… Joissakin kielissä tietueet määritellään RECORD/END –määreellä:

13 Tietue esimerkiksi henkilötietojen tietue: henkilotiedot = RECORD
sukunimi: String; etunimi: String; osoite: String; saika: Date; END

14 Tietue Tietueiden käsittely on yksinkertaista: olkoon
kahden henkilön tiedot kahdessa eri em. tyyppisessä tietueessa A ja B. Silloin kenttiin viitattaisiin merkinnällä (pistenotaatio): A.sukunimi, B.sukunimi, A.saika jne. Kenttiä voidaan käyttää ohjelmissa kuten muuttujia.

15 Tietue Tietueoperaatioita: arvon sijoittaminen tietueen kenttään
tietueen yksittäisen kentän käyttäminen tietueen kopiointi kokonaisena.

16 Taulukko Taulukko (array) määritellään ohjelman alussa
tietyn kokoiseksi rakenteeksi. Se koostuu keskenään samaa tietotyyppiä olevista alkioista, ’ruuduista’. Taulukko voidaan käsittää rakennelmaksi, jossa on rivejä ja sarakkeita (ns. kaksiulotteinen taulukko).

17 Taulukko, jossa on 8 riviä ja 5 saraketta:

18 Taulukko Taulukon alkioihin (ruutuihin)
päästään käsiksi indeksien avulla. Merkintä X[4,2] tarkoittaa X- nimisen taulukon 4. rivillä, 2. sarakkeessa olevaa ruutua:

19 Taulukko Taulukko voi olla 1-ulotteinen, 2-ulotteinen,
3-ulotteinen, ….. Edellisen sivun taulukko on 2-ulotteinen. 1-ulotteinen taulukko = vektori Indeksoitu yhdellä indeksillä, esim. V[5]

20 Taulukko 2-ulotteinen taulukko (matriisi), indeksointi kahdella
indeksillä, esim. edellä X[4,2]

21 Taulukko 3-ulotteinen taulukko indeksointi kolmella indeksillä,
esim. edellä X[2,4,5]

22 Taulukko Esimerkki (moniste s. 58): Vaihtolajittelualgoritmi.
Nimilista on talletettu 1-ulotteiseen taulukkoon T. MODULE valintalajittelu (T, n) FOR i:=1, 2, …, n-1 DO FOR j:=i+1, i+2, …, n DO IF T[i] > T[j] THEN vaihda (T[i],[j]) ENDIF ENDFOR ENDMODULE

23 Taulukko Esimerkki (moniste s. 58): Paikkakuntien välinen
etäisyystaulukko (km). Esim. kuudelle kaupungille tarvitaan 6 x 6 –kokoa oleva taulukko: Iisalmi Jyväs-kylä Kuopio Pieksä- mäki Suonen-joki Var- kaus 254 85 174 136 223 169 80 118 129 89 51 138 38 49 Suonen- joki 87 Varkaus

24 Taulukko MODULE LähinKaupunki(Etä, a) RETURNS a:ta lähinnä olevan kaupungin nimen lähinmatka:= (* jokin iso luku alkuarvoksi *) FOR j:=Iisalmi, …, Varkaus DO IF a <> j THEN IF Etä[a,j] < lähinmatka THEN lähinmatka:=Etä[a,j] lähin:=j ENDIF ENDFOR RETURN lähin ENDMODULE

25 Taulukko Huom: Taulukon indekseinä käytettiin paikkakuntien nimiä (ei ole mahdollista kaikissa o-kielissä). Taulukossa kaikki etäisyydet kahteen kertaan !

26 Taulukko MODULE taulusumma (Taulu, m, n) RETURNS lukujen summa
Esimerkki: n x m –kokoa olevan taulukon sisältämien lukujen summa: MODULE taulusumma (Taulu, m, n) RETURNS lukujen summa summa:=0 FOR i:=1, …, n DO FOR j:=1, …m DO summa:=summa+Taulu([i,j] ENDFOR RETURN summa ENDMODULE

27 Linkitetty rakenne Yleensä linkitetty rakenne on yhteenkuuluvien
tietueiden muodostama kokoelma. Tietueet liitetään eli linkitetään toisiinsa erityisten osoitin- eli linkki- kentän avulla. Rakennelma toteutetaan tietokoneen keskusmuistissa, osoittimet ovat siten tietokoneen muistipaikkojen numeerisia arvoja. Linkitetyn rakenteen tietoalkio sisältää siis varsinaisen datan ja osoittimen seuraajaan. (Joskus osoittimia on useampia kuin yksi).

28 Linkitetty rakenne data 1 … data n osoitin seuraajaan
Tietoalkion rakenne on periaatteessa seuraavanlainen, käytetään yhtä osoitinta:

29 Linkitetty rakenne L … Yllä on yksiosoittiminen eli yhteen suuntaan
ketjutettu (lineaarinen) lista L. Rakenne on rekursiivinen: jokaista alkiota seuraa lista, tosin alkuperäistä pienempi. Poikkeuksena viimeinen alkio: sillä ei ole seuraajaa (”maadoitusmerkki”).

30 Linkitetty rakenne L … L’ Yllä on kaksiosoittiminen eli kahteen
suuntaan ketjutettu (lineaarinen) lista L.

31 Linkitetty rakenne L … Ylläolevassa listassa on käytössä rengas-
rakenne: viimeisestä alkiosta on osoitin listan alkuun. LISTOJEN TOTEUTUSTA TARKASTELLAAN KOHDASSA

32 Linkitetty rakenne, mitä hyötyä:
alkioiden poisto ja lisäys helppoa dynaaminen rakenne: alkioita otetaan listaan vain tarpeen mukaan (vrt. esim. vektorit, jotka yleensä tulee määritellä kiinteän kokoisiksi). Esimerkiksi POISTO listan keskeltä: L 1 2 3 L 1 3


Lataa ppt "2.8 TIETO- JA TALLETUSRAKENTEET"

Samankaltaiset esitykset


Iklan oleh Google