Tilbake
2.3
Kontrollstrukturer og betingelser

2.3 Kontrollstrukturer og betingelser

Forstå hvordan programmer tar beslutninger ved hjelp av if-setninger, logiske uttrykk og sammenligningsoperatorer.

55 min
6 oppgaver
If-setningerElse og elifLogiske operatorer (and, or, not)SammenligningsoperatorerNøstede betingelser
Du leser den lesevennlige versjonen
Din fremgang i kapitlet
0 / 6 oppgaver

Et program ved et veikryss

Hittil har programmene våre vært litt som en jernbane med ett enkelt spor: maskinen leser linje for linje, fra topp til bunn, uten valg. Men de aller fleste nyttige programmer trenger å velge -- å gjøre én ting i én situasjon og noe helt annet i en annen. En app som sjekker om du er gammel nok til å se en film, en automat som gir ut riktig billett etter alder, et spill som svarer ulikt på riktig og galt svar -- alle må de ta beslutninger.

Det er her kontrollstrukturer kommer inn. De gir programmet et veikryss, der det kan velge sti basert på om en betingelse er sann eller usann. Plutselig blir den rette skinnegangen til et helt nettverk av muligheter, og programmene dine kan begynne å reagere intelligent på det som skjer.

I denne fortellingen skal vi lære maskinen å ta valg. Vi skal møte if-setningen som stiller et ja-eller-nei-spørsmål, vi skal se hvordan elif og else gir flere veier å gå, vi skal kombinere betingelser med logiske operatorer, og til slutt skal vi bygge sammensatte beslutninger ved å plassere valg inni valg.

Hvis dette, så det

Hjertet i all beslutningstaking er if-setningen. Ordet «if» betyr «hvis», og det er akkurat det den gjør: hvis en betingelse er sann, kjør denne koden. Tenk deg en aldersjekk. Skriver vi if alder >= 18: etterfulgt av print("Du er myndig."), så skrives setningen bare ut dersom alderen faktisk er 18 eller mer. Vil vi ha et alternativ for de yngre, legger vi til else: med en annen beskjed -- «hvis ikke, gjør dette i stedet».

Legg nøye merke til to ting i Python-koden, for de er lette å glemme. Det skal være et kolon, altså :, etter betingelsen. Og linjene som hører til, skal ha innrykk -- vanligvis fire mellomrom. Innrykket er ikke bare pynt; det er slik Python forstår hvilke linjer som hører til hvilken gren. Glemmer du innrykket, blir maskinen forvirret.

Men livet har sjelden bare to utfall. Skal du sette karakter, finnes det jo flere nivåer. Da bruker vi elif, som er en forkortelse for «else if» -- «ellers, hvis». Du kan stable opp flere elif etter hverandre: hvis poengsummen er minst 90, gi A; ellers hvis minst 80, gi B; ellers hvis minst 60, gi C; og til slutt en else som fanger opp resten med F. Maskinen sjekker betingelsene ovenfra og ned, og stopper ved den første som er sann.

📝Oppgave Quiz 1

Å sammenligne og å kombinere

For at en betingelse skal kunne være sann eller usann, må vi kunne sammenligne verdier. Til det har vi sammenligningsoperatorer. De fleste er kjente fra matten: < er mindre enn, > er større enn, <= er mindre enn eller lik, og >= er større enn eller lik. To av dem er litt spesielle: == betyr «er lik», og != betyr «er ulik».

Her lurer en av de vanligste nybegynnerfellene. Ett likhetstegn, =, brukes til å tilordne en verdi til en variabel, mens to likhetstegn, ==, brukes til å sammenligne. Skriver du = der du mente ==, oppfører programmet seg ofte helt galt. Hold dem fra hverandre, så sparer du deg for mye hodebry.

Ofte trenger vi flere betingelser samtidig, og da bruker vi logiske operatorer til å lime dem sammen. and krever at begge betingelsene er sanne. or krever at minst én er sann. Og not snur en verdi -- gjør sant til usant og omvendt. For eksempel: if alder >= 18 or har_tillatelse: gir tilgang dersom du enten er myndig eller har fått tillatelse. Eller if temperatur >= 20 and temperatur <= 30: som bare er sann når temperaturen ligger i det behagelige området mellom 20 og 30. En liten regel om rekkefølge: and har høyere prioritet enn or, så i uttrykket True and False or True regnes True and False først til False, og deretter blir False or True til True.

📝Oppgave Quiz 2

Valg inni valg

Noen ganger er ikke ett veikryss nok. Du tar et valg, og inne i den ene grenen venter et nytt valg. Dette kalles nøstede betingelser -- if-setninger plassert inni andre if-setninger, og det lar oss bygge ganske sofistikert logikk.

Tenk deg et program som skal beskrive et tall. Først spør vi: er tallet positivt, negativt eller null? Men hvis det er positivt, vil vi gå et steg videre og spørre: er det et partall eller et oddetall? Da legger vi den indre sjekken inni den ytre. Den ytre if-setningen håndterer positivt, negativt og null, og inni den positive grenen har vi en ny if som bruker modulo -- tall % 2 == 0 -- for å skille partall fra oddetall. Hvert nivå av innrykk forteller hvilken sjekk som hører til hvilken.

Denne teknikken er kraftig, men krever at du holder tunga rett i munnen. Et klassisk eksempel der både nøsting og logikk møtes, er skuddårsregelen. Et år er skuddår hvis det er delelig med 4, men ikke med 100 -- med mindre det også er delelig med 400. Det kan skrives elegant med logiske operatorer: if (aar % 4 == 0 and aar % 100 != 0) or (aar % 400 == 0):. Her ser du hvordan and, or, parenteser og modulo samarbeider for å fange en ganske innfløkt regel i én eneste linje. Det er nettopp slik klar tenkning blir til presis kode.

📝Oppgave Quiz 3

Oppsummering

Vi har lært programmene våre å ta valg. If-setningen kjører kode bare når en betingelse er sann, mens elif og else gir alternative veier ved veikrysset -- alltid med kolon og riktig innrykk som markerer kodeblokkene.

For at betingelser skal kunne avgjøres, bruker vi sammenligningsoperatorer som ==, !=, < og >, og vi holder nøye styr på forskjellen mellom = (tilordning) og == (sammenligning). Med logiske operatorer -- and, or og not -- kan vi lime sammen flere betingelser, der and har høyere prioritet enn or. Og med nøstede betingelser kan vi plassere valg inni valg for å bygge sammensatt logikk, slik vi så i skuddårsregelen. Programmene våre kan nå tenke seg om før de handler.

Dette kapitlet er skrevet av Anthropics toppmodeller (Claude Opus og Claude Fable) og er foreløpig ikke manuelt gjennomgått — kvalitetskontrollen gjøres av uavhengige KI-agenter, og innmeldte feil rettes fortløpende. Funnet en feil? Meld fra, så retter vi den. Les mer om hvordan innholdet lages.