Ehto- ja toistolauseet

Slides:



Advertisements
Samankaltaiset esitykset
15. Loogiset operaatiot.
Advertisements

@ Leena Lahtinen Helia Ohjelman perusrakenteet 1. PERÄKKÄISRAKENNE 2. VALINTARAKENNE 3. TOISTORAKENNE.
© Jukka Harju, Viittausmuuttujat. © Jukka Harju, Viittaukset •Viittausmuuttuja sisältää tiedon siitä missä muistipaikassa olio.
JavaScript (c) Irja & Reino Aarinen, 2007
VBA –ohjelmoinnin perusteet
Ohjelman perusrakenteet
1 Ehtolausekkeet Ehdot, valintalausekkeet Boolean-algebra.
Rakenteinen ohjelmointi
22. Taulukot.
© Jukka Harju, Jukka Juslin
Java-ohjelmointi Opas ammattimaiseen osaamiseen Luku 4 Toistolauseet
© Jukka Harju, Jukka Juslin1 Java-ohjelmointi Opas ammattimaiseen osaamiseen Luku 4 Ehto- ja toistolauseet.
@ Leena Lahtinen OHJELMAN OSITTAMINEN LUOKKA ATTRIBUUTIT METODIT.
TIETOKONEOHJELMAN RAKENNE OHJELMALLA ON KAKSI OSAA  MÄÄRITYSOSA TIETOJEN KUVAUKSIA VARTEN  SUORITUSOSA TIETOJEN KÄSITTELYÄ VARTEN.
Ehto- ja toistolausekkeet
Elinkeinopoliittinen mittaristo 2014
16. Lohkot Sisällys Tutustutaan lohkoihin. Muuttujien ja vakioiden näkyvyys sekä elinikä erityisesti operaation lohkossa. Nimikonfliktit. Muuttujat.
© Jukka Harju, Jukka Juslin Java-ohjelmointi Opas ammattimaiseen osaamiseen Luku 9 Poikkeuskäsittely.
Poikkeustenkäsittely  Mitä poikkeustenkäsittely tarkoittaa?  Poikkeuksen käsitteleminen  Poikkeusluokkien hierarkia  Poikkeuksen heittäminen 1.
© Jukka Harju, Jukka Juslin1 Tuloksellinen Java-ohjelmointi Luku 4 Ehto- ja toistolauseet Tuloksellinen Java-ohjelmointi.
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.
TAULUKKO YKSIULOTTEINEN TAULUKKO. TAULUKKO  Taulukon tarkoitus Ohjelmassa tarvitaan paljon samantyyppisiä samaan kohdealueeseen kuuluvia muuttujia Näitä.
Ohjelman perusrakenteet
Pseudokoodi Tietokoneohjelmien perusidea:
13. Hyvä ohjelmointitapa (osa 1)
1 Kertaus koetta varten oleellisista asioista Jukka Juslin.
ict1td002 - Copyright Raine Kauppinen 1 Alkuarvot ja tyyppimuunnokset (1/5)  Aiemmin olemme jo antaneet muuttujille alkuarvoja, esimerkiksi: int.
Visual Basic -ohjelmointi
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
@ Leena Lahtinen OHJELMAN OSITTAMINEN LUOKKA ATTRIBUUTIT METODIT.
Toistorakenne Toistorakennetta käytetään ohjelmissa sellaisissa tilanteissa, joissa jotain tiettyä ohjelmassa tapahtuvaa toimenpidekokonaisuutta halutaan.
22. Taulukot.
@ Leena Lahtinen Toistorakenne Ohjelmassa toistetaan tiettyjä toimenpiteitä monta kertaa peräkkäin Toisto noudattaa sille kuuluvia tarkkoja standardoituja.
@ Leena Lahtinen TIETOKONEOHJELMAN RAKENNE OHJELMALLA ON KAKSI OSAA:  MÄÄRITYSOSA TIETOJEN KUVAUKSIA VARTEN  SUORITUSOSA TIETOJEN KÄSITTELYÄ.
RAKENNUSPALIKOITA SEINÄJOEN KANSALAISOPISTO Jussi Rasku Aki Sirviö.
© Jukka Juslin1 Osio2 Olio-ohjelmointi: Merkkijonot eli Stringit Jukka Juslin.
Rinnakkaisuus Järjestelmässä, jossa voi olla useita prosesseja rinnakkain suorituksessa voi tulla tilanteita, joissa prosessien suoritusta täytyy kontrolloida.
Aakkosnumeerinen tieto Tarkoittaa kaikkea muuta tietoa paitsi laskentaan tarkoitettuja lukuja Muuttujan tietosisältö on siis tekstitietoa Muuttujan tietotyypiksi.
Visual Basic -ohjelmointi
Antti-Jussi Lakanen Nuorten peliohjelmointi 2009 / Jyväskylän yliopisto.
Kontrollirakenteet laajemmin
Visual Basic -ohjelmointi
Javascript 2: Ohjelmointikielen ominaisuudet Jaana Holvikivi Metropolia.
Toistorakenne Toistorakennetta käytetään ohjelmissa sellaisissa tilanteissa, joissa jotain tiettyä ohjelmassa tapahtuvaa toimenpidekokonaisuutta halutaan.
Ohjelmointi 1. toinen luento1 Taulukot n Kiinteät taulukot: alkioiden määrä tiedetään Dim intCount(12) As Integer 0 indeksit saavat arvoja 0-12 (Option.
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.
Ohjelmassa tänään Ohjelmointimallit Pseudokieli Modulaarisuus.
Toistorakenne Toistorakennetta käytetään ohjelmissa sellaisissa tilanteissa, joissa jotain tiettyä ohjelmassa tapahtuvaa toimenpidekokonaisuutta halutaan.
Toistorakenne Toistorakennetta käytetään ohjelmissa sellaisissa tilanteissa, joissa jotain tiettyä ohjelmassa tapahtuvaa toimenpidekokonaisuutta halutaan.
While-toistolause while-lause on alkuehtoinen toistolause. Alkuehtoista toistolausetta käytettäessä järjestelmä päättelee ehtolausekkeen arvon ensin ja.
13. Loogiset operaatiot.
do-while -toistolause
Toisto Toistolausekkeet for, while(ehto){…} ja do {…} while(ehto)
do-while -toistolause
10. Javan ohjausrakenteet
16. Ohjelmoinnin tekniikkaa
14. Hyvä ohjelmointitapa.
11. Javan valintarakenteet
12. Javan toistorakenteet
Jouni Juntunen Oulun seudun ammattikorkeakoulu Liiketalouden yksikkö
12. Javan toistorakenteet
Toistorakenteet Toistorakenteissa on usein tarve esim. toistaa jotakin lausetta tai lohkoa n kertaa, toistaa jotakin lausetta tai lohkoa kunnes jokin muuttuja.
Kontrollirakenteet laajemmin
13. Loogiset operaatiot.
Ohjelman perusrakenteet
12. Javan toistorakenteet
16. Ohjelmoinnin tekniikkaa
Esityksen transkriptio:

Ehto- ja toistolauseet

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

Missä ollaan? if-ehtolause Muut ehtolauseet while-lause Muut toistolauseet

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

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.

if-lause if-lauseella on seuraava syntaksi: ehto on boolean-lauseke, joka saa aina arvon tosi (true) tai epätosi (false) if on Javan varattu sana if( ehto ) { lause1; lause2; } Jos ehto on tosi, suoritetaan if-lauseeseen liittyvä ohjelmalohko. Jos ehto on epätosi, Ohjelmalohko jätetään suorittamatta.

if-lauseen logiikka ehdon evaluointi false ohjelmalohko true

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ä (=)!

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.

if-lause Mitä seuraavat lauseet tekevät? if (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-muuttujien summa. Aritmeettiset operaatiot suoritetaan ennen yhtäsuuruus- ja vertailuoperaatioita. Sulkujen käyttö asian selventämiseksi on kuitenkin aina suositeltavaa!

Loogiset operaattorit Ehtolausekkeet voivat käyttää myös seuraavia loogisia operaattoreita: ! NOT (EI) && AND (JA) || OR (TAI) Nämä kaikki ottavat vastaan boolean-lausekkeita operandeina 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).

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 false

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 b ovat molemmat epätosia)

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!

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 false

