...
If-valintarakenne
Loogisilla- ja vertailuoperaatioilla testataan muuttujan tai muuttujien arvoja. Ehto saa arvokseen tosi tai epätosi.
Esimerkiksi
...
if-rakenteen yksinkertaisin muoto on
Code Block |
---|
if (ehto)
{
lauseita
}
|
- Aaltosulkeiden välissä olevat lauseet valitaan suoritettaviksi vain ehdon ollessa voimassa.
- Lauseita voi olla yksi tai useampia.
- Jos lauseita on vain yksi, ei ole välttämätöntä käyttää aaltosulkeita.
Esimerkiksi:
Code Block |
---|
if (a<b) printf("a oli pienempi kuin b");
else printf("a oli yhtäsuuri tai suurempi kuin b");
|
Testaus voidaan jakaa myös useampaan osaan.
Code Block |
---|
if (a<b) printf("a oli pienempi kuin b"); |
...
else if (a==b) printf("a oli yhtäsuuri kuin b"); |
...
else printf("a suurempi kuin b"); |
Vertailu loogisten operaatioiden avulla
Loogisilla operaatioilla saadaan informaatio siitä onko muuttuja nolla tai ei, lisäksi voidaan testata muuttujien yhtä- ja erisuuruutta.
1. ) muuttuja erisuuri kuin nolla
Code Block |
---|
if (a) printf("a ei ole nolla"); |
...
else printf("a on nolla"); |
2. ) muuttuja a
on nolla
Code Block |
---|
if (!a) printf("a on nolla"); |
...
else printf("a ei ole nolla"); |
3. ) muuttuja a
tai (OR) muuttuja b
on tosi (erisuuri kuin nolla), myös molemmat voivat olla tosia.
Code Block |
---|
if (a || b) printf("muuttuja a tai muuttuja b on tosi (erisuuri kuin nolla), myös molemmat voivat olla tosia"); |
...
else& printf("molemmat muuttujat ovat epätosia"); |
4. ) muuttuja a
ja (AND) muuttuja b
on tosi.
Code Block |
---|
if(a && b) printf("muuttuja a ja muuttuja b on tosi (erisuuri kuin nolla)"); |
...
else printf("molemmat muuttujat ovat epätosia"); |
Vertailuoperaattorit
Operaattoreilla verrataan muuttujia keskenään.
1. muuttujat a
ja b
ovat yhtäsuuria.
Code Block |
---|
if (a==b) printf("a ja b ovat yhtäsuuria"); |
...
else printf("a ja b ovat erisuuria"); |
2. muuttujat a ja b ovat erisuuria.
Code Block |
---|
if (a!=b) printf("a ja b ovat erisuuria"); |
...
else printf("a ja b ovat yhtäsuuria"); |
3. muuttuja a on pienempi kuin b.
Code Block |
---|
if (a<b) printf("a ja b ovat erisuuria"); |
...
else printf("a ja b ovat yhtäsuuria"); |
4. muuttuja a on suurempi kuin b.
Code Block |
---|
if (a>b) printf("muuttuja a on suurempi kuin b"); |
...
else printf("muuttuja a on suurempi kuin b"); |
5. muuttuja a on pienempi tai yhtäsuuri kuin b.
Code Block |
---|
if (a<=b) printf("muuttuja a on pienempi tai yhtäsuuri kuin b"); |
...
else printf("muuttuja a on pienempi tai yhtäsuuri kuin b"); |
6. muuttujat a on suurempi tai yhtäsuuri kuin b.
Code Block |
---|
if (a>=b) printf("muuttujat a on suurempi tai yhtäsuuri kuin b"); |
...
else printf("muuttujat a on suurempi tai yhtäsuuri kuin b"); |
7. muuttujat a on suurempi tai yhtäsuuri kuin b tai c on pienempi kuin d.
Code Block |
---|
if (a>=b || c<d) printf("muuttujat a on suurempi tai yhtäsuuri kuin b"); |
...
else printf("muuttujat a on suurempi tai yhtäsuuri kuin b tai c on pienempi kuin d"); |
8. muuttujat a on suurempi tai yhtäsuuri kuin b ja c on pienempi kuin d.
Code Block |
---|
if (a>=b && c<d) printf("muuttujat a on suurempi tai yhtäsuuri kuin b"); |
...
else printf("muuttujat a on suurempi tai yhtäsuuri kuin b ja c on pienempi kuin d"); |
if if
-valinta voidaan tehdä monen vaihtoehdon välillä: if
Code Block |
---|
if(ehto1) lauseke1; |
...
else if (ehto2) lauseke2; |
...
else if (ehto3) lauseke3; |
...
else lauseke4; // tämä toteutetaan jos mikään ehto ei ole tosi |
Lauseke1 voi koostua yhdestä käskystä tai {} sulkujen sisällä olevasta ohjelmalohkosta (sulkulauseke voi olla myös tyhjä).
Alistettuja if-lauseita käytetään usein tehokkaan ohjelmoinnin yhteydessä:
Code Block |
---|
if (i) |
...
{ if (j) lauseke1; |
...
if (k) lauseke2; |
...
else lauseke3; |
...
} |
...
else lauseke4; |