Esittely latautuu. Ole hyvä ja odota

Esittely latautuu. Ole hyvä ja odota

11. Javan valintarakenteet

Samankaltaiset esitykset


Esitys aiheesta: "11. Javan valintarakenteet"— Esityksen transkriptio:

1 11. Javan valintarakenteet

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

3 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 (● ● ●) { ● ● ● }

4 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); }

5 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 {

6 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);

7 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);

8 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);

9 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) …

10 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;

11 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.

12 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.

13 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.

14 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.");

15 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."); } …


Lataa ppt "11. Javan valintarakenteet"

Samankaltaiset esitykset


Iklan oleh Google