5/20: Algoritmirakenteita III

Samankaltaiset tiedostot
Java-kielen perusteita

Koottu lause; { ja } -merkkien väliin kirjoitetut lauseet muodostavat lohkon, jonka sisällä lauseet suoritetaan peräkkäin.

4/20: Algoritmirakenteita II

19/20: Ikkuna olio-ohjelmoinnin maailmaan

12/20: Bitit talteen

11. Javan valintarakenteet 11.1

12. Javan toistorakenteet 12.1

11. Javan valintarakenteet 11.1

12. Javan toistorakenteet 12.1

11. Javan toistorakenteet 11.1

Alkuarvot ja tyyppimuunnokset (1/5) Alkuarvot ja tyyppimuunnokset (2/5) Alkuarvot ja tyyppimuunnokset (3/5)

Muuttujat ja kontrolli. Ville Sundberg

13. Loogiset operaatiot 13.1

9/20: Puhu mun stdinille

Sisällys. 12. Javan toistorakenteet. Yleistä. Laskurimuuttujat

Java-kielen perusteet

7/20: Paketti kasassa ensimmäistä kertaa

Java-kielen perusteet

11/20: Konepelti auki

Vertailulauseet. Ehtolausekkeet. Vertailulauseet. Vertailulauseet. if-lauseke. if-lauseke. Javan perusteet 2004

812347A Olio-ohjelmointi, 2015 syksy 2. vsk. X Poikkeusten käsittelystä

Ehto- ja toistolauseet

6/20: Tietorakenteita

13. Loogiset operaatiot 13.1

Sisällys. 11. Javan toistorakenteet. Laskurimuuttujat. Yleistä

3/20: Algoritmirakenteita I

Ehto- ja toistolauseet

Perusteet. Pasi Sarolahti Aalto University School of Electrical Engineering. C-ohjelmointi Kevät Pasi Sarolahti

Ohjausrakenteet. Valinta:

14. Poikkeukset 14.1

Sisällys. 14. Poikkeukset. Johdanto. Johdanto

ITKP102 Ohjelmointi 1 (6 op)

Perusteet. Pasi Sarolahti Aalto University School of Electrical Engineering. C-ohjelmointi Kevät Pasi Sarolahti

Tutoriaaliläsnäoloista

1. Mitä tehdään ensiksi?

14. Poikkeukset 14.1

Ohjelmointiharjoituksia Arduino-ympäristössä

Sisällys JAVA-OHJELMOINTI Osa 3: Laskennan ohjaus. Lohkolause (block) Peräkkäinen laskenta. Lohkon käyttö. Esimerkki

Ohjelmointi 2 / 2008 Välikoe / Pöytätestaa seuraava ohjelma.

Sisällys. 1. Omat operaatiot. Yleistä operaatioista. Yleistä operaatioista

Sisällys. 14. Poikkeukset. Johdanto. Johdanto

Ohjelmointi 2 / 2010 Välikoe / 26.3

Luento 5. Timo Savola. 28. huhtikuuta 2006

1. Omat operaatiot 1.1

8/20: Luokat, oliot ja APIt

ITKP102 Ohjelmointi 1, syksy 2007

Metodien tekeminen Javalla

Olion elinikä. Olion luominen. Olion tuhoutuminen. Olion tuhoutuminen. Kissa rontti = null; rontti = new Kissa();

17/20: Keittokirja IV

Algoritmit. Ohjelman tekemisen hahmottamisessa käytetään

Lauseet. Ehdollinen lause. Tämän osan sisältö. Ehdollinen lause. Esimerkkejä. Yksinkertainen ehto. Lohkosulut ja sisennys. Ehdollinen lause if

Tähtitieteen käytännön menetelmiä Kevät 2009 Luento 5: Python

Poikkeustenkäsittely

Metodit. Metodien määrittely. Metodin parametrit ja paluuarvo. Metodien suorittaminen eli kutsuminen. Metodien kuormittaminen

Java-kielen perusteita

14/20: Keittokirja I

P e d a c o d e ohjelmointikoulutus verkossa

13/20: Kierrätys kannattaa koodaamisessakin

Ohjelmoinnin perusteet Y Python

15. Ohjelmoinnin tekniikkaa 15.1

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

Ohjelmointitaito (ict1td002, 12 op) Kevät Java-ohjelmoinnin alkeita. Tietokoneohjelma. Raine Kauppinen

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

