Java-kielen perusteita Toistorakenne (while, do-while, for) 1
While- lause while-lauseen rakenne on seuraava: while (ehtolauseke) lause Kun ehtolausekkeen arvo on totta, lause suoritetaan. Lause suoritetaan uudestaan ja uudestaan, niin kauan kuin ehtolausekkeen arvo on totta. Lause voi olla: koottulause. sijoituslause, if-lause, toistolause tai Koottu-lauseen rakenne: { lause1;. lausen; Koottu-lauseen avulla voimme toistaa useampaa kuin yhtä lausetta. } Ohjelmointi - Kauppinen, Vilpponen, S. Lahtinen 2
while- lause while-lause ehto false true lause Ohjelmointi - Kauppinen, Vilpponen, S. Lahtinen loppu 3
while- lause Mitä seuraava ohjelmanpätkä tekee? Scanner input = new Scanner(System.in); int luku, summa = 0; System.out.println( Anna luku, < 0 lopettaa ); luku = input.nextint () ; while (luku >= 0) { } summa = summa + luku; System.out.println( Anna luku, < 0 lopettaa ); luku = input.nextint () ; Tässä ns. toistomuuttujan (luku) on saatava arvo ennen while-lausetta. Ja muuttujan arvon tulee vaihtua toisto-osassa (koottu lause) eli yleensä muuttuja saa uuden arvon toisto-osan viimeisenä toimenpiteenä, josta palataan while-lauseen alkuun tutkimaan ehtolausekkeen arvoa. System.out.println( Lukujen summa on + summa); Kuinka monta kertaa toisto-osa suoritetaan? 4
Harjoitus 1) Tee ohjelma Merkit.java, joka pyytää käyttäjältä yhden merkin. Kun käyttäjä antaa merkin arvoksi!-merkin, niin ohjelma loppuu. Ohjelma tulostaa näytölle annetut merkit ja laskee kuinka monta merkkiä annettiin sekä tulostaa lopuksi merkkien määrän. 2) Tee ohjelma Luvut.java, joka tulostaa näytölle desimaaliluvut kymmenestä kolmeenkymmeneen 0,5:n välein. Käytä while-lausetta. 5
do-while -lause do-while -lauseen rakenne on seuraava: do lause while (ehtolauseke); Ensin suoritetaan lause ja sitten tutkitaan, onko ehtolausekkeen arvo totta. Jos on, suoritetaan lause uudelleen jne Jos ehtolausekkeen arvo ei ole totta, tullaan ulos do-while-lauseesta. Huom! do-while-lause päättyy puolipisteeseen; Lause voi olla: sijoituslause, if-lause, toistolause, koottulause. Koottu-lauseen rakenne: { lause1;. lausen; Koottu-lauseen avulla voimme toistaa useampaa kuin yhtä lausetta. } 6
do-while lause do-while-lause lause true ehtolauseke false 7
do-while -lause Mitä seuraava ohjelmanpätkä tekee? Scanner input = new Scanner (System.in); int luku, summa = 0; do { System.out.println( Anna luku, < 0 lopettaa ); luku = input.nextint () ; if (luku >= 0) summa = summa + luku; } while (luku >= 0) ; System.out.println( Lukujen summa on + summa); Kuinka monta kertaa toisto-osa suoritetaan? Mitä eroa tällä ohjelmapätkällä on verrattuna aikaisempaan while-lauseen avulla toteutettuun ohjelmapätkään? 8 Ohjelmointi - Kauppinen, Vilpponen
Luentoesimerkki Harjoitus 1) Tee ohjelma LaskuA.java, joka kysyy käyttäjältä kokonaislukuja. Ohjelma tulostaa näytölle jokaisen luvun antamisen jälkeen ko. luvun neljännen potenssin ( Math.pow ( luku, potenssi ) ). Tämän jälkeen ohjelma kysyy käyttäjältä haluaako hän jatkaa lukujen antamista. Jos käyttäjä antaa kirjaimen k, niin jatketaan, muuten lopetetaan. Käytä do-while-rakennetta. 2) Tee ohjelma LaskuB.java, joka kysyy käyttäjältä kokonaislukuja kunnes käyttäjä antaa luvuksi -1. Ohjelma tulostaa näytölle jokaisen luvun antamisen jälkeen ko. luvun neljännen potenssin. Käytä do-while-rakennetta. 9
for -lause for lauseen rakenne: for (alustus; ehtolauseke; kasvatus) lause Ensin tehdään alustus. Sitten tutkitaan ehtolauseke. Jos ehtolausekkeen arvo on totta, suoritetaan lause. Tämän jälkeen suoritetaan kasvatus, tutkitaan ehtolauseke ja jos ehtolausekkeen arvo on totta, suoritetaan lause, jne Jos ehtolausekkeen arvo on epätotta, tullaan ulos for-lauseesta. Lause voi olla: sijoituslause, if-lause, toistolause, koottulause. Tälle rakenteelle on ominaista se, että se valitaan käytettäväksi silloin, kun toistokertojen tarkka lukumäärä tiedetään. 10
for lause: for-lause alustus ehtolauseke false true kasvatus lause 11
for -lause alustus ehtolauseke kasvatus for ( int i = 0 ; i < 10 ; i++ ) { lause; lause; } Montako kertaa toisto suoritetaan? 12
for -lause esimerkki // ohjelmapätkä, joka pyytää 10 lukua ja laskee // ja tulostaa lukujen summan Scanner input = new Scanner(System.in); int luku, summa = 0; for ( int i = 0 ; i < 10 ; i++) { System.out.print ("Anna luku:"); luku = syote.nextint(); summa = summa + luku; } System.out.println( lukujen summa on + summa); 13
Harjoitus Tee ohjelma, joka laskee käyttäjän antaman luvun kertoman. Jos luku on vaikkapa 5, sen kertoma 5! = 1*2*3*4*5 = 120. Tallenna tiedoston nimellä Kertoma.java. 14