4/20: Algoritmirakenteita II

Samankaltaiset tiedostot
5/20: Algoritmirakenteita III

11/20: Konepelti auki

7/20: Paketti kasassa ensimmäistä kertaa

9/20: Puhu mun stdinille

Java-kielen perusteet

3/20: Algoritmirakenteita I

8/20: Luokat, oliot ja APIt

Java-kielen perusteet

19/20: Ikkuna olio-ohjelmoinnin maailmaan

6/20: Tietorakenteita

12/20: Bitit talteen

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

Olio-ohjelmointi Javalla

17/20: Keittokirja IV

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

Javan perusteet. Ohjelman tehtävät: tietojen syöttö, lukeminen prosessointi, halutun informaation tulostaminen tulostus tiedon varastointi

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

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

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

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

1. Omat operaatiot 1.1

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

ITKP102 Ohjelmointi 1 (6 op)

2. Lisää Java-ohjelmoinnin alkeita. Muuttuja ja viittausmuuttuja (1/4) Muuttuja ja viittausmuuttuja (2/4)

Javan perusteita. Janne Käki

7. Näytölle tulostaminen 7.1

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

ITKP102 Ohjelmointi 1, syksy 2007

Muuttujat ja kontrolli. Ville Sundberg

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

ITKP102 Ohjelmointi 1 (6 op)

Sisällys. 12. Näppäimistöltä lukeminen. Yleistä. Yleistä

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python

13/20: Kierrätys kannattaa koodaamisessakin

Ohjelmoinnin jatkokurssi, kurssikoe

ITKP102 Ohjelmointi 1 (6 op)

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

12. Näppäimistöltä lukeminen 12.1

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

Ohjelmointiharjoituksia Arduino-ympäristössä

Java kahdessa tunnissa. Jyry Suvilehto

Java-kielen perusteita

Java-kielen perusteet

ITKP102 Ohjelmointi 1 (6 op), arvosteluraportti

Ohjelmoinnin perusteet Y Python

Metodien tekeminen Javalla

13. Loogiset operaatiot 13.1

Ohjelmoinnin perusteet Y Python

815338A Ohjelmointikielten periaatteet Harjoitus 2 vastaukset

ITKP102 Ohjelmointi 1 (6 op)

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

ITKP102 Ohjelmointi 1, syksy 2007

815338A Ohjelmointikielten periaatteet Harjoitus 5 Vastaukset

Tietotyypit ja operaattorit

Taulukot. Jukka Harju, Jukka Juslin

Ohjelmointi 1 / syksy /20: IDE

2. Olio-ohjelmoinista lyhyesti 2.1

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

ITKP102 Ohjelmointi 1, syksy 2007

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

Harjoitus Olkoon olemassa luokat Lintu ja Pelikaani seuraavasti:

4. Olio-ohjelmoinista lyhyesti 4.1

Harjoitus 3 (viikko 39)

17. Javan omat luokat 17.1

14. Poikkeukset 14.1

Tietojen syöttäminen ohjelmalle. Tietojen syöttäminen ohjelmalle Scanner-luokan avulla

Tutoriaaliläsnäoloista

Olio-ohjelmointi: Luokkien toteuttaminen. Jukka Juslin

System.out.printf("%d / %d = %.2f%n", ekaluku, tokaluku, osamaara);

System.out.printf("%d / %d = %.2f%n", ekaluku, tokaluku, osamaara);

17. Javan omat luokat 17.1

Oliosuunnitteluesimerkki: Yrityksen palkanlaskentajärjestelmä

Ehto- ja toistolauseet

Rajapinta (interface)

Kielioppia: toisin kuin Javassa

Sisällys. 14. Poikkeukset. Johdanto. Johdanto

C-ohjelma. C-ohjelma. C-ohjelma. C-ohjelma. C-ohjelma. C-ohjelma. Operaatioiden suoritusjärjestys

Ehto- ja toistolauseet

20. Javan omat luokat 20.1

Sisällys. 20. Javan omat luokat. Java API. Pakkaukset. java\lang

