Ehto- ja toistolauseet



Samankaltaiset tiedostot
Ehto- ja toistolauseet

Java-kielen perusteita

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

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

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

13. Loogiset operaatiot 13.1

Java-kielen perusteet

13. Loogiset operaatiot 13.1

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

Java-kielen perusteita

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

11. Javan toistorakenteet 11.1

12. Javan toistorakenteet 12.1

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

12. Javan toistorakenteet 12.1

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

Tietotyypit ja operaattorit

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

16. Ohjelmoinnin tekniikkaa 16.1

16. Ohjelmoinnin tekniikkaa 16.1

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

Java-kielen perusteet

Muuttujat ja kontrolli. Ville Sundberg

Muuttujatyypit ovat Boolean, Byte, Integer, Long, Double, Currency, Date, Object, String, Variant (oletus)

11. Javan valintarakenteet 11.1

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

811120P Diskreetit rakenteet

Palautetta viime luennosta


Johdanto ja esimerkki. Pseudokoodi lauseina. Kommentointi ja sisentäminen. Ohjausrakenteet:

etunimi, sukunimi ja opiskelijanumero ja näillä

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

Zeon PDF Driver Trial

811120P Diskreetit rakenteet

Osa. Toimintojen toteuttaminen ohjelmissa vaatii usein haarautumisia ja silmukoita. Tässä luvussa tutustummekin seuraaviin asioihin:

Ohjelmointiharjoituksia Arduino-ympäristössä

5/20: Algoritmirakenteita III

Sisällys. 3. Muuttujat ja operaatiot. Muuttujat ja operaatiot. Muuttujat. Operaatiot. Imperatiivinen laskenta. Muuttujat. Esimerkkejä: Operaattorit.

Ohjausrakenteet. Valinta:

Luento 5. Timo Savola. 28. huhtikuuta 2006

Ohjelmoinnin perusteet Y Python

Lohkot. if (ehto1) { if (ehto2) { lause 1;... lause n; } } else { lause 1;... lause m; } 15.3

Listarakenne (ArrayList-luokka)

3. Muuttujat ja operaatiot 3.1

Java-kielen perusteet

Ohjelmoinnin peruskurssi Y1

Algoritmit. Ohjelman tekemisen hahmottamisessa käytetään

Python-ohjelmointi Harjoitus 2

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

Sisällys. 15. Lohkot. Lohkot. Lohkot

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

Ohjelmoinnin peruskurssi Y1

Ohjelmoinnin peruskurssi Y1

815338A Ohjelmointikielten periaatteet

Muistutus aikatauluista

JavaScript alkeet Esimerkkikoodeja moniste 2 ( Metropolia)

Python-ohjelmointi Harjoitus 5

Dynaaminen analyysi III Luento 5 Antti-Pekka Tuovinen

Java kahdessa tunnissa. Jyry Suvilehto

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

Lohkot. if (ehto1) { if (ehto2) { lause 1;... lause n; } } else { lause 1;... lause m; } 16.3

Sisällys. 16. Lohkot. Lohkot. Lohkot

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

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

5.4. Sulautetun järjestelmän C-kielen perusteet. 4/8. Ohjausrakenteet pva

PHP tehtävä 3 Atte Pekarinen TIKT13A

ITKP102 Ohjelmointi 1 (6 op)

P e d a c o d e ohjelmointikoulutus verkossa

Ohjelmoinnin perusteet Y Python

Dynaaminen analyysi III

Harjoitustyön testaus. Juha Taina

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

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

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

Ctl160 Tekstikorpusten tietojenkäsittely Kolmas luento,

Ohjelmoinnin peruskurssi Y1

SELECT-lauseen perusmuoto

1 Logiikkaa. 1.1 Logiikan symbolit

public static void main (String [] args)

13. Hyvä ohjelmointitapa (osa 1) 13.1

7. Näytölle tulostaminen 7.1

TIEP114 Tietokoneen rakenne ja arkkitehtuuri, 3 op. Assembly ja konekieli

LOAD R1, =2 Sijoitetaan rekisteriin R1 arvo 2. LOAD R1, 100