saldo > otto + 500 && !tilivirhe Totuusarvotaulukko Minkä tahansa monimutkaisemmankin lausekkeen voi evaluoida totuusarvotaulukon avulla. saldo > otto + 500 tilivirhe !tilivirhe saldo > otto + 500 && !tilivirhe true false

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.

Missä ollaan? if-ehtolause Muut ehtolauseet while-lause Muut toistolauseet

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.

if-else lauseen logiikka ehto evaluoidaan false lause2 lause1 true

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.

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.

Missä ollaan? if-ehtolause Muut ehtolauseet while-lause Muut toistolauseet

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

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

while-lauseen logiikka ehdon evaluointi false lauseet true

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.

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.

Ikuiset silmukat Esimerkki ikuisesta silmukasta eli “ikiloopista”: int laskuri = 1; while (laskuri < 100) { System.out.println(laskuri); laskuri = laskuri - 1; }

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;

Missä ollaan? if-ehtolause Muut ehtolauseet while-lause Muut toistolauseet

do-while -lause do-while -lauseella on seuraava syntaksi: lauseet; } while ( ehto ); Lauseet (ohjelmalohko) suoritetaan ensin kertaalleen, sitten ehto evaluoidaan. Lauseet suoritetaan toistuvasti kunnes ehdosta tulee epätosi (false).

do-while -lauseen logiikka lauseet true ehdon evaluointi false

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.

while- ja do-while –lauseiden vertailu lauseet true false ehdon evaluointi while silmukka true ehdon evaluointi lauseet false do silmukka