1.2.7.1.    Logické operátory

 

Pri rozhodovanie môžeme z jednoduchých podmienok vytvoriť podmienku zloženú, ktorá sa nazýva logický výraz. Podmienky spájame pomocou logických operátorov. V jazyku BASIC používame tieto logické operátory:

 

Symbol Príklad                     Význam

--------------------------------------------------------------

NOT     NOT A     negácia (opak); ak A je pravdivá podmienka,

                  potom NOT A je nepravdivá (a naopak)

 

AND     A AND B   logický súčin; A AND B je pravdivá podmienka,

                  ak sú pravdivé podmienky A a B súčasne, inak je

                  A AND B nepravdivá

 

OR      A OR B    logický súčet; A OR B je pravdivá podmienka,

                  ak je pravdivá aspoň jedna z podmienok A a B,

                  inak je nepravdivá

--------------------------------------------------------------

 

Význam logických operátorov si objasníme na konkrétnych príkladoch. Zoberme do úvahy celé čísla s nasledujúcimi podmienkami:

A:          x > 3 t. j. 4, 5, 6, 7, ...

B:          x < 7 t. j. 6, 5, 4, 3, ...

Potom

NOT A       : x <= 3          t. j. 3, 2, 1, ...

A AND B     : x>3 AND x<7     t. j. celé čísla väčšie ako 3 súčasne

                              menšie ako 7, čiže 4, 5, 6.

A OR B      : x>3 OR x<7      t. j. celé čísla väčšie ako 3 alebo

                              menšie ako 7, čiže všetky celé čísla

 

Použitie v programe ukazuje táto časť programu:

      10 INPUT "Zadaj cislo od 10 do 20",a

      20 IF a<10 OR a>20 THEN PRINT "Este teraz":GOTO 10

      30 ...

Po chybnom zadaní čísla nás počítač nepustí ďalej, až dokiaľ nezadáme číslo z uvedeného rozsahu.

Logické výrazy môžu byť zapísané s AND, OR, NOT rovnako ako aritmetické výrazy môžu byť zapísané s AND, OR, NOT rovnako ako aritmetické výrazy vyjadrujeme pomocou +, -, atď. Pokiaľ je to potrebné, použite zátvorky.

Priorita logických operátorov je nasledovná:

1) NOT

2) AND

3) OR

V prípade rovnocenných operátorov sa postupuje zľava doprava. NOT je operátor s jedným argumentom, jeho priorita je najvyššia z logických operátorov. Preto jeho argument nepotrebuje zátvorky, aj keď podmienka obsahuje AND alebo OR (alebo obidve).

Teraz si uvedieme niekoľko vlastností logických operátorov, platnosť ktorých si skúste preveriť na konkrétnych príkladoch (ako pomoc použite uvedený príklad s číslami).

NOT a=b znamená to isté ako NOT(a=b) a to isté ako a<>b. <> je negácia =, znamená to, že je pravdivá len vtedy, keď rovnosť je nepravdivá. Taktiež a<>b je to isté ako NOT a=b.

Ďalej NOT a<>b je to isté, ako a=b. Presvedčíte sa, že >= a <= sú negácie <, > a tak NOT môžete niekedy vynechať zmenením relácií. Ďalej platí:

NOT(výraz1 AND výraz2) je to isté ako NOT výraz1 OR NOT výraz 2

NOT(výraz1 OR výraz2) je to isté ako NOT výraz 1 AND NOT výraz 2

Pri použití NOT v programe nie je nutné používať medzi vzťahmi zátvorky.

Ďalšia časť výkladu je trochu komplikovaná a môžete ju zatiaľ preskočiť (pri hlbšom štúdiu si ju však preštudujte).

Skúste zadať:

      PRINT 1=2,1<>2

Asi očakávate syntaktickú chybu, ale všetko je poriadku.

Počítač totiž prevádza logické hodnoty na číslo, s ktorými vie pracovať podľa nasledujúcich pravidiel:

a) relácie =, <, >, <=, >=, <> dávajú číselné výsledky:

      1 pre pravdivú podmienku

      0 pre nepravdivú podmienku;

   preto vyššie uvedený príkaz PRINT tlačí hodnotu 0 pre   

   podmienku 1=2, pretože ide o nepravdivú podmienku,

   podmienka 1<>2 dáva hodnotu 1, lebo je pravdivá.

b) v príkaze IF podmienka THEN

   môže byť podmienka akýkoľvek aritmetický výraz. Pokiaľ je

   jeho hodnota 0, potom sa chová ako keby tam bola nepravdivá

   podmienka. Všetky ostatné hodnoty (vrátane 1) sa berú ako

   pravdivá podmienka. Preto

      IF podmienka

   v skutočnosti znamená

      IF podmienka <> 0 THEN ...

c) AND, OR, NOT sú operácie tvoriace číselné hodnoty

       x AND y má hodnotu x, pokiaľ y je pravdivé (nie 0)

                             0, pokiaľ je y nepravdivé

 

       x OR y má hodnotu 1, keď je y pravdivé (nie 0)

                            x, keď je y nepravdivé

 

       NOT x má hodnotu 0, keď x je pravdivé (nie 0)

                           1, keď x je nepravdivé

Nakoľko sme si vysvetlili doteraz všetky potrebné pojmy, uvedieme si prioritu vyhodnocovanie výrazov:

1) vyhodnotenie zátvoriek

2) vyhodnotenie funkcie

3) umocňovanie

4) unárne mínus

5) násobenie a delenie

6) sčítanie a odčítanie

7) relačné operátory

8) negácia

9) logický súčin

10) logický súčet

V prípade rovnakej priority sa postupuje zľava doprava. Ak chcete zmeniť poradie vyhodnocovania, použite zátvorky (majú najvyššiu prioritu).

Nakoniec si ukážme, ako sa dajú použiť zložité logické výrazy v programe:

      10 INPUT a

      20 INPUT b

      30 PRINT (a AND a>=b)+(b AND a<b)

      40 GO TO 10

Výsledkom je výpis väčšieho z dvoch čísiel a, b.

Analogicky sa používajú reťazcové hodnoty v podmienkových výrazoch, ale len pri použití AND.

      x$ AND y má hodnotu x$, keď y nie je 0

                             "", keď y je 0,

 

Prezrite si nasledujúci program, ktorý vypíše dva vstupujúce reťazce v abecednom poradí.

      10 INPUT "vlozte dva retazce",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