Instrukcje warunkowe i wyboru





Nie będzie przesady w stwierdzeniu, że na instrukcjach warunkowych opiera się programowanie. Pozwalają one na wykonanie różnych operacji zależnie od sytuacji. W Pascal najprostsza instrukcja warunkowa wygląda tak
if x=1 then x:=2;
czyli jeżeli x jest równe 1 to x ma przyjąć wartość 2. Znak "=" możemy tu zależnie od potrzeb zastąpić ">", "<" "<=", ">=" (większy, mniejszy, mniejszy równy, większy równy) lub "<>" (różne od):
if x>1 then x:=1;
Jeżeli x większe od 1 to ma przyjąć wartość 1

Przy formułowaniu warunków można posłużyć się następującymi operatorami:
AND: logiczne "i" czyli, aby wykonać operację wszystkie warunki muszą być spełnione
OR: wystarczy, że jeden zostanie spełniony
XOR: Czyli spełniony jest dokładnie jeden z warunków
NOT: czyli wszystko tylko nie to
np:
if (x>10)or(x=1) then x:=5;
x przyjmuje wartość 5, jeżeli x większe od 10 lub równe 1.
Warunki mogą być niekiedy bardzo rozbudowane:
if ((x>10)and(x<15))or(n=5) then x:=2;
czyli jeżeli x większe od 10 i mniejsze od 15, lub gdy n jest równe 5, to wtedy x przyjmuje wartość dwa. A to był jeszcze dość prosty przykładzik :)

Oczywiście po spełnieniu warunku może zostać wykonanych wiele operacji:
if x=1 then begin
x:=10;
z :=5
end;


Na koniec pozostaje jeszcze instrukcja else, która można przetłumaczyć jako: "Jeżeli nie, to"
if x:=1 then x:=2
else
x:=5;
Jeżeli x równe 1 to x przyjmuje wartość 2, w przeciwnym wypadku przyjmuje wartość 5.
Else można także stosować w bardziej zaawansowanych przypadkach:
if x=1 then begin
x:=10;
z :=5
end else begin
x:=4
z:=3
end;

Często zdarza się, że chcemy, aby nasz program wykonał np.: 10 różnych operacji dla dziesięciu wartości jakiejś zmiennej. Można to zrobić za pomocą warunku if- then, ale znacznie wygodniej jest użyć instrukcji case
case k of
1:operacja;
2:inna operacja;
3:begin
jakies operacje;
jakieś inne operacje;
end;
end;

W tym przypadku "k" jest zmienną typu integer (może być dowolnego typu). W przypadku gdy ma wartość 1 wykona się operacja, 2- inna operacja, 3 jakies operacje i jakies inne operacje.
case z of
'qwert':operacje;
'x':operacje;
end;
W tym przykładzie "z" jest zmienną typu string
case o of
#13:operacje;
'z': operacje ;
end;
a w tym "o" jest typu char.