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 Copyright © by Eno Tõnisson, Tauno Palts, Merilin Säde, Kaarel Tõnisson jt is licensed under a Creative Commons Attribution 4.0 International License, except where otherwise noted.

Jaga seda raamatut