Ohjelmassa muuttujalla on nimi ja arvo. Kääntäjä ja linkkeri varaavat muistilohkon, jonne muuttujan arvo talletetaan.

Luokat ja oliot. Ville Sundberg

Ohjelmoinnin perusteet Y Python

Java-kielen perusteita

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

19. Olio-ohjelmointia Javalla 19.1

Ohjelmoinnin perusteet Y Python

Python-ohjelmointi Harjoitus 2

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

Ohjelmoinnin peruskurssi Y1

811120P Diskreetit rakenteet

16. Javan omat luokat 16.1

13. Loogiset operaatiot 13.1

8. Näppäimistöltä lukeminen 8.1

812341A Olio-ohjelmointi, Olio-ohjelmoinnin peruskäsitteet ja Java-kieli

14. Poikkeukset 14.1

Ohjelmoinnin peruskurssi Y1

Sisällys. 14. Poikkeukset. Johdanto. Johdanto

Transkriptio:

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

Tämän luennon rakenne Tarkennuksia edelliseen luentoon Aliohjelman idea tarkemmin: Parametrit, paluuarvo tyyppeineen ja näiden riippuvuus Aliohjelmakutsun käyttäminen lausekkeen osana Alustavasti aliohjelma-aktivaatiosta: parametrinvälitys ja paluuarvo lausekkeen arvonmäärityksen osana, suorituksen siirtyminen aliohjelmaan ja takaisin Olion idea: mikä ihme se on. Rajapinta, metodit. Katsaus Javan API-dokumentaatioon. Syötteen lukeminen Javassa: System.in -olion ja Scanner -luokan olion soveltaminen. Totuusarvot ja loogiset lausekkeet, ehtolause Ohjelmointi 1 / syksy 2007 p.2/26

Mihin viimeksi päästiin Muuttuja (yleiskuva) tyyppi (Type) nimi (Identifier) arvon esitysmuoto suorituksen aikana tietokoneessa (lähinnä muistipaikkojen määrä tyypistä riippuen) Vakion esitysmuoto lähdekoodissa (erilaiset literaalit) Java-virtuaalikone eli JVM Erittäin alustavasti aliohjelmista ja literaalien kirjoittamisesta Operaattorit ja sijoituslause (eli sijoitusoperaattorin = toiminta) Ohjelmointi 1 / syksy 2007 p.3/26

Täydennystä 1/2: primitiivityypit ja literaalit Tyypin esitysmuodon koko ilmoitettu bitteinä. Yksi tavu (tyypillinen yhden muistipaikan koko) on 8 bittiä. Tyyppi koko literaaliesim. Totuusarvot boolean? true, false Merkit char 16 A, \u0041 Kokonaisluvut byte 8 14, 123, -128, 0x7A short 16-14, 0123, 32767 int 32 14, -1234, 32767 long 64 14L, 9223372036854775807 Liukuluvut float 32 14.0, 1.234, 3.4e38 double 64 14.0, 1.234, 4.9e-324 Ohjelmointi 1 / syksy 2007 p.4/26

Täydennystä 2/2: tyypit lausekkeissa ja operandeissa Ohjelmointikielet, mm. Java, ovat armottoman täsmällisiä operandien tyyppien suhteen! Esim. jakolaskuoperaattori / toimii eri tavoin kokonaisluvuille ja liukuluvuille! kokonaisluku jaettuna kokonaisluvulla antaa osamäärän; jakojäännös jää huomioimatta! Sen saa kokonaislukuoperaattorilla % eli modulo-operaattorilla. liukulukujakolasku on kyseessä, jos vähintään toinen /:n operandeista on liukuluku. Samoin muiden laskuoperaattoreiden osalta. Operandien tyypit määräytyvät: Literaaleissa kirjoitusasun perusteella Muuttujissa muuttujan tyypin mukaan Lausekkeissa ohjelmointikielelle määritellyn säännöstön mukaan. Javan säännöstö kuvaillaan tuolla: http://java.sun.com/docs/books/jls/third_edition/html/conversions.html http://java.sun.com/docs/books/jls/third_edition/html/expressions.html... mutta teksti on varmasti liian paksua tässä vaiheessa koulutusta. Etenemme pieni askel kerrallaan; aloitetaan jakolaskusta :-) Kaikki on tunnettava jo käännösvaiheessa. Ohjelmointi 1 / syksy 2007 p.5/26

