Tieto- ja tallennusrakenteet
|
|
- Arto Aho
- 7 vuotta sitten
- Katselukertoja:
Transkriptio
1 Tieto- ja tallennusrakenteet
2 Sisältö Tyyppi, abstrakti tietotyyppi, abstraktin tietotyypin toteutus Tallennusrakenteet Taulukko Linkitetty rakenne Abstraktit tietotyypit Lista (Puu) (Viimeisellä viikolla) (Binääripuu)
3 Tiedosta tietorakenteisiin Tähän asti kurssilla keskitytty ohjausrakenteisiin Käsitelty tieto Ollut yksinkertaista Ei sisäistä rakennetta (kokonaisluku, merkki, jne.) Algoritmeissa yleensä Tavoitteena ratkaista reaalimaailman ongelmia Tieto ei ole irrallista, vaan joukko toisiinsa liittyvää tietoa Tiedot halutaan koota yhteen ja esittää ne tietorakenteena (data structure)
4 Tyypit ohjelmointikielissä Ohjelmointikielet yleensä tyypitettyjä Jokaisella ohjelman tietoalkiolla on tyyppi Tyyppi koostuu Kaikista mahdollisista arvoista Operaatioista, joita tyypin edustajiin (alkioihin) voidaan kohdistaa Ohjelmointikielissä valmiina Tyypit yksinkertaiselle tiedolle Esim. kokonaisluvut, desimaaliluvut, totuusarvot, jne. Välineet tietorakenteiden konstruoimiseen Pythonissa muuttujan tyyppiä ei tarvitse ilmoittaa Määräytyy siitä, minkä tyyppinen arvo muuttujaan on viimeksi sijoitettu
5 Tyypin määrittely Esimerkiksi kokonaislukutyyppi määritelty, kun Määritellään pienin ja suurin mahdollinen arvo Määritellään mitä operaatioita voidaan kohdistaa (+, -, *, /, %) ja miten ne toimivat Perustyypit sisäänrakennettu Omia tyyppejä voidaan kuitenkin tehdä Rakennettaessa omia tietorakenteita, operaatiot ja niiden toiminta implementoitava itse
6 Tallennusrakenne ja abstrakti tietotyyppi Erotellaan tietorakenteen abstrakti malli ja sen tallennusrakenteet Tallennusrakenne (storage structure) kertoo miten tietorakenne on toteutettu ja tallennettu tietokoneen muistiin Tietorakenteen abstrakti malli eli abstrakti tietotyyppi (abstract data type, ADT) taas kuvaa Tietorakenteeseen kohdistettavat operaatiot Operaatioiden toiminnan Riippumattomia ohjelmointikielestä
7 Abstrakti tietotyyppi Abstrakti tässä tarkoittaa että Tarkastellaan mallin mukaisten alkioiden oleellisia piirteitä Malli on riippumaton ohjelmointikielestä Alkiot kuvataan niiden käytöksen avulla (operaatiot ja niiden vaikutus) Ei siis sen mukaan miltä ne näyttävät (käytetyt tallennusrakenteet) Tietoa mallinnetaan siis ohjelmointikielistä ja tallennusrakenteista riippumattomilla abstrakteilla tietotyypeillä
8 Tallennusrakenteet ja abstraktit tietotyypit Tallennusrakenteet Taulukko Linkitetyt rakenteet Abstraktit tietotyypit Lista Jono Pino Puu Graafi (Listat eivät ole kattavia)
9 Tallennusrakenteet - Taulukko
10 Tallennusrakenteet - Taulukko Taulukko (array) on staattinen, kiinteän kokoinen rakenne Koko voidaan määrätä ohjelman suorituksen aikana Kokoa ei voi myöhemmin muuttaa Taulukon sisältöä (eli komponenttien arvoja) voidaan muuttaa Taulukko koostuu useista samantyyppisistä tietoalkioista Alkiot identifioidaan sijainnin mukaan indeksoimalla Indeksointi järjestysnumeroilla 0, 1, 2 (useissa ohjelmointikielissä) Taulukon alkiot tietokoneen muistissa peräkkäin Käsittely tehokasta ja helppoa Hyvä tallennusrakenne, jos alkioiden lukumäärä kiinteä
11 Tallennusrakenne - Taulukko Vektori (vector) on yksiulotteinen taulukko Kokoa k olevan taulukon V yksittäisiin alkioihin viitataan notaatiolla V[i], missä 0 i < k i:tä kutsutaan tässä indeksiksi
12 Ensimmäinen indeksi Elementti (indeksissä 8) Indeksit Vektorin (taulukon) koko on 10 Kuva: docs.oracle.com 353
13 Tallennusrakenne - Taulukko Matriisi (matrix) on kaksiulotteinen taulukko Indeksoidaan kahdella indeksillä: rivi ja sarake Kokoa nxm (n riviä, m saraketta) olevan matriisin M yksittäisiin alkioihin viitataan notaatiolla M[i][j], missä 0 i < n ja 0 j < m.
14 Tallennusrakenne - Taulukko j Matriisin indeksointi kun matriisin alkioon viitataan M[i][j] i
15 Tallennusrakenne - Taulukko Myös useampiulotteiset taulukot mahdollisia Taulukon sisältämää tietoa voidaan käyttää kuten samantyyppisiä muuttujia Taulukolle sallitut operaatiot Tietoalkion tallennus indeksin osoittamaan kohtaan V[2] = 7 M[3][a] = b + 3 Yksittäisen tietoalkion käyttö y = V[4] z = M[1][1]
16 Tallennusrakenne - Taulukko Taulukon alustus ja arvojen käyttö: taulu = [23, 45] x = taulu[0] y = taulu[1] summa = x + y Alustetaan taulukko
17 Tallennusrakenne - Taulukko Taulukon alustus ja arvojen käyttö: taulu[0] taulu = [23, 45] x = taulu[0] y = taulu[1] summa = x + y Alustetaan muuttuja x taulukon indeksin 0 arvolla, eli arvolla
18 Tallennusrakenne - Taulukko Taulukon alustus ja arvojen käyttö: taulu[1] taulu = [23, 45] x = taulu[0] y = taulu[1] summa = x + y Alustetaan muuttuja y taulukon indeksin 1 arvolla, eli arvolla
19 Tallennusrakenne - Taulukko Taulukon alustus ja arvojen käyttö: taulu = [23, 45] x = taulu[0] y = taulu[1] summa = x + y Lasketaan muuttujaan summa muuttujien x ja y summa
20 Tallennusrakenne - Taulukko Taulukon alustus ja arvojen käyttö: taulu = [23, 45] x = taulu[0] y = taulu[1] summa = x + y Lasketaan muuttujaan summa muuttujien x ja y summa Sama voitaisiin laskea suoraan: summa = taulu[0] + taulu[1]
21 Tallennusrakenne - Taulukko Taulukon pituuden saa Pythonissa selville funktiolla len, joka ottaa parametrina taulukon Esim: len(taulu) Palauttaa edellisessä esimerkissä 2 Esimerkki: tulostetaan kaikki taulukon T alkiot T = [2, 9, -1, 4] for i in range(len(t)): print Indeksin, i, alkion arvo on + T[i]
22 Tallennusrakenne - Taulukko T = [2, 9, -1, 4] for i in range(len(t)): print Indeksin, i, alkion arvo on, T[i] Alustetaan muuttujaan T taulukko
23 Tallennusrakenne - Taulukko T = [2, 9, -1, 4] for i in range(len(t)): print Indeksin, i, alkion arvo on, T[i] Käydään silmukassa läpi i:n arvot 0,1,2,3 Taulukon pituus len(t) on
24 Tallennusrakenne - Taulukko T[0] T = [2, 9, -1, 4] for i in range(len(t)): print Indeksin, i, alkion arvo on, T[i] Ohjelman tulostus: Indeksin 0 alkion arvo on 2 i:n arvolla 0 tulostetaan T[i] eli T[0]:n arvo
25 Tallennusrakenne - Taulukko T[1] T = [2, 9, -1, 4] for i in range(len(t)): print Indeksin, i, alkion arvo on, T[i] Ohjelman tulostus: Indeksin 0 alkion arvo on 2 Indeksin 1 alkion arvo on 9 i:n arvolla 1 tulostetaan T[i] eli T[1]:n arvo
26 Tallennusrakenne - Taulukko T[2] T = [2, 9, -1, 4] for i in range(len(t)): print Indeksin, i, alkion arvo on, T[i] Ohjelman tulostus: Indeksin 0 alkion arvo on 2 Indeksin 1 alkion arvo on 9 Indeksin 2 alkion arvo on -1 i:n arvolla 2 tulostetaan T[i] eli T[2]:n arvo
27 Tallennusrakenne - Taulukko T[3] T = [2, 9, -1, 4] for i in range(len(t)): print Indeksin, i, alkion arvo on, T[i] Ohjelman tulostus: Indeksin 0 alkion arvo on 2 Indeksin 1 alkion arvo on 9 Indeksin 2 alkion arvo on -1 Indeksin 3 alkion arvo on 4 i:n arvolla 3 tulostetaan T[i] eli T[3]:n arvo
28 Tallennusrakenteet Linkitetty rakenne
29 Tallennusrakenteet Linkitetty rakenne Linkitetyssä rakenteessa jokainen alkio sisältää Varsinaisen datan (yhden tai useampia datakenttiä) Tiedon seuraajastaan, eli osoittimen rakenteen seuraavaan alkioon Tai useampia osoittimia rakenteen muihin alkioihin Koko rakenne samaistetaan usein rakenteen ensimmäiseen alkioon eli kuvan alkioon L Linkitetty yhteen suuntaan ketjutettu rakenne
30 Tallennusrakenteet Linkitetty rakenne Jokainen linkitetty rakenteen alkio tarvitsee kaksi muuttujaa Dataa varten Viittauksen seuraavaan rakenteen alkioon Tallennusrakenne tälle ei ole kurssin kannalta tärkeä, mutta voidaan tehdä esim. luokalla, taulukolla, tai tässä esimerkissä sanakirjalla(dictionary) Esimerkiksi: linkitettyalkio = { data : solmundataa, seuraava : None} # Seuraava voidaan alustaa myöhemmin toiseksi alkioksi. # Syntaksia ei tarvitse tällä kurssilla osata Linkitetty yhteen suuntaan ketjutettu rakenne
31 Tallennusrakenteet Linkitetty rakenne Linkitetystä rakenteesta useita muunnelmia tarpeen mukaan Kahteen suuntaan ketjutettu rakenne:
32 Tallennusrakenteet Linkitetty rakenne Useita seuraajia salliva rakenne Jokaisella alkiolla voi olla useita seuraajia Rengasrakenne
33 Abstraktit tietotyypit Lista
34 Abstraktit tietotyypit Lista Abstrakti tietotyyppi lista on rakenne Koostuu alkioista, jotka on järjestetty peräkkäin Jokaisella alkiolla (paitsi viimeisellä) on yksikäsitteinen seuraaja Jokaisella alkiolla (paitsi ensimmäisellä) on yksikäsitteinen edeltäjä
35 Abstraktit tietotyypit Lista Listan operaatioita esimerkiksi: Alkion lisäys ja poisto mielivaltaiseen kohtaan listassa Ensimmäisen alkion ja loppuosan palauttavat operaatiot Lista hyvä rakenne kun tietoalkioita käsitellään peräkkäin
36 Abstraktit tietotyypit Lista>Jono Listan operaatioita rajoittamalla saadaan tärkeitä tietorakenteita Jono (queue): Määritelty vain operaatiot Alkion lisääminen alkuun Alkion poistaminen lopusta => poistetaan aina samassa järjestyksessä kuin lisättiin Ns. First-In-First-Out periaate (FifO)
37 Abstraktit tietotyypit Lista>Pino Listan operaatioita rajoittamalla saadaan tärkeitä tietorakenteita Pino (stack): Määritelty vain operaatiot Alkion lisäämiseksi listan lopusta Alkion poistaminen listan lopusta Pinosta poistetaan aina viimeksi lisätty alkio (esim. lautaspino) Ns. Last-In-First-Out periaate (LifO)
38 Abstraktit tietotyypit Listan toteutus Lista voidaan toteuttaa käyttäen tallennusrakenteina vektoria tai dynaamisia linkitettyjä rakenteita Vektorin käyttöä rajoittaa sen staattisuus Tosin se mahdollistaa helpon viittauksen järjestysnumeron mukaan Jos lista on luonteeltaan vakiokokoinen, kannattaa käyttää vektoria Jos lista aidosti dynaaminen, kannattaa käyttää dynaamisia linkitettyjä rakenteita
39 Abstraktit tietotyypit Listan toteutus vektorilla Katsotaan miten vektorilla toteutettuun listaan lisätään alkioita Oletetaan että lista on lisäyshetkellä alla esitetyn sisältöinen Lisätään alkio 42 neljänneksi (indeksi 3) alkioksi alla olevaan vektoriin (joka siis on listan tallennusrakenne) Suoritamme siis listan operaation insert(42, 3)
40 Abstraktit tietotyypit Listan toteutus vektorilla Katsotaan miten vektorilla toteutettuun listaan lisätään alkioita Lisätään alkio 42 neljänneksi (indeksi 3) alkioksi alla olevaan vektoriin (joka siis on listan tallennusrakenne) Suoritamme siis listan operaation insert(42, 3) Lisäyskohta, jossa on jo alkio
41 Abstraktit tietotyypit Listan toteutus vektorilla Katsotaan miten vektorilla toteutettuun listaan lisätään alkioita Lisätään alkio 42 neljänneksi (indeksi 3) alkioksi alla olevaan vektoriin (joka siis on listan tallennusrakenne) Suoritamme siis listan operaation insert(42, 3)
42 Abstraktit tietotyypit Listan toteutus vektorilla Katsotaan miten vektorilla toteutettuun listaan lisätään alkioita Lisätään alkio 42 neljänneksi (indeksi 3) alkioksi alla olevaan vektoriin (joka siis on listan tallennusrakenne) Suoritamme siis listan operaation insert(42, 3)
43 Abstraktit tietotyypit Listan toteutus vektorilla Katsotaan miten vektorilla toteutettuun listaan lisätään alkioita Lisätään alkio 42 neljänneksi (indeksi 3) alkioksi alla olevaan vektoriin (joka siis on listan tallennusrakenne) Suoritamme siis listan operaation insert(42, 3)
44 Abstraktit tietotyypit Listan toteutus vektorilla Katsotaan miten vektorilla toteutettuun listaan lisätään alkioita Lisätään alkio 42 neljänneksi (indeksi 3) alkioksi alla olevaan vektoriin (joka siis on listan tallennusrakenne) Suoritamme siis listan operaation insert(42, 3) Lisäyskohta vihdoin tyhjä
45 Abstraktit tietotyypit Listan toteutus vektorilla Katsotaan miten vektorilla toteutettuun listaan lisätään alkioita Lisätään alkio 42 neljänneksi (indeksi 3) alkioksi alla olevaan vektoriin (joka siis on listan tallennusrakenne) Suoritamme siis listan operaation insert(42, 3) Taulukon viimeinen alkio indeksissä 7 ei kuulu listaan Lisätään alkio
46 Taulukot ja listat Pythonissa 389
47 Taulukoista Taulukko on kiinteän kokoinen rakenne, joka sisältää samaa tietotyyppiä olevia alkioita Lista sallii lisäyksen mihin tahansa kohtaan listaa, jolloin listan koko muuttuu Pythonissa ei ole taulukoita! Pythonissa käytetään taulukon sijaan listaa, joka sisältää normaaleiden taulukon operaatioiden lisäksi alkioiden lisäämisen, poistamisen ja monia muita Edelliset esimerkit kuitenkin pätevät Pythoniin Pythonin listat voivat sisältää erityyppisiä alkioita
48 Listan alustus Alustuksessa annettavat arvot saavat olla mitä tahansa lausekkeita lista = [0, 2 + 3, 9 * 7, -2-3] a = 7 lista2= [0, a, 2*a, 3*a]
49 Listan arvojen käyttö ja sijoitus a = 4 t = [9, 8, 7, 6, 5] t[4] = 9 # listassa arvot [9, 8, 7, 6, 9] t[2 + 1] = 8 # listassa arvot [9, 8, 7, 8, 9] t[2] = t[2] - 6 # listassa arvot [9, 8, 1, 8, 9] t[a 1] = 3 # listassa arvot [9, 8, 1, 3, 9] print t[2] # tulostaa 1 print t[t[2]] # tulostaa 8 (indeksi 1) print t[a] # tulostaa 9 (indeksi 4)
50 Parametrien välityksestä funktioille Kuten viime viikolla näimme: Perustyypit, eli kokonaisluvut, desimaaliluvut, merkkijonot ja totuusarvot välitetään ikään kuin kopioimalla ne funktiolle Tämä johtuu siitä, että nämä perustyypit ovat muuttumattomia (immutable), eli niiden arvo ei voi muuttua Voimme kuitenkin muodostaa niiden arvosta uuden arvon, ja sijoittaa sen muuttujaan Listat sen sijaan ovat muuttuvia (mutable) Listoja ei kopioida, funktio saa viittauksen todellisen parametrin listaan Funktio siis voi muuttaa samaa listaa kuin kutsuja käsittelee! Tämä ei ole kattava selostus välitysmekanismeista Pythonissa, mutta kurssin kannalta riittävä AOP/OOP-kursseilla melkein vastaavaa järjestelmää käsitellään Javassa
51 Parametrien välityksestä funktioille Esimerkki: def muutalistaa(plista): print "saatiin", plista # tulostaa [1, kaksi, 3] plista[2] = "nelja print "muutettiin:", plista # tulostaa [1, kaksi, nelja ] lista = [1, "kaksi", 3] print ennen:, lista # tulostaa [1, kaksi, 3] muutalistaa(lista) print jalkeen, lista # tulostaa [1, kaksi, nelja ]
52 Matriisi Useampiulotteisia listoja voidaan määritellä käyttämällä listan arvoina listoja Esim. 2-ulotteinen lista (eli matriisi): # matriisi jossa on 2 riviä, 4 saraketta m = [[0,1,2,3], [4,5,6,7]]
53 Matriisi Voidaan jakaa usealle riville visualisoinnin helpottamiseksi # matriisi, jossa on 3 riviä, 2 saraketta m2 = [[2*3, 3*3], [3*7, 9-2], [9+1, 4]]
54 Matriisi # matriisi jossa on 2 riviä, 4 saraketta m = [[0, 1, 2, 3], [4, 5, 6, 7]] # matriisi, jossa on 3 riviä, 2 saraketta m2 = [[2*3, 3*3], [3*7, 9-2], [9+1, 4]] m[1][1] # 5 m2[0][0] # 6 m2[m[0][2]][1] # 4
55 Listan läpikäynti: Tapa 1 Lista voidaan käydä läpi kahdella tavalla, Yksinkertaisesti kun silmukassa ei tarvitse tietää listan indeksejä lista = [4, 6, 2, -4] for luku in lista: print luku Tulostaa
56 Listan läpikäynti: Tapa 2 Toinen tapa, kun tarvitaan listan indeksejä: lista = [4, 2, -4] for i in range(len(lista)): print i,,, lista[i] Tulostaa 0, 4 1, 2 2, -4
57 Matriisi # matriisi jossa on 2 riviä, 4 saraketta m = [[0, 1, 2, 3], [4, 5, 6, 7]] m[1][1] # 5 m2[1][2] # 6
58 Matriisin läpikäynti Tarvitaan kaksi sisäkkäistä silmukkaa Esim. m = [[0, 1, 2, 3], [4, 5, 6, 7]] for rivi in m: # käy läpi listan rivit for luku in rivi: # käy läpi rivin arvot print luku
59 Matriisin läpikäynti Jos tarvitaan rivin ja sarakkeen indeksit, käytetään rangea: m = [[0, 1, 2, 3], [4, 5, 6, 7]] for i in range(len(m)): # käy läpi listan rivit for j in range(len(m[i])): # käy läpi yhden rivin print rivi, i, sarake, j, arvo, m[i][j] Sisemmässä silmukassa otetaan aina yhden rivin leveys, joten rivit voivat olla erikokoisia Huomaa, että len(m) palauttaa 2, koska ulommassa listassa on 2 alkiota. Sen sijaan len(m[0]) palauttaa 4, koska sisemmässä listassa on 4 alkiota
60 Merkkijonojen läpikäynti silmukassa Merkkijonoja voi käydä läpi for-silmukassa merkki kerrallaan kuten listoja s = fhqwhgads for i in range(len(s)): print s[i] Tai: s = fhqwhgads for merkki in s: print merkki Molemmat tavat tulostavat allekkain merkit yksitellen jonosta fhqwhgads. Erona on, että ylemmässä käytetään indeksejä, kun taas alemmassa käydään läpi merkkejä. 404
61 Listan muuttaminen Pythonin lista sisältää monia operaatioita Alkioiden lisäys loppuun: lista.append(arvo) Alkioiden lisäys väliin: lista.insert(indeksi, arvo) Alkioiden poisto: lista.remove(arvo) Huom! Poistaa vain ensimmäisen alkion jonka arvo on parametrina saatu arvo Huom 2! Olemattoman luvun poisto aiheuttaa virheen (ValueError)
A274101 TIETORAKENTEET JA ALGORITMIT
A274101 TIETORAKENTEET JA ALGORITMIT PERUSTIETORAKENTEET LISTA, PINO, JONO, PAKKA ABSTRAKTI TIETOTYYPPI Tietotyyppi on abstrakti, kun se on määritelty (esim. matemaattisesti) ottamatta kantaa varsinaiseen
LisätiedotAlgoritmit 1. Luento 9 Ti Timo Männikkö
Algoritmit 1 Luento 9 Ti 7.2.2017 Timo Männikkö Luento 9 Graafit ja verkot Kaaritaulukko, bittimatriisi, pituusmatriisi Verkon lyhimmät polut Floydin menetelmä Lähtevien ja tulevien kaarien listat Forward
LisätiedotSisällys. 18. Abstraktit tietotyypit. Johdanto. Johdanto
Sisällys 18. bstraktit tietotyypit Johdanto abstrakteihin tietotyyppeihin. Pino ja jono. Linkitetty lista. Pino linkitetyllä listalla toteutettuna. 18.1 18.2 Johdanto Javan omat tietotyypit ovat jo tuttuja:
LisätiedotAlgoritmit 1. Luento 4 Ke Timo Männikkö
Algoritmit 1 Luento 4 Ke 18.1.2017 Timo Männikkö Luento 4 Tietorakenteet Pino Pinon toteutus Jono Jonon toteutus Lista Listaoperaatiot Algoritmit 1 Kevät 2017 Luento 4 Ke 18.1.2017 2/29 Pino Pino, stack,
Lisätiedot18. Abstraktit tietotyypit 18.1
18. Abstraktit tietotyypit 18.1 Sisällys Johdanto abstrakteihin tietotyyppeihin. Pino ja jono. Linkitetty lista. Pino linkitetyllä listalla toteutettuna. 18.2 Johdanto Javan omat tietotyypit ovat jo tuttuja:
LisätiedotRakenteiset tietotyypit Moniulotteiset taulukot
C! Rakenteiset tietotyypit Moniulotteiset taulukot 22.2.2018 Agenda Rakenteiset tietotyypit Vilkaisu 6. kierroksen tehtäviin Moniulotteiset taulukot Esimerkki Seuraava luento to 8.3. Ilmoittautuminen ohjelmointikokeeseen
LisätiedotImperatiivisen ohjelmoinnin peruskäsitteet. Meidän käyttämän pseudokielen lauseiden syntaksi
Imperatiivisen ohjelmoinnin peruskäsitteet muuttuja muuttujissa oleva data voi olla yksinkertaista eli primitiivistä (esim. luvut ja merkit) tai rakenteista jolloin puhutaan tietorakenteista. puhuttaessa
LisätiedotOhjelmoinnin perusteet Y Python
Ohjelmoinnin perusteet Y Python T-106.1208 16.2.2010 T-106.1208 Ohjelmoinnin perusteet Y 16.2.2010 1 / 41 Kännykkäpalautetteen antajia kaivataan edelleen! Ilmoittaudu mukaan lähettämällä ilmainen tekstiviesti
LisätiedotAlgoritmit 1. Luento 3 Ti Timo Männikkö
Algoritmit 1 Luento 3 Ti 17.1.2017 Timo Männikkö Luento 3 Algoritmin analysointi Rekursio Lomituslajittelu Aikavaativuus Tietorakenteet Pino Algoritmit 1 Kevät 2017 Luento 3 Ti 17.1.2017 2/27 Algoritmien
LisätiedotAlgoritmit 2. Luento 2 To Timo Männikkö
Algoritmit 2 Luento 2 To 14.3.2019 Timo Männikkö Luento 2 Tietorakenteet Lineaarinen lista, binääripuu Prioriteettijono Kekorakenne Keko-operaatiot Keon toteutus taulukolla Algoritmit 2 Kevät 2019 Luento
Lisätiedot811312A Tietorakenteet ja algoritmit II Perustietorakenteet
811312A Tietorakenteet ja algoritmit 2017-2018 II Perustietorakenteet Sisältö 1. Johdanto 2. Pino 3. Jono 4. Lista 811312A TRA, Perustietorakenteet 2 II.1. Johdanto Tietorakenne on tapa, jolla algoritmi
LisätiedotOhjelmoinnin perusteet Y Python
Ohjelmoinnin perusteet Y Python T-106.1208 17.2.2010 T-106.1208 Ohjelmoinnin perusteet Y 17.2.2010 1 / 41 Sanakirja Monissa sovelluksissa on tallennettava rakenteeseen avain arvo-pareja. Myöhemmin rakenteesta
LisätiedotAlgoritmit 1. Luento 6 Ke Timo Männikkö
Algoritmit 1 Luento 6 Ke 25.1.2017 Timo Männikkö Luento 6 Järjestetty lista Listan toteutus dynaamisesti Linkitetyn listan operaatiot Vaihtoehtoisia listarakenteita Puurakenteet Binääripuu Järjestetty
LisätiedotSisältö. 22. Taulukot. Yleistä. Yleistä
Sisältö 22. Taulukot Yleistä. Esittely ja luominen. Alkioiden käsittely. Kaksiulotteinen taulukko. Taulukko metodin parametrina. Taulukko ja HelloWorld-ohjelma. Taulukko paluuarvona. 22.1 22.2 Yleistä
LisätiedotOhjelmoinnin perusteet Y Python
Ohjelmoinnin perusteet Y Python T-106.1208 2.3.2009 T-106.1208 Ohjelmoinnin perusteet Y 2.3.2009 1 / 28 Puhelinluettelo, koodi def lue_puhelinnumerot(): print "Anna lisattavat nimet ja numerot." print
LisätiedotOhjelmoinnin perusteet Y Python
Ohjelmoinnin perusteet Y Python T-106.1208 11.2.2009 T-106.1208 Ohjelmoinnin perusteet Y 11.2.2009 1 / 33 Kertausta: listat Tyhjä uusi lista luodaan kirjoittamalla esimerkiksi lampotilat = [] (jolloin
LisätiedotKysymyksiä koko kurssista?
Kysymyksiä koko kurssista? Lisää kysymyksesi osoitteessa slido.com syötä event code: #8777 Voit myös pyytää esimerkkiä jostain tietystä asiasta Vastailen kysymyksiin luennon loppupuolella Tätä luentoa
LisätiedotC-kielessä taulukko on joukko peräkkäisiä muistipaikkoja, jotka kaikki pystyvät tallettamaan samaa tyyppiä olevaa tietoa.
Taulukot C-kielessä taulukko on joukko peräkkäisiä muistipaikkoja, jotka kaikki pystyvät tallettamaan samaa tyyppiä olevaa tietoa. Taulukon muuttujilla (muistipaikoilla) on yhteinen nimi. Jokaiseen yksittäiseen
LisätiedotAlgoritmit 2. Luento 2 Ke Timo Männikkö
Algoritmit 2 Luento 2 Ke 15.3.2017 Timo Männikkö Luento 2 Tietorakenteet Lineaarinen lista, binääripuu Prioriteettijono Kekorakenne Keko-operaatiot Keon toteutus taulukolla Algoritmit 2 Kevät 2017 Luento
LisätiedotYleistä. Nyt käsitellään vain taulukko (array), joka on saman tyyppisten muuttujien eli alkioiden (element) kokoelma.
2. Taulukot 2.1 Sisältö Yleistä. Esittely ja luominen. Alkioiden käsittely. Kaksiulotteinen taulukko. Taulukko operaation parametrina. Taulukko ja HelloWorld-ohjelma. Taulukko paluuarvona. 2.2 Yleistä
LisätiedotSisältö. 2. Taulukot. Yleistä. Yleistä
Sisältö 2. Taulukot Yleistä. Esittely ja luominen. Alkioiden käsittely. Kaksiulotteinen taulukko. Taulukko operaation parametrina. Taulukko ja HelloWorld-ohjelma. Taulukko paluuarvona. 2.1 2.2 Yleistä
LisätiedotAlgoritmit 2. Luento 6 To Timo Männikkö
Algoritmit 2 Luento 6 To 28.3.2019 Timo Männikkö Luento 6 B-puun operaatiot Nelipuu Trie-rakenteet Standarditrie Pakattu trie Algoritmit 2 Kevät 2019 Luento 6 To 28.3.2019 2/30 B-puu 40 60 80 130 90 100
LisätiedotOhjelmoinnin perusteet Y Python
Ohjelmoinnin perusteet Y Python T-106.1208 25.2.2009 T-106.1208 Ohjelmoinnin perusteet Y 25.2.2009 1 / 34 Syötteessä useita lukuja samalla rivillä Seuraavassa esimerkissä käyttäjä antaa useita lukuja samalla
Lisätiedot815338A Ohjelmointikielten periaatteet Harjoitus 3 vastaukset
815338A Ohjelmointikielten periaatteet 2015-2016. Harjoitus 3 vastaukset Harjoituksen aiheena ovat imperatiivisten kielten muuttujiin liittyvät kysymykset. Tehtävä 1. Määritä muuttujien max_num, lista,
LisätiedotOhjelmoinnin perusteet Y Python
Ohjelmoinnin perusteet Y Python T-106.1208 9.2.2009 T-106.1208 Ohjelmoinnin perusteet Y 9.2.2009 1 / 35 Listat Esimerkki: halutaan kirjoittaa ohjelma, joka lukee käyttäjältä 30 lämpötilaa. Kun lämpötilat
LisätiedotAlgoritmit 2. Luento 3 Ti Timo Männikkö
Algoritmit 2 Luento 3 Ti 21.3.2017 Timo Männikkö Luento 3 Järjestäminen eli lajittelu Kekorakenne Kekolajittelu Hajautus Yhteentörmäysten käsittely Ketjutus Algoritmit 2 Kevät 2017 Luento 3 Ti 21.3.2017
LisätiedotOhjelmoinnin perusteet Y Python
Ohjelmoinnin perusteet Y Python T-106.1208 10.2.2010 T-106.1208 Ohjelmoinnin perusteet Y 10.2.2010 1 / 43 Kertausta: listat Tyhjä uusi lista luodaan kirjoittamalla esimerkiksi lampotilat = [] (jolloin
LisätiedotAlgoritmit 2. Luento 3 Ti Timo Männikkö
Algoritmit 2 Luento 3 Ti 20.3.2018 Timo Männikkö Luento 3 Järjestäminen eli lajittelu Kekorakenne Kekolajittelu Hajautus Yhteentörmäysten käsittely Ketjutus Algoritmit 2 Kevät 2018 Luento 3 Ti 20.3.2018
LisätiedotAlgoritmit 1. Luento 5 Ti Timo Männikkö
Algoritmit 1 Luento 5 Ti 24.1.2017 Timo Männikkö Luento 5 Järjestetty lista Järjestetyn listan operaatiot Listan toteutus taulukolla Binäärihaku Binäärihaun vaativuus Algoritmit 1 Kevät 2017 Luento 5 Ti
Lisätiedot5.6. C-kielen perusteet, osa 6/8, Taulukko 6.1.2008, pva, kuvat jma
5.6. C-kielen perusteet, osa 6/8, Taulukko 6.1.2008, pva, kuvat jma Every cloud has a silver line. - englantilainen sananlasku Tässä osiossa tärkeää: yksi- ja moniulotteinen taulukko Sisältö Yleistä Yksiulotteinen
LisätiedotTietorakenteet ja algoritmit
Tietorakenteet ja algoritmit Merkintöjen tulkintoja *++Pstack->top = item *Pstack->top++ = item (*Pstack->top)++ *(Pstack++)->top = item *(++Pstack)->top = item Lisää pinon toteutuksia Dynaaminen taulukko
LisätiedotOhjelmoinnin perusteet Y Python
Ohjelmoinnin perusteet Y Python T-106.1208 15.3.2010 T-106.1208 Ohjelmoinnin perusteet Y 15.3.2010 1 / 56 Tiedostoista: tietojen tallentaminen ohjelman suorituskertojen välillä Monissa sovelluksissa ohjelman
LisätiedotOhjelmoinnin peruskurssien laaja oppimäärä
Ohjelmoinnin peruskurssien laaja oppimäärä Keskeneräinen luento 3: Listat (mm. SICP 22.2.3) Riku Saikkonen 31. 10. 2011 Sisältö 1 Linkitetyt listat 2 Linkitetyt listat (SICP 2.1.1, 2.2.1) funktionaalinen
LisätiedotOhjelmoinnin perusteet Y Python
Ohjelmoinnin perusteet Y Python T-106.1208 16.3.2009 T-106.1208 Ohjelmoinnin perusteet Y 16.3.2009 1 / 40 Kertausta: tiedostosta lukeminen Aluksi käsiteltävä tiedosto pitää avata: tiedostomuuttuja = open("teksti.txt","r")
LisätiedotTietorakenteet ja algoritmit Johdanto Lauri Malmi / Ari Korhonen
Tietorakenteet ja algoritmit Johdanto Lauri Malmi / Ari 1 1. JOHDANTO 1.1 Määritelmiä 1.2 Tietorakenteen ja algoritmin valinta 1.3 Algoritmit ja tiedon määrä 1.4 Tietorakenteet ja toiminnot 1.5 Esimerkki:
LisätiedotTietorakenteet ja algoritmit - syksy 2015 1
Tietorakenteet ja algoritmit - syksy 2015 1 Tietorakenteet ja algoritmit - syksy 2015 2 Tietorakenteet ja algoritmit Johdanto Ari Korhonen Tietorakenteet ja algoritmit - syksy 2015 1. JOHDANTO 1.1 Määritelmiä
LisätiedotSekvenssi: kokoelma peräkkäisiä alkioita (lineaarinen
Sekvenssi Sekvenssi: kokoelma peräkkäisiä alkioita (lineaarinen järjestys) Timo Esim. pino, jono ja kaksiloppuinen jono ovat sekvenssin erikoistapauksia sekvenssejä, jotka kohdistavat operaationsa ensimmäiseen/viimeiseen
LisätiedotTietueet. Tietueiden määrittely
Tietueet Tietueiden määrittely Tietue on tietorakenne, joka kokoaa yhteen eri tyyppistä tietoa yhdeksi asiakokonaisuudeksi. Tähän kokonaisuuteen voidaan viitata yhteisellä nimellä. Auttaa ohjelmoijaa järjestelemään
LisätiedotOsoitin ja viittaus C++:ssa
Osoitin ja viittaus C++:ssa Osoitin yksinkertaiseen tietotyyppiin Osoitin on muuttuja, joka sisältää jonkin toisen samantyyppisen muuttujan osoitteen. Ohessa on esimerkkiohjelma, jossa määritellään kokonaislukumuuttuja
LisätiedotKääreluokat (oppikirjan luku 9.4) (Wrapper-classes)
Kääreluokat (oppikirjan luku 9.4) (Wrapper-classes) Kääreluokista Javan alkeistietotyypit ja vastaavat kääreluokat Autoboxing Integer-luokka Double-luokka Kääreluokista Alkeistietotyyppiset muuttujat (esimerkiksi
LisätiedotTietorakenteet. JAVA-OHJELMOINTI Osa 5: Tietorakenteita. Sisällys. Merkkijonot (String) Luokka String. Metodeja (public)
Tietorakenteet JAVA-OHJELMOINTI Osa 5: Tietorakenteita Eero Hyvönen Tietojenkäsittelytieteen laitos Helsingin yliopisto Olioita ja tietoja voidaan organisoida määrämuotoisiksi tietorakenteiksi Hyödyllisiä
LisätiedotOhjelmoinnin perusteet Y Python
Ohjelmoinnin perusteet Y Python T-106.1208 1.4.2009 T-106.1208 Ohjelmoinnin perusteet Y 1.4.2009 1 / 56 Tentti Ensimmäinen tenttimahdollisuus on pe 8.5. klo 13:00 17:00 päärakennuksessa. Tämän jälkeen
LisätiedotTaulukot. Jukka Harju, Jukka Juslin 2006 1
Taulukot Jukka Harju, Jukka Juslin 2006 1 Taulukot Taulukot ovat olioita, jotka auttavat organisoimaan suuria määriä tietoa. Käsittelylistalla on: Taulukon tekeminen ja käyttö Rajojen tarkastus ja kapasiteetti
LisätiedotAlgoritmit 1. Luento 8 Ke Timo Männikkö
Algoritmit 1 Luento 8 Ke 1.2.2017 Timo Männikkö Luento 8 Järjestetty binääripuu Solmujen läpikäynti Binääripuun korkeus Binääripuun tasapainottaminen Graafit ja verkot Verkon lyhimmät polut Fordin ja Fulkersonin
LisätiedotLyhyt kertaus osoittimista
, syksy 2007 Kertausta Luento 10 12.10.2007 Syksy 2007 1 Lyhyt kertaus osoittimista char *p; /* char, int, jne ilmoittavat, minkä tyyppisiä */ Keskusmuisti int *q; /* olioita sisältäviin muistilohkoihin
LisätiedotAlgoritmit 2. Luento 6 Ke Timo Männikkö
Algoritmit 2 Luento 6 Ke 29.3.2017 Timo Männikkö Luento 6 B-puun operaatiot B-puun muunnelmia Nelipuu Trie-rakenteet Standarditrie Pakattu trie Algoritmit 2 Kevät 2017 Luento 6 Ke 29.3.2017 2/31 B-puu
LisätiedotTaulukot. Taulukon määrittely ja käyttö. Taulukko metodin parametrina. Taulukon sisällön kopiointi toiseen taulukkoon. Taulukon lajittelu
Taulukot Taulukon määrittely ja käyttö Taulukko metodin parametrina Taulukon sisällön kopiointi toiseen taulukkoon Taulukon lajittelu esimerkki 2-ulottoisesta taulukosta 1 Mikä on taulukko? Taulukko on
LisätiedotTutoriaaliläsnäoloista
Tutoriaaliläsnäoloista Tutoriaaliläsnäolokierroksella voi nyt täyttää anomuksen läsnäolon merkitsemisestä Esim. tagi ei toiminut, korvavaltimon leikkaus, yms. Hyväksyn näitä omaa harkintaa käyttäen Tarkoitus
LisätiedotAlgoritmit 1. Luento 7 Ti Timo Männikkö
Algoritmit 1 Luento 7 Ti 31.1.2017 Timo Männikkö Luento 7 Järjestetty binääripuu Binääripuiden termejä Binääripuiden operaatiot Solmun haku, lisäys, poisto Algoritmit 1 Kevät 2017 Luento 7 Ti 31.1.2017
LisätiedotOhjelmoinnin peruskurssi Y1
Ohjelmoinnin peruskurssi Y1 CSE-A1111 28.9.2015 CSE-A1111 Ohjelmoinnin peruskurssi Y1 28.9.2015 1 / 16 Mahdollisuus antaa luentopalautetta Goblinissa vasemmassa reunassa olevassa valikossa on valinta Luentopalaute.
LisätiedotOhjelmoinnin peruskurssi Y1
Ohjelmoinnin peruskurssi Y1 CSE-A1111 30.9.2015 CSE-A1111 Ohjelmoinnin peruskurssi Y1 30.9.2015 1 / 27 Mahdollisuus antaa luentopalautetta Goblinissa vasemmassa reunassa olevassa valikossa on valinta Luentopalaute.
LisätiedotOhjelmoinnin perusteet Y Python
Ohjelmoinnin perusteet Y Python T-106.1208 7.2.2011 T-106.1208 Ohjelmoinnin perusteet Y 7.2.2011 1 / 39 Kännykkäpalautetteen antajia kaivataan edelleen! Ilmoittaudu mukaan lähettämällä ilmainen tekstiviesti
Lisätiedot7/20: Paketti kasassa ensimmäistä kertaa
Ohjelmointi 1 / syksy 2007 7/20: Paketti kasassa ensimmäistä kertaa Paavo Nieminen nieminen@jyu.fi Tietotekniikan laitos Informaatioteknologian tiedekunta Jyväskylän yliopisto Ohjelmointi 1 / syksy 2007
LisätiedotChapel. TIE Ryhmä 91. Joonas Eloranta Lari Valtonen
Chapel TIE-20306 Ryhmä 91 Joonas Eloranta Lari Valtonen Johdanto Chapel on Amerikkalaisen Cray Inc. yrityksen kehittämä avoimen lähdekoodin ohjelmointikieli. Chapel on rinnakkainen ohjelmointikieli, joka
Lisätiedot815338A Ohjelmointikielten periaatteet 2014-2015
815338A Ohjelmointikielten periaatteet 2014-2015 X Skriptiohjelmointi Sisältö 1. Johdanto 2. Skriptikielten yleispiirteitä 3. Python 815338A Ohjelmointikielten periaatteet, Skriptiohjelmointi 2 X.1 Johdanto
LisätiedotPythonin Kertaus. Cse-a1130. Tietotekniikka Sovelluksissa. Versio 0.01b
Pythonin Kertaus Cse-a1130 Tietotekniikka Sovelluksissa Versio 0.01b Listat 1/2 esimerkkejä listan peruskäytöstä. > lista=['kala','kukko','kissa','koira'] ['kala','kukko','kissa','koira'] >lista.append('kana')
LisätiedotITKP102 Ohjelmointi 1 (6 op)
ITKP102 Ohjelmointi 1 (6 op) Tentaattori: Antti-Jussi Lakanen 7. huhtikuuta 2017 Vastaa kaikkiin tehtäviin. Tee jokainen tehtävä erilliselle konseptiarkille. Kirjoittamasi luokat, funktiot ja aliohjelmat
LisätiedotOhjelmoinnin peruskurssi Y1
Ohjelmoinnin peruskurssi Y1 CSE-A1111 7.10.2015 CSE-A1111 Ohjelmoinnin peruskurssi Y1 7.10.2015 1 / 36 Mahdollisuus antaa luentopalautetta Goblinissa vasemmassa reunassa olevassa valikossa on valinta Luentopalaute.
LisätiedotAlgoritmit 2. Luento 7 Ti Timo Männikkö
Algoritmit 2 Luento 7 Ti 4.4.2017 Timo Männikkö Luento 7 Joukot Joukko-operaatioita Joukkojen esitystapoja Alkiovieraat osajoukot Toteutus puurakenteena Algoritmit 2 Kevät 2017 Luento 7 Ti 4.4.2017 2/26
LisätiedotOlio-ohjelmointi Syntaksikokoelma
C++-kielen uusia ominaisuuksia Olio-ohjelmointi Syntaksikokoelma 31.10.2008 Bool-tietotyyppi: Totuusarvo true (1), jos ehto on tosi ja false (0) jos ehto epätosi. Dynaaminen muistinvaraus: Yhden muuttuja
LisätiedotAlgoritmit 1. Luento 10 Ke Timo Männikkö
Algoritmit 1 Luento 10 Ke 14.2.2018 Timo Männikkö Luento 10 Algoritminen ongelmanratkaisu Suunnittelumenetelmät Raaka voima Järjestäminen eli lajittelu Kuplalajittelu Lisäyslajittelu Valintalajittelu Permutaatiot
LisätiedotKannan vektorit siis virittävät aliavaruuden, ja lisäksi kanta on vapaa. Lauseesta 7.6 saadaan seuraava hyvin käyttökelpoinen tulos:
8 Kanta Tässä luvussa tarkastellaan aliavaruuden virittäjävektoreita, jotka muodostavat lineaarisesti riippumattoman jonon. Merkintöjen helpottamiseksi oletetaan luvussa koko ajan, että W on vektoreiden
LisätiedotAlgoritmit 2. Luento 4 Ke Timo Männikkö
Algoritmit 2 Luento 4 Ke 22.3.2017 Timo Männikkö Luento 4 Hajautus Yhteentörmäysten käsittely Avoin osoitteenmuodostus Hajautusfunktiot Puurakenteet Solmujen läpikäynti Algoritmit 2 Kevät 2017 Luento 4
LisätiedotAlgoritmit 2. Luento 4 To Timo Männikkö
Algoritmit 2 Luento 4 To 21.3.2019 Timo Männikkö Luento 4 Hajautus Yhteentörmäysten käsittely Avoin osoitteenmuodostus Hajautusfunktiot Puurakenteet Solmujen läpikäynti Algoritmit 2 Kevät 2019 Luento 4
LisätiedotHarjoitus 1: Matlab. Harjoitus 1: Matlab. Mat Sovelletun matematiikan tietokonetyöt 1. Syksy 2006
Harjoitus 1: Matlab Mat-2.2107 Sovelletun matematiikan tietokonetyöt Syksy 2006 Mat-2.2107 Sovelletun matematiikan tietokonetyöt 1 Harjoituksen aiheita Tutustuminen Matlab-ohjelmistoon Laskutoimitusten
LisätiedotOhjelmointi 1 Taulukot ja merkkijonot
Ohjelmointi 1 Taulukot ja merkkijonot Jussi Pohjolainen TAMK Tieto- ja viestintäteknologia Johdanto taulukkoon Jos ohjelmassa käytössä ainoastaan perinteisiä (yksinkertaisia) muuttujia, ohjelmien teko
LisätiedotOhjelmoinnin peruskurssien laaja oppimäärä
Ohjelmoinnin peruskurssien laaja oppimäärä Luento 4: Symbolit, derivojaesimerkki, kierroksen 1 ratkaisut (mm. SICP 2.32.3.2) Riku Saikkonen 1. 11. 2011 Sisältö 1 Symbolit ja sulkulausekkeet 2 Lisää Schemestä:
LisätiedotOhjelmoinnin perusteet Y Python
Ohjelmoinnin perusteet Y Python T-106.1208 8.2.2010 T-106.1208 Ohjelmoinnin perusteet Y 8.2.2010 1 / 38 Debuggeri Tyypillinen tilanne: ohjelma on kirjoitettu, Python-tulkki ei valita virheistä, mutta ohjelma
LisätiedotOhjelmoinnin peruskurssien laaja oppimäärä
Ohjelmoinnin peruskurssien laaja oppimäärä Luento 5: Sijoituslause, SICP-oliot, tietorakenteen muuttaminen (mm. SICP 33.1.3, 3.33.3.2) Riku Saikkonen 6. 11. 2012 Sisältö 1 Muuttujan arvon muuttaminen:
LisätiedotPythonin alkeet Syksy 2010 Pythonin perusteet: Ohjelmointi, skriptaus ja Python
Pythonin alkeet Syksy 2010 Pythonin perusteet: Ohjelmointi, skriptaus ja Python 8. marraskuuta 2010 Ohjelmointi Perusteet Peruskäsitteitä Olio-ohjelmointi Pythonin alkeet Esittely Esimerkkejä Muuttujat
Lisätiedotuseampi ns. avain (tai vertailuavain) esim. opiskelijaa kuvaavassa alkiossa vaikkapa opintopistemäärä tai opiskelijanumero
Alkioiden avaimet Usein tietoalkioille on mielekästä määrittää yksi tai useampi ns. avain (tai vertailuavain) esim. opiskelijaa kuvaavassa alkiossa vaikkapa opintopistemäärä tai opiskelijanumero 80 op
LisätiedotLuento 2: Tiedostot ja tiedon varastointi
HELIA 1 (19) Luento 2: Tiedostot ja tiedon varastointi Muistit... 2 Päämuisti (Primary storage)... 2 Apumuisti (Secondary storage)... 2 Tiedon tallennuksen yksiköitä... 3 Looginen taso... 3 Fyysinen taso...
LisätiedotMuistutus aikatauluista
Muistutus aikatauluista (Nämä eivät välttämättä koske avoimen yo:n opiskelijoita Erkki Kailan rinnakkaisella kurssilla) Luento 1: kotitehtävät sulkeutuvat 20.9 12:00, ennen tutoriaalia Tutoriaali 1 sulkeutuu
LisätiedotJokaisella tiedostolla on otsake (header), joka sisältää tiedostoon liittyvää hallintatietoa
Tietojen tallennusrakenteet Jokaisella tiedostolla on otsake (header), joka sisältää tiedostoon liittyvää hallintatietoa tiedot tiedostoon kuuluvista lohkoista esim. taulukkona, joka voi muodostua ketjutetuista
LisätiedotPino S on abstrakti tietotyyppi, jolla on ainakin perusmetodit:
Pino (stack) Pino: viimeisenä sisään, ensimmäisenä ulos (LIFO, Last In, First Out) -tietorakenne kaksi perusoperaatiota: alkion lisäys pinon päälle (push), ja päällimmäisen alkion poisto (pop) Push(alkio)
LisätiedotTähtitieteen käytännön menetelmiä Kevät 2009 Luento 4: Ohjelmointi, skriptaus ja Python
Tähtitieteen käytännön menetelmiä Kevät 2009 Luento 4: Ohjelmointi, skriptaus ja Python 31. tammikuuta 2009 Ohjelmointi Perusteet Pythonin alkeet Esittely Esimerkkejä Muuttujat Peruskäsitteitä Käsittely
LisätiedotKaksiloppuinen jono D on abstrakti tietotyyppi, jolla on ainakin seuraavat 4 perusmetodia... PushFront(x): lisää tietoalkion x jonon eteen
Viimeksi käsiteltiin pino: lisäys ja poisto lopusta jono: lisäys loppuun, poisto alusta Pinon ja jonon yleistävä tietorakenne: kaksiloppuinen jono alkion lisäys/poisto voidaan kohdistaa jonon alkuun tai
LisätiedotModuli 4: Moniulotteiset taulukot & Bittioperaatiot
C! : Moniulotteiset taulukot & Bittioperaatiot 15.3.2016 Agenda Pieni kertausharjoitus Moniulotteiset taulukot Esimerkki taulukoista Tauko (bittitehtävä) Binäärioperaatioista Esimerkki (vilkaistaan IP
LisätiedotTietorakenteet ja algoritmit
Tietorakenteet ja algoritmit Rekursio Rekursion käyttötapauksia Rekursio määritelmissä Rekursio ongelmanratkaisussa ja ohjelmointitekniikkana Esimerkkejä taulukolla Esimerkkejä linkatulla listalla Hanoin
LisätiedotOhjelmoinnin perusteet Y Python
Ohjelmoinnin perusteet Y Python T-106.1208 28.2.2011 T-106.1208 Ohjelmoinnin perusteet Y 28.2.2011 1 / 46 Ohjelmointiprojektin vaiheet 1. Määrittely 2. Ohjelman suunnittelu (ohjelman rakenne ja ohjelman
LisätiedotOhjelmoinnin peruskurssien laaja oppimäärä
Ohjelmoinnin peruskurssien laaja oppimäärä Luento 2: SICP kohdat 22.2.3 Riku Saikkonen 2. 11. 2010 Sisältö 1 Linkitetyt listat 2 Listaoperaatioita 3 Listarakenteet 4 Gambit-C:n Scheme-debuggeri Linkitetyt
LisätiedotOhjelmoinnin peruskurssi Y1
Ohjelmoinnin peruskurssi Y1 CS-A1111 13.9.2017 CS-A1111 Ohjelmoinnin peruskurssi Y1 13.9.2017 1 / 19 Oppimistavoitteet: tämän luennon jälkeen osaat kirjoittaa Python-ohjelman, joka pyytää käyttäjältä lukuja,
LisätiedotITKP102 Ohjelmointi 1 (6 op)
ITKP102 Ohjelmointi 1 (6 op) Tentaattori: Antti-Jussi Lakanen 20. huhtikuuta 2018 Vastaa kaikkiin tehtäviin. Tee kukin tehtävä omalle konseptiarkille. Noudata ohjelmointitehtävissä kurssin koodauskäytänteitä.
LisätiedotOhjelmoinnin perusteet Y Python
Ohjelmoinnin perusteet Y Python T-106.1208 9.2.2011 T-106.1208 Ohjelmoinnin perusteet Y 9.2.2011 1 / 46 Kännykkäpalautetteen antajia kaivataan edelleen! Ilmoittaudu mukaan lähettämällä ilmainen tekstiviesti
LisätiedotAlgoritmit 2. Luento 5 Ti Timo Männikkö
Algoritmit 2 Luento 5 Ti 26.3.2019 Timo Männikkö Luento 5 Puurakenteet B-puu B-puun korkeus B-puun operaatiot B-puun muunnelmia Algoritmit 2 Kevät 2019 Luento 5 Ti 26.3.2019 2/34 B-puu B-puut ovat tasapainoisia
LisätiedotTietorakenteet ja algoritmit
Tietorakenteet ja algoritmit Pino Pinon määritelmä Pinon sovelluksia Järjestyksen kääntäminen Palindromiprobleema Postfix-lausekkeen laskenta Infix-lausekkeen muunto postfix-lausekkeeksi Sisäkkäiset funktiokutsut
LisätiedotAlgoritmit 1. Luento 10 Ke 11.2.2015. Timo Männikkö
Algoritmit 1 Luento 10 Ke 11.2.2015 Timo Männikkö Luento 10 Algoritminen ongelman ratkaisu Suunnittelumenetelmät Raaka voima Järjestäminen eli lajittelu Kuplalajittelu Väliinsijoituslajittelu Valintalajittelu
LisätiedotAlgoritmit ja tietorakenteet / HL Copyright Hannu Laine
1 Pino ja jono Yleistä Pino Pino ja jono ovat abstrakteja tietotyyppejä, joilla on yleistä käyttöä. Pino ja jono ovat listan erikoistapauksia. Kummassakin tapauksessa erona on se, että tietotyypin operaatiofunktioita
LisätiedotLuku 3. Listankäsittelyä. 3.1 Listat
Luku 3 Listankäsittelyä Funktio-ohjelmoinnin tärkein yksittäinen tietorakenne on lista. Listankäsittely on paitsi käytännöllisesti oleellinen aihe, se myös valaisee funktio-ohjelmoinnin ideaa. 3.1 Listat
Lisätiedot2. Perustietorakenteet
2. Perustietorakenteet Tässä osassa käsitellään erilaisia perustietorakenteita, joita algoritmit käyttävät toimintansa perustana. Aluksi käydään läpi tietorakenteen abstrakti määritelmä. Tämän jälkeen
LisätiedotOhjelmoinnin peruskurssi Y1
Ohjelmoinnin peruskurssi Y1 CS-A1111 10.10.2018 CS-A1111 Ohjelmoinnin peruskurssi Y1 10.10.2018 1 / 20 Oppimistavoitteet: tämän luennon jälkeen Tiedät, miten ohjelman toimintaa voi tutkia ja ohjelmassa
Lisätiedottietueet eri tyyppisiä tietoja saman muuttujan arvoiksi
tietueet eri tyyppisiä tietoja saman muuttujan arvoiksi ero taulukkoon taulukossa alkiot samantyyppisiä tietueessa alkiot voivat olla erityyppisiä tiedot kuitenkin yhteen kuuluvia ohjelmoinnin perusteet,
LisätiedotOhjelmoinnin perusteet Y Python
Ohjelmoinnin perusteet Y Python T-106.1208 20.1.2010 T-106.1208 Ohjelmoinnin perusteet Y 20.1.2010 1 / 40 Arvon pyytäminen käyttäjältä Käyttäjän antaman arvon voi lukea raw_input-käskyllä. Käskyn sulkujen
LisätiedotOhjelmoinnin peruskurssi Y1
Ohjelmoinnin peruskurssi Y1 CS-A1111 12.9.2018 CS-A1111 Ohjelmoinnin peruskurssi Y1 12.9.2018 1 / 19 Oppimistavoitteet: tämän luennon jälkeen osaat kirjoittaa Python-ohjelman, joka pyytää käyttäjältä lukuja,
LisätiedotOhjelmoinnin peruskurssien laaja oppimäärä
Ohjelmoinnin peruskurssien laaja oppimäärä Luento 3: Funktionaalinen listankäsittely ja listankäsittelyoperaatiot (mm. SICP 22.2.3) Riku Saikkonen 31. 10. 2011 Sisältö 1 Linkitetyt listat 2 Listarakenteet
LisätiedotOhjelmoinnin perusteet Y Python
Ohjelmoinnin perusteet Y Python T-106.1208 21.1.2009 T-106.1208 Ohjelmoinnin perusteet Y 21.1.2009 1 / 32 Tyypeistä Monissa muissa ohjelmointikielissä (esim. Java ja C) muuttujat on määriteltävä ennen
LisätiedotOhjelmoinnin peruskurssi Y1
Ohjelmoinnin peruskurssi Y1 CS-A1111 4.10.2017 CS-A1111 Ohjelmoinnin peruskurssi Y1 4.10.2017 1 / 23 Mahdollisuus antaa luentopalautetta Luennon aikana voit kirjoittaa kommentteja ja kysymyksiä sivulle
LisätiedotOhjelmoinnin perusteet Y Python
Ohjelmoinnin perusteet Y Python T-106.1208 15.2.2010 T-106.1208 Ohjelmoinnin perusteet Y 15.2.2010 1 / 46 Merkkijonot Merkkijonojen avulla ohjelmassa voi esittää tekstitietoa, esim. nimiä, osoitteita ja
Lisätiedot3 Lineaariset yhtälöryhmät ja Gaussin eliminointimenetelmä
3 Lineaariset yhtälöryhmät ja Gaussin eliminointimenetelmä Lineaarinen m:n yhtälön yhtälöryhmä, jossa on n tuntematonta x 1,, x n on joukko yhtälöitä, jotka ovat muotoa a 11 x 1 + + a 1n x n = b 1 a 21
LisätiedotHarjoitustyö: virtuaalikone
Harjoitustyö: virtuaalikone Toteuta alla kuvattu virtuaalikone yksinkertaiselle olio-orientoituneelle skriptauskielelle. Paketissa on testaamista varten mukana kaksi lyhyttä ohjelmaa. Ohjeita Noudata ohjelman
Lisätiedot