Instrukcja warunkowa if
Instrukcja warunkowa
if przyjmuje postać:
if (wyrażenie_logiczne) instrukcja1
lub
if (wyrażenie_logiczne) instrukcja1 else instrukcja2;
Działanie instrukcji
if:
- obliczana jest wartości wyrażenie_logiczne;
- jeśli jest ona równa true, to wykonywana jest instrukcja1;
- w przeciwnym przypadku, wykonywana jest instrukcja2 umieszczona po słowie kluczowym else (jeśli występuje) lub następna instrukcja programu.
Instrukcja warunkowa switch
Istnieje możliwość łatwego programowania warunków, przyjmujących wartości ze zbioru większego niż dwuelementowy
(jak to ma miejsce w instrukcji
if).
Stosujemy wtedy instrukcję wyboru
switch o następującej składni:
switch (wyrażenie_warunkowe)
{ case wartość1: instrukcje1; [ break; ]
case wartość2: instrukcje2; [ break; ]
...
case wartośćN: instrukcjeN; [ break; ]
[ default: instrukcja; ]
}
Działanie instrukcji
switch:
- obliczana jest wartość wyrażenie_warunkowe, która musi przyjmować wartości całkowite;
- następnie porównywana jest ona kolejno z wartościami wartośćX umieszczonymi po słowach case;
- sterowanie jest przekazywane do tej instrukcji, w której wartość jest równa wartości wyrażenie_warunkowe;
- wykonywane są wszystkie instrukcje do końca instrukcji switch lub do napotkania instrukcji break;
- jeśli żadna stała nie ma wartości identycznej z wartością wyrażenia, to wykonywana jest instrukcja umieszczona po słowie default (jeśli jest zdefiniowane) lub następna instrukcja programu.
Instrukcja iteracyjna while
Instrukcja
while przyjmuje postać:
while (wyrażenie_logiczne) instrukcja;
Działanie instrukcji
while:
- obliczana jest wartość wyrażenie_logiczne;
- jeśli jest ona prawdziwe (równa true), to wykonywana jest instrukcja;
- gdy wartość ta jest fałszem (równa jest false): sterowanie przekazywane jest do następnej instrukcji programu;
- po wykonaniu instrukcji ponownie sprawdzana jest wartość wyrażenie_logiczne i procedura jest powtarzana.
Istnieje możliwość zmiany opisanego wyżej trybu wykonania instrukcji poprzez zastosowanie instrukcji sterujących
break i continue.
Instrukcja iteracyjna do ... while
Instrukcja warunkowa
do...while przyjmuje postać:
do
instrukcja
while (wyrażenie_logiczne);
Działanie instrukcji
do...while:
- wykonywana jest instrukcja;
- następnie obliczana jest wartość wyrażenie_logiczne;
- jeśli jest ona prawdziwe (równa true), to wykonywana jest ponownie instrukcja i procedura jest powtarzana;
- gdy wartość ta jest fałszem (równa jest false): sterowanie przekazywane jest do następnej instrukcji programu.
Wykonanie tej instrukcji różni się od wykonania instrukcji
while tym, że
warunek wyrażenie_logiczne
jest sprawdzany po wykonaniu instrukcji, a nie przed, jak to ma miejsce w przypadku instrukcji
while.
Istnieje możliwość zmiany opisanego wyżej trybu wykonania instrukcji poprzez zastosowanie instrukcji sterujących
break i continue.
Instrukcja iteracyjna for
Instrukcja warunkowa
for przyjmuje postać:
for (wyrażenie_1; wyrażenie_logiczne; wyrażenie_3)
instrukcja;
Działanie instrukcji
switch:
- obliczana jest wartość wyrażenia_1 (może to być ciąg instrukcji oddzielonych przecinkami);
- obliczana jest wartość wyrażenie_logiczne;
- jeśli wartość obliczona jest równa true, to wykonywane jest instrukcja
- w przeciwnym przypadku, sterowanie przekazywane jest do następnej instrukcji programu za for;
- obliczana jest wartość wyrażenia_3 (może to być ciąg instrukcji oddzielonych przecinkami);
- następuje powrót do kroku 2.
Zmienne zadeklarowane w
wyrażeniu_1 są widoczne tylko w ciele instrukcji
for - po wykonaniu pętli, nie mogą być one ponownie użyte.
Ta cecha deklaracji zmiennych wykazuje istotną różnicę z analogiczną deklaracją w języku C++, gdzie zmienne zadeklarowane w instrukcji
for są widoczne są także poza nią.
Istnieje możliwość zmiany opisanego wyżej trybu wykonania instrukcji poprzez zastosowanie instrukcji sterujących
break i continue.
Instrukcja break
Instrukcja break pozwala na wcześniejsze opuszczenie pętli do, while lub for.
Jeśli break występuje bez etykiety (ang. label) to sterowanie programem przekazywane jest do następnej instrukcji za instrukcją do, while lub for.
Jeśli instrukcja break posiada etykietę to sterowanie przekazywane jest do pierwszej instrukcji za podana etykietą.
Przykład użycia instrukcji
break z etykietą
int x=0;
int y=10;
ETYK:
{ while(x++ < 100)
{ if (--k == 0) break ETYK;
System.out.println(x/y);
}
//Tu przeszłoby sterowanie, gdyby instrukcja break nie miała etykiety
} //koniec bloku instrukcji ETYK
//Tu przejdzie sterowanie programem po wykonaniu break ETYK
Użycie instrukcji
break z etykietą pozwala na natychmiastowe opuszczenie wielu zagnieżdżonych instrukcji pętli.
Instrukcja continue
Instrukcja
continue nie powoduje opuszczenia pętli, ale natychmiastowe przejście do następnego kroku iteracji pętli
do,
while lub
for.
Jeśli użyjemy instrukcji
continue z etykietą sterowanie przekazywane jest do nawiasu otwierającego blok instrukcji oznaczonych etykietą.
Blok instrukcji
Instrukcję złożoną z ciągu instrukcji zamkniętych między nawiasami { i }, nazywana blokiem instrukcji.
Jeśli wewnątrz bloku zadeklarujemy zmienną to będzie ona widoczna tylko w tym bloku.
Przykład widoczności zmiennych w bloku instrukcji:
{ int x = 1;
{ int x = 2;
System.out.println("x = " + x); //wyświetli x = 2
}
{ long x = 3;
System.out.println("x = " + x); //wyświetli x = 3
}
System.out.println("x = " + x); //wyświetli x = 1
}