ALOITTELIJAN JAVA-OPAS


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);
         } 


Tietojärjestelmien dokumentointi 2005 | Aloittelijan JAVA-opas


Valid CSS!