Kielioppia: toisin kuin Javassa

Olio-ohjelmointi Javalla

Tietuetyypin määrittely toteutetaan C-kielessä struct-rakenteena seuraavalla tavalla:

Metodien tekeminen Javalla

Taulukot. Jukka Harju, Jukka Juslin

Javan perusteita. Janne Käki

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

Sisällys. 14. Poikkeukset. Johdanto. Johdanto

815338A Ohjelmointikielten periaatteet Harjoitus 7 Vastaukset

SQL-perusteet, SELECT-, INSERT-, CREATE-lauseet

14. Poikkeukset 14.1

Harjoitus 3 -- Ratkaisut

Valinnat ja päätökset

4. oppitunti. Ilmaukset ja ohjelmalauseet. Osa

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

VIII. Osa. Liitteet. Liitteet Suoritusjärjestys Varatut sanat Binääri- ja heksamuoto

IDL - proseduurit. ATK tähtitieteessä. IDL - proseduurit

Transkriptio:

Ehto- ja toistolauseet 1

Ehto- ja toistolauseet Uutena asiana opetellaan ohjelmointilauseet / rakenteet, jotka mahdollistavat: Päätösten tekemisen ohjelman suorituksen aikana (esim. kyllä/ei) Samoja lauseiden toistamisen useammin kuin kerran (silmukassa) Kirjassa nämä sijaitsevat luvussa 4: 4.2 Ehtolauseet 4.3 Toistolauseet 4.4. Ehto- ja toistolause -esimerkki 2

Missä ollaan? if-ehtolause Muut ehtolauseet while-lause Muut toistolauseet 3

Kontrollivirta Lauseiden suoritusjärjestys metodin sisällä on oletusarvoisesti lineaarinen (ylhäältä alas). Tällaista suoritusjärjestystä kutsutaan peräkkäisrakenteeksi. Ehto- ja toistolauseet mahdollistavat valinnan suoritetaanko ohjelmalohko vai ei ja kuinka monta kertaa. Valinnat perustuvat totuusarvoisiin (boolean) lausekkeisiin (eli ehtoihin), jotka saavat aina arvon tai. Lauseiden suoritusjärjestystä kutsutaan kontrollivirraksi (flow of control). 4

Ehtolauseet Ehtolause mahdollistaa valinnan suoritetaanko ehtoon liittyvä ohjelmalohko. Ehtolauseita kutsutaan myös valintalauseiksi (selection statements). Javan ehtolauseet ovat: if-lause if-else lause if - else if -lause switch-lause. 5

if-lause if-lauseella on seuraava syntaksi: if on Javan varattu sana ehto on boolean-lauseke, joka saa aina arvon tosi () tai epätosi () if( ehto ) { lause1; lause2; } Jos ehto on tosi, suoritetaan if-lauseeseen liittyvä ohjelmalohko. Jos ehto on epätosi, Ohjelmalohko jätetään suorittamatta. 6

if-lauseen logiikka ehdon evaluointi ohjelmalohko 7

Vertailuoperaattorit Ehtolauseet käyttävät Javan vertailuoperaattoreita, jotka kaikki palauttavat arvon tosi tai epätosi: == yhtäsuuri kuin (matematiikan =)!= erisuuri kuin < pienempi kuin > Suurempi kuin <= pienempi- tai yhtäsuuri kuin >= suurempi- tai yhtäsuuri kuin Huomaa ero yhtäsuuruusoperaattorin (==) ja sijoitusoperaattorin välillä (=)! 8

if-lause Esimerkki if-lauseesta: if (saldo < 0) { System.out.println ( Tilillä ei ole katetta! ); } System.out.println( Valmis. ); Ensin tutkitaan ehto :saldo-muuttuja on joko pienempi kuin nolla tai ei. Jos ehto on tosi, if-lauseeseen liittyvä ohjelmalohko suoritetaan jos näin ei ole, lohko ohitetaan. Oli tilanne kumpi tahansa, seuraavaksi tulostetaan merkkijono Valmis. Katso myös kirjan esimerkki 4.1. 9