Sisällys. 3. Pseudokoodi. Johdanto. Johdanto. Johdanto ja esimerkki. Pseudokoodi lauseina. Kommentointi ja sisentäminen.

JAVA-PERUSTEET. JAVA-OHJELMOINTI 3op A JAVAN PERUSTEET LYHYT KERTAUS JAVAN OMINAISUUKSISTA JAVAN OMINAISUUKSIA. Java vs. C++?

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

811120P Diskreetit rakenteet

16. Ohjelmoinnin tekniikkaa 16.1

Sisällys. 17. Ohjelmoinnin tekniikkaa. Aritmetiikkaa toisin merkiten. for-lause lyhemmin

Loogiset konnektiivit

Ohjelmassa henkilön etunimi ja sukunimi luetaan kahteen muuttujaan seuraavasti:

ITKP102 Ohjelmointi 1, syksy 2007

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

Listarakenne (ArrayList-luokka)

13. Hyvä ohjelmointitapa (osa 1) 13.1

Algoritmit 1. Demot Timo Männikkö

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

Sisällys. 16. Ohjelmoinnin tekniikkaa. Aritmetiikkaa toisin merkiten. Aritmetiikkaa toisin merkiten

16. Ohjelmoinnin tekniikkaa 16.1

Kesälukio 2000 PK2 Tauluharjoituksia I Mallivastaukset

1. luento. Ohjelmointi (C) T0004 Syksy luento. 1. luento. 1. luento. 1. luento. kurssin sisältö ja tavoitteet työmuodot.

Ohjelmointi 1 / syksy /20: IDE

811120P Diskreetit rakenteet

14. Hyvä ohjelmointitapa 14.1

OPPITUNTI 5 Ohjelman kulku

Ohjelmointi, Java ja tärppejä

Olio-ohjelmointi Javalla

Ohjelmoinnin perusteet Y Python

Java kahdessa tunnissa. Jyry Suvilehto

7. Oliot ja viitteet 7.1

Sisällys. 7. Oliot ja viitteet. Olion luominen. Olio Java-kielessä

ITKP102 Ohjelmointi 1, syksy 2007

ITKP102 Ohjelmointi 1 (6 op)

Rinnakkaisohjelmointi kurssi. Opintopiiri työskentelyn raportti

Palautetta viime luennosta

Python-ohjelmointi Harjoitus 2

Kielioppia: toisin kuin Javassa

815338A Ohjelmointikielten periaatteet

Sisällys. Yleistä attribuuteista. Näkyvyys luokan sisällä ja ulkopuolelta. Attribuuttien arvojen käsittely aksessoreilla. 4.2

Ohjelmoinnin perusteet Y Python

Transkriptio:

Ohjelmointi 1 / syksy 2007 5/20: Algoritmirakenteita III Paavo Nieminen nieminen@jyu.fi Tietotekniikan laitos Informaatioteknologian tiedekunta Jyväskylän yliopisto Ohjelmointi 1 / syksy 2007 p.1/17

Tämän luennon rakenne Täydennystä olioihin ja muuttujiin: viitteet, viitetyyppit, vakiomuuttuja Totuusarvot ja loogiset lausekkeet ja operaattorit. Ehtorakenne if-else ja ehdollinen suoritus. Rakenteet for, while, do-while ja toistuva suoritus. Muunnelmat suoritusjärjestyksessä: return, break, continue. Valintarakenne switch ja valinnainen suoritus. Poikkeusten käsittely try-catch-finally alustavasti (algoritmillinen idea ja vastaavat lauseet Javan syntaksissa) Ohjelmointi 1 / syksy 2007 p.2/17

Täydennystä olioihin: viitteet, viitetyyppit Eilisen lopusta oliolla voi olla viite toiseen olioon: Viitemuuttuja on (vain) osoite tai osoitin tietyntyyppiseen olioon. Itse olio ei sijaitse muuttujassa vaan erillään ns. kekomuistissa! Tarkennetaan myöhemmin... Samaan olioon voi olla miten monta viitettä tahansa! Tai ei yhtään, jolloin oliolla ei ole merkitystä. Se on eloton roska! Viitemuuttujan arvo voi olla null, jolloin se ei viittaa mihinkään. Ohjelmointi 1 / syksy 2007 p.3/17

