Logički operatori
Kompjuteri i njihova logika
Uslovi koje smo do sada koristili bili su veoma jednostavni. Uslovi koji se realno sreću u praksi su dosta složeniji. Ne primer, razmotrite sledeću rečenicu:
Ako imamo slobodnog vremena i ako je vreme lepo, otići ćemo u šetnju.
U prethodnoj rečenici smo koristili veznik " i ", što znači da odlazak u šetnju zavisi od istovremene ispunjenosti dva uslova. Ako bismo se logički izrazili, ovakva veza uslova se naziva konjunkcija.
Drugi primer:
Ako odeš u tržni centar ili ako ja odem u tržni centar, neko od nas će da kupi polklon za mamu.
Ovde se pojavljuje reč " ili " , što znači da kupovina zavisi od bahmanje jednog od navedenih uslova. Termin u logici za ovo je disjunkcija.
Iz ovoga se vidi da programski jezik "C" mora da ima operatore sa kojima može da realizuje konjunkcije i disjunkcije. Ovakve operatore nalivamo logički operatori.
Logičko I - &&
Operator za konjunkciju (Logičko I) u programskom jeziku "C" je dvostruki znak && (ampersand ampersand).
Ovo je binarni operator kod kojeg je prioritet niži od operatora za poređenje vrednosti. To znači da se mogu kodirati složeni uslovi i bez upotrebe zagrada, kao u nastavku:
(Iako se može raditi ovako, preporuka za vas je da koristite zagrade, da bi izbegli zbunjivanje.)
Rezultat operacije sa operatorom && možemo da odredimo na osnovu tabele istinitosti. Ako uzmemo da je naša operacija:
skup mogućih vrednosti koje leva i desna strana mogu da uzimaju kao i odgovarajuća rešenja logičke operacije I možete videti u sledećoj tabeli:
| levo | desno | levo && desno |
| false | false |
false |
| false | true | false |
| true | false | false |
| true | true | true |
Logičko ILI - ||
Biti || ne biti
Operator ya disjunkciju je dvostruka vertikalna crta | | (bar bar). U pitanju je binarni operator koji ima prioritet niži i od && (baš kao " + " u odnosu na " * ").
Tabela istinitosti za Logičko ILI, odnosno disjunkciju, data je u nastavku:
| levo | desno | levo || desno |
| false | false |
false |
| false | true | true |
| true | false | true |
| true | true | true |
Logička negacija - !
U nastavku ćemo se upoznati sa još jednim operatorom koji ćemo koristiti za konstruisanje složenih uslova. U pitanju je unarni operator koji vrši logičku negaciju. Njegova operacija je jednostavna: pretvara ono što je tačno u netačno, a ono što je netačno pretvara u tačno. Ovaj operator se piše kao jedan karakter ! (uzvičnik) i njegov prioritet je veoma visok: isti kao inkrement i dekrement.
Tabela istinitosti za negaciju je data u nastavku:| argument | ! argument |
| false | true |
| true | false |
Primeri logičkih izraza:
Obratite pažnju da su sledeći izrazi ekvivalentni:
Variable > 0 !(Variable <= 0)
kao i
Variable != 0 !(Variable == 0)
Drugi primer su De Morganovi zakoni (iz matematike):
Negacija konjunkcije je disjunkcija negacija
Negacija disjunkcije je konjunkcija negacija
To bi se moglo zapisati u programskom jeziku "C" na sledeći način:
!(p || q) == !p && !q
Obratite pažnju kako su u ovom slučaju korišćene zagrade u cilju kodiranja odgovarajućih izraza.
Treba napomenuti i da se prethodna dva operatora (&& i ||) mogu koristiti i u skraćenom ubliku u kombinaciji sa operatorom dodele vrednosti ( &&= i ||= ).