Aliohjelma Näin tullaan etenemään: 1 Abstrakti idea: mikä on aliohjelma 2 Aliohjelmakutsun tekeminen 3 Aliohjelman määrittely 4 Aliohjelman suoritus tietokoneessa (tai virtuaalikoneessa) Ohjelmointi 1 / syksy 2007 p.6/26

Aliohjelma 1/4: idea Joitain toimenpiteitä tarvitsee tehdä usein lähes samalla tavoin. Olisi hyvä, jos ei joka paikkaan tarvitse kirjoittaa uudelleen samaa toimenpidettä, vaan lauserimpsu olisi kirjoitettu vain yhteen paikkaan. Ja myös jos joku aliohjelma on pitkä, se on muutenkin hyvä jakaa pienempiin osiin, joita kutsutaan erikseen. Aliohjelma usein laskee parametreista riippuvan tuloksen (mutta ei ole pakko). Esimerkki: Tanssilattian pinta-alan laskeminen parketin mittojen funktiona: ala = pituus * leveys. Ohjelmointi 1 / syksy 2007 p.7/26

Aliohjelma 2/4: kutsuminen Miten aliohjelmaa kutsutaan? Aliohjelman paluuarvolle on määritelty tyyppi, mikäli aliohjelma laskee jonkun tuloksen. Kutsun voi tehdä missä tahansa lausekkeessa kohdassa, johon soveltuu tyypin mukainen lukuarvo. Kutsun syntaksissa on aliohjelman nimi (Identifier) ja parametrilista sulkujen sisällä. Aliohjelma saa käyttöönsä parametrien kutsuhetkiset arvot. Paluuarvo (eli aliohjelman laskema tulos) sijoittuu lausekkeeseen kohtaan, jossa kutsu on kirjoitettu. Ohjelmointi 1 / syksy 2007 p.8/26

Aliohjelma 3/4: määrittely Aliohjelman määrittelyssä on: Otsikko-osa, joka kertoo tyypin, nimen ja parametrien tyypit sekä nimet. (sanotaan formaalit eli muodolliset parametrit). Runko, jossa voidaan laskea käyttäen parametrien saamia arvoja Runko on lohko (Block) eli lauseita kiharasulkeiden sisällä. Suoritus päättyy return-lauseeseen tai lohkon loppuun mikäli mitään arvoa ei palaudu (aliohjelman tyypiksi on määritelty void ). Ohjelmointi 1 / syksy 2007 p.9/26

Aliohjelma 4/4: suoritus Aliohjelman suoritus tietokoneessa: Kutsu tapahtuu osana lauseketta. Kutsun kohdalla suoritetaan aliohjelman lohko. Parametrien lukuarvot kopioituvat, ja niitä käytetään kuten aliohjelman paikallisia muuttujia. Aliohjelman sisältä voidaan kutsua lisää aliohjelmia! Lopulta suoritus päättyy, jolloin paluuarvo sijoittuu lausekkeeseen ja lausekkeen operaattoreiden suoritus jatkuu normaalisti. (Yhtä suorituskertaa sanotaan aktivaatioksi ). Ohjelmointi 1 / syksy 2007 p.10/26

Aliohjelma 1920-lukulaisena järjestelmänä Myös aliohjelmaan soveltuu digitaalisen järjestelmän musta laatikko -kuvaelma: Ohjelmointi 1 / syksy 2007 p.11/26

