Hjem » Siste artikler » Forstå boolske verdier i programmering: slik tenker du i sant og usant

Forstå boolske verdier i programmering: slik tenker du i sant og usant

Hovedillustrasjon
Hovedillustrasjon. Foto: Patrick Martin / Unsplash.

Å forstå boolske verdier er et av de viktigste stegene fra “jeg skriver kode som fungerer av og til” til “jeg forstår hvorfor koden gjør det den gjør”. Likevel hopper mange litt for raskt videre til mer “spennende” temaer og ender opp med forvirrende if-setninger senere.

I denne artikkelen går vi rolig gjennom hva boolske verdier er, hvordan de fungerer i flere språk, og hvordan du kan bruke dem til å ta klare avgjørelser i koden din. Målet er at du skal kunne lese og skrive vilkår uten å måtte gjette deg fram.

Hva er en boolsk verdi egentlig?

I programmering er enboolsk verdien datatype som bare kan ha to mulige verdier:sannellerusann. I mange språk skrives dette somtrueogfalse, ofte med små bokstaver.

Du kan tenke på det som en lysbryter: enten er den på, eller så er den av. Datamaskinen trenger slike “ja/nei”-verdier for å avgjøre hvilken vei programflyten skal gå.

Hvordan oppstår boolske verdier i koden din?

Du kan få en boolsk verdi på flere måter. Den vanligste er som resultat av en sammenligning, for eksempel likhet eller større enn. Slike uttrykk kalles oftelogiske uttrykkellervilkår.

