Rozdział 13


WARUNKI

 

Podsumowanie

 

W rozdziale 3 zobaczyliśmy, że polecenie IF przyjmuje postać

 

IF warunek THEN ...

 

Warunkami były tam relacje (=, <, >, <=, >= i <>), które porównują dwie liczby lub dwa łańcuchy. Za pomocą operacji logicznych AND, OR i NOT można te porównania łączyć ze sobą.

Jedno porównanie AND inne porównanie jest prawdziwe tylko wtedy, gdy oba te porównania są prawdziwe, zatem możliwy jest poniższy wiersz:

 

IF a$="tak" AND x>0 THEN PRINT x

 

w którym x zostanie wydrukowane tylko wtedy, gdy jednocześnie a$="tak" i x>0. Przy pomocy AND można połączyć ze sobą wiele porównań, a całość będzie prawdziwa, jeśli prawdziwe jest każde z nich.

Jedno porównanie OR inne porównanie jest prawdziwe, gdy przynajmniej jedno z tych porównań jest prawdziwe (pamiętaj, że całość jest również prawdziwa, gdy oba z tych porównań będą jednocześnie prawdziwe).

NOT odwraca wszystko do góry nogami. NOT porównanie jest prawdziwe tylko wtedy, gdy samo porównanie jest fałszywe, a fałszywe, gdy porównanie jest prawdziwe!

 

Wyrażenia logiczne mogą być tworzone warunków i AND, OR oraz NOT tak samo, jak wyrażenia liczbowe tworzy się z liczb i +, - itd.; możesz nawet w razie potrzeby umieszczać je w nawiasach. Posiadają one priorytety w taki sam sposób jak operacje +, -, *, / i : OR ma najniższy priorytet, następnie AND, potem NOT, dalej relacje i zwykłe operacje.

NOT jest w rzeczywistości funkcją posiadającą argument oraz wynik, lecz jej priorytet jest dużo niższy od priorytetów innych funkcji. Dlatego jej argument nie potrzebuje nawiasów, o ile nie zawiera AND lub OR (albo obu). NOT a=b oznacza to samo co NOT(a=b) (i oczywiście to samo co a<>b).

 

<> jest negacją = w takim sensie, że jest tylko wtedy prawdziwe, gdy = jest fałszywe i na odwrót. Innymi słowy

 

a<>b jest tym samym co NOT a=b

 

a również

 

NOT a<>b jest tym samym co a=b

 

Przekonaj się, że >= i <= są odpowiednio negacjami < i >: w ten sposób zawsze możesz pozbyć się NOT z początku relacji przez jej zmianę.

Również

 

NOT(pierwsze wyrażenie AND drugie wyrażenie)

 

jest tym samy co

 

NOT(pierwsze wyrażenie) OR NOT(drugie wyrażenie)

 

oraz

 

NOT(pierwsze wyrażenie OR drugie wyrażenie)

 

jest tym samy co

 

NOT(pierwsze wyrażenie) AND NOT(drugie wyrażenie)

 

Są to tzw. prawa De Morgana. Używając ich można przemieścić NOT przed wyrażenia, a następnie pozbyć się ich przez odpowiednią zmianę relacji. Mówiąc językiem logiki, NOT jest zbędne, chociaż użycie tej funkcji wciąż może upraszczać program.

 

Następna część rozdziału jest dosyć skomplikowana i strachliwi mogą ją sobie darować!

Wypróbuj

 

PRINT 1=2,1<>2

 

gdzie mógłbyś oczekiwać, że powstanie błąd składni. W rzeczywistości, jeśli chodzi o komputer, to nie istnieje coś takiego jak wartość logiczna: zamiast niej wykorzystywane są zwykłe liczby podlegające kilku regułom.

 

(I)

 

=, <, >, <=, >= i <> dają wynik liczbowy: 1 dla prawdy, 0 dla fałszu. Stąd powyższy rozkaz PRINT wyświetlił 0 dla '1=2', co jest fałszem, i 1 dla '1<>2', co jest prawdą.

(II)

 

W poleceniu


           IF warunek THEN ...


