Võrdlustehted ja loogikatehted

From Wikiversity

< 3. nädala teemad

Loogikaavaldised ja nende väärtused[edit]

Loogikaavaldistel võib olla tulemuseks kaks võimalikku väärtust:

 tõene	true	1
 väär	false	0

Pythonil on konstandid True ja False tõese ja väära väärtuse tähistamiseks. NB! Need kirjutatakse suure tähega!

Avaldiste näited:

 3<5 on tõene
 3>5 on väär

Loogikaavaldised võivad koosneda:

  • aritmeetika- või stringavaldistest (mis esindavad väärtust)
  • võrdlusoperaatoritest ehk võrdlusmärkidest < <= > >= ==  !=
  • loogikatehte märkidest (and or not)

Loogikatehted:

and
konjunktsioon ehk loogiline ja, st tehte tulemus on tõene vaid siis, kui mõlemad operandid on tõesed
or
disjunktsioon ehk loogiline või, st tehte tulemus on tõene, kui vähemalt üks operandidest on tõene
not
loogiline ei, st tõene väärtus muudetakse vääraks ja vastupidi

Erinevate andmetüüpide võrdlemine[edit]

Võrrelda saab nii arve kui ka stringe. Järgnevusseost (ehk suhteid suurem/väiksem) lubab Python 3.x määrata vaid sama tüüpi andmetele. Seega me võime küsida, kas 3 < 2 või "kass" > "koer". Kuid mitte nii: 2 > "kass". See on ka täiesti mõistlik. Tekstide puhul on võrdlemise aluseks kooditabelis peituvad tähtede ja teiste märkide koodid. Teatud mööndusega võib väita, et stringide puhul vastab järjestus tähestikule – see mis tähestikus eespool, on väiksem, see tähendab, et tõesed on väited "elevant" < "sääsk" ja "koer" > "kass“ ning ka "11" < "3"

Märkidega == ja != võib Pythonis võrrelda ka erinevat tüüpi andmeid (2 != "kass"). Iseküsimus, millist infot see annab.

Loogikatehetel on operandideks reeglina tõeväärtustüüpi väärtused (tõene või väär, True või False). Python-keeles (ja mõnes teises ka) on olukord keerulisem – kõiki arve, mis ei võrdu nulliga, tõlgendatakse kui väärtust True.

Kõige turvalisem (vähemalt seni, kuni sa väga täpselt ei tea, mida teed) on siiski kasutada loogikatehetega koos tõeväärtustüüpi operande ja sel viisil on programm ka reeglina inimesele paremini loetav.

Tehete järjekord määratakse järgmiselt: kõigepealt täidetakse võrdlustehted vasakult paremale; nende tehete tulemuseks on alati loogikaväärtused. Nüüd saab loogikaväärtustele rakendada loogikatehteid. Ikka vasakult paremale.

Loogikaavaldistest tekkivaid tõeväärtusi on vaja kasutada näiteks valiku- ja tsüklilausetes.

Näited loogikaavaldistest[edit]

Tüüpiliselt selleks, et määrata muutuja väärtuse kuulumist mingisse vahemikku tehakse nii

# A on suurem 0-st ja väiksem või võrdne 10-ga (A on 1 ja 10 vahel):
A > 0 and A <= 10

Eelmise avaldisega on samaväärne Pythonis:

0 < A <= 10

Kuna aga sellist avaldise kuju valdav enamus keeli ei toeta, siis on targem seda vältida ja õppida selgeks just esimene variant. Järgmine näide on or'i kasutamisest

# A on 0-st väiksem või 10-st suurem:
A < 0 or A > 10

Tõeväärtustabelid[edit]

Loogikatehete väärtused on esitatud järgmistes tõeväärtustabelites:

Loogikatehe and

and true false
true true false
false false false

Loogikatehe or

or  true false
true true true
false true false

Loogikatehe not

not
true false
false true


Näited tõeväärtuse leidmisest[edit]

Avaldis on järgmine:

A<0 or A>10

Andes A-le väärtuseks 5, saame järgmise lause:

5<0 or 5>10
5<0 - false; 5>10 – false
false or false on vastavalt tõeväärtustabelile false

Andes A-le väärtuseks 12, saame järgmise lause:

12<0 or 12>10
12<0 - false; 12>10 – true
false or true on vastavalt tõeväärtustabelile true

Kokkuvõte loogikamuutujatest ja -tehetest[edit]

  • loogikatehetel ja -muutujatel on vaid kaks võimalikku väärtust: True ja False
  • võrdlustes kasutatavate operandide andmetüübid peavad kokku sobima
  • ole ettevaatlik ujukomaarvude võrdlemisel eriti == - ga - seda viimast ei tohiks teha
  • kasuta täiendavaid sulge, et muuta avaldis paremini loetavaks
  • ära unusta tõeväärtustabeleid

< 3. nädala teemad