Instrukcja warunkowa IF

Instrukcja warunkowa pozwala na wykonanie alternatywnych ścieżek programu, w zależności od spełnienia określonego warunku logicznego. Instrukcja ta składa się ze słowa kluczowego if, po którym następuje wyrażenie logiczne, po nim zaś następuje słowo kluczowe then. Instrukcja, która umieszczona jest po nim, wykonywana jest, gdy warunek logiczny jest prawdziwy. Po tej instrukcji może nastąpić słowo kluczowe else, wraz z instrukcją, która jest wykonywana, jeśli warunek logiczny nie zachodzi. W poprawnej instrukcji warunkowej nie musi jednak występować klauzula else.

Ogólny schemat instrukcji warunkowej przedstawiony jest poniżej.

if war_log then
  {instrukcja_1}
else
  {instrukcja_2};
{instrukcja_3};

Kod który następuje po drugiej instrukcji (w przypadku wystąpienia klauzuli else) 
lub pierwszej (w przypadku przeciwny) wykonywany jest niezależnie od tego, 
czy wyrażenie logiczne jest prawdziwe, czy fałszywe. Powyższemu przykładowi na schemacie 
blokowym odpowiadałaby następująca grupa bloków:

if-alg

Ponieważ w instrukcji warunkowej w poszczególnych alternatywnych ścieżkach wykonania programu może wystąpić tylko jedna instrukcja, w celu wykonania większej liczby instrukcji, konieczne jest wykorzystanie instrukcji grupującej (patrz poniższy przykład).

Wyrażenia logiczne występujące w instrukcji warunkowej mogą stanowić alternatywę lub koniunkcję wyrażeń logicznych. Alternatywa logiczna zapisywana jest za pomocą słowa kluczowego or, natomiast koniunkcja za pomocą słowa kluczowego and. Negacja zapisywana jest za pomocą słowa kluczowego not.

Przykład

var
  rok, liczba_dni, dni_w_lutym : integer;
begin
  write("Wprowadź rok: ");
  readln(rok);
  if (rok mod 4 = 0 and ((not(rok mod 100 = 0)) or (rok mod 400 = 0))
    begin
      liczba_dni := 366;
      dni_w_lutym := 29;
    end
  else
    begin
      liczba_dni := 365;
      dni_w_lutym := 28;
    end;
  write("W roku ");
  write(rok);
  write("jest ");
  write(liczba_dni);
  writeln(" dni.");
  write("Luty ma w tym roku");
  write(dni_w_lutym);
  writeln(" dni");
end.

Powyższy fragment kodu ustala wartość zmiennych liczba_dni oraz dni_w_lutym na podstawie wartości zmiennej rok. (Lata przestępne wypadają co cztery lata, z wyjątkiem lat będących wielokrotnością 100 ale nie będących wielokrotnością 400). Zastosowano w nim wyrażenie logiczne składające się z alternatywy, negacji oraz koniunkcji, a także przedstawiono zastosowanie instrukcji grupującej w kontekście instrukcji warunkowej.

Ponadto w przykładzie tym wykorzystane są procedury biblioteczne write, writeln oraz readln (o procedurach czytaj dalej). Pierwsza procedura pozwala wyprowadzać komunikaty na zewnątrz wykonywanego programu (zazwyczaj na ekran monitora). Druga działa tak samo, ale dodatkowo powoduje przejście do nowej linii. Ostatnia procedura pozwala wczytać wartość wprowadzoną z klawiatury do zmiennej.

Przykładowe wykonanie programu mogłoby wyglądać następująco:

Wprowadź rok: 2000
W roku 2000 jest 366 dni.
Luty ma w tym roku 29 dni.

Author: ZSE

Share This Post On
Skip to content