Ver. 1.0 Beta, Don't have a compiler? Now you can write simple scripts ONLINE! This is a basic version -does not include all the Pascal statements. Only to learn basics

Programowanie warunków. Przykłady w Turbo Pascalu i delphi. If then else, case of

Pascal

Back to previous articleprevious Pierwsze programy
Go to main menuup Podstawy Pascala
Next articlenext Pętle, for, repeat, while, rekurencja

Programowanie warunków. Przykłady w Turbo Pascalu i delphi. If then else, case of

Warunki


if then else
złożone warunki i operatory logiczne
Case... of... else



If ... then ... else


Warunki pozwalają na stworzenie sztucznej inteligencji w programie. W zależności od pewnych zdarzeń wykonuje się jedna lub druga część Twojego kodu. Tak naprawdę są tylko dwie możliwości. Gdy warunek jest spełniony, albo gdy nie jest. Na szczęście warunki można ustawiać obok siebie, komplikować, zagnieżdżać, co dopiero daje duże możliwości.


Bardzo często zachodzi potrzeba sprawdzenia jakiejś informacji podanej przez użytkownika naszego programu. Chcemy np. wiedzieć czy jest pełnoletni, czy ma na koncie wystarczającą kwotę do wypłaty. W zależności od uzyskanych informacji możemy zezwolić mu na dalsze korzystanie z programu lub go wyłączyć, wypłacić pieniądze albo nie.


Warunki pozwalają porównać ze sobą liczby. Zobacz jak będą wyglądały dla wspomnianych zdarzeń. Są to jednak tylko przykłady teoretyczne, jeśli chcesz je wykorzystać musisz je dostosować do swoich potrzeb (zadeklarować [VAR] i wczytać [READ] wartości do zmiennych)


Gdy do zmiennej „wiek” mamy wczytany wiek użytkownika możemy zapisać wewnątrz programu:


if wiek<18 then Halt;

Jeśli warunek ten jest spełniony -czyli wiek jest mniejszy niż 18 lat, spowoduje wyłączenie programu (instrukcja Halt).


Gdy do zmiennej „konto” mamy wczytane konto użytkownika a do „wyplata” kwotę, którą chce on wypłacić możemy zapisać wewnątrz programu:


if konto>=wyplata then
 begin
   konto:= konto - wyplata;
   {Ciąg instrukcji, które jeszcze trzeba wykonać przy wypłacie}
 end else
   WriteLn(‘Nie masz tyle pieniędzy na koncie’);

Ten fragment programu sprawdza czy użytkownik ma wystarczająco pieniędzy na koncie, i realizuje wypłatę. Jeśli limit został przekroczony wypisuje komunikat: „Nie masz tyle pieniędzy na koncie”.


Złożone warunki  i operatory logiczne


Dwa powyżej opisane przykłady demonstrowały proste warunki. Program sprawdzał tylko jedno wyrażenie. Jeśli chcesz używać ich więcej musisz je połączyć w zdanie logiczne i wpisać je w nawiasy. Np. jeśli chcesz żeby do programu mieli tylko dostęp użytkownicy którzy podadzą prawidłowo tajne hasło i są powyżej 18 roku życia, możesz zapisać:


if (wiek>=18) and (wpisane_haslo = prawidlowe_haslo) then
 begin
   {program główny}
 end else
   WriteLn(‘ACCESS DENIED’);

Teraz krótkie objaśnienie. Jeśli zamierzasz sprawdzić więcej niż 1 warunek podaj je w nawiasach. Wtedy komputer będzie w stanie je rozdzielić, sprawdzić każdy z warunków z osobna i jeśli obydwa są spełnione wykonać kod wewnętrzny. Między warunkami wystąpiło słowo AND, z angielskiego „i”. Znaczy to że wnętrze programu wykona się tylko po spełnieniu obydwu warunków. Możesz także korzystać ze słowa OR (lub). Wtedy wystarczy by jeden warunek był spełniony aby wykonać program. Może także zaistnieć potrzeba użycia słowa NOT (nie), które spowoduje że gdy warunek jest niespełniony program przejdzie do głównej części. Słowo nie wstawia się przed warunkiem. Czas na przykłady:


if not ((wiek>=18) and (wpisane_haslo=prawidlowe_haslo)) then
 begin
   WriteLn(‘ACCESS DENIED’);
   Halt;
 end;
 {Program główny}

