14 Silmaring: Tõeväärtused

Eespool vaatlesime salatinäidet:

kartul_olemas = True
makaron_olemas = False
salatikaste_olemas = True
print((kartul_olemas or makaron_olemas) and salatikaste_olemas)

Soovitasime proovida programmi tööd muutujate kartul_olemas, makaron_olemas ja salatikaste_olemas erinevatel väärtustel. Kerkib küsimus, mitu erinevat varianti selleks on? Igaüks kolmest muutujast võib omada kahte erinevat väärtust. Kui oleks ainult üks muutuja, siis oleks võimalusi kaks:

  • True
  • False

Kui oleks ainult kaks muutujat, siis oleks võimalusi 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

Enesekontroll (1 ü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 programmeerimises (või matemaatilises loogikas). Tavakeeles on “või” sageli välistav – kas see või teine (aga mitte mõlemad). Loogikas ja programmeerimisel on tehe or tõene ka siis, kui mõlemad operandid on tõesed. Selle võib esitada 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 sooritatakse A v B, mis meil tähendab kartul_olemas or makaron_olemas, ja pärast seda ülejäänud avaldis (kartul_olemas or makaron_olemas) and salatikaste_olemas.

Loogiliste avaldiste samaväärsus

Salatinäite puhul võime läheneda ka teistmoodi: kartulisalati jaoks oleks meil vaja kartulit ja salatikastet, makaronisalati jaoks oleks vaja makarone ja salatikastet. Kokkuvõttes piisab, kui vähemalt ühe jaoks neist on materjalid olemas. Vastav loogiline avaldis oleks järgmine:

(kartul_olemas and salatikaste_olemas) or (makaron_olemas and salatikaste_olemas)

Tegelikult on 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 avaldisega b and a;
  • avaldis a or b on samaväärne avaldisega b or a;
  • avaldis (a or b) and c on samaväärne avaldisega (a and c) or (b and c);

Loogilistes tehetes orienteerumine on programmeerijale väga oluline ja seetõttu on seda arendavad õppeained ka ülikoolide õppekavades.

Litsents

Icon for the Creative Commons Attribution 4.0 International License

Programmeerimine on loodud Eno Tõnisson, Tauno Palts, Merilin Säde, Kaarel Tõnisson jt poolt Creative Commons Attribution 4.0 International License litsentsi alusel, kui pole teisiti märgitud.

Jaga seda raamatut