Esittely latautuu. Ole hyvä ja odota

Esittely latautuu. Ole hyvä ja odota

© Lammi-Niskala-Kossarev 1 Kertausta (lu 05-06) Algoritmin perusvaatimukset Miksi ei luonnollista kieltä ohjelmointiin Syntaksi, semantiikka ja pragmatiikka.

Samankaltaiset esitykset


Esitys aiheesta: "© Lammi-Niskala-Kossarev 1 Kertausta (lu 05-06) Algoritmin perusvaatimukset Miksi ei luonnollista kieltä ohjelmointiin Syntaksi, semantiikka ja pragmatiikka."— Esityksen transkriptio:

1 © Lammi-Niskala-Kossarev 1 Kertausta (lu 05-06) Algoritmin perusvaatimukset Miksi ei luonnollista kieltä ohjelmointiin Syntaksi, semantiikka ja pragmatiikka Algoritmin asteittainen tarkentaminen

2 2© Lammi-Niskala-Kossarev Imperatiivinen paradigma Käsketään suorittajaa -> imperatiivi Kyseessä on ns. Imperatiivinen ohjelmointityyli. Myös termi proseduraalinen on käytössä, koska toimenpidesarjoja kutsutaan proseduureiksi. Kun prosessori suorittaa proseduurin, saadaan halutut tulokset.

3 3© Lammi-Niskala-Kossarev Kaakaonkeiton problematiikkaa Yleisyysvaatimus – täyttääkö sen sivun 23. algoritmi? vesikatko kaakao loppu => kaikki tapaukset otettava mukaan eri vaihtoehdot ilmaistava valintoina eri vaihtoehdot edustavat tiloja, joihin suorittaja voi päätyä miten pidetään kirjaa prosessin tiloista?

4 4© Lammi-Niskala-Kossarev Muutujat prosessitilojen säilyttäjinä Muuttuja on nimellä varustettu arvo - arvo muuttuu prosessin aikana Vakio = nimellinen arvo, joka ei muutu Tietokoneessa arvot säilytetään muistipaikoissa Arvot: Lukuja (kokonais-, liukulukuja) Merkkijonoja Loogisia arvoja: tosi/epätosi Yhdystyyppit: listat, puut yms Merkkijono muistipaikassa (esim.)

5 5© Lammi-Niskala-Kossarev Muuttujat imperatiivisessa ohjelmoinnissa Koko ohjelman toiminta on sitä, että muuttujan arvoihin viitataan ja niitä muutetaan. Imperatiivisen ajattelutavan haitta on se, että siinä ajattelumallin pohjalla on enemmänkin kone kuin ihminen. tieto on passiivista, käskyjen käsittelemää Ei-imperatiiviset ohjelmointitavat ovat lähempänä ihmisen tapaa toimia kuin imperatiivinen ohjelmointityyli. esim. olio-ohjelmoinnissa oliot edustavat tietoa, johon on liitetty toimintoja esim. olio-ohjelmoinnissa oliot edustavat tietoa, johon on liitetty toimintoja

6 6© Lammi-Niskala-Kossarev Muuttujien käyttö lauseke on vakioiden, muuttujien (=operandien) ja niitä käsittelevien operaattorien/funktioiden yhdistelmä lauseke on vakioiden, muuttujien (=operandien) ja niitä käsittelevien operaattorien/funktioiden yhdistelmä lausekkeella, kuten sen operandeillakin, on arvo lausekkeella, kuten sen operandeillakin, on arvo lause on synonyymi käskylle lause on synonyymi käskylle sillä ei oikeaoppisesti arvoa, mutta ohjelmointikielet saattavat tästä poiketa sillä ei oikeaoppisesti arvoa, mutta ohjelmointikielet saattavat tästä poiketa asetuslause = arvon antamista muuttujalle asetuslause = arvon antamista muuttujalle

7 7© Lammi-Niskala-Kossarev Asetuslause := asetuslauseessa prosessori laskee tai hakee muistista lausekkeen arvon ja sijoittaa tuloksen maalimuuttujan arvoksi. a := 1 a := a + 1 hypotenuusa := sqrt (kateettiA^2 + kateettiB^2)

