|
4. Toimintojen toistaminen
4.1 Ehtolauseet
if-lause
Ehdollinen lause eli if-lause on muotoa:
if (ehto)
lause
tai
if (ehto)
lause1
else
lause2
Ensimmäinen tarkoittaa, että jos ehto on true, lause suoritetaan.
Jälkimmäinen, että jos ehto on true, lause1 suoritetaan, muuten
suoritetaan lause2.
double luku1, luku2;
luku1 = 2;
luku2 = 5;
if (luku1 > luku2)
System.out.println("Ensimmäinen luku on suurempi.");
else
System.out.println("Ensimmäinen ei ole suurempi.");
Mikä halutaan ehtolausekkeen arvolla true suorittaa useampia kuin yksi lauseke,
tulee ehdon jälkeen laittaa "{" ja haluttujen lauseiden jälkeen sulkumerkki "}".
if (luku1 > luku2) {
System.out.println("Ensimmäinen luku on suurempi.");
suurempi = luku1;
}
Ehtollinen lause voi olla myös ehdollisen lauseen sisällä:
if (a< b) {
if (c< d)
e = f;
}
else
g=h;
Valintalause Switch
Switch-lauseella voidaan toteuttaa näppärästi monivalinta osa ohjelmakoodista.
Lausekkeen tyyppi voi olla vain char, byte, short tai int.
Jokaisen valintavakion täytyy olla sijoitettavissa lausekkeen tyyppiseen muuttujaan.
Yksi valintavakio voi esiintyä vain kerran.
default voi esiintyä korkeintaan kerran.
int lkm;
switch (lkm) {
case 3: System.out.print("kolme, ");
case 2: System.out.print("kaksi, ");
case 1: System.out.print("yksi, ");
case 0: System.out.print("nolla: ");
}
4.2 Silmukat
While-toisto
while (jatkamisehto)
lause
Ns. alkuehtoisen toiston idea on, että ennen jokaisen
toistokerran aloittamista lasketaan toistoehto. Jos ehto sallii,
toistetaan toistettava alialgoritmi kerran ja taas tutkitaan
toistoehto, jne.
Tämä toistotapa soveltuu tilanteeseen, jossa toistokertoja tarvitaan
nolla tai enemmän, alialgoritmia ei siis välttämättä toisteta
kertaakaan.
int k=0;
while (k<5) {
System.out.println(k);
++k;
}
Do-while -toisto
do
lause
while (jatkamisehto)
Do-while -toiston ero While- toistoon että silmukan sisältö suoritetaan
läpi ja vasta lopussa tarkistetaan while ehto, eli päinvastainen
toimintaperiaate kuin while silmukassa.
int k=0;
do {
System.out.println(k);
++k;
} while (k<5);
For-toisto
Yleensä ohjelmointikielissä on lause, jolla voi vaivattomasti
käydä läpi joitakin arvoalueita. Usein algoritmeissa on esimerkiksi
tarpeen tehdä jotakin peräkkäisillä arvoilla 0, 1, 2, ..., n.
Java-kielen for-toistolauseen muoto on:
for (alkuasetus; jatkamisehto; eteneminen)
toistettava lause
Alkuasetus on lause, joka suoritetaan yhden kerran ennen
toistojen aloittamista.
Jatkamisehto on totuusarvoinen lauseke, joka tarkistetaan ennen
jokaista toistokertaa; jos lausekkeen arvo on false, koko for-lause
päättyy siihen, jos true, toistettava lause suoritetaan ainakin kerran
Eteneminen on lause, joka suoritetaan jokaisen toistokerran jälkeen.
Toistettava lause on toistettava alialgoritmi; jos se muodostuu useista
lauseista, lauseet on suljettava käskysulkeisiin "{" ja "}".
Hyvin tavallinen ja luonteva käyttötapa for-lauseelle on arvoalueen läpikäynti:
int i;
for (i=0; i<6; ++i)
System.out.println(i);
tai
for (int i=0; i<6; ++i)
System.out.println(i);
Keskeytyslauseet break, continue
break-lause voi keskeyttää switch-, while-, do- tai for-lauseen
while (jotakin) {
...
if (keskeytyttää)
break;
...
}
continue-lauseella voidaan keskeyttää yksi toistokerta ja
aloittaa seuraavan toiston alusta while-, do- ja for-lauseissa
(tarkemmin: ohitetaan toistettavan alialgoritmin loppu ja siirrytään
laskemaan toistoa kontrolloiva ehto, for-lauseessa siirrytään ensin
laskemaan kasvatuslauseke)
Tulostaa parittomat luvut 0-10 väliltä
for (int i=1; i<10; ++i) {
if (i%2 == 0)
continue;
System.out.println(i);
}
|