Täydennystä muuttujan ideaan: vakiomuuttuja, globaali muuttuja Määre final estää muuttamasta muuttujan arvoa alustuksen jälkeen. Tällaista voi sanoa vakiomuuttujaksi (hassun oloinen nimi mutta käytetty) tai vakioksi. Määreellä final on muiden kuin muuttujan yhteydessä muita merkityksiä. Globaali muuttuja on sellainen, joka näkyy joka paikkaan (vähintään käännösyksikön sisällä) Ainoa turvallinen globaali muuttuja on vakiomuuttuja. Tällainen on yleensä määreillä static final. (Esim. Math-luokan matemaattiset vakiot) Ohjelmointi 1 / syksy 2007 p.4/17

Algoritmista kohti ohjelmaa Ainakin alkuvaiheessa luo ohjelma näin: Ensin suomen kieltä. Raapustuksia kynällä ja paperilla. Sitten täsmennetty idea ja tarvittavat muuttujat. Sitten lausekielelle tai pseudokoodiksi. Sitten Java-ohjelmaksi. Myöhemmin voit alkaa hypätä vaiheita yli, kun vaiheet alkavat tapahtua ajatuksissasi automaattisesti. Aina: Monen algoritmin ytimessä on propositiologiikka ja ehdot, jotka ovat tosia tai epätosia tilanteen mukaan. Ohjelmointi 1 / syksy 2007 p.5/17

Logiikkaa 1/3: Totuusarvo Totuusarvon merkitys: jokin väite on totta tai ei ole totta Totuusarvotyyppi Javassa ja monissa muissa kielissä on boolean (matemaatikko George Boolen mukaan) Arkihavainto väittämistä: Sataa vettä. (Totuusarvon selvittämiseksi on katsottava ulos tmv.) On ilta. (Totuusarvon selvittämiseksi on katsottava kelloa tmv.) Pätee että 5 < 10 (Totuusarvo koulumatematiikassa on true.) Pätee että 10 < 5 (Totuusarvo koulumatematiikassa on false.) Ohjelmointi 1 / syksy 2007 p.6/17

Logiikkaa 2/3: Loogiset lausekkeet Looginen lauseke on lauseke, jonka tuloksena on totuusarvo. Totuusarvoja antavat lausekkeen osana (esimerkkinä Java): Vertailuoperaattorit: < <= == >= >!= Loogiset operaattorit: &&! Aliohjelmat ja metodit, joiden tyyppi on totuusarvo Katsotaan käytännössä Java-esimerkkejä operaattoreista ja aliohjelmista. Ohjelmointi 1 / syksy 2007 p.7/17

Logiikkaa 3/3: Loogiset operaattorit Tässä samalla totuustaulun idea: A B (A && B) true true true true false false false true false false false false A B (A B)!(A B) true true true false true false true false false true true false false false false true A!A true false false true Ohjelmointi 1 / syksy 2007 p.8/17

Ehtorakenne if-else Syntaksi enemmän avattuna: if (Ehto) Lause1 [else Lause2] Block : assert else if Par Suoritus: Jos suluissa oleva totuusarvolauseke Ehto saa totuusarvon true, suoritetaan Lause1. Voi olla else -jatke (mutta ei ole pakko). Lause2 suoritetaan, jos Ehto EI ole tosi eli se saa totuusarvon false. Lauseet voivat luonnollisesti olla lohkoja, kuten lause aina voi olla. for ( ForControl ) while Par do while Par try Block finally Block switch Par { SwitchBlockGroups } synchronized Par Block return throw break continue : Ohjelmointi 1 / syksy 2007 p.9/17

Toistoja 1/3: for Syntaksi tekstimuodossa: for (AlkuasetusEhtoPaivitys) Lause Suoritus: Ensin suoritetaan Alkuasetus Sitten tarkistetaan Ehto jatkolle: Jos ehto on tosi, Lause suoritetaan Muutoin rakenteen suoritus päättyy Lauseen suorituksen jälkeen suoritetaan Paivitys Tarkempi syntaksi ohitetaan toistaiseksi Block : assert else if Par for ( ForControl ) while Par do while Par try Block finally Block switch Par { SwitchBlockGroups } synchronized Par Block return throw break continue : Ohjelmointi 1 / syksy 2007 p.10/17