8 8© Lammi-Niskala-Kossarev Kaakaonkeiton problematiikkaa monta juojaa monta juojaa toistetaanko algoritmia alusta loppuux Nx kertaa? toistetaanko algoritmia alusta loppuux Nx kertaa? riittääkö peräkkäisyys? riittääkö peräkkäisyys? vai onko parempaa vaihtoehtoa? vai onko parempaa vaihtoehtoa? yleisyysvaatimus! yleisyysvaatimus! käytetään toistoja käytetään toistoja toisto jakaa ongleman samanpituisiin pienempiin osiin, joita yksi kerrallaan toiston eri kierroksilla toisto jakaa ongleman samanpituisiin pienempiin osiin, joita yksi kerrallaan toiston eri kierroksilla kierrosten määrä riippuu yleensä syötteestä kierrosten määrä riippuu yleensä syötteestä ennen toiston aloittamista kierrosten määrä voi olla tiedossa ennen toiston aloittamista kierrosten määrä voi olla tiedossa.. tai sitten ei.. tai sitten ei

9 9© Lammi-Niskala-Kossarev Ohjausrakenteet peräkkäisyys peräkkäisyys valinta valinta toisto toisto mahdollistavat yleisempien algoritmien kirjoittamisen mahdollistavat yleisempien algoritmien kirjoittamisen myös kutsutaan perus tai kontrolli-rakenteiksi myös kutsutaan perus tai kontrolli-rakenteiksi riittävät minkä tahansa algoritmin esittämiseen! riittävät minkä tahansa algoritmin esittämiseen!

10 10© Lammi-Niskala-Kossarev Peräkkäisyys käskyt myös muistissa käskyt myös muistissa muistipaikoilla on numerojärjestys muistipaikoilla on numerojärjestys eteneminen seuraavaan käskyyn tapahtuu, kun siirrytään muistipaikkaan, jonka järj.numero on nykyinen + 1 eteneminen seuraavaan käskyyn tapahtuu, kun siirrytään muistipaikkaan, jonka järj.numero on nykyinen + 1 peräkkäisyys on oletusohjaustapa peräkkäisyys on oletusohjaustapa esim. s. 23 kaakaonkeitto on peräkkäinen algoritmi esim. s. 23 kaakaonkeitto on peräkkäinen algoritmi

11 11© Lammi-Niskala-Kossarev Valinta mahdollisuus käsitellä vaihtoehtoja mahdollisuus käsitellä vaihtoehtoja Yksinkertainen valintarakenne IF ehtoTHEN toimintoENDIF Toiminto-osan käskyt tehdään vain, jos ehto on tosi. Esim. IF aurinko paistaaTHEN mene ulos ENDIF

12 12© Lammi-Niskala-Kossarev Valinta Valinta kahden vaihtoehdon väliltä: IF ehto THEN toiminto1 ELSE toiminto2 ENDIF Jos ehto on tosi, tehdään toiminto1, muuten tehdään toiminto2. Jompikumpi toiminnoista aina tulee suoritetuksi. Esim. IF sataa THEN mene ulos laulamaan ELSE tekee läksyjä ENDIF kirjoitustyyli: sisennykset

13 13© Lammi-Niskala-Kossarev Kommentit Monimutkaiset tilanteet on syytä varustaa kommenteilla. Ne kirjoitetaan (tässä) merkkiparien (* ja *) väliin. Oikeissakin ohjelmointikielissä on kommentteja! Esim. (* seuraava lause määrää minimin *) IF a <b THEN min := a ELSE min := b ENDIF

14 14© Lammi-Niskala-Kossarev Kolmen luvun minimin laskeminen Esimerkki: kolmesta luvusta pienin: IF x < y THEN IF x < z THEN min := x ELSE min:= z ENDIF ELSE IF y < z THEN min := y ELSE min := z ENDIF

15 15© Lammi-Niskala-Kossarev Monivalinta IF-lausetta selkeämpi monen vaihtoehdon tapauksessa: CASE mikä OF tapaus1: toiminto1 tapaus2: toiminto2 tapausn: toiminton OTHER: toiminto n+1 ENDCASE (vrt. s. 29)

16 16© Lammi-Niskala-Kossarev CASE-esimerkki CASE tänään OF Maanantai: huomenna := Tiistai Tiistai: huomenna := Keskiviikko Keskiviikko: huomenna := Torstai Torstai: huomenna := Perjantai Perjantai: huomenna := Lauantai Lauantai: huomenna := Sunnuntai Sunnuntai: huomenna := Maanantai ENDCASE

17 17© Lammi-Niskala-Kossarev Totuusfunktiot xy x AND y x OR y NOT x FFFFT FTFTT TFFTF TTTTF

