09. Instrukcje warunkowe

Instrukcja warunkowa określa, który z fragmentów programu zostanie wykonany w zależności od spełnienia określonych warunków. Ogólna postać instrukcji warunkowej.

if (warunek) {
    instrukcje;
}

Instrukcja warunkowa z blokiem else

if (warunek) {
    instrukcje;
}else{
    inne_instrukcje;
}

Instrukcja przetwarzania warunkowego pozwala na łatwa i szybkie zastąpienie bloku if..else. Można powiedzieć, że stanowi jego skróconą wersję. Jeżeli wynikiem działania warunku jest wartość true, to zostanie wykonana pierwsza instrukcja. Jeżeli warunek nie zostanie spełniony i przyjmie wartość false, zostanie wykonana instrukcja_2

    (warunek) ? {instrukcja_1}:{instrukcja_2}

Prosty skrypt pokazujący działanie instrukcji przetwarzania warunkowego:

<script type="text/javascript">
    var x = prompt("Podaj liczbę", "");
    x = (x%2==0) ? "parzysta" : "nieparzysta";
    document.write("x to liczba " + x);
</script>

Czasem się zdarzy, że trzeba byłoby kilkukrotnie sprawdzać warunek czy zmienna przyjmuje odpowiednią wartość. Na przykład weźmy, że w zależności od wartości zmiennej x będziemy wykonywać inne operacje. Dla instrukcji warunkowej if wyglądałoby to mniej więcej tak:

if (x==0){
    instrukcja_1;
}
if (x==1){
    instrukcja_2;
}
if (x==2){
    instrukcja_3;
}

Jak sami widzicie nie wygląda to zbyt elegancko. Z pomocą przychodzi nam konstrukcja switch. Powyższe instrukcje if można zamienić na:

switch (x){
    case 0 : instrukcja_1;break;
    case 1 : instrukcja_2;break;
    case 2 : instrukcja_3;
}

W konstrukcji switch można dopisać blok default. Wykonuje się on wtedy, kiedy żaden warunek nie jest spełniony:

switch (x){
    case 0 : instrukcja_1;break;
    case 1 : instrukcja_2;break;
    case 2 : instrukcja_3;break;
    default: instrukcja_4;
}

Instrukcja break odpowiedzialna jest za wyjście z konstrukcji switch po znalezieniu opcji. Jeżeli nie byłoby break instrukcje następujące po znalezionej opcji wykonałyby się jedna po drugiej. Na ostatniej opcji nie jest wymagana instrukcja break.

Czasem zachodzi potrzeba, żeby sprawdzić warunek w sekcji else. Robi się to poprzez konstrukcję

if (x){
    instrukcja_1;
}
else if(y>0){
    instrukcja_2;
}