if-lause Mitä seuraavat lauseet tekevät? if (ylaraja <= 0) { ylaraja = 0; } Sijoittaa muuttujaan ylaraja arvon nolla, jos muuttujan tämänhetkinen arvo on pienempi tai yhtäsuuri kuin nolla. if (saldo!= otot + panot) { tilivirhe = ; } Sijoittaa muuttujaan tilivirhe arvon, jos saldomuuttujan arvo ei ole sama kuin otot- ja panot-muuttujien summa. Aritmeettiset operaatiot suoritetaan ennen yhtäsuuruus- ja vertailuoperaatioita. Sulkujen käyttö asian selventämiseksi on kuitenkin aina suositeltavaa! 10

Loogiset operaattorit Ehtolausekkeet voivat käyttää myös seuraavia loogisia operaattoreita:! NOT (EI) && AND (JA) OR (TAI) Nämä kaikki ottavat vastaan boolean-lausekkeita operandeina ja palauttavat joko arvon tosi () tai epätosi (). Looginen EI on unaarinen operaattori (toimii yhden operandin kanssa). Loogiset JA ja looginen TAI ovat binäärisiä operaattoreita (toimivat kahden operandin kanssa). 11

Looginen NOT NOT-operaatiota kutsutaan myös negaatioksi tai komplementiksi. Jos operandi a on tosi, silloin!a (NOT a) on epätosi. Jos operandi a on epätosi, silloin!a on tosi. Tämä voidaan esittää totuusarvotaulukon avulla seuraavasti: a!a 12

Looginen AND ja looginen OR Looginen AND (JA) lauseke a && b on tosi, jos sekä a että b ovat tosia, muutoin lauseke on epätosi Looginen OR (TAI) ilmaisu a b on tosi, jos a on tosi tai b on tosi tai molemmat ovat tosia, muutoin lauseke on epätosi (eli silloin kun a ja b ovat molemmat epätosia) 13

Loogiset operaattorit Loogisia operaattoreita käyttäen saadaan aikaiseksi turhankin monimutkaisia lausekkeita. if (saldo > otto + 500 &&!tilivirhe) { System.out.println ( Rahat riittävät. ); } Sulkujen käyttö suoritusjärjestyksen selventämiseksi on aina suositeltavaa! 14

Loogiset operaattorit Totuusarvotaulukosta nähdään kaikki mahdolliset tilanteet esimerkiksi kahden operandin tilanteessa Koska && ja kummallakin on kaksi operandia, on olemassa neljä mahdollista kombinaatiota kullakin ehdolla a ja b a b a && b a b 15

Totuusarvotaulukko Minkä tahansa monimutkaisemmankin lausekkeen voi evaluoida totuusarvotaulukon avulla. saldo > otto + 500 tilivirhe!tilivirhe saldo > otto + 500 &&!tilivirhe 16