Lisäselvitys: Paikallinen muuttuja Paikallinen muuttuja ja lohkot: Paikallinen eli lokaali muuttuja on aliohjelman parametri tai aliohjelmalohkon sisällä esitelty muuttuja. Mihin ikinä sopii kirjoittaa lause, sinne sopii kirjoittaa myös lohko. Lohko on aina kiharasulkeiden sisällä olevia peräkkäisiä lauseita. Lohkon sisällä voi esitellä paikallisia muuttujia. Paikallinen muuttuja ei koskaan elä oman lohkonsa loppumisen jälkeen! Sisäkkäisessä lohkossa esitelty muuttuja peittää ulomman lohkon samannimiset (muuttujan nimen käyttö tarkoittaa sisimmässä ympäröivässä lohkossa määriteltyä muuttujaa). Ohjelmointi 1 / syksy 2007 p.12/26

Muistimallista alustavasti: pinomuisti Alustava huomio Java-virtuaalikoneen muistimallista (eli siitä, missä kaikki tieto ajatellaan sijaitsevan, kun kone suorittaa ohjelmaa): Aliohjelmalohkon sisällä esitellyt muuttujat elävät aliohjelman ajan. Tila varataan pinomuistista. Asia käsitellään myöhemmin tarkemmin, ja samalla mietitään kekomuistia, jossa olioyksilöiden tiedot (sisäinen tila sekä mahdolliset yhteydet muihin olioihin) sijaitsevat. Ohjelmointi 1 / syksy 2007 p.13/26

Kohti syötteen lukemista Kysymys: Haluaisin lukea käyttäjän konsoliin kirjoittamia syötteitä (so. standardisyötevirtaa) ja myös ymmärtää, mitä siinä tapahtuu. Miten pitäisi edetä? Yksi mahdollinen vastaus: Javassa melkein kaikki asiat, mm. syöttö ja tulostus on kapseloitu olioiksi. Tutustu siis ensin olioon ja rajapintaan käsitteinä ja siihen, miten olioita käytetään Javassa. Sitten selvitä, millaiset oliot Javassa tarjoavat keinot syöttöön ja tulostukseen. Opettele käyttämään näiden olioiden rajapintaa. Tarkennuksia ja synonyymejä viimeiseen kohtaan: Eli siis opettele luomaan olioita tarkoituksenmukaisesti ja lähettämään olioille tarkoituksenmukaisia viestejä. Eli siis opettele kutsumaan olioiden julkisia metodeja tarkoituksenmukaisesti. Rajapintadokumentaation lukeminen on tässä A ja O! Ohjelmointi 1 / syksy 2007 p.14/26

Oliot ja soveltaminen 1/9: olion idea Mikä on olio? Reaalimaailmassa, filosofisesti tarkastellen, olio on joku olemassa oleva (tai kuviteltukin) asia, jota voimme ajatella ja joka voi liittyä muihin olioihin ja mahdollisesti olla vuorovaikutuksessa niiden kanssa. Mallinnusmielessä järjestelmä, kuten luentosali tai luentotilanne voidaan ajatella keskenään vuorovaikuttavien asioiden eli olioiden ryppäänä, joka muuttuu ja elää järjestelmän saamien herätteiden mukaan. Ohjelmoinnissa ohjelmointikielellä kirjoitetut oliot ovat kuvauksia järjestelmän olioista (tai osajärjestelmistä ). Olio-ohjelman suorituksen aikana oliot eli tarkemmin olioilmentymät eli instanssit syntyvät, kuolevat ja operoivat ohjelmassa kuvatun oliomallin mukaisesti. Ihmiselle on hyvin luonnollista ajatella maailmaa olioista koostuvana. Niinpä kai teoriassa olio-ohjelmointi on lähellä luonnollista ajattelutapaa: kirjoitamme ohjelmia, joissa laitamme oliot kommunikoimaan keskenään tarkoituksenmukaisesti. Aluksi emme toteuta olioiden toiminnallisuuksia, vaan teemme ohjelmia, jotka yksinomaan käyttävät toisten toteuttamaa toiminnallisuutta. Siis aluksi tekemämme ohjelmat luovat olioita ja kommunikoivat niiden kanssa. Ohjelmointi 1 / syksy 2007 p.15/26

