Tilbake
9.2
Løkker og variabler

9.2 Løkker og variabler

Bruke løkker og variabler i programmering for å løse matematiske problemer.

50 min
12 oppgaver
LøkkerVariablerGjentakelseBetingelser
Du leser den lesevennlige versjonen
Din fremgang i kapitlet
0 / 12 oppgaver

Gjenta uten a bli sliten

Tenk deg at du far i oppgave a skrive ut alle tallene fra 1 til 1000. For hand ville det tatt deg timevis. Men en datamaskin gjor det pa et brøkdels sekund -- fordi den kan gjenta instruksjoner sa mange ganger den vil, uten a bli sliten eller gjore feil.

Denne evnen til a gjenta ting -- det vi kaller lokker -- er kanskje den viktigste grunnen til at programmering er sa nyttig i matematikk. Med lokker kan vi:
- Summere hundrevis av tall pa et oyeblikk
- Utforske tallrekker og monstre
- Sjekke tusenvis av muligheter

La oss starte med de to typene lokker i Python: for-lokken og while-lokken.

For-lokken -- gjenta et bestemt antall ganger

En for-lokke brukes nar du vet pa forhand hvor mange ganger du vil gjenta noe. I Python ser den slik ut:

for i in range(5):
    print(i)

Dette skriver ut:

0
1
2
3
4

range(5) lager tallene 0,1,2,3,40, 1, 2, 3, 4 -- altså 5 tall, men den starter pa 0 og stopper for 5. Variabelen i tar etter tur verdien av hvert tall.

Du kan ogsa bestemme start- og sluttverdi:

for i in range(1, 6):
    print(i)

Dette skriver ut 1,2,3,4,51, 2, 3, 4, 5. Formatet er range(start, stopp) der stopp ikke er med.

Innrykk er viktig! Alt som skal gjentas ma ha 4 mellomrom foran seg. Koden uten innrykk kjores etter at lokken er ferdig:

for i in range(3):
    print(f"Inne i lokken: {i}")
print("Denne linjen kjores etter lokken")

Resultat:

Inne i lokken: 0
Inne i lokken: 1
Inne i lokken: 2
Denne linjen kjores etter lokken
📝Oppgave Quiz 1

Bruke lokker til matematikk

Na kommer det goyeste: a bruke lokker til a utforske matematikk!

Eksempel 1: Summere tallene fra 1 til 100

Den unge Gauss fikk denne oppgaven pa skolen og fant svaret med en genial snarvei. Men vi kan bruke en lokke:

total = 0
for i in range(1, 101):
    total = total + i
print(f"Summen av tallene 1 til 100 er {total}")

Resultat: Summen av tallene 1 til 100 er 5050

Vi kan sjekke med Gauss' formel: 1001012=5050\displaystyle \frac{100 \cdot 101}{2} = 5050. Stemmer!

Eksempel 2: Gangetabellen

tall = 7
for i in range(1, 11):
    print(f"{tall} * {i} = {tall * i}")

Resultat:

7 * 1 = 7
7 * 2 = 14
7 * 3 = 21
...
7 * 10 = 70

Eksempel 3: Finne alle partall fra 1 til 20

for i in range(1, 21):
    if i % 2 == 0:
        print(i)

Her bruker vi modulo (%), som gir resten ved divisjon. Hvis i % 2 == 0, betyr det at i er delelig med 2 -- altså et partall.

📝Oppgave Quiz 2

While-lokken -- gjenta sa lenge en betingelse er sann

Den andre typen lokke er while-lokken. Den gjentar koden sa lenge en betingelse er oppfylt:

tall = 1
while tall <= 10:
    print(tall)
    tall = tall + 1

Dette skriver ut tallene 1 til 10. While-lokken sjekker betingelsen tall <= 10 for hvert gjennomgang. Nar tall blir 11, er betingelsen ikke lenger sann, og lokken stopper.

Viktig: Du ma huske a oppdatere variabelen inne i lokken! Glemmer du tall = tall + 1, vil tall alltid være 1, betingelsen er alltid sann, og lokken kjorer for alltid (en «evig lokke»).

Eksempel: Doble et tall til det overstiger 1000

tall = 1
antall = 0
while tall <= 1000:
    tall = tall * 2
    antall = antall + 1
print(f"Etter {antall} doblinger er tallet {tall}")

Resultat: Etter 10 doblinger er tallet 1024

Fordi 210=1024>10002^{10} = 1024 > 1000. While-lokken er perfekt nar vi ikke vet pa forhand hvor mange ganger vi ma gjenta -- vi vet bare nar vi skal stoppe.

Utforske tallrekker med lokker

Lokker er fantastiske for a utforske matematiske monstre. La oss se pa noen eksempler.

Kvadrattallene:

print("Kvadrattallene:")
for n in range(1, 11):
    print(f"{n}² = {n**2}")

Resultat:

1² = 1
2² = 4
3² = 9
4² = 16
...
10² = 100

Trekanttallene (1, 3, 6, 10, 15, ...):

print("Trekanttallene:")
trekanttall = 0
for n in range(1, 11):
    trekanttall = trekanttall + n
    print(f"T({n}) = {trekanttall}")

Hvert trekanttall er summen av de forste nn naturlige tallene: T(n)=1+2+3++nT(n) = 1 + 2 + 3 + \ldots + n.

Fibonacci-tallene (1, 1, 2, 3, 5, 8, 13, 21, ...):

a = 1
b = 1
print(a)
print(b)
for i in range(10):
    c = a + b
    print(c)
    a = b
    b = c

Hvert Fibonacci-tall er summen av de to foregaende. Denne rekken dukker opp overalt i naturen -- i solsikker, sneglehus og ananas!

📝Oppgave Quiz 3

Oppsummering

Lokker lar datamaskinen gjenta instruksjoner -- og det gjor programmering til et kraftig verktoy i matematikk:

- For-lokken gjentar et bestemt antall ganger: for i in range(start, stopp)
- While-lokken gjentar sa lenge en betingelse er sann: while betingelse:
- range(n) gir tallene 0,1,,n10, 1, \ldots, n-1. range(a, b) gir a,a+1,,b1a, a+1, \ldots, b-1.
- Modulo (%) gir resten ved divisjon -- nyttig for a sjekke delbarhet
- Summering: Start med total = 0 og legg til i lokken
- Matematiske rekker: Kvadrattall (n2n^2), trekanttall (1+2++n1 + 2 + \ldots + n) og Fibonacci-tall (summen av de to foregaende)
- Innrykk: Koden med innrykk tilhorer lokken, koden uten kjores etterpå
- Pass opp for evig lokke: Husk a oppdatere variabelen i while-lokken!

Med lokker kan du utforske matematiske monstre som ville tatt timer for hand -- men som datamaskinen fikser pa millisekunder. I neste kapittel skal vi lære om algoritmer -- oppskrifter for a lose problemer steg for steg.

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.