360 likes | 537 Views
Ohjelman perusrakenteet. 1. PERÄKKÄISRAKENNE 2. VALINTARAKENNE 3. TOISTORAKENNE. 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
E N D
Ohjelman perusrakenteet 1.PERÄKKÄISRAKENNE 2. VALINTARAKENNE 3. TOISTORAKENNE @ Leena Lahtinen Helia 10.1.2006
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 10.1.2006
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 10.1.2006
VALINTARAKENNE • valintarakenne alkaaaina 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 10.1.2006
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 10.1.2006
VALINTARAKENNE • YKSINKERTAINEN EHTO • (lampotila > 0) • (lukumaara = = 100) • (luku1 < luku2) • (a >= b) • tosi ja epätosi tilanteet on suoraan ymmärrettävissä @ Leena Lahtinen Helia 10.1.2006
VALINTARAKENNE UML –toimintakaavion symbooli: EHTO EPÄTOSI [lampotila > 0] TOSI TULOSTA ”Ei pakkasta” @ Leena Lahtinen Helia 10.1.2006
VALINTARAKENNE • Edellinen Javalla: if (lukumaara = = 100){y = y + 1 ;tosi-osan lohko}Huom ! lohkosulut { ja } ! @ Leena Lahtinen Helia 10.1.2006
VALINTARAKENNE • LOHKOSULKUJEN KÄYTTÖ • lohko muodostetaan aina aaltosulkeillaeli 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 10.1.2006
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 10.1.2006
VALINTARAKENNE YHDISTETTY EHTO • ehto koostuu useasta (2 – 3) kysymyksestä • yhdistetyn ehdon loogiset operaattorit: • JA • TAI @ Leena Lahtinen Helia 10.1.2006
VALINTARAKENNE YHDISTÄVÄ SANA - > JA(syntvuosi > 1980 JA syntvuosi < 1990) • Ehdossa yksimuuttuja, syntvuosi • koko ehto on tosi vain silloin: • kun syntvuosi - muuttujan arvoalue on väliltä 1981-1989 • koko ehto on epätosi kahdessa tilanteessa: • muuttujan arvo on 1980 tai pienempi • muuttujan arvo on 1990 tai suurempi @ Leena Lahtinen Helia 10.1.2006
VALINTARAKENNE YHDISTÄVÄ SANA -> JA (&&) • Edellinen Javalla: if (syntvuosi > 1980 && syntvuosi < 1990) { a = 0; c = 100 ; } @ Leena Lahtinen Helia 10.1.2006
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 10.1.2006
VALINTARAKENNE YHDISTÄVÄ SANA -> JA (&&) • Edellinen Javalla:if (hinta > 55.95 && laji = = 1){ ale = 5 ; summa = 0 ;}else{ ale = 10 ; laskuri -- ;} @ Leena Lahtinen Helia 10.1.2006
VALINTARAKENNE YHDISTÄVÄ SANA -> TAI (kappale = = 10 TAI kappale >= 150) • Ehdossa yksimuuttuja, 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 10.1.2006
VALINTARAKENNE YHDISTÄVÄ SANA -> TAI ( || ) • Edellinen Javalla:if (kappale = = 10 || kappale >= 150){ summa = 0 ; a = 10 ;} @ Leena Lahtinen Helia 10.1.2006
VALINTARAKENNE YHDISTÄVÄ SANA -> TAI(saldo < 0 TAI luottoraja < 1000.00) • 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 10.1.2006
VALINTARAKENNE YHDISTÄVÄ SANA -> TAI ( || ) • Edellinen Javalla:if (saldo < 0 || luottoraja < 1000.00){ summa = 0 ; a ++ ;} @ Leena Lahtinen Helia 10.1.2006
VALINTARAKENNE • YHDISTETTYJÄ EHTOJA((vv >= 2000 JA vv < 2003) TAI koodi = = 1) • sulkujenkä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 10.1.2006
VALINTARAKENNE YHDISTETTYJÄ EHTOJA Edellinen Javalla:if ((vuosi >= 2000 && vuosi < 2003)|| kpl = = 1){ alku = 10 ; summa = 0 ;} @ Leena Lahtinen Helia 10.1.2006
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 10.1.2006
VALINTARAKENNE • Sisäkkäinen valintarakenne • ehdon kysymykset hajoitetaan useampaan kysymykseen • yhteen kuuluvista kokonaisuuksista tehdään oma ehtolauseke @ Leena Lahtinen Helia 10.1.2006
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 10.1.2006
VALINTARAKENNE • seuraava lauseke tulisi tehdä sisäkkäisillä valintarakenteilla • esimerkki Javalla:if (((a < b) && (b = = c)) || c > d){ luku = 5 ;}else{ luku = 10 ;} @ Leena Lahtinen Helia 10.1.2006
VALINTARAKENNE • Edellinen Javalla sisäkkäisinä rakenteina:if (a < b && b = = c) { luku = 5 ; } else { if (c > d) { luku = 5 ; } else { luku = 10 ; } } @ Leena Lahtinen Helia 10.1.2006
VALINTARAKENNE • Erilaiset valintarakenteet: • if .. • if .. else .. • if .. else if .. • switch • ehto ? : @ Leena Lahtinen Helia 10.1.2006
VALINTARAKENNE • Usean arvon vertailu eli monivalinta ja raja-arvojen vertailu • Arvojentehokas 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 10.1.2006
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 10.1.2006
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 10.1.2006
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 10.1.2006
VALINTARAKENNE • UML – kaavion esitystapa: [luku = = 2] a ++ ; a ++ ; break; break; [luku = = 5] b ++ ; break; [luvun muut arvot] muut ++ ; @ Leena Lahtinen Helia 10.1.2006
VALINTARAKENNE • Edellinen Javalla ja switch - rakenteena:switch (luku){ case 2: a++ ; break ; case 5: b++ ; break ; default: muut ++ ;} @ Leena Lahtinen Helia 10.1.2006
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 10.1.2006
VALINTARAKENNE • Ehto ? : - rakenne • muuttuja = ((ehto) ? arvo : arvo) • rakennekoostuu 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 10.1.2006
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) ; @ Leena Lahtinen Helia 10.1.2006