11. Javan valintarakenteet

Slides:



Advertisements
Samankaltaiset esitykset
15. Loogiset operaatiot.
Advertisements

@ Leena Lahtinen Helia Ohjelman perusrakenteet 1. PERÄKKÄISRAKENNE 2. VALINTARAKENNE 3. TOISTORAKENNE.
Olio-ohjelmoinnin perusteet luento 3: Muuttujista ja funktioista Sami Jantunen LTY/Tietotekniikan osasto.
© Jukka Harju, Viittausmuuttujat. © Jukka Harju, Viittaukset •Viittausmuuttuja sisältää tiedon siitä missä muistipaikassa olio.
JavaScript (c) Irja & Reino Aarinen, 2007
Ohjelman perusrakenteet
1 Ehtolausekkeet Ehdot, valintalausekkeet Boolean-algebra.
Nämä kalvot on lisensoitu Creative Commons Attribution-ShareAlike 1
22. Taulukot.
Näytölle tulostaminen. 7.2 Sisällys System.out.println - ja System.out.print -operaatiot. Tulostus erikoismerkeillä. Edistyneempää tulosteiden.
Java-ohjelmointi Opas ammattimaiseen osaamiseen Luku 4 Toistolauseet
@ Leena Lahtinen OHJELMAN OSITTAMINEN LUOKKA ATTRIBUUTIT METODIT.
Ehto- ja toistolauseet
16. Lohkot Sisällys Tutustutaan lohkoihin. Muuttujien ja vakioiden näkyvyys sekä elinikä erityisesti operaation lohkossa. Nimikonfliktit. Muuttujat.
Toiston tekeminen Javalla  Mikä toistorakenne on?  while toistorakenne  do-while toistorakenne  for toistorakenne 1.
Ohjelmoinnin tekniikkaa Sisällys for -lause lyhemmin. Vaihtoehtoisia merkintöjä aritmeettisille lauseille. Useiden muuttujien esittely.
Ohjelman perusrakenteet
13. Hyvä ohjelmointitapa (osa 1)
ict1td002 - Copyright Raine Kauppinen 1 Alkuarvot ja tyyppimuunnokset (1/5)  Aiemmin olemme jo antaneet muuttujille alkuarvoja, esimerkiksi: int.
Metodit – Arvotyyppi Ellei metodi palauta arvoa, sen arvotyyppi on void Tällöin ”return;”-lauseke ei ole metodissa pakollinen, vaikka sen käyttö on sallittua.
11. Javan toistorakenteet
20. Javan omat luokat.
4. Attribuutit 4.1. Sisällys Yleistä attribuuteista. Näkyvyys luokan sisällä ja ulkopuolelta. Attribuuttien arvojen käsittely aksessoreilla. 4.2.
@ Leena Lahtinen OHJELMAN OSITTAMINEN LUOKKA ATTRIBUUTIT METODIT.
Hyvä ohjelmointitapa (osa 2) Yleistä Lisää hyviä ohjelmointikäytäntöjä: − Jaa pitkä koodi osiin. − Käytä attribuutteja säästeliäästi.
22. Taulukot.
@ Leena Lahtinen TIETOKONEOHJELMAN RAKENNE OHJELMALLA ON KAKSI OSAA:  MÄÄRITYSOSA TIETOJEN KUVAUKSIA VARTEN  SUORITUSOSA TIETOJEN KÄSITTELYÄ.
Antti-Jussi Lakanen Nuorten peliohjelmointi 2009 / Jyväskylän yliopisto.
Kontrollirakenteet laajemmin
14. Poikkeukset Sisällys Johdanto poikkeuksiin. Poikkeusten käsittely: − Poikkeusten käsittely paikallisesti. − Poikkeusten heittäminen. Exception.
Valintarakenne valintarakenne alkaa aina kysymyksellä eli ehdolla ehto tarkoittaa, että muuttujan sisältöä verrataan toisen muuttujan sisältöön tai vakioon.
Ohjausrakenteet Määräävät ohjelmakoodin suoritusjärjestyksen Ehtolause if – else on muotoa if (lauseke) lause1 else lause2 Jos lauseke on tosi, niin suoritetaan.
1. Omat operaatiot.
6. Muuttujat ja Java.
7. Oliot ja viitteet.
13. Pakkaukset.
Poikkeustenkäsittelylohkot try-catch
2. Taulukot.
17. Javan omat luokat.
8. Näppäimistöltä lukeminen
4. Komentoriviparametrit
7. Hyvä ohjelmointitapa..
13. Loogiset operaatiot.
3. Luokat, oliot ja metodit Java-kielessä (Lausekielinen ohjelmointi I ja II –kursseilla opitun kertausta.)
15. Lohkot.
7. Näytölle tulostaminen
Toisto Toistolausekkeet for, while(ehto){…} ja do {…} while(ehto)
9. Aritmeettiset operaatiot
8. Näppäimistöltä lukeminen
10. Javan ohjausrakenteet
9. Aritmeettiset operaatiot
16. Ohjelmoinnin tekniikkaa
14. Hyvä ohjelmointitapa.
12. Javan toistorakenteet
2. Taulukot.
15. Lohkot.
12. Javan toistorakenteet
7. Oliot ja viitteet.
3. Komentoriviparametrit
4. Attribuutit.
7. Hyvä ohjelmointitapa..
7. Näytölle tulostaminen
Kontrollirakenteet laajemmin
6. Muuttujat ja Java.
13. Loogiset operaatiot.
Ohjelman perusrakenteet
12. Javan toistorakenteet
Tiedon tulostaminen/kirjoittaminen ”WriteLine”
eli oliotiedostojen käsittely
16. Ohjelmoinnin tekniikkaa
Esityksen transkriptio:

