Instrukcja warunkowa (IF-THEN-ELSE)
Instrukcja warunkowa IF (jeżeli), jest bardzo często wykorzystywana przez programistów. Dzięki temu elementowi języka Pascal, możemy na przykład dorobić zabezpieczenie w naszym poprzednim programie, które uniemożliwi dzielenie przez 0, a to tylko jedno z możliwych zastosowań.
Ogólna składnia instrukcji warunkowej IF wygląda tak (wersja skrócona):
IF (warunek) THEN instrukcja-1;
Oraz druga wersja (dłuższa):
IF (warunek) THEN instrukcja-1 ELSE instrukcja-2; {UWAGA! - po instrukcji-1 nie ma średnika, ponieważ to nie jest koniec IF'a}Zasada działania powyższego kodu jest bardzo prosta. „Instrukcja-1” zostanie wykonana tylko w tedy kiedy podany warunek zwróci true (tzn. będzie prawdziwy np. 2 > 1). Natomiast w drugiej wersji (dłuższej), jest taka różnica, że w wypadku, gdy podany warunek zwróci false (tzn. będzie nieprawdziwy np. 2 < 1), to zostanie wykonana „Instrukcja-2„.
IF (2 > 1) THEN wykonaj jeżeli prawda;
IF (2 > 1) THEN wykonaj jeżeli prawda ELSE wykonaj jeżeli fałsz;
Jeżeli kod po słowie THEN lub ELSE, będzie zawierał kilka funkcji tzn. będzie bardziej złożony należy go wtedy zamknąć w tzw. klamry (BEGIN i END;):
IF (1 > 0) THEN
BEGIN
instrukcja-1;
instrukcja-2;
END {UWAGA! - TU NIE MA ŚREDNIKA PONIEWAŻ TO NIE JEST KONIEC INSTRUKCJI IF}
ELSE
BEGIN
instrukcja-3;
instrukcja-4;
END; {UWAGA! - TUTAJ JEST ŚREDNIK PONIEWAŻ ZAKOŃCZYŁA SIĘ INSTRUKCJA IF}Wróćmy teraz do naszego programu, który dzieli liczby:
program kalkulator;
uses crt;
var
liczba1,liczba2,wynikDodawania,wynikOdejmowania,wynikDzielenia,wynikMnozenia:integer;
begin
ClrScr; {czyścimy ekran}
write('Podaj pierwszą liczbę: ');
readln(liczba1);
write('Podaj drugą liczbę: ');
readln(liczba2);
wynikDodawania := liczba1 + liczba2; { dodawanie }
wynikOdejmowania := liczba1 - liczba2; { odejmowanie }
wynikDzielenia := liczba1 / liczba2; { dzielenie - pamiętaj, że nie można dzielić przez 0! }
wynikMnozenia := liczba1 * liczba2; { mnożenie }
writeln('Wynik dodawania: ', wynikDodawania);
writeln('Wynik odejmowania: ', wynikOdejmowania);
writeln('Wynik dzielenia: ', wynikDzielenia);
write('Wynik mnożenia: ', wynikMnozenia);
repeat until keyPressed; {oczekujemy na wciśnięcie przycisku}
end.Musimy w nim zastosować instrukcję warunkową, która sprawdzi czy zmienna – „liczba2„, która jest dzielnikiem jest różna od 0.
program kalkulator;
uses crt;
var
liczba1,liczba2,wynikDodawania,wynikOdejmowania,wynikDzielenia,wynikMnozenia:integer;
begin
ClrScr; {czyścimy ekran}
write('Podaj pierwszą liczbę: ');
readln(liczba1);
write('Podaj drugą liczbę: ');
readln(liczba2);
wynikDodawania := liczba1 + liczba2; { dodawanie }
wynikOdejmowania := liczba1 - liczba2; { odejmowanie }
{INSTRUKCJA IF}
if (liczba2 <> 0) THEN {sprawdzamy czy dzielnik jest różny od 0}
wynikDzielenia := liczba1 / liczba2 {UWAGA! - tu nie ma średnika bo to nie jest koniec instrukcji IF}
ELSE wynikDzielenia := 'Nie można dzielić przez 0!'); {koniec IF}
{KONIEC IF'a}
wynikMnozenia := liczba1 * liczba2; { mnożenie }
writeln('Wynik dodawania: ', wynikDodawania);
writeln('Wynik odejmowania: ', wynikOdejmowania);
writeln('Wynik dzielenia: ', wynikDzielenia);
write('Wynik mnożenia: ', wynikMnozenia);
repeat until keyPressed; {oczekujemy na wciśnięcie przycisku}
end.Teraz po wprowadzeniu drobnych modyfikacji, program został zabezpieczony przed dzieleniem przez 0.
Instrukcję warunkową IF jak każdą inną funkcję można również zagnieżdżać:
if warunek-1 then instrukcja-1 {pamiętaj o...}
else {...braku średnika!}
if warunek-2 then {...oraz wcięciach}
instrukcja-2 {a to już tyczy się drugiego IF'a}
else
{itd........}