warunek może właściwie być dowolnym wyrażeniem liczbowym. Jeśli jego wartość wynosi 0, to zostaje potraktowany jak fałsz, a jeśli jest to jakakolwiek inna wartość (łącznie z wartością 1, którą dałaby prawdziwa relacja), to zostanie potraktowana jako prawda. Stąd polecenie IF naprawdę znaczy tyle co


           IF warunek <> 0 THEN ...

(III)

 
  1. AND, OR i NOT są również operacjami o wartościach liczbowych.

         x AND y ma wartość

    x, jeśli y jest prawdziwe (różne od 0)

    0 (fałsz), jeśli y jest fałszywe (zero)

         x OR y ma wartość

    1 (prawda), jeśli y jest prawdziwe (różne od 0)

    x, jeśli y jest fałszywe (zero)

         NOT x ma wartość

    0 (fałsz), jeśli x jest prawdziwe (różne od 0)

    1 (prawda), jeśli x jest fałszywe (zero)

(Zwróć uwagę, że 'prawda' znaczy 'nie zero' przy sprawdzaniu danej wartości, lecz oznacza '1', gdy tworzymy nową wartość.)

 

W świetle tego objawienia przeczytaj ten rozdział jeszcze raz od początku i upewnij się, że wszystko działa tak, jak powinno.

 

W wyrażeniach x AND y, x OR y i NOT x dane x i y zwykle przyjmą wartości 0 i 1 dla fałszu i prawdy. Przerób dziesięć różnych kombinacji (cztery dla AND, cztery dla OR i dwie dla NOT) dla tych danych i sprawdź, czy otrzymujesz takie wyniki, jak sugeruje ci ten rozdział.

 

Wypróbuj ten program:

 

10 INPUT a
20 INPUT b
30 PRINT (a AND a>=b)+(b AND a<b)
40 GO TO 10

 

Za każdym razem wypisuje on większą z dwóch liczb a i b.

 

Przekonaj się, że potrafisz myśleć o

 

x AND y

 

w znaczeniu

 

x jeśli y (inaczej wynikiem jest 0)

 

a o

 

x OR y

 

w znaczeniu

 

x o ile nie y (w którym to przypadku wynikiem jest 1)

 

 

Wyrażenie używające w ten sposób AND  i OR jest zwane wyrażeniem warunkowym. Przykładem z OR mogłoby być:

 

LET cena=cena bez podatku*(1.22 OR v$="bez podatku")

 

Zwróć uwagę, że AND nadaje się do dodawania (ponieważ standardowa wartość wynosi 0), a OR nadaje się do mnożenia (ponieważ standardowa wartość wynosi 1).

 

Możesz również otrzymać łańcuchowe wyrażenia warunkowe, lecz jedynie przy użyciu AND.

 

x$ AND y ma wartość

x$, jeśli y jest różne od 0

"", jeśli y jest równe zero

 

zatem oznacza to x$ jeśli y (inaczej pusty łańcuch).

 

Wypróbuj następujący program, który wczytuje dwa łańcuchy i wypisuje je w kolejności alfabetycznej.

 

10 INPUT "wpisz dwa lancuchy"'a$,b$
20 IF a$>b$ THEN LET c$=a$: LET a$=b$: LET b$=c$
30 PRINT a$;" ";("<" AND a$<b$)+("=" AND a$=b$);" ";b$
40 GO TO 10

 

Ćwiczenie

  1. BASIC czasami może działać inaczej od angielskiego. Rozważ przykładowo zdanie angielskie 'if a doesn't equal b or c' (jeśli a nie jest równe b lub c). Jak zapisałbyś to w języku BASIC? Odpowiedzią nie jest
            IF A<>B OR C
    ani
            IF A<>B OR A<>C

 

 


   I Liceum Ogólnokształcące   
im. Kazimierza Brodzińskiego
w Tarnowie

©2018 mgr Jerzy Wałaszek

Dokument ten rozpowszechniany jest zgodnie z zasadami licencji
GNU Free Documentation License.

Pytania proszę przesyłać na adres email: i-lo@eduinf.waw.pl

W artykułach serwisu są używane cookies. Jeśli nie chcesz ich otrzymywać,
zablokuj je w swojej przeglądarce.
Informacje dodatkowe