Ostatnie słowa hakera przed śmiercią: Log Out
Java - Instrukcje sterujące pracą programu
if  |   switch  |   for  |   while  |   do  |   continue  |   break  |   blok instrukcji

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:
  1. obliczana jest wartość wyrażenia_1 (może to być ciąg instrukcji oddzielonych przecinkami);
     
  2. obliczana jest wartość wyrażenie_logiczne;
     
  3. jeśli wartość obliczona jest równa true, to wykonywane jest instrukcja
     
  4. w przeciwnym przypadku, sterowanie przekazywane jest do następnej instrukcji programu za for;
     
  5. obliczana jest wartość wyrażenia_3 (może to być ciąg instrukcji oddzielonych przecinkami);
     
  6. 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
   }
« wstecz   dalej »