Oliot ja soveltaminen 2/9: olioiden luokittelu Paitsi maailman ajatteleminen olioista koostuvana, on ihmiselle luonteenomaista luokitella ajattelemiaan olioita, esim.: Petteri on ihminen. Lassie on koira. Ihminen on elävä olento ja myös koira on elävä olento Elävien olentojen luokkaan kuuluvat myös lepakot Lepakko voi lentää, mutta Petteri ei (ellei Petteriä sijoita lentokoneeseen) Lentokone on kulkuväline. Polkupyörä on kulkuväline. Yliopisto on oppilaitos. Samoin ala-aste on oppilaitos. Kivet eivät voi kasvaa. Kasvit kasvavat. Voin kysyä Petteriltä, mitä hän osaa ohjelmoinnista; hän vastannee.... Luokka kertoo, mitä ominaisuuksia ja kykyjä siihen luokkaan kuuluvalla oliolla on. Olio kuuluu johonkin luokkaan. Se on kuitenkin yhteismitaton itse luokan kanssa! Luokka kasvit on filosofinen käsite ja sen sijaan ikkunalaudallani oleva kaktusyksilö on kyllä kasvi, mutta eri asia kuin kasvien (tai kaktusten!) luokka. Ohjelmointi 1 / syksy 2007 p.16/26

Oliot ja soveltaminen 3/9: olio ohjelmoinnissa Olio-ohjelmoinnissa määritellään luokkia. Luokalla on: Ominaisuuksia (attribuutteja). Esim. pankkitiliä kuvaavan olion attribuutteja voisivat olla saldo ja tilinumero. Rajapinta eli määritelmä siitä, kuinka luokkaan kuuluvan olion kanssa voi olla vuorovaikutuksessa. Esim. pankkitiliä kuvaavalla oliolla voisi olla mahdollisuus kertoa saldo tai lisätä saldoa (käytettäisiin tilille panon yhteydessä) Sisäinen toteutus luokkaan kuuluvan olion toiminnallisuudelle. Näihin asioihin palattaneen myöhemmin. Varsinkin jatkokurssit ohjelmoinnista sisältävät paljon tarkennusta olioiden ohjelmoinnista. Ohjelmointi 1 / syksy 2007 p.17/26