Eksempel i et språk som ligner på mange moderne språk (for eksempel Python, C#, Java):

Eksempel:

age = 20
is_adult = age >= 18 # is_adult blir true
is_child = age < 18 # is_child blir false

Her er age >= 18 et uttrykk som datamaskinen vurderer til enten true eller false. Resultatet kan lagres i en variabel slik som is_adult.

Derfor er navngivning viktig for boolske variabler

Boolske variabler blir mye lettere å forstå hvis du gir dem navn som kan besvares med “ja” eller “nei”. Det gjør vilkår mer lesbare både for deg selv og andre senere.

Noen gode mønstre er:

  • is_for tilstand: is_logged_in, is_admin
  • has_for eierskap eller tilstedeværelse: has_access, has_items
  • can_for muligheter eller tillatelser: can_edit, can_delete

Sammenlign if is_logged_in: med if status:. I det første tilfellet forstår du direkte hva vilkåret betyr, uten å måtte lete opp variabelens betydning.

Bruk av boolske verdier i if-setninger

Boolske verdier brukes ofte til å styre flyten i programmet. Den vanligste strukturen er en if-setning som bare kjører en kodeblokk hvis vilkåret er sant.

Eksempel:

is_logged_in = true

if is_logged_in:
    print("Velkommen tilbake!")

Her slipper du å skrive if is_logged_in == true: fordi is_logged_in allerede er en boolsk verdi. Mange nybegynnere gjør koden mer komplisert enn nødvendig ved å sammenligne boolske verdier med true og false.

Negasjon: når du vil teste det motsatte

Ofte trenger du å sjekke det motsatte av en tilstand. Det gjør du mednegasjon, vanligvis den logiske operatoren ! eller not avhengig av språk.

Eksempel:

is_logged_in = false

if not is_logged_in:
    print("Vennligst logg inn")

Her er uttrykket not is_logged_in sant når is_logged_in er usant. Negasjon er enkelt teknisk, men blir fort uleselig hvis du kombinerer det med kompliserte uttrykk.

Unngå dobbelt negasjon

Dobbelt negasjon gjør kode vanskelig å lese, selv om datamaskinen forstår det helt fint. Sammenlign disse:

if not has_no_items:

mot

if has_items:

Begge kan bety det samme, men den nederste varianten er mye lettere å forstå. Et godt tips er å gi variablene navn som sjelden trenger not for å bli naturlige setninger.

Logiske operatorer: kombinere flere vilkår

Tematisk illustrasjon
Tematisk illustrasjon. Foto: Kaitlyn Baker / Unsplash.

Noen ganger holder det ikke å teste én ting. Du vil kanskje kreve at to ting er sanne samtidig, eller at minst én av flere ting er sann. Da bruker du logiske operatorer somAND,ORog av og tilXOR.

I mange språk brukes && for AND og || for OR, i andre brukes for eksempel and og or. Prinsippet er det samme.

AND: begge vilkår må være sanne

Eksempel:

is_logged_in = true
is_admin = false

if is_logged_in and is_admin:
    print("Vis administrasjonspanel")

Her kjører koden inne i if-blokken bare hvis begge verdier er true. Hvis én av dem er false, blir hele uttrykket usant.

OR: minst ett vilkår må være sant

Eksempel:

has_coupon = true
is_vip = false

if has_coupon or is_vip:
    print("Gi rabatt")

Her holder det at én av betingelsene er sann for at uttrykket skal bli sant. Hvis begge er usanne, blir hele vilkåret usant og koden inni if-blokken kjøres ikke.

“Sannhetsaktige” verdier: når ikke-boolean behandles som boolean

I flere språk kan andre datatyper behandles som boolske verdier i if-setninger. For eksempel kan tomme strenger, tallet 0 eller tomme lister regnes som usanne, mens alt annet regnes som sant. Det kan være praktisk, men også forvirrende.

Eksempelidé:Mange språk lar deg skrive:

name = ""

if name:
    print("Navn er satt")
else:
    print("Navn mangler")

Her tolkes en tom streng som usann. Slike regler varierer mellom språk og kan endre seg over tid, så det er lurt å sjekke dokumentasjonen for språket du jobber med.

Vanlige feil med boolske verdier og hvordan du unngår dem

Noen feil går igjen når man jobber med boolske verdier. Å kjenne dem igjen tidlig gjør koden din mer forståelig og lettere å feilsøke.

  • Overkompliserte vilkår:Lange if-setninger med mange AND, OR og NOT gjør det vanskelig å se hva som egentlig testes. Del dem heller opp i mindre, navngitte uttrykk.
  • Dobbelt negasjon:Uttrykk som if not is_not_valid: er forvirrende. Prøv å gi variabler navn som gjør vilkårene naturlige uten not.
  • Sammenligning med true/false:if is_ready == true: er ofte unødvendig. if is_ready: er kortere og tydeligere.
  • Blande tilstand og beregning:Ikke bygg veldig komplekse uttrykk direkte i if-setningen. Beregn gjerne delresultater i egne boolske variabler først.

Praktisk metode: gjør logikk lesbar trinn for trinn

Når du ser at et vilkår begynner å bli vanskelig å lese, kan du gjøre det mer forståelig ved å bryte det ned i flere mellomsteg. Det gir deg også en naturlig plass å logge eller teste delresultater.

Eksempel:

age = 17
has_parent_approval = true

is_old_enough = age >= 18
has_special_permission = age >= 16 and has_parent_approval

can_register = is_old_enough or has_special_permission

if can_register:
    print("Kan registrere konto")

Her er hvert deluttrykk gitt et navn som forklarer hva som menes. Det gjør det enklere å se hvor logikken evt. skurrer når du tester programmet.

Veien videre: gjør boolsk tenkning til en vane

Boolske verdier er fundamentet for all kontrollflyt i programmering. Når du blir vant til å tenke “sant/usant” og gi gode navn til tilstandene dine, blir resten av faget lettere å håndtere.

Som øvelse kan du ta et lite program du har skrevet tidligere, finne if-setningene og prøve å:

  • Gi mer beskrivende navn til boolske variabler
  • Fjerne unødvendige sammenligninger med true og false
  • Bryte opp lange vilkår i mindre, navngitte uttrykk

På den måten trener du deg selv til å skrive kode som ikke bare fungerer, men også er lett å lese når du kommer tilbake til den om noen måneder.

0 kommentarer