2.8.3 Abstraktit tietotyypit

Slides:



Advertisements
Samankaltaiset esitykset
Tietokannat: MySQL ja PostgreSQL. Yleistä • Relaatiotietokantaohjelmisto, jolla voidaan luoda, ylläpitää ja muuttaa ja hallinnoida tietokantoja • Avoin.
Advertisements

18. Abstraktit tietotyypit
Tietorakenteet ja algoritmit
Tietokonetekniikka 4 Tieto ja tiedon talletus
© Hannu Laine 1 Tietorakenteet ja algoritmit Funktio-osoittimet Funktio-osoittimen ja taulukko-osoittimen vertailu Funktio-osoittimen käyttötapoja.
Binääripuut Kaksihaaraista puuta sanotaan binääripuuksi:
Tietorakenteet ja algoritmit
11/9/2012 © Hannu Laine 1 Tietorakenteet ja algoritmit Elegantti toteutus funktiolle insert_to_list_end Alkion lisäys sisällön mukaan järjestettyyn listaan.
Olio-ohjelmointi. Mitä olio-ohjelmointi on ?  Pyritään mallintamaan jotain reaalimaailman kohdetta tietokoneohjelman avulla  Olio on luokan ilmentymä.
Markku Siermala, IMT Bioinformatiikan koulutusohjelma
EXtensible Markup Language
C-kieli ja dynaaminen muistin varaus
Rakenteinen ohjelmointi
ATK70d / Ohjelmointi 1 Kuplalajittelu © Helia / Jukka Harju, 2004.
Auli Jaakkola 1 Palkkatiedustelun tietomallin mukaisen tilastovastauksen luonti Tässä esimerkissä tiedosto tuotetaan excelistä csv-muotoon. 1.Oletetaan,
C-ohjelmointi, kevät 2006 Taulukot Binääritiedostot Luento
Lukemaan oppii vain lukemalla
OHJELMAN OSITTAMINEN LUOKKA ATTRIBUUTIT METODIT. LUOKKA JAVA ohjelma koostuu luokista LUOKKA sisältää metodeja molemmat sisältävät attribuutteja eli muuttujia.
@ Leena Lahtinen OHJELMAN OSITTAMINEN LUOKKA ATTRIBUUTIT METODIT.
1 WWW-lomakkeet Sähköisen liiketoiminnan tärkeä elementti.
TAULUKKO YKSIULOTTEINEN TAULUKKO. TAULUKKO  Taulukon tarkoitus Ohjelmassa tarvitaan paljon samantyyppisiä samaan kohdealueeseen kuuluvia muuttujia Näitä.
Pseudokoodi Tietokoneohjelmien perusidea:
Tiedonhakumenetelmät Helena Ahonen-Myka Kevät 2004, osa 9 Merkkijonohahmon etsintä selaamalla.
© Lammi-Niskala-Kossarev ADT:n toteutus Imperatiivinen paradigma Imperatiivinen paradigma toimenpiteet aktiivisia, tiedot passiivisia toimenpiteet.
13. Hyvä ohjelmointitapa (osa 1)
Virtuaaliset jäsenfunktiot tMyn1 Virtuaaliset jäsenfunktiot Virtuaalinen jäsenfunktio on esiteltävä monimuotoisessa kantaluokassa. Virtuaalisen jäsenfunktion.
1 Kertaus koetta varten oleellisista asioista Jukka Juslin.
ict1td002 - Copyright Raine Kauppinen 1 Alkuarvot ja tyyppimuunnokset (1/5)  Aiemmin olemme jo antaneet muuttujille alkuarvoja, esimerkiksi: int.
Cmap-tools opetus käyttö kongnitiivinen merkitys.
PowerPoint-esitys OHJE.
2.7 Rekursio ja iteraatio Algoritminen ongelmanratkaisu ei ole
Dokumenttien käsittely ja tietoverkot Wordin toiminnot, toinen tapaaminen.
1. Joukko-oppi Merkinnät
2.8 TIETO- JA TALLETUSRAKENTEET
Tietotyypit Tietotyyppi määrittää muuttujan sisältämän datan luonnetta, muistista tarvittavaa tilaa ja sitä, millaisia operaatioita siihen voidaan kohdistaa.
SQL Standardoitu kieli, jonka avulla voidaan
@ Leena Lahtinen OHJELMAN OSITTAMINEN LUOKKA ATTRIBUUTIT METODIT.
Tietokannan normalisointi
1 Ohjelmointikielten varhaishistoria Esa-Matti Miettinen
Yhdyssanat, jotka kirjoitetaan erikseen
Miksi tietokannattMyn1 Miksi tietokannat Esim. kirjastossa oli kortisto, joka koostui käsin täytettävistä arkistokorteista. Kortit oli järjestetty tekijän.
Visual Basic -ohjelmointi
Olioiden taulukointi Perustaulukon käyttö Luokan ilmentymät voidaan tallettaa taulukkoon samoin kuin muuttujat Esimerkki talletetaan taulukkoon opintojaksojen.
Kontrollirakenteet laajemmin
Javascript 2: Ohjelmointikielen ominaisuudet Jaana Holvikivi Metropolia.
Ohjelmistotuotanto- miniprojekti Suunnittelu. Ohjelman toiminnot Kurssin tai tapahtuman  Lisäys  Poisto  Muokkaus Viikon lukujärjestyksen tarkasteleminen.
Keskusmuistitietokantahakemistot Vilho Raatikka Solid Information Technology Tietokannat NYT! Helsinki,
XSL Teppo Räisänen
15. Ohjelmoinnin tekniikkaa
Listat eli luettelot listaelementit ovat lohkoelementtejä:  lista ja listan alkiot alkavat uudelta riviltä  listan jälkeen tuleva elementti alkaa uudelta.
Prioriteettijonot ja kekolajittelu (heapsort)
Puun määritelmä Puu on yhden tai useamman kytketyn solmun muodostama hierarkinen joukko Lehtisolmuista juurisolmuun on yksikäsitteinen polku Käytetään.
Hajoita ja hallitse (divide and conquer) Pikalajittele n-alkioinen taulukko 1. Divide: Jaetaan taulukko kahdeksi alitaulukoksi tukialkion (pivot) x suhteen:
Hajakoodaus Talletetaan alkiot avain-indeksoituun taulukkoon Hajakoodausfunktio Menetelmä avain-indeksin laskemiseen avaimesta Törmäyksen selvitysstrategia.
Muuttujan osoite int a=1; 0xbfffea64 /* tulostetaan a:n osoite*/ printf(“%p\n”, &a); 0xbfffea68 /* tulostetaan a:n osoite + 1*/ printf(“%p\n”, &a+1); /*
Linkitetty lista Joukko alkioita jotka on kytketty toisiinsa linkeillä Listan alkio sisältää talletettavan datan ja linkin seuraavan alkioon Alkion lisääminen.
Symbolitaulut Joukko hakuavaimen omaavia tietueita LISÄÄ uusi tietue ETSI tietue hakuavaimen perusteella Sovelluksia: Spell checker etsii sanoja sanakirjasta.
Toistorakenne Toistorakennetta käytetään ohjelmissa sellaisissa tilanteissa, joissa jotain tiettyä ohjelmassa tapahtuvaa toimenpidekokonaisuutta halutaan.
Scalan valmiit kokoelmat. Mikä on kokoelma?  Tietorakenne jonka tehtävänä on pitää kirjaa (useista) tietyn tyyppisistä arvoista. Kokoelman sisältämiä.
Monadit TIES341 Funktio-ohjelmointi 2 Kevät 2006.
JOPOX Uusi hallinta / Lomaketyökalu. Uuden lomakkeen luonti Lomakkeen rakentaminen alkaa klikkaamalla auki Lomakkeet. Oletusarvoisesti oman joukkueesi.
Abstraktit tietotyypit – jatkoa TIEA341 Funktio-ohjelmointi 1 Syksy 2005.
Abstraktit tietotyypit TIEA341 Funktio-ohjelmointi 1 Syksy 2005.
Toistorakenne Toistorakennetta käytetään ohjelmissa sellaisissa tilanteissa, joissa jotain tiettyä ohjelmassa tapahtuvaa toimenpidekokonaisuutta halutaan.
Esimerkkejä tietorakenteista
Linux palomuurina ( IPTABLES )
Foreach-toistolause foreach-rakenteella on kätevä käydä läpi kaikki taulukon alkiot. Erityisen kätevää se on hajautustaulukon tapauksessa, jossa taulukon.
Aakkosnumeerinen tieto
© Lammi-Niskala-Kossarev
Kontrollirakenteet laajemmin
Esityksen transkriptio:

2.8.3 Abstraktit tietotyypit Edellä tarkasteltiin kolmea konkreettista tietorakennetta: tietue, taulukko ja linkitetty rakenne. Niiden avulla voidaan määritellä abstrakteja tietorakenteita (tai –tyyppejä), joille on ominaista se, että käyttäjälle kuvataan vain ne ominaisuudet, jotka käytön kannalta ovat tarpeellisia. Tällaisia ominaisuuksia ovat mm. tietotyypit ja tietoja käsittelevät operaatiot.

Abstraktit tietotyypit… Tarkastellaan kolmea abstraktia tietotyyppiä: lista, erikoistapauksia pino ja jono puu, erikoistapauksena binääripuu graafi. Kaikki em. kolmen tyypin toteutuksessa käytetään yleensä edellä tarkasteltuja konkreettisia tietorakenteita.

Abstraktit tietotyypit… Lista dynaaminen rakenne, joka koostuu alkioista alkiot peräkkäin jokaisella alkiolla paitsi viimeisellä on seuraaja jokaisella alkiolla paitsi ensimmäisellä on edeltäjä.

Abstraktit tietotyypit… Lista listan operaatioita: alkion lisäys ja poisto mielivaltaiseen kohtaan listan tyhjyyden tarkistus listan ensimmäisen alkion ja listan loppuosan palauttavat operaatiot Myös voidaan sanoa, että lista on tyhjä lista tai alkio, jota seuraa lista

Abstraktit tietotyypit… Listaesimerkkejä sana on kirjainten muodostama lista lause on sanojen muodostama lista luku on numeroiden muodostama lista puhelinluettelo on henkilötietueiden muodostama lista, jossa kukin tietue sisältää esim. nimen, osoitteen ja puhelinnumeron

Abstraktit tietotyypit… Listan peräkkäiskäsittely Ota käsiteltäväksi listan ensimmäinen alkio WHILE ei olla listan lopussa DO käsittele listan alkio siirry seuraavaan alkioon ENDWHILE

Abstraktit tietotyypit… Listan erikoistapauksia: jono (queue): lisäys ja poisto listan eri päistä. Alkiot poistetaan samassa järjestyksessä kuin ne on lisätty (vrt. kaupan kassajono). Ns FIFO-periaate. pino (stack): lisäys ja poisto samaan päähän. Poistetaan aina viimeksi lisätty alkio. Ns. LIFO-periaate.

2.8.3.2 Listan toteutus vektorilla tai linkitetyllä rakenteella Varsinkin jos alkioiden lukumäärä vaihtelee paljon, kannattaa käyttää linkitettyä dynaamista rakennetta.

Listan toteutus … Vektoritoteutus: pituus: A: k A[1] A[2] … A[k] … Määritellään tietue, jossa kaksi kenttää: pituus (listan alkioiden lkm) ja vektori A, jossa on n alkiota. Lista on tietueessa L: pituus: A: k A[1] A[2] … A[k] … A[n]

Listan toteutus … Alkion lisääminen listaan paikkaan, 1 <= i <=k+1. MODULE lisää (lista L, alkio a, indeksi i) L.pituus:=L.pituus +1 IF i=L.pituus THEN L.A[L.pituus]:=a (* lisäys loppuun *) ELSE (* lisäys keskelle *) FOR x:=L.pituus, L.pituus-1,…, i+1 DO L.A[x]:=L.A[x-1] ENDFOR L.A[i]:=a ENDIF ENDMODULE

Lisäys listan loppuun, k=3, n=6. Alkutilanne: Lopputilanne: 3 A[1] A[2] A[3] A[4] A[5] A[6] 4 A[1] A[2] A[3] A[4] A[5] A[6]

Lisäys listan keskelle, i=2, k=3, n=6. Alkutilanne: Lopputilanne: 3 A[1] A[2] A[3] A[4] A[5] A[6] 4 A[1] A[2] A[3] A[4] A[5] A[6]

2.8.3.3 Puu (tree) lineaarisen listan yleistys: alkiolla voi olla monta seuraajaa. näin voidaan esittää hierarkkisia rakenteita.

Puu (tree)… solmu kaari solmu kaari

Puu (tree)… sisäsolmuja juuri lehti

Puu (tree)… Vanhempi- lapsi: solmu ja sen seuraaja seuraaja solmu

Puu (tree)… polku polku polku

Puu (tree)… polun pituus: polulla olevien kaarien lukumäärä

Puu (tree)… puun korkeus: pisimmän polun pituus juuresta lehtisolmuun

Juurisolmun yksi alipuu Puu (tree)… Alipuut eli poikapuut S Solmun S yksi alipuu Juurisolmun yksi alipuu

Puu (tree)… solmun aste: seuraajien lukumäärä Aste 1 Aste 3

Puu (tree)… k-haarainen puu (k-ary tree): puun jokaisella solmulla on tarkalleen k alipuuta, joista osa voi olla tyhjiä. Siten k-haarainen puu on joko tyhjä puu, jossa ei lainkaan solmuja puussa on juurisolmu, jota seuraa k alipuuta, jotka ovat k-haaraisia puita.

Puu (tree)… Täydellinen k-haarainen puu: puun jokaisen solmun, paitsi lehtisolmujen, kaikki k alipuuta ovat ei-tyhjiä.

Puu (tree)… Esimerkki, puu P: ei-täydellinen ariteetti 4 solmun R edustama puu on Q:n alipuu puun korkeus (P-S) on 4. P Q R S

Puu (tree)… Puun korkeus rekursiivisesti: jos puu on tyhjä tai koostuu vain juurisolmusta, p:n korkeus on 0. jos p:llä on vähintään yksi ei-tyhjä alipuu, puun p korkeus on 1 + max (h1, h2, …, hk), missä hi on puun p i:nnen alipuun korkeus.