wiki:Ehtolauseet
Last modified 7 years ago Last modified on 2012-06-20 09:58:16

Apuja ohjelmointiin » Ehtolauseet

Esimerkki ehtolauseesta

Esimerkki if-lauseesta:

if ( maila.Top > Level.Top )
{
  maila.Velocity = Vector.Zero;
  return;
}

If-lauseessa tulee aina ensin sana if, sen jälkeen sulkujen sisällä ehto ja ehdon jälkeen koodilohko (aaltosulkujen välissä oleva osa), joka suoritetaan vain, jos ehto on tosi. Ehtona meillä on tässä maila.Top > Level.Top, mikä tarkistaa onko mailan yläreunan y-koordinaatin arvo suurempi kuin pelikentän yläreunan y-koordinaatti.

Ehdoksi kelpaa mikä tahansa lause, joka antaa bool-tyyppisen arvon. Totuusarvo-tyypin eli bool-tyypin mahdolliset arvot ovat true eli tosi ja false eli epätosi. bool-tyyppinen muuttuja ei voi saada muunlaisia arvoja.

Esimerkissä, jos mailan yläreunan y-koordinaatti olisi pienempi tai yhtäsuuri kuin kentän yläreunan y-koordinaatti, niin suurempi kuin -ehto palauttaisi false eli epätosi eikä mailaa pysäytettäisi.

if-lauseessa voi käyttää monia muitakin ehtoja, esimerkiksi:

  • x == 8 eli muuttuja x on yhtäsuuri kuin 8 (HUOM! Yhtäsuuruus on C#:ssa kaksi =-merkkiä)
  • y != 10 eli muuttuja y on erisuuri kuin 10
  • pallo.Mass <= kivi.Mass eli muuttujan pallo massa on pienempi tai yhtäsuuri kuin muuttujan kivi massa
  • pallo.IsVisible eli onko pallo näkyvä

Ehtolauseet yleisemmin

Ehtolauseet mahdollistavat eri ohjelmakoodin suorittamisen eri tilanteissa. Ehtolauseen rakenne on yksinkertaisimmillaan tällainen:

if (ehto)
{
}

Aaltosulkujen väliin kirjoitetaan ohjelmakoodi, joka suoritetaan kun ehto toteutuu. Ehto voi olla mikä tahansa lauseke, joka palauttaa bool-tyyppisen arvon.

if (amparinKoko > 10)
{
   // Tämä toteutuu, kun ämpärin koko on suurempi kuin 10
}
if (nimi[0] == 's')
{
    // Tämä toteutuu, kun nimi alkaa s-kirjaimella
}

Vaihtoehtoiset tapaukset

Joskus halutaan suorittaa oma ohjelmakoodinsa, kun ehto ei toteudu. Tämä onnistuu käänteisellä ehdolla tähän tapaan:

if (arvo > 2)
{
   // tehdään yhtä
}

if (arvo <= 2)
{
   // tehdään toista
}

...mutta yksinkertaisempikin vaihtoehto on olemassa - else-lause:

if (arvo > 2)
{
   // tehdään yhtä
}
else
{
   // tehdään toista
}

Tämä tekee täsmälleen saman kuin ylempi ohjelma. Huomaa, että else-osaa ei suoriteta, jos if-osa suoritetaan ja päinvastoin.

Kaksi tapausta ei aina riitä. Useampien ehtojen kokonaisuuksia varten on olemassa else if -lause, jota voidaan käyttää if- ja else-lauseiden kanssa yhdessä:

if (nakki < 0)
{
   // tehdään jotain
}
else if (nakki > 0)
{
   // tehdään jotain muuta
}
else
{
   /// jäljelle jää tapaus nakki == 0, joka johtaa tänne
}

Else if -lauseita voi olla rajoittamaton määrä. Varo päällekkäisiä ehtoja: vertailu tehdään aina siinä järjestyksessä missä ehdot ovat, eli ylhäältä alaspäin:

if (luku > 10)
{
   // tänne tullaan kun luku on suurempi kuin 10
}
else if (luku > 5)
{
   // Tänne tullaan kun luku on suurempi kuin 5, mutta pienempi tai yhtäsuuri kuin 10.
   // Jälkimmäinen "kirjoittamaton" ehto seuraa aiemmasta if-lauseesta.
}