18 18© Lammi-Niskala-Kossarev Toisto Rakenne mahdollistaa sen, että tiettyä algoritmin osaa voidaan toistaa useita kertoja: toisto-osaa ei tarvitse kirjoittaa moneen kertaan. Esimerkki: kaakaon juojia N toista N kertaa: ota seuraava kuppi pane 3 lusikallinen kaakaota kuppiin

19 19© Lammi-Niskala-Kossarev Toisto.. Synonyymejä: toisto (repetition), iteraatio (iteration), silmukka (loop). Toisto on definiitti, jos toistokertojen lukumäärä on ennalta tiedossa. indefiniitti, jos toistokertojen lukumäärä ei ole ennalta tiedossa. Tällöin toistoon on liitettävä päättymisehto, jonka toteutuminen pysäyttää toiston. Ikuinen toisto: päättymisehto ei koskaan toteudu.

20 20© Lammi-Niskala-Kossarev Definiittitoisto I: (* toiminto-osa tehdään N kertaa: *) REPEAT N TIMES toiminto ENDREPEAT II:(*toiminto-osa tehdään jokaiselle ns. listan alkiolle (listoja tarkastellaan myöhemmin): *) FOR jokaiselle listan alkiolle DO toiminto ENDFOR

21 21© Lammi-Niskala-Kossarev Definiittitoisto (jatkuu) FOR i:=1, 2,…,N DO toiminto ENDFOR toiminto-osa tehdään N kertaa, i-muuttuja (ns. kierroslaskuri) saa vuoron perään arvot 1, 2, 3,…, N (N >= 1). Jos alku- ja loppuarvot ovat samoja, toisto tehdään vain kerran. Jos alkuarvo on suurempi kuin loppuarvo, ei toistoa tehdä yhtään kertaa. Kierroslaskuri voi saada muunkin arvoalueen arvoja, esim. peräkkäiset viikonpäivät, kuukaudet, vuodet tai aakkoston kirjaimia (ks. esimerkkejä).

22 22© Lammi-Niskala-Kossarev Indefiniittitoisto Alkuehtoinen toisto: WHILE ehto DO toiminto ENDWHILE Toimintoa toistetaan niin kauan kuin ehto on voimassa. Ehtoa kokeillaan aina ennen toiston aloittamista. Loppuehtoinen toisto: REPEAT toiminto UNTIL ehto Toimintoa toistetaan niin kauan kunnes ehto on voimassa. Ehtoa kokeillaan aina toiston jälkeen. Definiitti- tai indefiniittitoisto valitaan sen mukaan kumpi sopii ao. käyttötilanteeseen parhaiten.

23 23© Lammi-Niskala-Kossarev Toisto..

24 24© Lammi-Niskala-Kossarev Toisto Esimerkit Esimerkki (osoitteen hakeminen listasta): WHILE annettu nimi ei ole löytynyt AND lista ei ole loppu DO Ota listalta seuraava henkilö IF tämän henkilön nimi=etsittävän henkilön nimi THEN Ota henkilön osoite tästä listan kohdasta ENDIF ENDWHILE

25 25© Lammi-Niskala-Kossarev Kertoma

26 26© Lammi-Niskala-Kossarev Lukujonon maksimi

27 27© Lammi-Niskala-Kossarev

28 28© Lammi-Niskala-Kossarev

29 29© Lammi-Niskala-Kossarev

30 30© Lammi-Niskala-Kossarev

31 31© Lammi-Niskala-Kossarev Lajitteluesimerkki Nimilistaa akkosjärjestykseen menetelmänä bubble sort, kuplalajittelu Sovelletaan algoritmin suunnitteluun asteittain tarkentuvaa menetelmää: tarkennetaan algoritmia vaiheittain.

32 32© Lammi-Niskala-Kossarev Osoittaminen nimiin Sovitaan, että merkintä nimi[i] tarkoittaa listan i:nnettä nimeä esimerkiksi nimi[3] on listan 3. nimi. Olkoon nimiä N kpl, tässä esimerkissä siis N = 7. nimi[1] Jussi nimi[2] Kati nimi[3] Fredi nimi[4] Bertta nimi[5] Sami nimi[6] Jaana nimi[7] Mari

33 33© Lammi-Niskala-Kossarev

34 34© Lammi-Niskala-Kossarev Lopetusehdon tarkennus


Lataa ppt "© Lammi-Niskala-Kossarev 1 Kertausta (lu 05-06) Algoritmin perusvaatimukset Miksi ei luonnollista kieltä ohjelmointiin Syntaksi, semantiikka ja pragmatiikka."

Samankaltaiset esitykset


Iklan oleh Google