następny punkt »

1. Podejmowanie decyzji

Często sekwencja wykonania instrukcji programu zależy od jakichś warunków. Na podstawie sprawdzenia tych warunków podejmujemy decyzje o tym jakie instrukcje mają być wykonane.

Do podejmowania decyzji służy przede wszystkim instrukcja sterująca if .
Ma ona postać (w Javie pomijamy słówko then):

if ( warunek ) then instrukcja ;

gdzie:
  • warunek - dowolne wyrażenie relacyjne lub logiczne
  • instrukcja - instrukcja, która będzie wykonana tylko wtedy, gdy warunek okaże się spełniony

Bardzo użytecznym rozszerzeniem tej instrukcji jest instrukcja if-else.

    if ( warunek ) then instrukcja1;
    else
instrukcja2;

która działa w następujący sposób: jeżeli warunek jest spełniony, wykonywana jest instrukcja1, w przeciwnym razie wykonywana jest instrukcja2


Uwaga: w Javie pomijamy słówko then

Rozważmy proste przykłady.


c = 1;
if (a < b) then c = a + b;
d = c + 1;
Gdy a = 10, b = 11 (warunek spełniony) zmienna c uzyskuje wartość 21, zmienna d wartość 22.
Gdy a = 2, b = 1 (warunek nie spełniony) instrukcja c = a + b nie jest wykonywana  i zmienna d uzyskuje wartość 2.
if (a = b) then c = 1;
else c = 2;
d = c + 1;
Jeżeli a = b (warunek spełniony) c uzyskuje wartość 1, instrukcja zapisana w else nie jest wykonywana i d ma wartość 2.
Jeżeli a jest różne do b (warunek niespełniony) wykonywana jest instrukcja w else (c= 2), po czym w wyniku d = c+1 uzyskujemy wartość 3.
if (a > b) then max = a;
else max = b;
Znajduje maksimum z liczb a i b i podstawia je na zmienną max.
if (a > b) then txt = "a > b";
else if (a <b) then txt = "a < b";
else txt = "a = b";
say txt;
Wypisuje na konsoli komunikat czy a jest większe, mniejsze czy równe b.

Teraz już możemy napisać program realizujący omawiany wcześniej algorytm wyliczenia podatku.

/* Wyliczenie podatku */

say "Podaj dochód po odliczeniach:";
doch = linein();

if (doch > 74048) then pod = 17048.44 + 0.4 * (doch - 74048);
else if (doch > 37024) then pod = 6541.24 + 0.3 * (doch - 37024);
     else pod = 0.19 * doch - 493.32;

say "Podatek:" pod;

Uwaga! w Javie do grupowania instrukcji służą nawiasy klamrowe { i }

Instrukcja w if i else może być tzw. instrukcją grupującą, zawierającą nie jedną a wiele instrukcji. Istotnie, przecież często przy spełnieniu jakiegoś warunku będziemy chcieli wykonać kilka instrukcji, a nie jedną.

Grupujemy instrukcje za pomocą słów kluczowych do i end.

Ma to naturalne znaczenie:

Piszemy np.
i jest to praktycznie kod w metajęzyku
if (a > b) then do
   suma = a + b;
   rozn = a - b;
   ilocz = a * b;
end
jeżeli (a > b) to wykonaj
   suma = a + b;
   rozn = a - b;
   ilocz = a * b;
koniec wykonania


 następny punkt »