Laiska evaluointi AND- ja OR-operaattorien prosessointi on laiskaa. Jos vasen operandi riittää ratkaisemaan lopputuloksen, oikeaa operandia ei huomioida ollenkaan if (nimi!= null && nimi.equals( Bill )) { System.out.println ( Terve Bill!"); } Tästä on hyötyä esim. edellisessä tilanteessa: ohjelma ei kaadu vaikka merkkijonon nimi arvo olisi null. 17

Missä ollaan? if-ehtolause Muut ehtolauseet while-lause Muut toistolauseet 18

if-else -lause else-lause lisätään if-lauseeseen, kun halutaan epätosi vaihtoehdolle erillinen käsittely: if ( ehto ) { lause1; } else { lause2; } Jos ehto on tosi (), lause1 (lohko 1) suoritetaan; jos ehto on epätosi, lause2 (lohko2) suoritetaan. Ensimmäinen tai toinen suoritetaan, mutta ei molempia Katso myös kirjan esimerkki 4.2. 19

if-else lauseen logiikka ehto evaluoidaan lause1 lause2 20

If - else-if -lauseet If else-if on rakenne, jossa voidaan ottaa huomioon useita vaihtoehtoja. if( ehto ) { lause1; } else if( ehto2 ) { lause2; } else if( ehto3 ) { lause3; } else { lause4; } Else-if osia voidaan kirjoittaa ensimmäisen if-osan jälkeen haluttu määrä Jokaisella else-if osalla on oma ehtolausekkeensa. Loppuun voidaan kirjoittaa else-osa. 21

If - else-if -lauseet Esimerkki: Tutkitaan mikä maa on kyseessä ja asetetaan maan mukainen valuutta. if( maa.equals( Suomi ) { Valuutta = Euro ; } else if( maa.equals( Ruotsi ) { Valuutta = Kruunu ; } else if( maa.equals( USA ) { Valuutta = Dollari ; } else { Valuutta = null; } Mitä jos muuttujan maa arvo onkin null? Kirjassa lisäksi esimerkki 4.3. 22

Missä ollaan? if-ehtolause Muut ehtolauseet while-lause Muut toistolauseet 23

Toistolauseet Toistolauseet mahdollistavat ohjelmalohkon suorittamisen useita kertoja (0-n). Käytetään usein nimityksiä silmukka tai luuppi. Myös toistolauseita kontrolloidaan booleanlausekkeiden avulla. Javassa on kolmenlaisia toistolauseita: while-lause do-while -lause for-lause 24

while-lause while-lauseella on seuraava syntaksi: while ( ehto ) { lauseet; } Jos ehto on tosi (), lauseet (ohjelmalohko) suoritetaan Lauseiden suorittamisen jälkeen ehto evaluoidaan uudestaan, ja jos ehto on edelleen tosi, lauseet suoritetaan taas. Lauseita suoritetaan toistuvasti niin kauan kunnes ehdosta tulee epätosi (). 25

while-lauseen logiikka ehdon evaluointi lauseet 26

while-lause Esimerkki while-lauseesta: Scanner scan = new Scanner(System.in); int luku = scan.nextint(); while (luku > 0) { System.out.println(luku); luku = scan.nextint(); } Jos while-lauseen ehto on heti alussa epätosi, ei lauseeseen liittyvää ohjelmalohkoa suoriteta kertaakaan. Tarkastellaan kirjan esimerkkiä 4.5. 27

Ikuiset silmukat while-silmukan ohjelmalohkossa on pakko jossain vaiheessa tehdä ehdosta arvoinen. Jos näin ei käy, suoritetaan silmukkaa ikuisesti. Tämä on yleinen looginen virhe ohjelmansuunnittelussa / toteutuksessa. 28

Ikuiset silmukat Esimerkki ikuisesta silmukasta eli ikiloopista : int laskuri = 1; while (laskuri < 100) { System.out.println(laskuri); laskuri = laskuri - 1; } 29

Sisäkkäiset silmukat Silmukoita voidaan kirjoittaa useita sisäkkäin, eli silmukan ohjelmalohko voi sisältää toisen silmukan. int ulompi = 10; while (ulompi > 0) { int sisempi = 10; while (sisempi > 0) { System.out.println( Sisempi ); sisempi = sisempi - 1; } System.out.println( Ulompi ); ulompi = ulompi - 1; } 30

Missä ollaan? if-ehtolause Muut ehtolauseet while-lause Muut toistolauseet 31

do-while -lause do-while -lauseella on seuraava syntaksi: do { lauseet; } while ( ehto ); Lauseet (ohjelmalohko) suoritetaan ensin kertaalleen, sitten ehto evaluoidaan. Lauseet suoritetaan toistuvasti kunnes ehdosta tulee epätosi (). 32

do-while -lauseen logiikka lauseet ehdon evaluointi 33

do-while -lause Esimerkki do-while -lauseesta: boolean totuus = ; do { System.out.println( suoritus ); } while (totuus == ); Kuinka monta kertaa yo esimerkin tulostuslause suoritetaan? Katso myös kirjan esimerkki 4.6. 34

while- ja do-while lauseiden vertailu while silmukka do silmukka ehdon evaluointi lauseet lauseet ehdon evaluointi 35