Boolsk algebra

I artikkelen om sammenlikningsoperatorer lærer vi at boolske variablerer variabler som bare kan ha verdiene True og False.

I artikkelen om logiske operatorer lærer vi reglene for å bruke de logiske operatorene and, or og not på boolske variabler:

True and True → True
True and False → False
False and True → False
False and False → False

True or True → True
True or False → True
False or True → True
False or False → False

not True → False
not False → True

Disse reglene er eksempler på boolsk algebra, det vil si regneregler for boolske variabler.

Vi skal nå presentere noen flere regneregler som gir mulighet for forenklinger og omskrivinger. Hvis a og b er boolske variabler, har vi at

a == True → a

I stedet for å skrive for eksempel if (x < 0) == True kan vi skrive if x < 0. 

a == False → not a

I stedet for å skrive for eksempel if (x < 0) == False kan vi skrive if not x < 0.

a and True → a

Hvis vi bruker operatoren and på variabelen a og en variabel som er True, er resultatet lik verdien til a. Det vil si True hvis a er True, og False hvis a er False.

a and False → False

Hvis vi bruker operatoren and på variabelen a og en variabel som er False, er resultatet False, uavhengig av a.

a or True → True

Hvis vi bruker operatoren or på variabelen a og en variabel som er True, er resultatet True, uavhengig av a.

a or False → a

Hvis vi bruker operatoren or på variabelen a og en variabel som er False, er resultatet lik verdien til a. Det vil si True hvis a er True, og False hvis a er False.

not not a → a

Dobbelt bruk av not endrer ikke verdien til a.

For operatorene and og or gjelder den distributive lov vi kjenner fra matematikken. Hvis vi bruker and eller or på et uttrykk i parentes, tilsvarer det å bruke and eller or på hver verdi i parentesen.

a and (b or c) → (a and b) or (a and c)

a or (b and c) → (a or b) and (a or c)

For operatoren not gjelder imidlertid egne distributive lover.

not (a and b) → not a or not b

and skifter til or når vi bruker not på et uttrykk i parentes.

For eksempel kan uttrykket if not(x < 0 and y < x) angis som if not x < 0 or not y < x.

not (a or b) → not a and not b

or skifter til and når vi bruker not på et uttrykk i parentes.

For eksempel kan uttrykket if not(x < 0 or y < x) angis som if not x < 0 and not y < x.

Regler i boolsk algebra er lette å bevise fordi variablene bare kan ha to verdier, True og False. Vi kan bruke det som kalles uttømmende bevis, og vise at to uttrykk gir samme resultat i alle kombinasjonsmuligheter.

Eksempel 1:

Vi skal bevise at not (a and b) og not a or not b er det samme. Vi setter opp alle kombinasjonsmulighetene i en såkalt sannhetstabell:

a True True False False
b True False True False
not (a and b) not (True and True)
→ not True → False
not (True and False)
→ not False → True
not (False and True)
→ not False → True
not (False and False)
→ not False → True
not a or not b not True or not True
→ False or False → False
not True or not False
→ False or True → True
not False or not True
→ True or False → True
not False or not False
→ True or True → True

Vi ser at resultatet er likt i alle 4 tilfeller.

Siden det ikke spiller noen rolle hva som er a og hva som er b, er det strengt tatt nok å sjekke 3 tilfeller:

        • a og b er begge True.
        • Den ene av a og b er True og den andre er False.
        • a og b er begge False.

Oppgave 1:

Bevis følgende ved å sette opp sannhetstabeller:

      • a == True er det samme som a.
         
      • not (a or b) er det samme som not a and not b.

Se løsningsforslag

Kilder

    • Matthes A. (2019). Python Crash Course. no starch press

Sammenlikningsoperatorer

Sammenlikningsoperatorer bruker vi, som navnet antyder, til å sammenlikne verdier. Operatorene er:

< Mindre enn
<= Mindre eller lik
> Større enn
>= Større eller lik
== Lik
!= Ikke lik

Legg spesielt merke til at om vi skal sjekke om to verdier er like, bruker vi dobbelt likhetstegn. Enkelt likhetstegn er tilordningsoperatoren som beskrives i artikkelen om variabler.

Det er ikke lov å dele opp operatorer som består av to tegn, for eksempel må vi skrive x >= 2, ikke x > = 2.

Et uttrykk med sammenlikningsoperatorer vil enten være sant eller usant. Hvis for eksempel variabelen x er 3, vil uttrykket x > 0 være sant, og uttrykket x < 0 være usant. I Python brukes kodeordet True for sant, og kodeordet False for usant. Legg merke til at True og False skrives med store bokstaver.

Eksempel 1:

Koden under vil skrive ut True False, siden x > 0 er sant, og x < 0 er usant.

x = 3
print(x > 0, x < 0)

True og False representerer en egen datatype som kalles boolsk (bool), oppkalt etter matematikeren George Boole. Boolske variabler kan bare ha verdiene True eller False.

Sammenlikningsoperatorer bruker vi ofte i betingelser, slik det vises i artikkelen forgreininger med «if» og artikkelen «while»-løkker.

Kilder

    • Matthes A. (2019). Python Crash Course. no starch press