Oliot ja soveltaminen 4/9: olion rajapinta Niin mallinnuksessa kuin olio-ohjelmoinnissakin ajatellaan oliota tiukkarajaisena asiana, jonka sisäistä tilaa ei voi nähdä (se on mustassa laatikossa. Olion rajapinta määrittelee kuinka olion kanssa voidaan vuorovaikuttaa. Rajapinnan ohi ei pysty vaikuttamaan olioon! Rajapinta on kokoelma julkisia metodeja. Metodia kutsutaan samoin kuin aliohjelmaa (toteutuksen tasolla se voi olla hyvin pitkälti juuri aliohjelma!). Terminologiassa metodin kutsumista sanotaan viestin lähettämiseksi oliolle. Jokainen rajapinnan metodi (likimain aliohjelma) ottaa vastaan parametreja. Se saa ne käyttöönsä, ja lisäksi metodilla on käytössään olioyksilön sisäinen tila. Metodi toteuttaa operaatioita ja voi palauttaa paluuarvon. Yksinkertaisimmillaan metodi esimerkiksi vain paljastaa jonkun olion ominaisuuden nykyisen arvon, esim. pankkitilin saldon. Ohjelmointi 1 / syksy 2007 p.18/26

Oliot ja soveltaminen 5/9: Javan API-dokumentaatio Javassa melkein kaikki tapahtuu olioita käyttäen. On siis tunnettava, millaisia luokkia Javasta löytyy valmiiksi tehtynä, miten noihin luokkiin kuuluvia olioyksilöitä luodaan ja miten niitä käytetään. Tieto löytyy APIn eli (Application Programming Interfacen) dokumentaatiosta, oppikirjoista sekä lukuisista kuinka jokin asia tehdään -ohjeista. Katsotaan läpi Java 6:n API-dokumentaatiota. Ohjelmointi 1 / syksy 2007 p.19/26

Oliot ja soveltaminen 6/9: Perustietovirrat Javan olioina Tutustutaanpa System-luokan dokumentaatioon. Havaitaan, että seuraavien olioyksilöiden luvataan olevan elossa jo heti kun sovellusohjelman main() -aliohjelmaa kutsutaan: System.out PrintStream -luokkaan kuuluva olio System.err PrintStream -luokkaan kuuluva olio System.in InputStream -luokkaan kuuluva olio System-luokkaan koottujen olioiden lisäksi main() saa käyttöönsä merkkijonoja sisältävän taulukko-olion, jossa on ohjelman käynnistäjän antamat argumentit. On myös muuta, mutta tämä riittää aluksi hyvin pitkälle: Ohjelmointi 1 / syksy 2007 p.20/26

Oliot ja soveltaminen 7/9: PrintStream ja InputStream -luokat Tutustutaan tietovirtaluokkien dokumentaatioon. Mitä metodeja löytyy rajapinnasta? Huomaa, että käyttö on kuten aliohjelman käyttö! Esimerkki: Ymmärretään tulostaminen System.out -nimisen olion kanssa kommunikoimisena. Tutustutaan alustavasti PrintStream -luokan APIin Tutustutaan alustavasti InputStream -luokan APIin ei ole helppo lukea syötteitä suoraan System.in -olion rajapintaa käyttämällä! Isommat on kertoneet, että tähän on joku helpompi tapa... Ohjelmointi 1 / syksy 2007 p.21/26

Oliot ja soveltaminen 8/9: Scanner-luokka Tutustutaan alustavasti Scanner -luokan APIin Oho! Löydetään juuri sellaisia metodeja, joita tarvitaan... Nyt päästään olio-ohjelmoinnin ytimeen: Laitetaan oliot keskustelemaan keskenään! Luodaan (tällä kertaa varsin yksinkertainen) verkosto olioista! Ohjelmointi 1 / syksy 2007 p.22/26

Oliot ja soveltaminen 9/9: Scannerin käyttö viraan lukuun Esimerkki: Tanssikilpailun suunnitteluohjelmiston tanssilattiaa koskeva osio. Käydään läpi Scanner-tyyppisen olion luonti: sopivan konstruktorin kutsuminen ja new-operaattori; viitteen sijoittaminen viitemuuttujaan. Käydään läpi Scanner-tyyppisen olion käyttäminen rajapinnan tarjoamia metodeja kutsumalla. Havaitaan paluuarvon käyttö: tämähän on samanlaista kuin aliohjelman käyttäminen, paitsi että aliohjelma operoi Scanner-tyyppisen olion instanssille... joka puolestaan tuntee InputStream-tyyppisen olion (System.in) ja hoitaa likaiset yksityiskohdat tämän kanssa. Ohjelmointi 1 / syksy 2007 p.23/26

Totuusarvot ja loogiset lausekkeet Statement Block assert Expression : Expression ; if ParExpression Statement else Statement Mentäneen tähän vasta huomenna. Jos ehtii, katsotaan alustavasti jo aloitetun esimerkkiohjelman kautta! for ( ForControl ) Statement while ParExpression Statement do Statement while ParExpression ; try Block Catches Catches finally Block switch ParExpression { SwitchBlockStatementGroups } synchronized ParExpression Block Expression return ; throw Expression ; break continue Identifier Identifier ; StatementExpression ; Identifier : Statement Ohjelmointi 1 / syksy 2007 p.24/26

Huomenna palataan asiaan Totuusarvot Loogiset lausekkeet ja loogiset operaattorit Ehdollinen suoritus (if, switch) Toistuva suoritus (for, while, do) Vastaavat lauseet Java-kielessä. Ohjelmointi 1 / syksy 2007 p.25/26

Oppikirjaviitteitä Mistä kohtaa oppikirjaa (Mika Vesterholm ja Jorma Kyppö: Java-ohjelmointi, 6., uudistettu painos) löytyy näitä samoja asioita: noin sivut 79-120, luvut alkaen 5.1 Olio-ohjelmoinnin peruskäsitteitä ja päättyen 5.4 Metodit 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.26/26