Tieto- ja tallennusrakenteet

Save this PDF as:
 WORD  PNG  TXT  JPG

Koko: px
Aloita esitys sivulta:

Download "Tieto- ja tallennusrakenteet"

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 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ätiedot

Algoritmit 1. Luento 9 Ti Timo Männikkö

Algoritmit 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ätiedot

Sisällys. 18. Abstraktit tietotyypit. Johdanto. Johdanto

Sisä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ätiedot

Algoritmit 1. Luento 4 Ke Timo Männikkö

Algoritmit 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ätiedot

18. Abstraktit tietotyypit 18.1

18. 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ätiedot

Imperatiivisen ohjelmoinnin peruskäsitteet. Meidän käyttämän pseudokielen lauseiden syntaksi

Imperatiivisen 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ätiedot

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin 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ätiedot

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin 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ätiedot

Sisältö. 22. Taulukot. Yleistä. Yleistä

Sisä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ätiedot

Algoritmit 1. Luento 3 Ti Timo Männikkö

Algoritmit 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ätiedot

811312A Tietorakenteet ja algoritmit II Perustietorakenteet

811312A 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ätiedot

Algoritmit 1. Luento 6 Ke Timo Männikkö

Algoritmit 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ätiedot

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin 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ätiedot

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin 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ätiedot

Kysymyksiä koko kurssista?

Kysymyksiä 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ätiedot

Yleistä. Nyt käsitellään vain taulukko (array), joka on saman tyyppisten muuttujien eli alkioiden (element) kokoelma.

Yleistä. 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ätiedot

C-kielessä taulukko on joukko peräkkäisiä muistipaikkoja, jotka kaikki pystyvät tallettamaan samaa tyyppiä olevaa tietoa.

C-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ätiedot

Sisältö. 2. Taulukot. Yleistä. Yleistä

Sisä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ätiedot

815338A Ohjelmointikielten periaatteet Harjoitus 3 vastaukset

815338A 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ätiedot

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin 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ätiedot

Algoritmit 2. Luento 2 Ke Timo Männikkö

Algoritmit 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ätiedot

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin 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ätiedot

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin 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ätiedot

Algoritmit 2. Luento 3 Ti Timo Männikkö

Algoritmit 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ätiedot

Algoritmit 1. Luento 5 Ti Timo Männikkö

Algoritmit 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ätiedot

5.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 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ätiedot

Tietorakenteet ja algoritmit

Tietorakenteet 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ätiedot

Ohjelmoinnin peruskurssien laaja oppimäärä

Ohjelmoinnin 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ätiedot

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin 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ätiedot

Tietorakenteet ja algoritmit Johdanto Lauri Malmi / Ari Korhonen

Tietorakenteet 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ätiedot

Tietorakenteet ja algoritmit - syksy 2015 1

Tietorakenteet 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ätiedot

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin 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ätiedot

Osoitin ja viittaus C++:ssa

Osoitin 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ätiedot

