@ Leena Lahtinen Helia Ohjelman perusrakenteet 1. PERÄKKÄISRAKENNE 2. VALINTARAKENNE 3. TOISTORAKENNE
@ Leena Lahtinen Helia Ohjelman perusrakenteet 1. PERÄKKÄISRAKENNE koko ohjelman toiminta on peräkkäinen kaikki ohjelman toiminnot suoritetaan loogisesti peräkkäin kerran tehtyä toimintoa ei voi enää peruuttaa ohjelman kulkua ei voi eikä pidä ohjata takaisin ohjelman alkuun päin
@ Leena Lahtinen Helia VALINTARAKENNE 2. VALINTARAKENNE valintarakennetta käytetään ohjelmassa vaihtoehtoisten toimintojen suorittamiseen ehdon jälkeen ohjelman kulku haarautuu kahteen vaihtoehtoiseen kulkusuuntaan, joista aina vain toinen suoritetaan
@ Leena Lahtinen Helia VALINTARAKENNE valintarakenne alkaa aina kysymyksellä eli ehdolla kysymys eli ehtolauseke on aina sulkujen sisällä ehtolausekkeella on aina kaksi vastausta: tosi epätosi perustoiminta tiedon vertailu tarkoittaa samaa asiaa eli valinrakennetta
@ Leena Lahtinen Helia VALINTARAKENNE Ehdon totuustilan sääntöjä Tosi: ehto pitää rakentaa niin, että tosi osaan tulee aina toimenpiteitä tosi osa sisältää aina 1 - n. kpl toimenpiteitä Epätosi: voi puuttua eli se ei sisällä yhtään toimenpidettä (0 kpl) tai sisältää 1 - n. kpl toimenpiteitä
@ Leena Lahtinen Helia VALINTARAKENNE YKSINKERTAINEN EHTO (lampotila > 0) (lukumaara = = 100) (luku1 < luku2) (a >= b) tosi ja epätosi tilanteet on suoraan ymmärrettävissä
@ Leena Lahtinen Helia VALINTARAKENNE UML –toimintakaavion symbooli: EHTO [lampotila > 0] TULOSTA ”Ei pakkasta” TOSI EPÄTOSI
@ Leena Lahtinen Helia VALINTARAKENNE Edellinen Javalla: if ( lukumaara = = 100) { y = y + 1 ; tosi-osan lohko } Huom ! lohkosulut { ja } !
@ Leena Lahtinen Helia VALINTARAKENNE LOHKOSULKUJEN KÄYTTÖ lohko muodostetaan aina aaltosulkeilla eli lohkon toiminnat ovat aaltosulkeiden sisällä lohkon aloittaa vasen aaltosulku { ja sen lopettaa oikea aaltosulku } tosi–osasta tehdään oma lohko epätosi–osasta tehdään oma lohko
@ Leena Lahtinen Helia VALINTARAKENNE Esimerkki Javalla, jossa on mukana kaksi lohkoa: if ( lukumaara = = 100) { y = y + 1 ; x = 5 ; tosi - lohko } else { y = y – 1 ; a = b / 7 ; epätosi – lohko }
@ Leena Lahtinen Helia VALINTARAKENNE YHDISTETTY EHTO ehto koostuu useasta (2 – 3) kysymyksestä yhdistetyn ehdon loogiset operaattorit: JA TAI
@ Leena Lahtinen Helia VALINTARAKENNE YHDISTÄVÄ SANA - > JA (syntvuosi > 1980 JA syntvuosi < 1990) Ehdossa yksi muuttuja, syntvuosi koko ehto on tosi vain silloin: kun syntvuosi - muuttujan arvoalue on väliltä koko ehto on epätosi kahdessa tilanteessa: muuttujan arvo on 1980 tai pienempi muuttujan arvo on 1990 tai suurempi
@ Leena Lahtinen Helia VALINTARAKENNE YHDISTÄVÄ SANA -> JA (&&) Edellinen Javalla: if (syntvuosi > 1980 && syntvuosi < 1990) { a = 0; c = 100 ; }
@ Leena Lahtinen Helia VALINTARAKENNE YHDISTÄVÄ SANA -> JA (hinta > 55,95 JA laji = = 1) Ehdossa kaksi muuttujaa, hinta ja laji koko ehto on tosi vain silloin: kun molempiin ehtoihin tulee vastaus tosi eli hinta on suurempi kuin 55,96 ja laji on yksi koko ehto on epätosi: jos jompi kumpi ehdoista on epätosi tai molemmat ehdot ovat epätosia
@ Leena Lahtinen Helia VALINTARAKENNE YHDISTÄVÄ SANA -> JA (&&) Edellinen Javalla: if (hinta > && laji = = 1) { ale = 5 ; summa = 0 ; } else { ale = 10 ; laskuri -- ; }
@ Leena Lahtinen Helia VALINTARAKENNE YHDISTÄVÄ SANA -> TAI (kappale = = 10 TAI kappale >= 150) Ehdossa yksi muuttuja, kappale koko ehto on tosi kahdessa eri tilanteessa: vain ensimmäinen ehto on tosi vain toinen ehto on tosi koko ehto on epätosi: kun molemmat ehdot ovat epätosia
@ Leena Lahtinen Helia VALINTARAKENNE YHDISTÄVÄ SANA -> TAI ( || ) Edellinen Javalla: if (kappale = = 10 || kappale >= 150) { summa = 0 ; a = 10 ; }
@ Leena Lahtinen Helia VALINTARAKENNE YHDISTÄVÄ SANA -> TAI (saldo < 0 TAI luottoraja < ) Ehdossa kaksi muuttujaa saldo ja luottoraja koko ehto on tosi kolmessa eri tilanteessa: vain ensimmäinen ehto on tosi vain jälkimmäinen ehto on tosi molemmat ehdot ovat tosia koko ehto on epätosi silloin: kun molemmat ehdot ovat epätosia
@ Leena Lahtinen Helia VALINTARAKENNE YHDISTÄVÄ SANA -> TAI ( || ) Edellinen Javalla: if (saldo < 0 || luottoraja < ) { summa = 0 ; a ++ ; }
@ Leena Lahtinen Helia VALINTARAKENNE YHDISTETTYJÄ EHTOJA ((vv >= 2000 JA vv < 2003) TAI koodi = = 1) sulkujen käyttö suositeltavaa koko ehto on tosi tilanteissa: jos vv on väliltä 2000 – 2002 tai koodi on 1 tai molemmat edellä mainitut ehdot ovat tosia koko ehto on epätosi: muuttujien muilla arvoilla
@ Leena Lahtinen Helia VALINTARAKENNE YHDISTETTYJÄ EHTOJA Edellinen Javalla: if ((vuosi >= 2000 && vuosi < 2003) || kpl = = 1) { alku = 10 ; summa = 0 ; }
@ Leena Lahtinen Helia VALINTARAKENNE Yhdistetyn ehdon sääntöjä: ehtoon ei pidä laittaa liikaa kysymyksiä suositus on yhdestä kolmeen (2 -3) jos ehtoja on likaa, on hyvin vaikeaa mieltää milloin koko ehto on tosi ja milloin se on epätosi useiden ehtojen sijaan käytä sisäkkäisiä ehtoja eli sisäkkäisiä valintarakenteita
@ Leena Lahtinen Helia VALINTARAKENNE Sisäkkäinen valintarakenne ehdon kysymykset hajoitetaan useampaan kysymykseen yhteen kuuluvista kokonaisuuksista tehdään oma ehtolauseke
@ Leena Lahtinen Helia VALINTARAKENNE Sisäkkäinen valintarakenne ehdon tosi-osa samoin kuin epätosi- osa voi siis sisältää edelleen valintarakenteita sisäkkäiset valintarakenteet ovat teknisesti täysin samanlaisia kuin valintarakenne yleensä
@ Leena Lahtinen Helia VALINTARAKENNE seuraava lauseke tulisi tehdä sisäkkäisillä valintarakenteilla esimerkki Javalla: if (((a d) { luku = 5 ; } else { luku = 10 ; }
@ Leena Lahtinen Helia VALINTARAKENNE Edellinen Javalla sisäkkäisinä rakenteina: if (a d) { luku = 5 ; } else { luku = 10 ; } }
@ Leena Lahtinen Helia VALINTARAKENNE Erilaiset valintarakenteet: 1. if.. 2. if.. else.. 3. if.. else if.. 4. switch 5. ehto ? :
@ Leena Lahtinen Helia VALINTARAKENNE Usean arvon vertailu eli monivalinta ja raja-arvojen vertailu Arvojen tehokas vertailu: jokaisesta raja-arvosta tehdään yksi kysymys eli ehto ei käytetä yhdistettyjä ehtoja UML – kaaviossa oma esitystapansa Javalla käytetään else if – muotoa tai switch - muotoa
@ Leena Lahtinen Helia VALINTARAKENNE if… else if – rakenne esimerkki Javalla : Huom! vertailtavat arvot etenevät pienemmästä suurempaan. if (lampotila < -10) System.out.println (”Liikaa pakkasta”) ; else if (lampotila < 0) System.out.println (”Sopiva pakkanen”) ; else if (lampotila < 15) System.out.println (”Keväinen sää”) ; else if (lampotila < 25) System.out.println (”Kesäinen sää”) ; else System.out.println (”Helteinen sää”) ;
@ Leena Lahtinen Helia VALINTARAKENNE SWITCH - rakenne käytetään moni valinnassa ehtomuuttujalla on useita eri arvoja, joilla ehto on tosi korvaa if - valintarakenteen saadaan selkeämpi kokonaisuus
@ Leena Lahtinen Helia VALINTARAKENNE rakenne alkaa sanalla switch sen jälkeen tulee suluissa ehtomuuttuja, johon voi liittyä myös esim. laskukaava tämän jälkeen luetellaan kaikki ne ehtomuuttujan arvot, joilla ehto on tosi lopussa voi olla lisäksi epätosi
@ Leena Lahtinen Helia VALINTARAKENNE UML – kaavion esitystapa: [luku = = 2] [luku = = 5] a ++ ; b ++ ; a ++ ; muut ++ ; break; [luvun muut arvot]
@ Leena Lahtinen Helia VALINTARAKENNE Edellinen Javalla ja switch - rakenteena: switch (luku) { case 2: a++ ; break ; case 5: b++ ; break ; default: muut ++ ; }
@ Leena Lahtinen Helia VALINTARAKENNE edellinen esimerkki Javalla, kun käytetään else if – rakennetta: if (luku == 2) a++ ; else if (luku == 5) b++ ; else muut ++ ;
@ Leena Lahtinen Helia VALINTARAKENNE Ehto ? : - rakenne muuttuja = ((ehto) ? arvo : arvo) rakenne koostuu neljästä osasta: muuttuja, johon sijoitetaan kysymyksen tuloksena tuleva arvo (sijoitus) ehto suluissa ? – merkin jälkeen tosi–arvo : – merkin jälkeen epätosi-arvo Käytetään harvoin
@ Leena Lahtinen Helia VALINTARAKENNE Edellisen ehdon esimerkki tapaus: Jos laskuri on suurempi kuin 10, kpl – muuttuja saa arvokseen luvun 5, muuten arvon 0. Javalla: kpl = ((laskuri > 10) ? 5 : 0) ;