Toistoja 2/3: while Block assert : if Par else Syntaksi tekstimuodossa: while (Ehto) Lause Suoritus: Jos Ehto on tosi, Lause suoritetaan Sama toistuu kunnes Ehto ei enää ole tosi for ( ForControl ) while Par do while Par try Block finally Block switch Par { SwitchBlockGroups } synchronized Par Block return throw break continue : Ohjelmointi 1 / syksy 2007 p.11/17

Toistoja 3/3: do-while Block assert : if Par else Syntaksi tekstimuodossa: do Lause while (Ehto) Suoritus: Lause suoritetaan aina kerran for ( ForControl ) while Par do while Par try Block finally Block switch Par { SwitchBlockGroups } synchronized Par Block Sen jälkeen tarkistetaan Ehto Toistetaan Lauseen suoritus aina kunnes lopussa Ehto on epätosi. return throw break continue : Ohjelmointi 1 / syksy 2007 p.12/17

Muunnelmat suoritusjärjestyksessä Syntaksit tekstimuodossa (käyttö lohkolauseissa!): return [Lauseke] break [LauseenNimi] continue [LauseenNimi] Block : assert else if Par for ( ForControl ) while Par return lopettaa aliohjelman, oltiinpa algoritmirakenteen suorituksessa tahi ei. Siis katkaisee toistot ja ehdot! break katkaisee sisimmän ympäröivän [tai ulomman, nimetyn] lauseen mukaisen rakenteen continue jatkaa suoritusta seuraavasta kierroksesta (keskeyttää siis yhden toistokerran, ei koko toistoa!) Ohjelmointi 1 / syksy 2007 p.13/17 do while Par try Block finally Block switch Par { SwitchBlockGroups } synchronized Par Block return throw break continue :

Valintarakenne switch Syntaksi tekstimuodossa: Block switch (Lauseke) { Keissit } assert : Suoritus: Soveltuu tyypeille byte, short, char ja int (ja ns. numeroidulle tyypille). Idea on valita suoritettava lause useista vaihtoehdoista. break-lause keskeyttää switch-rakenteen. Se on tärkeä muistaa kirjoittaa, jos näin on tarkoitus! Keissit sisältää case VakioLauseke: Lause -ryhmiä ja default: -tapauksen. Syntaksi tarkemmin esimerkin kautta. else if Par for ( ForControl ) while Par do while Par try Block finally Block switch Par { SwitchBlockGroups } synchronized Par Block return throw break continue : Ohjelmointi 1 / syksy 2007 p.14/17

Poikkeusten käsittely alustavasti: try-catch-finally Suoritus: Aliohjelmat voivat ns. heittää poikkeuksen, mikäli tulee joku ns. poikkeava tilanne. Heitto tapahtuu, kun throw-lause suoritetaan. Throw heittää poikkeusolion, ja suoritus hyppää silloin aliohjelmien kutsupinossa taaksepäin niin kauas kunnes joku kutsuja on varautunut poimimaan poikkeusolion luokkaa vastaavan poikkeuksen Varautuminen tapahtuu try-catch-finally -rakenteella. Tähän palataan varmasti myöhemmin, mm. tiedostojen yhteydessä. Block : assert else if Par for ( ForControl ) while Par do while Par try Block finally Block switch Par { SwitchBlockGroups } synchronized Par Block return throw break continue : Ohjelmointi 1 / syksy 2007 p.15/17

Seuraavat demot Seuraavissa demoissa on algoritmirakenteiden soveltamista. Tehtäviä on paljon. Älkää polttako itseänne loppuun kyllä tästä kurssista voi saada vitosen vaikkei tekisi 110% kaikista demoista! Valitse mielekkäitä demotehtäviä ja huolehdi, että tekemisen lisäksi myös opit. Ohjelmointi 1 / syksy 2007 p.16/17

Oppikirjaviitteitä Mistä kohtaa oppikirjaa (Mika Vesterholm ja Jorma Kyppö: Java-ohjelmointi, 6., uudistettu painos) löytyy näitä samoja asioita: noin sivut 138-173, koko luku 6 Kontrollirakenteet. Omien olioluokkien tekemisestä kertovat kohdat eivät (ainakaan vielä) ole kurssin keskiössä, vaan Javan syntaktiset elementit, tietotyypit ja perusohjelman rakenne. Terminologia ja lähestymistapa on kirjassa hieman eri kuin luennoilla. Pohjimmiltaan kyse on samoista asioista! Ohjelmointi 1 / syksy 2007 p.17/17