Sekvenssi: kokoelma peräkkäisiä alkioita (lineaarinen

Sekvenssi: 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ätiedot

Tietueet. Tietueiden määrittely

Tietueet. 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ätiedot

Tietorakenteet. JAVA-OHJELMOINTI Osa 5: Tietorakenteita. Sisällys. Merkkijonot (String) Luokka String. Metodeja (public)

Tietorakenteet. 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ätiedot

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin 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ätiedot

Kääreluokat (oppikirjan luku 9.4) (Wrapper-classes)

Kää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ätiedot

Taulukot. Jukka Harju, Jukka Juslin 2006 1

Taulukot. 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ätiedot

Taulukot. 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 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ätiedot

Algoritmit 1. Luento 7 Ti Timo Männikkö

Algoritmit 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ätiedot

Tutoriaaliläsnäoloista

Tutoriaalilä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ätiedot

Algoritmit 1. Luento 8 Ke Timo Männikkö

Algoritmit 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ätiedot

Ohjelmoinnin peruskurssi Y1

Ohjelmoinnin 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ätiedot

Algoritmit 2. Luento 6 Ke Timo Männikkö

Algoritmit 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ätiedot

815338A Ohjelmointikielten periaatteet 2014-2015

815338A 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ätiedot

7/20: Paketti kasassa ensimmäistä kertaa

7/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ätiedot

Pythonin Kertaus. Cse-a1130. Tietotekniikka Sovelluksissa. Versio 0.01b

Pythonin 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ätiedot

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin 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ätiedot

ITKP102 Ohjelmointi 1 (6 op)

ITKP102 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ätiedot

Ohjelmoinnin peruskurssi Y1

Ohjelmoinnin 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ätiedot

Algoritmit 2. Luento 7 Ti Timo Männikkö

Algoritmit 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ätiedot

Kannan vektorit siis virittävät aliavaruuden, ja lisäksi kanta on vapaa. Lauseesta 7.6 saadaan seuraava hyvin käyttökelpoinen tulos:

Kannan 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ätiedot

Algoritmit 2. Luento 4 Ke Timo Männikkö

Algoritmit 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ätiedot

Harjoitus 1: Matlab. Harjoitus 1: Matlab. Mat Sovelletun matematiikan tietokonetyöt 1. Syksy 2006

Harjoitus 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ätiedot

Ohjelmoinnin peruskurssien laaja oppimäärä

Ohjelmoinnin 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ätiedot

Ohjelmoinnin peruskurssien laaja oppimäärä

Ohjelmoinnin 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ätiedot

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin 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ätiedot

Luento 2: Tiedostot ja tiedon varastointi

Luento 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ätiedot

Muistutus aikatauluista

Muistutus 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ätiedot

Olio-ohjelmointi Syntaksikokoelma

Olio-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ätiedot

useampi ns. avain (tai vertailuavain) esim. opiskelijaa kuvaavassa alkiossa vaikkapa opintopistemäärä tai opiskelijanumero

useampi 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ätiedot

Pino S on abstrakti tietotyyppi, jolla on ainakin perusmetodit:

Pino 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ätiedot

Tä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 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ätiedot

Tietorakenteet ja algoritmit

Tietorakenteet ja algoritmit Tietorakenteet ja algoritmit Rekursio Rekursion käyttötapauksia Rekursio määritelmissä Rekursio ongelmanratkaisussa ja ohjelmointitekniikkana Esimerkkejä taulukolla Esimerkkejä linkatulla listalla Hanoin

Lisätiedot

Moduli 4: Moniulotteiset taulukot & Bittioperaatiot

Moduli 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ätiedot

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin 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ätiedot

Ohjelmoinnin peruskurssien laaja oppimäärä

Ohjelmoinnin 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ätiedot

Ohjelmointi 1 Taulukot ja merkkijonot

Ohjelmointi 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ätiedot

Pythonin alkeet Syksy 2010 Pythonin perusteet: Ohjelmointi, skriptaus ja Python

Pythonin 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ätiedot

Jokaisella tiedostolla on otsake (header), joka sisältää tiedostoon liittyvää hallintatietoa

Jokaisella 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ätiedot

Ohjelmoinnin peruskurssi Y1

Ohjelmoinnin 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ätiedot

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin 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ätiedot

Matriisit ovat matlabin perustietotyyppejä. Yksinkertaisimmillaan voimme esitellä ja tallentaa 1x1 vektorin seuraavasti: >> a = 9.81 a = 9.

Matriisit ovat matlabin perustietotyyppejä. Yksinkertaisimmillaan voimme esitellä ja tallentaa 1x1 vektorin seuraavasti: >> a = 9.81 a = 9. Python linkit: Python tutoriaali: http://docs.python.org/2/tutorial/ Numpy&Scipy ohjeet: http://docs.scipy.org/doc/ Matlabin alkeet (Pääasiassa Deni Seitzin tekstiä) Matriisit ovat matlabin perustietotyyppejä.

Lisätiedot

Algoritmit 1. Luento 10 Ke 11.2.2015. Timo Männikkö

Algoritmit 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ätiedot

Kaksiloppuinen jono D on abstrakti tietotyyppi, jolla on ainakin seuraavat 4 perusmetodia... PushFront(x): lisää tietoalkion x jonon eteen

Kaksiloppuinen 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ätiedot

2. Perustietorakenteet

2. 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ätiedot

tietueet eri tyyppisiä tietoja saman muuttujan arvoiksi

tietueet 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ätiedot

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin 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ätiedot

Ohjelmoinnin peruskurssien laaja oppimäärä

Ohjelmoinnin 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ätiedot

3 Lineaariset yhtälöryhmät ja Gaussin eliminointimenetelmä

3 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ätiedot

Hakupuut. tässä luvussa tarkastelemme puita tiedon tallennusrakenteina

Hakupuut. tässä luvussa tarkastelemme puita tiedon tallennusrakenteina Hakupuut tässä luvussa tarkastelemme puita tiedon tallennusrakenteina hakupuun avulla voidaan toteuttaa kaikki joukko-tietotyypin operaatiot (myös succ ja pred) pahimman tapauksen aikavaativuus on tavallisella

Lisätiedot

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin 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ätiedot

Tietorakenteet ja algoritmit

Tietorakenteet 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ätiedot

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin 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ätiedot

Informaatioteknologian laitos Olio-ohjelmoinnin perusteet / Salo 15.2.2006

Informaatioteknologian laitos Olio-ohjelmoinnin perusteet / Salo 15.2.2006 TURUN YLIOPISTO DEMO III Informaatioteknologian laitos tehtävät Olio-ohjelmoinnin perusteet / Salo 15.2.2006 1. Tässä tehtävässä tarkastellaan erääntyviä laskuja. Lasku muodostaa oman luokkansa. Laskussa

Lisätiedot

Ohjelmoinnin peruskurssi Y1

Ohjelmoinnin 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ätiedot

Algoritmit ja tietorakenteet / HL Copyright Hannu Laine

Algoritmit 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ätiedot

Harjoitustyö: virtuaalikone

Harjoitustyö: virtuaalikone Harjoitustyö: virtuaalikone Toteuta alla kuvattu virtuaalikone yksinkertaiselle olio-orientoituneelle skriptauskielelle. Paketissa on testaamista varten mukana kaksi lyhyttä ohjelmaa. Ohjeita Noudata ohjelman

Lisätiedot

3 Lineaariset yhtälöryhmät ja Gaussin eliminointimenetelmä

3 Lineaariset yhtälöryhmät ja Gaussin eliminointimenetelmä 1 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

Lisätiedot

Luku 3. Listankäsittelyä. 3.1 Listat

Luku 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ätiedot

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python Ohjelmoinnin perusteet Y Python T-106.1208 1.3.2010 T-106.1208 Ohjelmoinnin perusteet Y 1.3.2010 1 / 36 Monikko Monikko (engl. tuple) muistuttaa listaa, mutta monikon sisältöä ei voi muuttaa sen jälkeen,

Lisätiedot

Osoittimet ja taulukot

Osoittimet ja taulukot C! ja taulukot 1.2.2018 Tiedotteita Tämän jälkeen taas pari väliviikkoa (tenttiviikko) Seuraava luento 22.2. Laskareita ei tenttiviikolla 12.2. 16.2. 2 ja muisti Muisti Keskusyksikkö Suorittaa muistissa

Lisätiedot

Ohjelmoinnin peruskurssi Y1

Ohjelmoinnin peruskurssi Y1 Ohjelmoinnin peruskurssi Y1 CSE-A1111 5.10.2016 CSE-A1111 Ohjelmoinnin peruskurssi Y1 5.10.2016 1 / 21 Mahdollisuus antaa luentopalautetta Goblinissa vasemmassa reunassa olevassa valikossa on valinta Luentopalaute.

Lisätiedot

Muita linkattuja rakenteita

Muita linkattuja rakenteita 1 Muita linkattuja rakenteita Johdanto Aikaisemmin on käsitelty listan, jonon ja pinon toteutus dynaamisesti linkattuna rakenteena. Dynaamisella linkkauksella voidaan toteuttaa mitä moninaisimpia rakenteita.

Lisätiedot

Operaattoreiden ylikuormitus. Operaattoreiden kuormitus. Operaattoreiden kuormitus. Operaattoreista. Kuormituksesta

Operaattoreiden ylikuormitus. Operaattoreiden kuormitus. Operaattoreiden kuormitus. Operaattoreista. Kuormituksesta C++ - perusteet Java-osaajille luento 5/7: operaattoreiden ylikuormitus, oliotaulukko, parametrien oletusarvot, komentoriviparametrit, constant, inline, Operaattoreiden ylikuormitus Operaattoreiden kuormitus

Lisätiedot

T Syksy 2004 Logiikka tietotekniikassa: perusteet Laskuharjoitus 7 (opetusmoniste, kappaleet )

T Syksy 2004 Logiikka tietotekniikassa: perusteet Laskuharjoitus 7 (opetusmoniste, kappaleet ) T-79144 Syksy 2004 Logiikka tietotekniikassa: perusteet Laskuharjoitus 7 (opetusmoniste, kappaleet 11-22) 26 29102004 1 Ilmaise seuraavat lauseet predikaattilogiikalla: a) Jokin porteista on viallinen

Lisätiedot

Java-kielen perusteet

Java-kielen perusteet Java-kielen perusteet Tunnus, varattu sana, kommentti Muuttuja, alkeistietotyyppi, merkkijono, literaalivakio, nimetty vakio Tiedon merkkipohjainen tulostaminen 1 Tunnus Java tunnus Java-kirjain Java-numero

Lisätiedot

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python Ohjelmoinnin perusteet Y Python T-106.1208 14.4.2010 T-106.1208 Ohjelmoinnin perusteet Y 14.4.2010 1 / 60 Mitä tämän kurssin jälkeen? T-106.1223 Tietorakenteet ja algoritmit Y (5 op) Tietorakenteita, esim.

Lisätiedot

tään painetussa ja käsin kirjoitetussa materiaalissa usein pienillä kreikkalaisilla

tään painetussa ja käsin kirjoitetussa materiaalissa usein pienillä kreikkalaisilla 2.5. YDIN-HASKELL 19 tään painetussa ja käsin kirjoitetussa materiaalissa usein pienillä kreikkalaisilla kirjaimilla. Jos Γ ja ovat tyyppilausekkeita, niin Γ on tyyppilauseke. Nuoli kirjoitetaan koneella

Lisätiedot