4.7.1. if-komento

Tietylle toiminnolle voidaan asettaa ehto if-komennon avulla. Komentoon kuuluu ehtolauseke (engl. controlling expression) ja kaarisulkeisiin suljettu komentojen joukko (engl. body). J os ehtolauseke toteutuu, suoritetaan sulkeissa olevat komennot, muuten jatketaan ohjelman suoritusta sulkeiden jälkeiseltä riviltä.

Esimerkissä

set laskuri 0

if {$laskuri == 0} {

set laskuri 99

;#tässä voi olla muitakin komentoja ja

;#jopa toisia if -komentojakin

}

set laskuri

=> 99

sijoitetaan laskuri-muuttujan arvoksi 99, jos sen arvo oli ennestään 0. Sama on tehty seuraavassa esimerkissä, mutta if-komento on vain kirjoitettu yhdelle riville.

if {$laskuri == 0} { set laskuri 99 }

Ehtolausekkeena yllä olevassa esimerkissä on kaarisulkeissa oleva $laskuri == 0. Kaksi yhtäsuuruusmerkkiä peräkkäin (==) tarkoittaa yhtäsuuruutta. Lausekkeessa si is testataan, onko laskuri-muuttujan arvo 0. Tällä kertaa muuttujan arvo on 0, jolloin ehtolauseke palauttaa arvon tosi. Tämän jälkeen suoritetaan kaikki sulkeissa olevat komennot, joita tässä tapauksessa on vain yksi, set laskuri 99. Kun if-komento on jaettu ylemmän esimerkin mukaisesti useammalle riville pitää muista a laittaa suluissa olevien komentojen ensimmäinen kaarisulku ({) samalle riville if-komennon kanssa. Sama sääntö koskee muitakin ehtorakenteiden komentoja. Seuraava esimerkki on s iis väärin:

if {$laskuri == 0}

{ ;#Tämän sulun tulisi olla edelliselle rivillä

set laskuri 99

}

Useita elseif-osioita voi liittää if-komentoon. Ne suoritetaan vain, jos if-komennon ehtolauseke ei toteudu. Jos mikään lis&a uml;ehdoistakaan ei toteudu, on mahdollista laittaa else-osio if-komennon loppuun. Else-osio suoritetaan, jos mikään ehdoista ei toteutunut. Jos esimerkissä

if {$x < 0} {

;#ensimmäiset komennot

} elseif {$x == 1} {

;#toiset komennot

} elseif {$x == 2} {

;#kolmannet komennot

} else {

;#neljännet komennot

}

muuttujan x arvo olisi ollut -1, olisi suoritettu vain ensimmäisen osion komennot. Jos arvo olisi ollut 2, olisi kolmannet komennot suoritet tu. Arvon ollessa suurempi kuin 2 olisi suoritettu neljännet komennot, koska mikään ylläolevista ehdoista ei olisi toteutunut ja else-osiossa ei ole minkäänlaista ehtoa komentojen suoritukselle. if-komennossa saa olla elseif-osioita rajaton määrä ja else-osioita korkeintaan yksi. Kumpiakaan osioita ei ole pakko olla yht&aum l;än ja else-osion tulee olla aina viimeisenä osiona.

Välilyöntien käyttö kaarisulkeiden ympärillä on suositeltavaa jo sen vuoksi, että koodista ei tule liian "ahtaan" näköistä ja lisäksi voidaan välttää joskus aivan h&a uml;märienkin virheilmoitusten esiintyminen ohjelman suoritusvaiheessa. Hyvä sääntö on laittaa kaarisulkeiden kummallekin puolelle väli, jolloin voidaan varmistua koodin toimivuudesta. Joka tapauksessa on huolehdittava siit&a uml;, että sulkujen } ja { välissä on välilyönti. Hakasulkeiden (][) välissä ei ole pakko olla välilyöntiä.


previous gif next gif


Luk-tutkielma: Tcl/Tk -opiksi ja iloksi.