3. Silmaring. Tõeväärtused
TÕEVÄÄRTUSTABELID
Eespool vaatlesime salatinäidet.
kartul_olemas = True makaron_olemas = False salatikaste_olemas = True print((kartul_olemas or makaron_olemas) and salatikaste_olemas)
Soovitati ka proovida programmi tööd muutujate kartul_olemas
, makaron_olemas
ja salatikaste_olemas
erinevatel väärtustel. Kerkib küsimus, mitu erinevat varianti üldse on? Igaüks kolmest muutujast võib omada kahte erinevat väärtust. Kui olekski ainult üks muutuja, oleks võimalusi kaks:
True
False
Kui oleks ainult kaks muutujat, siis võimalusi oleks neli:
True
,True
True
,False
False
,True
False
,False
Kui on kolm muutujat, siis on võimalusi kaheksa:
True
,True
,True
True
,True
,False
True
,False
,True
True
,False
,False
False
,True
,True
False
,True
,False
False
,False
,True
False
,False
,False
Ülesanne
Meie näites on salati jaoks vaja kartulit või makaroni. Sõnal "või" on tavakeeles mõnevõrra teistsugune tähendus, kui programmeerimisel (või ka matemaatilises loogikas). Tavakeeles on "või" sageli välistav - kas see või teine (aga mitte mõlemad). Loogikas ja programmeerimisel on aga tehe or
tõene ka siis, kui mõlemad operandid on tõesed. Seda saab kujutada ka tõeväärtustabelina. Loogikas tähistatakse or-tehet sageli märgiga V
. Tõene ja väär on tähistatud vastavalt t ja v.
Toome ka tõeväärtustabeli and
-tehte jaoks, mida sageli tähistatakse märgiga &
.
Meie salatinäites on tõeväärtustabel arvutatud kahes järgus kõigepealt A v B, mis siis meil tähendab kartul_olemas or makaron_olemas
ja pärast siis kogu avaldis (kartul_olemas or makaron_olemas) and salatikaste_olemas
.
LOOGILISTE AVALDISTE SAMAVÄÄRSUS
Salatinäite puhul võime läheneda ka natuke teistmoodi. Kartulisalati jaoks oleks meil vaja kartulit ja salatikastet. Makaronisalati jaoks oleks vaja makarone ja salatikastet. Kokkuvõttes aga piisab, kui vähemalt ühe jaoks neist on materjal olemas. Vastav loogiline avaldis on siis järgmine.
(kartul_olemas and salatikaste_olemas) or (makaron_olemas and salatikaste_olemas)
Tegelikult ongi see samaväärne avaldisega, mis meil enne oli.
(kartul_olemas or makaron_olemas) and salatikaste_olemas
Loogiliste tehete puhul kehtivad mitmed seadused (analoogiliselt algebrale). Näiteks
- avaldis
a and b
on samaväärne avaldisegab and a
; - avaldis
a or b
on samaväärne avaldisegab or a
; - avaldis
(a or b) and c
on samaväärne avaldisega(a and c) or (b and c)
;
Loogilistes tehetes orienteeruda on programmeerijale väga oluline ja nii on seda arendavad õppeained ka ülikoolide õppekavades.