Program ten troszkę przypomina poprzedni i w rzeczywistości z punktu widzenia użytkownika niczym się nie różni. Jeśli użytkownik nie ma 18 lat i nie wpisze prawidłowego hasła program wyświetli ACCES DENIED i się wyłączy. W przeciwnym razie wykona się program za warunkiem.


Może zajść potrzeba wykonania programu przechodzącego do kolejnego etapu gdy użytkownik w grze zdobył 100 punktów lub przejechał samochodem wyścigowym 10 000 m. Zapiszemy ten warunek tak:


if (punktow>=100) or (dystans>=10000) then
 begin
  {Zapisanie wygranej}
  {Wyjście z czesci programu, ktora sie ciagle powtarza (pętli)}
  Break;
 end;
 {Dalszy ciąg gry…}

Warunki można także doklejać, bardziej komplikować, dzięki czemu dostosujesz je do swoich potrzeb, wystarczy tylko troszkę pomyśleć i zastanowić się nad tym co chcesz osiągnąć. Pamiętaj, że nawiasami precyzujesz kolejność wykonywania działań. Nawet przy sprawdzaniu warunków.



Wskazówka…

Aby Twój program działał sprawniej podczas korzystania z operacji AND na początku umieszczaj warunki, które najczęściej powodują ich niespełnienie. Gdy jeden warunek zostanie niespełniony, komputer nie będzie sprawdzał drugiego, bo nie ma to już sensu. Tak więc zyskasz na czasie sprawdzenie drugiego warunku. Z tego wynika, że na początku dobrze jest umieszczać także warunki, których sprawdzenie potrwa bardzo szybko, np. porównywanie liczb, a na końcu wolne, np. porównywanie słów. Analogicznie pomyśl jak mógłbyś przyśpieszyć operację OR…



Komputer sprawdzając warunki bada każdy z nawiasów i nadaje mu wartość True – jeśli jest spełniony lub False jeśli nie. Wynika z tego, że jeśli jakaś zmienna lub funkcja jest typu Boolean (typ True, False) nie trzeba jej porównywać, pisząc np.


  if zmienna=true then ...


Wystarczy wpisać: (tylko dla zmiennych BOOLEAN)


  if zmienna then ...

Zaoszczędzi to czasu Tobie, a procesor nie będzie musiał sprawdzać kolejnego warunku.



Case ... of ... else


Słowo case jest nietypowym warunkiem, który zaoszczędzi Tobie czas, gdy konstruujesz kod, działający w zależności od wartości jakiejś zmiennej. Gdy zmienna ma wartość pierwszą, wykonuje pierwszą sekwencję, gdy wartość drugą -drugą sekwencję, itd. Jest możliwe również ustalenie wykonywania instrukcji, w przypadku wszelkich innych wartości za pomocą else. Warunek zbiorowy Case, kończymy słowem end;


Słowo kluczowe Case – jako parametr zmiennej może przyjmować typy char oraz całkowite liczbowe, np. Integer. Pierwszy przykład jest bardzo teoretyczny...


case (b) of {b zadeklarowane jako Byte}
   1: Instrukcja1;
   2: Instrukcja2;
 else  {W przeciwnym wypadku}
   Instrukcja3;
 end;

W drugim przykładzie pokazano zastosowanie Case przy budowie menu gry MasterMind. Zmienna c jest typu char. Wczytany został do niej kod klawisza. Zawiera więc w sobie jeden znak z klawiatury.


{w przykładzie zastosowanie Case w menu gry MasterMind}
 {Zamiast pisać}
 if c = KEY_LEFT then
   px := px - 1;

 if c = KEY_ RIGHT then
   px := px + 1;

 if c = KEY_ UP then
   py := py - 1;

 {można uprościć kod...}


 case (c) of {c zadeklarowane jako char}
   KEY_LEFT:  {KEY_LEFT to stała zdefiniowana przez programistę}
px := px - 1;
   KEY_RIGHT:  {KEY_RIGHT to stała...}
px := px + 1;
   KEY_UP:
py := py - 1;
   KEY_DOWN:
py := py + 1;
   KEY_CHOOSE:
     Choose;
   KEY_NEW_GAME:
     Init;
   KEY_ESCAPE:
     quit := TRUE;
 else  {W przeciwnym wypadku}
   Exit; {Wyjście z procedury}
 end;

This website uses cookie files in order to provide Google services (advertisements, analitycs) and Facebook. If you want to block using cookies, turn them off in your browser settings. Need a help? Click me