11. Javan valintarakenteet

Sisällys If- ja if-else-lauseet. Orpo else. Valintaa toisin: switch-lause.

If-lause Merkitään varatulla sanalla if. false true ● ● ● … Merkitään varatulla sanalla if. Kuvaa yksisuuntaisen päätöksen: rakenteen lauseet suoritetaan vain ehdon ollessa totta. toteutuessa. Aaltosulkeet voidaan jättää pois, jos rakenteeseen liittyy vain yksi lause. ● ● ● if (● ● ●) { ● ● ● }

If-lause public class Vertailija1 { public static void main(String[] args) { // Vertailtavat arvot. int x; int y; … if (x == y) { // Tulostetaan, jos x ja y ovat yhtä suuret. System.out.println(x + " == " + y); }

If-else-lause Merkitään varatuilla sanoilla if ja else. true false ● ● ● … Merkitään varatuilla sanoilla if ja else. Kuvaa kaksisuuntaisen päätöksen: if-osaan liittyvät lauseet suoritetaan ehdon ollessa totta, muuten suoritetaan else-osaan liittyvät lauseet. Else-osalla ei ole omaa ehtoa. ● ● ● ● ● ● if (● ● ●) { ● ● ● } else {

If-else-lause public class Vertailija2 { public static void main(String[] args) { … if (x == y) { // Tulostetaan, jos x ja y ovat yhtä suuret. System.out.println(x + " == " + y); } else { // Tulostetaan, kun x ja y ovat erisuuret. System.out.println(x + " != " + y);

Sisäkkäiset valinnat Monisuuntaiset päätökset voidaan ilmaista sisäkkäisillä päätöksillä. Sisennysten merkitys ohjelman rakenteen selkeyttäjänä korostuu rakenteiden monimutkaistuessa. Oheinen rakenne (Vertailija3) ilmaisee kolmisuuntaisen päätöksen. // Ulompi rakenne. if (x < y) { System.out.println(x + " < " + y); } else { // Sisempi rakenne. if (x == y) { System.out.println(x + " == " + y); // Totta, kun ehdot epätosia. System.out.println(x + " > " + y);

Peräkkäiset valinnat Sisäkkäiset valintarakenteet voidaan korvata peräkkäisillä valinnoilla, jos rakenteiden ehdot sulkevat toisensa pois. // (x == y) == false ja (x > y) == false if (x < y) { System.out.println(x + " < " + y); } // (x < y) == false ja (x > y) == false if (x == y) { System.out.println(x + " == " + y); // (x < y) == false ja (x == y) == false if (x > y) { System.out.println(x + " > " + y);

Ole tarkkana operaattoreiden kanssa Ehtolausekkeessa voidaan tehdä vahingossa sijoitus, koska sijoitusoperaattori (=) palauttaa sijoitetun arvon. boolean teeSe; … // Päätellään pitäisikö tehdä // vai ei: muuttujan arvoksi // asetetaan true, jos tehdään. // Virhe. Tehdään aina. if (teeSe = true) … // Virhe. Ei tehdä koskaan. if (teeSe = false) … // Oikein, mutta epähuomiossa // tehty virhe on mahdollinen. if (teeSe == true) … if (teeSe == false) … // Oikein. Virhettä ei voida tehdä, // koska operaattoreita ei käytetä. if (teeSe) …

Orpo else Valintarakenteita yhdistettäessä ei ole aina selvää mihin if-osaan else-osa liittyy. Orpo else -ongelma (dangling else): Onko if (ehto) if (ehto) lause x; else lause y; if (ehto) if (ehto) if (ehto) if (ehto) lause x; vai lause x; else else lause y; lause y;

Orpo else Javassa orpo else-osa liittyy aina lähimpään vapaaseen if-osaan. if (ehto) lause x; else lause y; Koottuja lauseita käyttämällä voidaan vaikuttaa oletussuoritus-järjestykseen. Koodia muotoilemalla ei voida määrätä mihin if-osaan orpo else liittyy.

Orpo else if (ehto) lause x; else lause y; Else liittyy jälkimmäiseen if-osaan. if (ehto) { if (ehto) lause x; } else lause y; Else liittyy ensimmäiseen if-osaan.

switch-lause switch (arvo) { case vakio 1: lause k; ... break; lause l; ... ... default: lause m; ... } Valinta arvojen tai vakioiden avulla. Arvon oltava char, byte, short tai int. Javan 1.7-versiosta alkaen String-tyyppi sallittu. Jos break-lause puuttuu jostakin valinnasta, niin tästä kohdasta alkanut suoritus jatkuu, kunnes kohdataan seuraava break-lause tai valintarakenne loppuu. break-lauseen unohtuminen jostakin valinnasta on varsin yleinen ohjelmointivirhe. default-osa suoritetaan, jos mitään muuta lauseen osaa ei suoriteta. Lause sopii hyvin erilaisten valikoiden toteuttamiseen.

switch-lause // Ohjelma, jossa on valikko. public class Rekisteri { public static void main(String[] args) { // Ohjelman tuntemat komennot vakioina. final char LISAA = 'l'; final char POISTA = 'p'; final char HAE = 'h'; final char LOPETA = 'e'; // Muuttuja, johon luetaan käyttäjän // näppäimistöltä antama valinta. char valinta; … // Valitaan toiminto if-else-rakenteilla. if (valinta == LISAA) { System.out.println("Lisään..."); … } else if (valinta == POISTA) { System.out.println("Poistan..."); … else if (valinta == HAE) { System.out.println("Haen..."); … else if (valinta == LOPETA) { System.out.println("Lopetan..."); … else System.out.println("Virhe."); …

switch-lause … // Valitaan toiminto switch-rakenteella. switch (valinta) { case LISAA: System.out.println("Lisään..."); … break; case POISTA: System.out.println("Poistan..."); … case HAE: System.out.println("Haen..."); … case LOPETA: System.out.println("Lopetan..."); … break; default: System.out.println("Virhe."); } …