Informacje o nowych artykułach oraz akcjach edukacyjnych prosto na Twojej skrzynce e-mail!

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........}

Spodobało się?

Jeśli tak, to zarejestruj się do newslettera aby otrzymywać informacje nowych artykułach oraz akcjach edukacyjnych. Gwarantuję 100% satysfakcji i żadnego spamowania!

Dodaj komentarz

Odpowiedz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *

Pin It on Pinterest