Fibonaccitall i pseudokode

Hele eksamen, alle hjelpemidler

Fibonaccitall i pseudokode

Ta utgangspunkt i følgende pseudokode:

SET n TO 10
SET a[0] TO 0
SET a[1] TO 1
FOR hvert heltall i fra og med 2 til n
    SET a[i] TO a[i-1] + a[i-2]
ENDFOR
DISPLAY a[n]
Hjelpemiddelkrav: For hånd

Hva blir resultatet av programmet som er beskrevet i pseudokoden ovenfor?

Hjelpemiddelkrav: For hånd

Forklar algoritmen som er beskrevet i pseudokoden ovenfor.

Hjelpemiddelkrav: For hånd

Utvid/endre algoritmen slik at den viser de ti første av tallene som er generert på denne måten og som er partall. Lag et flytskjema som representerer denne nye algoritmen.

Fasit

Indeksfeil: Løkka går fra og med 2 til (men ikke med) n=10, så a[10] blir aldri satt. Leser vi «til» som «til og med», blir resultatet 55.

Algoritmen lager Fibonacci-tallene i en indeksert variabel: Hvert tall er summen av de to foregående, og til slutt vises det siste tallet.

En WHILE-løkke lager nye tall til ti partall er vist, og en IF med a[i] % 2 EQUAL TO 0 bestemmer hvilke tall som vises. De ti første partallene i følgen er 0,2,8,34,144,610,2584,10946,46368,196418. Regner vi ikke startverdien 0 med, blir det 2,8,…,196418,832040.

LøsningsforslagKI-generert

Løkka går «fra og med 2 til n». I oppgave 3 skriver eksamen uttrykkelig «til og med», så her tolker vi «til» som «til, men ikke med». Da går i fra 2 til 9:

ia[i-2]a[i-1]a[i]
2011
3112
4123
5235
6358
75813
881321
9132134

Etter løkka inneholder a plassene 0 til 9. DISPLAY a[n] prøver å vise a[10], som aldri er satt. Resultatet blir en indeksfeil, for eksempel IndexError i Python.

Hadde løkka gått til og med 10, ville den også regnet ut a[10] = 21 + 34 = 55, og programmet ville vist 55.

Algoritmen lager Fibonacci-tallene i en indeksert variabel (liste) a:

  1. De to første tallene settes til a[0] = 0 og a[1] = 1.
  2. Løkka går gjennom plassene fra 2 og oppover. Hvert nytt tall er summen av de to foregående: a[i] = a[i-1] + a[i-2]. Listen blir 0,1,1,2,3,5,8,13,21,34.
  3. Når løkka er ferdig, vises tallet på plass n til brukeren.

Hensikten er altså å finne Fibonacci-tall nummer n=10, som er 55. Siden løkka stopper før i = 10, finnes ikke a[10], og visningen gir indeksfeil (se a). Feilen rettes ved å la løkka gå til og med n.

Vi vet ikke på forhånd hvor mange tall vi må lage før vi har funnet ti partall. En FOR-løkke med fast antall runder passer derfor dårlig. I stedet bruker vi en WHILE-løkke og en teller antall som holder styr på hvor mange partall som er vist:

SET a[0] TO 0
SET a[1] TO 1
DISPLAY a[0]
SET antall TO 1
SET i TO 2
WHILE antall LESSER THAN 10
    SET a[i] TO a[i-1] + a[i-2]
    IF a[i] % 2 EQUAL TO 0
        DISPLAY a[i]
        INCREMENT antall
    ENDIF
    INCREMENT i
ENDWHILE

Forklaring av endringene:

  • n trengs ikke lenger. Løkka stopper når antall har nådd 10.
  • Startverdien a[0] = 0 er et partall og vises før løkka, så antall starter på 1. Tallet a[1] = 1 er et oddetall og skal ikke vises.
  • Et tall er partall når resten ved deling med 2 er null (a[i] % 2 EQUAL TO 0). Bare da vises tallet og telleren økes.
  • i økes i hver runde, uansett om tallet var partall eller ikke.

Programmet viser 0,2,8,34,144,610,2584,10946,46368,196418. Hvert tredje Fibonacci-tall er et partall, så løkka må lage tallene helt fram til a[27] = 196418. Vil vi ikke regne med startverdien 0, fjerner vi DISPLAY a[0] og setter antall til 0. Da slutter programmet med a[30] = 832040.

Flytskjema for algoritmen som viser de ti første partallene i Fibonacci-følgen

Flytskjemaet bruker standardsymbolene: ellipse for start og slutt, rektangel for tilordninger og beregninger, parallellogram for visning (utdata) og rombe for valg. Løkka er pila fra i = i + 1 tilbake til testen antall < 10 ?. Når svaret er «nei», er ti partall vist, og programmet stopper.

Sensorveiledning

Oppgaven gir til sammen 4,5 poeng

1 poeng

Det gis full uttelling for “indeksfeil” eller tilsvarende svar og halv uttelling for “55” som svar.

1,5 poeng

Det gis uttelling for forklaring av at løkken genererer en indeksert variabel med tall, at hvert tall er summen av de to foregående tallene og at det siste tallet i variabelen vises til bruker, etter at variabelen er ferdig generert, eventuelt for at visningen gir indeksfeil.

2 poeng

Det gis uttelling inntil 2p for flytdiagram med korrekt symbolbruk og inntil 2p for utvidelsen av algoritmen.

Forstå oppgaven med en KI

Du får en ferdig tekst du limer inn i den KI-chatboten du bruker. Teksten inneholder oppgaven og en instruks om at chatboten skal hjelpe deg å tenke selv — stille spørsmål, gi ett hint av gangen og la deg gjøre regningen.

Anbefalt. Chatboten får beskjed om å bruke det til å veilede deg riktig vei — ikke til å røpe svaret. Du kan slå det av hvis du vil være helt sikker på at ingenting lekker.

Hva du bør vite
  • Ingenting sendes herfra. Teksten kopieres bare til utklippstavla på enheten din. Det du limer inn i en chatbot, går til den tjenesten — og de har sine egne regler for hva de lagrer.
  • Ikke lim inn personopplysninger — navn, skole eller noe annet om deg selv eller andre. Oppgaveteksten holder.
  • KI kan ta feil, også i informasjonsteknologi. Sjekk alltid mot løsningsforslaget her på siden.
  • Er du usikker på om du har lov til å bruke KI på skolearbeidet ditt, spør læreren din først.

Tastatursnarveier

Navigasjon

⌘K / Ctrl+K
Åpne søk
G F
Gå til Fag
G E
Gå til Eksamener
G T
Gå til Temaer
G K
Gå til Kompetansemål
G H
Hjem
?
Vis snarveier

I oppgave

←/→ · J/K
Forrige / neste oppgave
0
Marker som ikke prøvd
1
Marker som prøvd
2
Marker som trenger hjelp
3
Marker som ferdig
S
Vis / skjul løsningsforslag
A
Legg til i liste
N
Skriv notat
Esc
Tilbake / avslutt