ehto- ja toistolauseetmyy.haaga-helia.fi/~ict1td002/osio_2/luennot/ehtojatoisto.pdf · – 4.3...
TRANSCRIPT
![Page 1: Ehto- ja toistolauseetmyy.haaga-helia.fi/~ict1td002/OSIO_2/Luennot/ehtojatoisto.pdf · – 4.3 Toistolauseet – 4.4. Ehto- ja toistolause -esimerkki. 3 Missä ollaan? if-ehtolause](https://reader033.vdocuments.net/reader033/viewer/2022042919/5f627f903f7ea2272d378b09/html5/thumbnails/1.jpg)
1
Ehto- ja toistolauseet
![Page 2: Ehto- ja toistolauseetmyy.haaga-helia.fi/~ict1td002/OSIO_2/Luennot/ehtojatoisto.pdf · – 4.3 Toistolauseet – 4.4. Ehto- ja toistolause -esimerkki. 3 Missä ollaan? if-ehtolause](https://reader033.vdocuments.net/reader033/viewer/2022042919/5f627f903f7ea2272d378b09/html5/thumbnails/2.jpg)
2
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
![Page 3: Ehto- ja toistolauseetmyy.haaga-helia.fi/~ict1td002/OSIO_2/Luennot/ehtojatoisto.pdf · – 4.3 Toistolauseet – 4.4. Ehto- ja toistolause -esimerkki. 3 Missä ollaan? if-ehtolause](https://reader033.vdocuments.net/reader033/viewer/2022042919/5f627f903f7ea2272d378b09/html5/thumbnails/3.jpg)
3
Missä ollaan?
if-ehtolause
Muut ehtolauseet
while-lause
Muut toistolauseet
![Page 4: Ehto- ja toistolauseetmyy.haaga-helia.fi/~ict1td002/OSIO_2/Luennot/ehtojatoisto.pdf · – 4.3 Toistolauseet – 4.4. Ehto- ja toistolause -esimerkki. 3 Missä ollaan? if-ehtolause](https://reader033.vdocuments.net/reader033/viewer/2022042919/5f627f903f7ea2272d378b09/html5/thumbnails/4.jpg)
4
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 true tai false.
• Lauseiden suoritusjärjestystä kutsutaan kontrollivirraksi(flow of control).
![Page 5: Ehto- ja toistolauseetmyy.haaga-helia.fi/~ict1td002/OSIO_2/Luennot/ehtojatoisto.pdf · – 4.3 Toistolauseet – 4.4. Ehto- ja toistolause -esimerkki. 3 Missä ollaan? if-ehtolause](https://reader033.vdocuments.net/reader033/viewer/2022042919/5f627f903f7ea2272d378b09/html5/thumbnails/5.jpg)
5
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.
![Page 6: Ehto- ja toistolauseetmyy.haaga-helia.fi/~ict1td002/OSIO_2/Luennot/ehtojatoisto.pdf · – 4.3 Toistolauseet – 4.4. Ehto- ja toistolause -esimerkki. 3 Missä ollaan? if-ehtolause](https://reader033.vdocuments.net/reader033/viewer/2022042919/5f627f903f7ea2272d378b09/html5/thumbnails/6.jpg)
6
if-lause• if-lauseella on seuraava syntaksi:
if( ehto ) {lause1; lause2;
}
if on Javanvarattu sana
ehto on boolean-lauseke, joka saaaina arvon tosi (true) tai epätosi(false)
Jos ehto on tosi, suoritetaan if-lauseeseenliittyvä ohjelmalohko. Jos ehto on epätosi,Ohjelmalohko jätetään suorittamatta.
![Page 7: Ehto- ja toistolauseetmyy.haaga-helia.fi/~ict1td002/OSIO_2/Luennot/ehtojatoisto.pdf · – 4.3 Toistolauseet – 4.4. Ehto- ja toistolause -esimerkki. 3 Missä ollaan? if-ehtolause](https://reader033.vdocuments.net/reader033/viewer/2022042919/5f627f903f7ea2272d378b09/html5/thumbnails/7.jpg)
7
if-lauseen logiikka
ehdonevaluointi
ohjelmalohko
truefalse
![Page 8: Ehto- ja toistolauseetmyy.haaga-helia.fi/~ict1td002/OSIO_2/Luennot/ehtojatoisto.pdf · – 4.3 Toistolauseet – 4.4. Ehto- ja toistolause -esimerkki. 3 Missä ollaan? if-ehtolause](https://reader033.vdocuments.net/reader033/viewer/2022042919/5f627f903f7ea2272d378b09/html5/thumbnails/8.jpg)
8
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ä (=)!
![Page 9: Ehto- ja toistolauseetmyy.haaga-helia.fi/~ict1td002/OSIO_2/Luennot/ehtojatoisto.pdf · – 4.3 Toistolauseet – 4.4. Ehto- ja toistolause -esimerkki. 3 Missä ollaan? if-ehtolause](https://reader033.vdocuments.net/reader033/viewer/2022042919/5f627f903f7ea2272d378b09/html5/thumbnails/9.jpg)
9
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.
![Page 10: Ehto- ja toistolauseetmyy.haaga-helia.fi/~ict1td002/OSIO_2/Luennot/ehtojatoisto.pdf · – 4.3 Toistolauseet – 4.4. Ehto- ja toistolause -esimerkki. 3 Missä ollaan? if-ehtolause](https://reader033.vdocuments.net/reader033/viewer/2022042919/5f627f903f7ea2272d378b09/html5/thumbnails/10.jpg)
10
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 = true;
}Sijoittaa muuttujaan tilivirhe arvon true, jos saldo-muuttujan arvo ei ole sama kuin otot- ja panot-muuttujiensumma.
• Aritmeettiset operaatiot suoritetaan ennen yhtäsuuruus- ja vertailuoperaatioita. Sulkujen käyttö asian selventämiseksi on kuitenkin aina suositeltavaa!
![Page 11: Ehto- ja toistolauseetmyy.haaga-helia.fi/~ict1td002/OSIO_2/Luennot/ehtojatoisto.pdf · – 4.3 Toistolauseet – 4.4. Ehto- ja toistolause -esimerkki. 3 Missä ollaan? if-ehtolause](https://reader033.vdocuments.net/reader033/viewer/2022042919/5f627f903f7ea2272d378b09/html5/thumbnails/11.jpg)
11
Loogiset operaattorit• Ehtolausekkeet voivat käyttää myös seuraavia loogisia
operaattoreita:! NOT (EI)&& AND (JA)|| OR (TAI)
• Nämä kaikki ottavat vastaan boolean-lausekkeitaoperandeina ja palauttavat joko arvon tosi (true) tai epätosi (false).
• Looginen EI on unaarinen operaattori (toimii yhden operandin kanssa).
• Loogiset JA ja looginen TAI ovat binäärisiäoperaattoreita (toimivat kahden operandin kanssa).
![Page 12: Ehto- ja toistolauseetmyy.haaga-helia.fi/~ict1td002/OSIO_2/Luennot/ehtojatoisto.pdf · – 4.3 Toistolauseet – 4.4. Ehto- ja toistolause -esimerkki. 3 Missä ollaan? if-ehtolause](https://reader033.vdocuments.net/reader033/viewer/2022042919/5f627f903f7ea2272d378b09/html5/thumbnails/12.jpg)
12
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
true falsefalse true
![Page 13: Ehto- ja toistolauseetmyy.haaga-helia.fi/~ict1td002/OSIO_2/Luennot/ehtojatoisto.pdf · – 4.3 Toistolauseet – 4.4. Ehto- ja toistolause -esimerkki. 3 Missä ollaan? if-ehtolause](https://reader033.vdocuments.net/reader033/viewer/2022042919/5f627f903f7ea2272d378b09/html5/thumbnails/13.jpg)
13
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 bovat molemmat epätosia)
![Page 14: Ehto- ja toistolauseetmyy.haaga-helia.fi/~ict1td002/OSIO_2/Luennot/ehtojatoisto.pdf · – 4.3 Toistolauseet – 4.4. Ehto- ja toistolause -esimerkki. 3 Missä ollaan? if-ehtolause](https://reader033.vdocuments.net/reader033/viewer/2022042919/5f627f903f7ea2272d378b09/html5/thumbnails/14.jpg)
14
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!
![Page 15: Ehto- ja toistolauseetmyy.haaga-helia.fi/~ict1td002/OSIO_2/Luennot/ehtojatoisto.pdf · – 4.3 Toistolauseet – 4.4. Ehto- ja toistolause -esimerkki. 3 Missä ollaan? if-ehtolause](https://reader033.vdocuments.net/reader033/viewer/2022042919/5f627f903f7ea2272d378b09/html5/thumbnails/15.jpg)
15
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
true true true truetrue false false truefalse true false truefalse false false false
![Page 16: Ehto- ja toistolauseetmyy.haaga-helia.fi/~ict1td002/OSIO_2/Luennot/ehtojatoisto.pdf · – 4.3 Toistolauseet – 4.4. Ehto- ja toistolause -esimerkki. 3 Missä ollaan? if-ehtolause](https://reader033.vdocuments.net/reader033/viewer/2022042919/5f627f903f7ea2272d378b09/html5/thumbnails/16.jpg)
16
Totuusarvotaulukko• Minkä tahansa monimutkaisemmankin lausekkeen voi
evaluoida totuusarvotaulukon avulla.
saldo > otto + 500 tilivirhe !tilivirhe saldo > otto + 500 &&
!tilivirhe
true true false falsetrue false true truefalse true false falsefalse false true false
![Page 17: Ehto- ja toistolauseetmyy.haaga-helia.fi/~ict1td002/OSIO_2/Luennot/ehtojatoisto.pdf · – 4.3 Toistolauseet – 4.4. Ehto- ja toistolause -esimerkki. 3 Missä ollaan? if-ehtolause](https://reader033.vdocuments.net/reader033/viewer/2022042919/5f627f903f7ea2272d378b09/html5/thumbnails/17.jpg)
17
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.
![Page 18: Ehto- ja toistolauseetmyy.haaga-helia.fi/~ict1td002/OSIO_2/Luennot/ehtojatoisto.pdf · – 4.3 Toistolauseet – 4.4. Ehto- ja toistolause -esimerkki. 3 Missä ollaan? if-ehtolause](https://reader033.vdocuments.net/reader033/viewer/2022042919/5f627f903f7ea2272d378b09/html5/thumbnails/18.jpg)
18
Missä ollaan?
if-ehtolause
Muut ehtolauseet
while-lause
Muut toistolauseet
![Page 19: Ehto- ja toistolauseetmyy.haaga-helia.fi/~ict1td002/OSIO_2/Luennot/ehtojatoisto.pdf · – 4.3 Toistolauseet – 4.4. Ehto- ja toistolause -esimerkki. 3 Missä ollaan? if-ehtolause](https://reader033.vdocuments.net/reader033/viewer/2022042919/5f627f903f7ea2272d378b09/html5/thumbnails/19.jpg)
19
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 (true), 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.
![Page 20: Ehto- ja toistolauseetmyy.haaga-helia.fi/~ict1td002/OSIO_2/Luennot/ehtojatoisto.pdf · – 4.3 Toistolauseet – 4.4. Ehto- ja toistolause -esimerkki. 3 Missä ollaan? if-ehtolause](https://reader033.vdocuments.net/reader033/viewer/2022042919/5f627f903f7ea2272d378b09/html5/thumbnails/20.jpg)
20
if-else lauseen logiikka
ehtoevaluoidaan
lause1
true false
lause2
![Page 21: Ehto- ja toistolauseetmyy.haaga-helia.fi/~ict1td002/OSIO_2/Luennot/ehtojatoisto.pdf · – 4.3 Toistolauseet – 4.4. Ehto- ja toistolause -esimerkki. 3 Missä ollaan? if-ehtolause](https://reader033.vdocuments.net/reader033/viewer/2022042919/5f627f903f7ea2272d378b09/html5/thumbnails/21.jpg)
21
if - else -esimerkki• If – else-if –lausetta tarvitaan esimerkiksi set-metodien validiteetti
tarkistuksissa.
• Miksi validiteettitarkistuksia tarvitaan?
Esimerkki:
Luokassa Oppilas (kirja s.43) on attribuutti
private String etunimi;
Toteutetaan aluksi yksinkertaisin mahdollinen set-metodi (jonka myös Eclipse osaa generoida):
public void setEtunimi(String etunimi) {
this.etunimi = etunimi;
}
![Page 22: Ehto- ja toistolauseetmyy.haaga-helia.fi/~ict1td002/OSIO_2/Luennot/ehtojatoisto.pdf · – 4.3 Toistolauseet – 4.4. Ehto- ja toistolause -esimerkki. 3 Missä ollaan? if-ehtolause](https://reader033.vdocuments.net/reader033/viewer/2022042919/5f627f903f7ea2272d378b09/html5/thumbnails/22.jpg)
22
if - else -esimerkkiMetodi täyttää tärkeimmän tehtävänsä, eli luokan ulkopuolelta
saadaan tallennettua olion attribuuttiin haluttua tietoa esimerkiksi seuraavasti:
Oppilas oppilas1 = new Oppilas();
oppilas1.setEtunimi("Ville");
Kysymys: Mitä tapahtuu, mikäli set-metodia kutsutaan esimerkiksi seuraavilla arvoilla?
oppilas1.setEtunimi("");
oppilas1.setEtunimi(null);
![Page 23: Ehto- ja toistolauseetmyy.haaga-helia.fi/~ict1td002/OSIO_2/Luennot/ehtojatoisto.pdf · – 4.3 Toistolauseet – 4.4. Ehto- ja toistolause -esimerkki. 3 Missä ollaan? if-ehtolause](https://reader033.vdocuments.net/reader033/viewer/2022042919/5f627f903f7ea2272d378b09/html5/thumbnails/23.jpg)
23
if - else -esimerkki• Edellä toteutettu pelkästään suoran sijoituksen sisältävä set-metodi
alkaa lähestyä seuraavaa tilannetta:
– Mikäli olion kapselointi rikottaisiin määrittelemällä attribuutti suojatun private-tyypin sijaan suoraan public-tyyppisenä eli julkisena (älä koskaan tee näin!), olisi mahdollista tehdä luokan ulkopuolelta suoria sijoituksia:
oppilas1.etunimi=null;
vrt.
oppilas1.setEtunimi(null);
• Ero on em. kapseloinnin rikkomiseen on lähinnä siinä, että suoran sijoituksen sijaan tulee tietoisesti kutsua set-metodia.
• Suora sijoitus on helpompi kirjoittaa "vahingossa", public-tyyppiseksimuunto lisäisi virhealttiutta entisestään.
• Haluamme kuitenkin ohjelmamme toimivan aina oikein, joten set-metodin tulee hylätä virheelliset arvot!
• Ratkaisu tähän ovat validiteettitarkistukset.
![Page 24: Ehto- ja toistolauseetmyy.haaga-helia.fi/~ict1td002/OSIO_2/Luennot/ehtojatoisto.pdf · – 4.3 Toistolauseet – 4.4. Ehto- ja toistolause -esimerkki. 3 Missä ollaan? if-ehtolause](https://reader033.vdocuments.net/reader033/viewer/2022042919/5f627f903f7ea2272d378b09/html5/thumbnails/24.jpg)
24
if - else -esimerkki• Edellä olevassa tilanteessa etunimeksi eivät kelpaa ainakaan null eikä
tyhjä merkkijono.
• Saadaan seuraavanlainen validiteettitarkistukset sisältävä set-metodi.public void setEtunimi(String etunimi) {
if(etunimi != null && etunimi.length() > 0) {
this.etunimi = etunimi;
} else {
System.out.println("Etunimi ei saa olla tyhjä!);
}
}
• Tämän jälkeen set metodia on hyödynnettävä muualla koodissa, jotta duplikaattikoodilta vältytään.
• Esimerkiksi parametrillisessa kontruktorissa tulee suoran sijoitukset this.etunimi = etunimi sijaan kutsua set-metodia: setEtunimi(etunimi).
![Page 25: Ehto- ja toistolauseetmyy.haaga-helia.fi/~ict1td002/OSIO_2/Luennot/ehtojatoisto.pdf · – 4.3 Toistolauseet – 4.4. Ehto- ja toistolause -esimerkki. 3 Missä ollaan? if-ehtolause](https://reader033.vdocuments.net/reader033/viewer/2022042919/5f627f903f7ea2272d378b09/html5/thumbnails/25.jpg)
25
if - else -esimerkki• Edellä esitelty tapa toteuttaa validiteettitarkistukset riittää meille
toistaiseksi.
• Todellisuudessa esiintyy kuitenkin seuraavia eroja edelliseen:
– Virheilmoituksia ei tulosteta suoraan konsolille vaan lokitiedostoon esimerkiksi paketin java.util.loggingavulla (katso kirjan luokka TiedostoTyokalut s. 74).
– JavaBeaneja käyttävissä sovelluskehyksissä (esim. Struts) validiteettitarkistukset saatetaan toteuttaa set-metodien sijaan omaan erilliseen metodiinsa (esim. ActionForm-luokassametodissa nimeltä validate).
![Page 26: Ehto- ja toistolauseetmyy.haaga-helia.fi/~ict1td002/OSIO_2/Luennot/ehtojatoisto.pdf · – 4.3 Toistolauseet – 4.4. Ehto- ja toistolause -esimerkki. 3 Missä ollaan? if-ehtolause](https://reader033.vdocuments.net/reader033/viewer/2022042919/5f627f903f7ea2272d378b09/html5/thumbnails/26.jpg)
26
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.
![Page 27: Ehto- ja toistolauseetmyy.haaga-helia.fi/~ict1td002/OSIO_2/Luennot/ehtojatoisto.pdf · – 4.3 Toistolauseet – 4.4. Ehto- ja toistolause -esimerkki. 3 Missä ollaan? if-ehtolause](https://reader033.vdocuments.net/reader033/viewer/2022042919/5f627f903f7ea2272d378b09/html5/thumbnails/27.jpg)
27
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.
![Page 28: Ehto- ja toistolauseetmyy.haaga-helia.fi/~ict1td002/OSIO_2/Luennot/ehtojatoisto.pdf · – 4.3 Toistolauseet – 4.4. Ehto- ja toistolause -esimerkki. 3 Missä ollaan? if-ehtolause](https://reader033.vdocuments.net/reader033/viewer/2022042919/5f627f903f7ea2272d378b09/html5/thumbnails/28.jpg)
28
switch-lause• switch-lauseella saadaan toteutettua
monivalintarakenne (mahdollista myös if –else-if –rakenteena)
• switch-lauseelle luetellaan eri arvovaihtoehdot, joista suoritetaan se joka täsmää switch-lauseen valintaehtoon.
• switch-lauseen ehdoksi kelpaa vain primitiivityypiksi evaluoituva lauseke.
![Page 29: Ehto- ja toistolauseetmyy.haaga-helia.fi/~ict1td002/OSIO_2/Luennot/ehtojatoisto.pdf · – 4.3 Toistolauseet – 4.4. Ehto- ja toistolause -esimerkki. 3 Missä ollaan? if-ehtolause](https://reader033.vdocuments.net/reader033/viewer/2022042919/5f627f903f7ea2272d378b09/html5/thumbnails/29.jpg)
29
switch-lause• switch-lauseen syntaksi on:
switch ( ehto ){
case arvo1 :lause-lista1
case arvo2 :lause-lista2
case arvo3 :lause-lista3
case ...
}
switchja
caseovat
varattujasanoja
Jos ehtotäsmää arvoonarvo2,suoritetaanlause-lista2
![Page 30: Ehto- ja toistolauseetmyy.haaga-helia.fi/~ict1td002/OSIO_2/Luennot/ehtojatoisto.pdf · – 4.3 Toistolauseet – 4.4. Ehto- ja toistolause -esimerkki. 3 Missä ollaan? if-ehtolause](https://reader033.vdocuments.net/reader033/viewer/2022042919/5f627f903f7ea2272d378b09/html5/thumbnails/30.jpg)
30
switch-lause• break-lause tarvitsee sijoittaa lähes aina case:n viimeiseksi lauseeksi.
• Break-lauseesta seuraa kontrollin siirtyminen switch-lauserakenteen loppuun.
• Jos break-lausetta ei käytetä, kontrolli ”valuu”järjestyksessä seuraavaan caseen.
![Page 31: Ehto- ja toistolauseetmyy.haaga-helia.fi/~ict1td002/OSIO_2/Luennot/ehtojatoisto.pdf · – 4.3 Toistolauseet – 4.4. Ehto- ja toistolause -esimerkki. 3 Missä ollaan? if-ehtolause](https://reader033.vdocuments.net/reader033/viewer/2022042919/5f627f903f7ea2272d378b09/html5/thumbnails/31.jpg)
31
switch-lause• Esimerkki switch-lauseesta:
switch (valinta) {case ’T’:
tallenna();break;
case ’U’:luoUusi();break;
case ’L’:lopeta();break;
}
• Katso myös kirjan esimerkki 4.4.
![Page 32: Ehto- ja toistolauseetmyy.haaga-helia.fi/~ict1td002/OSIO_2/Luennot/ehtojatoisto.pdf · – 4.3 Toistolauseet – 4.4. Ehto- ja toistolause -esimerkki. 3 Missä ollaan? if-ehtolause](https://reader033.vdocuments.net/reader033/viewer/2022042919/5f627f903f7ea2272d378b09/html5/thumbnails/32.jpg)
32
Missä ollaan?
if-ehtolause
Muut ehtolauseet
while-lause
Muut toistolauseet
![Page 33: Ehto- ja toistolauseetmyy.haaga-helia.fi/~ict1td002/OSIO_2/Luennot/ehtojatoisto.pdf · – 4.3 Toistolauseet – 4.4. Ehto- ja toistolause -esimerkki. 3 Missä ollaan? if-ehtolause](https://reader033.vdocuments.net/reader033/viewer/2022042919/5f627f903f7ea2272d378b09/html5/thumbnails/33.jpg)
33
Toistolauseet• Toistolauseet mahdollistavat ohjelmalohkon
suorittamisen useita kertoja (0-n).
• Käytetään usein nimityksiä silmukka tai luuppi.
• Myös toistolauseita kontrolloidaan boolean-lausekkeiden avulla.
• Javassa on kolmenlaisia toistolauseita:– while-lause– do-while -lause– for-lause
![Page 34: Ehto- ja toistolauseetmyy.haaga-helia.fi/~ict1td002/OSIO_2/Luennot/ehtojatoisto.pdf · – 4.3 Toistolauseet – 4.4. Ehto- ja toistolause -esimerkki. 3 Missä ollaan? if-ehtolause](https://reader033.vdocuments.net/reader033/viewer/2022042919/5f627f903f7ea2272d378b09/html5/thumbnails/34.jpg)
34
while-lause• while-lauseella on seuraava syntaksi:
while ( ehto ) {lauseet;
}
• Jos ehto on tosi (true), 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 (false).
![Page 35: Ehto- ja toistolauseetmyy.haaga-helia.fi/~ict1td002/OSIO_2/Luennot/ehtojatoisto.pdf · – 4.3 Toistolauseet – 4.4. Ehto- ja toistolause -esimerkki. 3 Missä ollaan? if-ehtolause](https://reader033.vdocuments.net/reader033/viewer/2022042919/5f627f903f7ea2272d378b09/html5/thumbnails/35.jpg)
35
while-lauseen logiikka
lauseet
true false
ehdonevaluointi
![Page 36: Ehto- ja toistolauseetmyy.haaga-helia.fi/~ict1td002/OSIO_2/Luennot/ehtojatoisto.pdf · – 4.3 Toistolauseet – 4.4. Ehto- ja toistolause -esimerkki. 3 Missä ollaan? if-ehtolause](https://reader033.vdocuments.net/reader033/viewer/2022042919/5f627f903f7ea2272d378b09/html5/thumbnails/36.jpg)
36
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.
![Page 37: Ehto- ja toistolauseetmyy.haaga-helia.fi/~ict1td002/OSIO_2/Luennot/ehtojatoisto.pdf · – 4.3 Toistolauseet – 4.4. Ehto- ja toistolause -esimerkki. 3 Missä ollaan? if-ehtolause](https://reader033.vdocuments.net/reader033/viewer/2022042919/5f627f903f7ea2272d378b09/html5/thumbnails/37.jpg)
37
Ikuiset silmukat• while-silmukan ohjelmalohkossa on pakko
jossain vaiheessa tehdä ehdosta false-arvoinen.
• Jos näin ei käy, suoritetaan silmukkaa ikuisesti.
• Tämä on yleinen looginen virhe ohjelmansuunnittelussa / toteutuksessa.
![Page 38: Ehto- ja toistolauseetmyy.haaga-helia.fi/~ict1td002/OSIO_2/Luennot/ehtojatoisto.pdf · – 4.3 Toistolauseet – 4.4. Ehto- ja toistolause -esimerkki. 3 Missä ollaan? if-ehtolause](https://reader033.vdocuments.net/reader033/viewer/2022042919/5f627f903f7ea2272d378b09/html5/thumbnails/38.jpg)
38
Ikuiset silmukat• Esimerkki ikuisesta silmukasta eli “ikiluupista”:
int laskuri = 1;while (laskuri < 100) {
System.out.println(laskuri);laskuri = laskuri - 1;
}
![Page 39: Ehto- ja toistolauseetmyy.haaga-helia.fi/~ict1td002/OSIO_2/Luennot/ehtojatoisto.pdf · – 4.3 Toistolauseet – 4.4. Ehto- ja toistolause -esimerkki. 3 Missä ollaan? if-ehtolause](https://reader033.vdocuments.net/reader033/viewer/2022042919/5f627f903f7ea2272d378b09/html5/thumbnails/39.jpg)
39
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;
}
![Page 40: Ehto- ja toistolauseetmyy.haaga-helia.fi/~ict1td002/OSIO_2/Luennot/ehtojatoisto.pdf · – 4.3 Toistolauseet – 4.4. Ehto- ja toistolause -esimerkki. 3 Missä ollaan? if-ehtolause](https://reader033.vdocuments.net/reader033/viewer/2022042919/5f627f903f7ea2272d378b09/html5/thumbnails/40.jpg)
40
Missä ollaan?
if-ehtolause
Muut ehtolauseet
while-lause
Muut toistolauseet
![Page 41: Ehto- ja toistolauseetmyy.haaga-helia.fi/~ict1td002/OSIO_2/Luennot/ehtojatoisto.pdf · – 4.3 Toistolauseet – 4.4. Ehto- ja toistolause -esimerkki. 3 Missä ollaan? if-ehtolause](https://reader033.vdocuments.net/reader033/viewer/2022042919/5f627f903f7ea2272d378b09/html5/thumbnails/41.jpg)
41
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 (false).
![Page 42: Ehto- ja toistolauseetmyy.haaga-helia.fi/~ict1td002/OSIO_2/Luennot/ehtojatoisto.pdf · – 4.3 Toistolauseet – 4.4. Ehto- ja toistolause -esimerkki. 3 Missä ollaan? if-ehtolause](https://reader033.vdocuments.net/reader033/viewer/2022042919/5f627f903f7ea2272d378b09/html5/thumbnails/42.jpg)
42
do-while -lauseen logiikka
true
ehdonevaluointi
lauseet
false
![Page 43: Ehto- ja toistolauseetmyy.haaga-helia.fi/~ict1td002/OSIO_2/Luennot/ehtojatoisto.pdf · – 4.3 Toistolauseet – 4.4. Ehto- ja toistolause -esimerkki. 3 Missä ollaan? if-ehtolause](https://reader033.vdocuments.net/reader033/viewer/2022042919/5f627f903f7ea2272d378b09/html5/thumbnails/43.jpg)
43
do-while -lause• Esimerkki do-while -lauseesta:
boolean totuus = false;do {
System.out.println(”suoritus”);} while (totuus == true);
• Kuinka monta kertaa yo esimerkin tulostuslause suoritetaan?
• Katso myös kirjan esimerkki 4.6.
![Page 44: Ehto- ja toistolauseetmyy.haaga-helia.fi/~ict1td002/OSIO_2/Luennot/ehtojatoisto.pdf · – 4.3 Toistolauseet – 4.4. Ehto- ja toistolause -esimerkki. 3 Missä ollaan? if-ehtolause](https://reader033.vdocuments.net/reader033/viewer/2022042919/5f627f903f7ea2272d378b09/html5/thumbnails/44.jpg)
44
while- ja do-while –lauseiden vertailu
lauseet
true false
ehdonevaluointi
while silmukka
true
ehdonevaluointi
lauseet
false
do silmukka
![Page 45: Ehto- ja toistolauseetmyy.haaga-helia.fi/~ict1td002/OSIO_2/Luennot/ehtojatoisto.pdf · – 4.3 Toistolauseet – 4.4. Ehto- ja toistolause -esimerkki. 3 Missä ollaan? if-ehtolause](https://reader033.vdocuments.net/reader033/viewer/2022042919/5f627f903f7ea2272d378b09/html5/thumbnails/45.jpg)
45
for-lause• for-lauseella on seuraava syntaksi:
for ( alustus ; ehto ; inkrementointi ) {lauseet;
}
alustussuoritetaan kerran
ennen kuin silmukka alkaainkrementointi osa suoritetaan
jokaisen toiston lopussa
lauseetsuoritetaan kunnes
ehdosta tulee false
![Page 46: Ehto- ja toistolauseetmyy.haaga-helia.fi/~ict1td002/OSIO_2/Luennot/ehtojatoisto.pdf · – 4.3 Toistolauseet – 4.4. Ehto- ja toistolause -esimerkki. 3 Missä ollaan? if-ehtolause](https://reader033.vdocuments.net/reader033/viewer/2022042919/5f627f903f7ea2272d378b09/html5/thumbnails/46.jpg)
46
for-lauseen logiikka
lauseet
true
ehdonevaluointi
false
inkrementointi
alustus
![Page 47: Ehto- ja toistolauseetmyy.haaga-helia.fi/~ict1td002/OSIO_2/Luennot/ehtojatoisto.pdf · – 4.3 Toistolauseet – 4.4. Ehto- ja toistolause -esimerkki. 3 Missä ollaan? if-ehtolause](https://reader033.vdocuments.net/reader033/viewer/2022042919/5f627f903f7ea2272d378b09/html5/thumbnails/47.jpg)
47
for-lause• for-lause on toiminnallisesti identtinen
seuraavan while-lauseen kanssa:
alustus;while ( ehto ) {
lauseet;inkrementointi;
}
![Page 48: Ehto- ja toistolauseetmyy.haaga-helia.fi/~ict1td002/OSIO_2/Luennot/ehtojatoisto.pdf · – 4.3 Toistolauseet – 4.4. Ehto- ja toistolause -esimerkki. 3 Missä ollaan? if-ehtolause](https://reader033.vdocuments.net/reader033/viewer/2022042919/5f627f903f7ea2272d378b09/html5/thumbnails/48.jpg)
48
for-lause• Esimerkki for-lauseesta:
for (int i = 0; i < 10; i++) {System.out.println(i);
}
• Alustusosaa voidaan käyttää muuttujan esittelemiseen.
• Kuten while-silmukassa, for-silmukan ehto testataan ennen silmukan rungon suorittamista.
• Käytä mieluiten aina aaltosulkeita JCC-suositustenmukaisesti (myös yhden rivin tapaukset).
![Page 49: Ehto- ja toistolauseetmyy.haaga-helia.fi/~ict1td002/OSIO_2/Luennot/ehtojatoisto.pdf · – 4.3 Toistolauseet – 4.4. Ehto- ja toistolause -esimerkki. 3 Missä ollaan? if-ehtolause](https://reader033.vdocuments.net/reader033/viewer/2022042919/5f627f903f7ea2272d378b09/html5/thumbnails/49.jpg)
49
for-lause
• for-lause sopii hyvin tilanteisiin, jossa suoritus halutaan toistaa tietty määrä kertoja (toistokerrat voidaan laskea tai määrittää etukäteen).
• for-lause on ilmaisultaan tiivis.
• Kaikki for- lauseet voidaan kirjoittaa myös while-lauseina.
![Page 50: Ehto- ja toistolauseetmyy.haaga-helia.fi/~ict1td002/OSIO_2/Luennot/ehtojatoisto.pdf · – 4.3 Toistolauseet – 4.4. Ehto- ja toistolause -esimerkki. 3 Missä ollaan? if-ehtolause](https://reader033.vdocuments.net/reader033/viewer/2022042919/5f627f903f7ea2272d378b09/html5/thumbnails/50.jpg)
50
Ehto- ja toistolause-esimerkki
import java.util.Scanner;/*** Coca-cola automaatti.* @author Jukka Juslin, Jukka Harju*/
public class CokisAutomaatti {private int pullojenMaara;private double pullonHinta;public CokisAutomaatti() {
pullojenMaara = 30;pullonHinta = 2.0;
}public int annaKolaa(double rahaaAnnettu) {
System.out.println("Vaihtorahaa saat takaisin: "+ (rahaaAnnettu % pullonHinta));
return (int) (rahaaAnnettu / pullonHinta);}
![Page 51: Ehto- ja toistolauseetmyy.haaga-helia.fi/~ict1td002/OSIO_2/Luennot/ehtojatoisto.pdf · – 4.3 Toistolauseet – 4.4. Ehto- ja toistolause -esimerkki. 3 Missä ollaan? if-ehtolause](https://reader033.vdocuments.net/reader033/viewer/2022042919/5f627f903f7ea2272d378b09/html5/thumbnails/51.jpg)
51
Ehto- ja toistolause-esimerkkipublic void kaynnistaAutomaatti() {
double rahaaAnnettu = 0;int saitPulloja = 0;Scanner scan = new Scanner(System.in);while (pullojenMaara > 0) {
System.out.println("Anna rahaa: ");rahaaAnnettu = scan.nextDouble();if (rahaaAnnettu >= pullonHinta) {
saitPulloja = annaKolaa(rahaaAnnettu);pullojenMaara = pullojenMaara - saitPulloja;if (pullojenMaara > 0) {
System.out.println("Sait "+ saitPulloja + " pulloa.");
} else {System.out.print(
"Sold out. Pullot loppu, ");System.out.println("soita 09 11.");
}} else {
System.out.println("Raha ei riittänyt.");}
}}public static void main(String[] args) {
CokisAutomaatti tomaatti = new CokisAutomaatti();tomaatti.kaynnistaAutomaatti();
}}