Informasjonsteknologi 2 — alle oppgaver

Kunnskapsgrunnlag for KI-assistenter: alle 67 oppgaver i Informasjonsteknologi 2 (Programfag i informasjonsteknologi, Vg3) fra matematikkoppgaver.no, samlet som markdown. Oppgavene er sortert fra nyeste eksamen. Matematikk er skrevet i LaTeX ($…$ og $$…$$).

Denne versjonen har ikke fasit eller løsningsforslag. Samme samling med løsningsforslag: https://matematikkoppgaver.no/it-2-raadata-losning/

Informasjonsteknologi 2 bygger videre på Informasjonsteknologi 1 med blant annet objektorientert programmering, algoritmer, datastrukturer og behandling av data. Det finnes ulike varianter av faget med programmering i ulike programmeringsspråk, og på denne nettsiden er alle eksamensoppgavene hentet fra Python-variantene.

## Om innholdet

- Eksamensoppgavene er offentlige og kommer fra Utdanningsdirektoratet (UDIR).
- Løsningsforslagene er laget for matematikkoppgaver.no og kan inneholde feil. Nettadressen under hver oppgave går til oppgavesiden med figurer og ferdige formler.
- Bilder står som markdown-bilder med bildetekst og nettadresse.
- Læreplan LK20: https://www.udir.no/lk20/inf01-03/kompetansemaal-og-vurdering/kv978?lang=nob
- Læreplan LK06 (utgått): https://www.udir.no/kl06/INF1-01/Hele/Kompetansemaal/informasjonsteknologi-2
- Sist generert: 2026-09-27

## Forklaring på feltene

- **Eksamen:** eksamensperioden og læreplanen (LK20 er gjeldende, LK06 er den forrige).
- **Del:** del 1 løses uten hjelpemidler, del 2 med hjelpemidler som digitale verktøy.
- **Nivå:** vanskegrad fra 1 (lett) til 3 (krevende), klassifisert av KI.
- **Kompetansemål:** mål fra læreplanen som oppgaven dekker, med kode i parentes.

---

## V2026 oppgave 1 — Hovedformålet med en konstruktør

- **Fag:** Informasjonsteknologi 2
- **Eksamen:** Vår 2026 (LK20)
- **Del:** Eksamenen var ikke delt — hele eksamen med hjelpemidler
- **Oppgavenummer:** 1
- **Nivå:** Lett (1 av 3)
- **Temaer:** Objektorientert programmering, Klasser og objekter
- **Kort beskrivelse:** Velge riktig beskrivelse av hva en konstruktør gjør i objektorientert programmering.
- **Nettadresse:** https://matematikkoppgaver.no/it/oppgave/hovedformalet-med-en-konstruktor/

### Oppgavetekst

Hva er hovedformålet med en konstruktør (constructor) i objektorientert programmering?

> **Flervalgsoppgave — velg riktig alternativ**
> - [ ] å definere metodene et objekt kan bruke
> - [ ] å opprette nye klasser basert på eksisterende klasser
> - [x] å sette startverdier for objektets attributter når det opprettes
> - [ ] å styre hvordan objekter kommunikerer med hverandre

---

## V2026 oppgave 2 — Arv i klassediagram for transportsystem

- **Fag:** Informasjonsteknologi 2
- **Eksamen:** Vår 2026 (LK20)
- **Del:** Eksamenen var ikke delt — hele eksamen med hjelpemidler
- **Oppgavenummer:** 2
- **Nivå:** Lett (1 av 3)
- **Temaer:** Objektorientert programmering, Arv, UML
- **Kort beskrivelse:** Tolke arvepiler i et UML-klassediagram og velge utsagnet som beskriver arv mellom superklasse og subklasser.
- **Nettadresse:** https://matematikkoppgaver.no/it/oppgave/arv-i-klassediagram-for-transportsystem/

### Oppgavetekst

I et UML-klassediagram modellerer Ola et transportsystem. Han har en klasse Kjøretøy med attributter og metoder.
Klassene Bil og Buss er spesialiseringer av Kjøretøy.

![Klassediagram for transportsystemet](https://matematikkoppgaver.no/assets/_resources/it2-v26-2-2.avif)

Hvilket utsagn beskriver best hvordan arv fungerer i dette tilfellet?

> **Flervalgsoppgave — velg riktig alternativ**
> - [ ] Klassen Kjøretøy får tilgang til alle attributter og metoder som er definert i klassene Bil og Buss.
> - [x] Klassene Bil og Buss arver attributter og metoder fra klassen Kjøretøy og kan i tillegg ha egne.
> - [ ] Klassene Bil og Buss er uavhengige klasser og har ingen direkte sammenheng med klassen Kjøretøy.
> - [ ] Klassen Kjøretøy opprettes som et eget objekt hver gang klassene Bil eller Buss brukes.

---

## V2026 oppgave 3 — Sortere pseudokode som teller tall større enn 10

- **Fag:** Informasjonsteknologi 2
- **Eksamen:** Vår 2026 (LK20)
- **Del:** Eksamenen var ikke delt — hele eksamen med hjelpemidler
- **Oppgavenummer:** 3
- **Nivå:** Lett (1 av 3)
- **Temaer:** Pseudokode, Løkker, Algoritmer
- **Kort beskrivelse:** Sortere ti pseudokodelinjer til et program med while-løkke og if-test som teller hvor mange av fem innleste tall som er større enn 10.
- **Nettadresse:** https://matematikkoppgaver.no/it/oppgave/sortere-pseudokode-som-teller-tall-storre-enn-10/

### Oppgavetekst

Nedenfor finner du flere linjer med pseudokode.

Sorter linjene i riktig rekkefølge slik at de danner pseudokoden til et program. Programmet leser inn fem tall og teller og skriver ut hvor mange av tallene som er større enn 10.

*Merk: Linjene med pseudokode har ikke innrykk/indentering.*

> - `SET antall TO antall + 1`
> - `READ tall`
> - `ENDWHILE`
> - `DISPLAY antall`
> - `IF tall > 10`
> - `SET i TO i + 1`
> - `SET antall TO 0`
> - `WHILE i <= 5`
> - `SET i TO 1`
> - `ENDIF`
>

---

## V2026 oppgave 4 — Flytskjema og pseudokode for sum av partall

- **Fag:** Informasjonsteknologi 2
- **Eksamen:** Vår 2026 (LK20)
- **Del:** Eksamenen var ikke delt — hele eksamen med hjelpemidler
- **Oppgavenummer:** 4
- **Nivå:** Middels (2 av 3)
- **Temaer:** Flytskjema, Pseudokode, Algoritmer, Løkker
- **Kort beskrivelse:** Sammenligne et flytskjema med tre pseudokodesekvenser og forklare en algoritme som summerer partallene fra 1 til et innlest tall.
- **Nettadresse:** https://matematikkoppgaver.no/it/oppgave/flytskjema-og-pseudokode-for-sum-av-partall/

### Oppgavetekst

Nedenfor ser du et flytskjema som beskriver en algoritme, og tre sekvenser med pseudokode.

Du skal svare på begge oppgavene.

**Flytskjema**

![Flytskjema for algoritmen](https://matematikkoppgaver.no/assets/_resources/it2-v26-2-4-v2.avif)

---

**Pseudokode 1**

```pseudo
SET sum TO 0
READ tall
IF tall LESSER THAN 1
    DISPLAY "Ugyldig"
ELSE
    SET n TO 2
    WHILE n LESSER THAN OR EQUAL TO tall
        SET sum TO sum + n
        INCREMENT n BY 2
    ENDWHILE
    DISPLAY sum
ENDIF
```

**Pseudokode 2**

```pseudo
SET sum TO 0
READ tall
IF tall LESSER THAN 1
    DISPLAY "Ugyldig"
ELSE
    SET n TO 1
    WHILE n LESSER THAN OR EQUAL TO tall
        IF n % 2 NOT EQUAL TO 0
            SET sum TO sum + n
        ENDIF
        INCREMENT n
    ENDWHILE
    DISPLAY sum
ENDIF
```

---

**Pseudokode 3**

```pseudo
SET sum TO 0
READ tall
IF tall LESSER THAN 1
    DISPLAY "Ugyldig"
ELSE
    SET n TO 1
    WHILE n LESSER THAN OR EQUAL TO tall
        IF n % 2 EQUAL TO 0
            SET sum TO sum + n
        ENDIF
        INCREMENT n
    ENDWHILE
    DISPLAY sum
ENDIF
```

a) Hvilken sekvens med pseudokode beskriver den samme algoritmen som flytskjemaet?

> **Flervalgsoppgave — velg riktig alternativ**
> - [ ] pseudokode 1
> - [ ] pseudokode 2
> - [x] pseudokode 3

b) Forklar med egne ord hva algoritmen gjør, basert på flytskjemaet ovenfor.

---

## V2026 oppgave 5 — Togsett med lokomotiv og vogner

- **Fag:** Informasjonsteknologi 2
- **Eksamen:** Vår 2026 (LK20)
- **Del:** Eksamenen var ikke delt — hele eksamen med hjelpemidler
- **Oppgavenummer:** 5
- **Nivå:** Middels (2 av 3)
- **Temaer:** Objektorientert programmering, Klasser og objekter, Arv, UML
- **Kort beskrivelse:** Implementere klasser fra UML-klassediagram med komposisjon, aggregering og arv, og et program som bygger et togsett med tilfeldige verdier.
- **Nettadresse:** https://matematikkoppgaver.no/it/oppgave/togsett-med-lokomotiv-og-vogner/

### Oppgavetekst

I denne oppgaven skal du lage et program for oppretting av togsett. Klassene er definert ved klassediagrammer i figurene nedenfor.

*Merk: I vurderingen blir det vektlagt om du følger prinsippene for objektorientert programmering.*

Du skal svare på alle oppgavene.

![Klassediagram for Togsett og Lokomotiv](https://matematikkoppgaver.no/assets/_resources/it2-v26-2-5-1.avif)

a) Implementer klassene Togsett og Lokomotiv i samsvar med klassediagrammet i figur &fig:it2-v26-2-5-1 slik at et Togsett som blir opprettet, automatisk får et Lokomotiv. Lokomotiver skal instansieres med en tilfeldig trekkraft fra verdiene [320, 450, 600] tonn.
b) Implementer et program som bruker klassene Togsett og Lokomotiv og
- oppretter et togsett
- skriver ut informasjon om lokomotivet

![Klassediagram for Togdel, Togsett, Vogn og Lokomotiv](https://matematikkoppgaver.no/assets/_resources/it2-v26-2-5-2.avif)

c) Implementer klassene Togdel og Vogn, og gjør nødvendige endringer i Togsett og Lokomotiv slik at klassene er i samsvar med klassediagrammet i figur &fig:it2-v26-2-5-2.
- Vogner skal instansieres med en tilfeldig vekt mellom 20 og 50 tonn.
- Serienummeret for togdeler skal være unikt.
- Det skal være mulig å legge til både eksisterende og nye vogner til et togsett.

d) Utvid programmet fra 5b slik at det
- legger til nye vogner fram til grensen for lokomotivets trekkraft er nådd
- skriver ut informasjon om vognene i tillegg til lokomotivet

---

## V2026 oppgave 6 — Etisk dilemma ved kameraovervåking i skolen

- **Fag:** Informasjonsteknologi 2
- **Eksamen:** Vår 2026 (LK20)
- **Del:** Eksamenen var ikke delt — hele eksamen med hjelpemidler
- **Oppgavenummer:** 6
- **Nivå:** Middels (2 av 3)
- **Temaer:** Etikk, Personvern, Overvåking
- **Kort beskrivelse:** Drøfte et etisk dilemma der kameraovervåking i klasserom og kantine veier trygghet og læringsmiljø mot personvern og frihet.
- **Nettadresse:** https://matematikkoppgaver.no/it/oppgave/etisk-dilemma-ved-kameraovervaking-i-skolen/

### Oppgavetekst

**Tema: kameraovervåking i klasserom og kantine**

En norsk ungdomsskole er valgt ut til å delta i et forskningsprosjekt der det blir installert overvåkingskameraer både i klasserommene og i kantina. Formålet er å undersøke om kameraer kan forbedre læringsmiljøet og redusere konflikter og hærverk. Prosjektet skal etter planen vare i seks måneder, og skolen har fått støtte fra en teknologibedrift som analyserer opptakene.

**Situasjonsbeskrivelse**

Noah, en 15 år gammel elev, går på skolen som deltar i forskningsprosjektet. I klasserommet hans filmer et kamera hele undervisningen for å gi lærerne bedre innsikt i arbeidsro, samarbeidsmønstre og undervisningskvalitet. I kantina registrerer kameraene kø, konflikter og eventuelt hærverk.

Noah synes det er ubehagelig at alt han gjør i timen, blir filmet, spesielt når han spør om hjelp eller blir usikker på oppgaver. Samtidig forstår han at kameraene kanskje kan gjøre kantina tryggere og redusere bråk i friminuttene. Han blir usikker på om overvåkingen faktisk hjelper, eller om det bare fører til stress og mindre frihet for elevene.

Drøft et etisk dilemma som kan oppstå i denne situasjonen, der det blir brukt overvåkingskameraer i klasserommet og kantina.

---

## V2026 oppgave 7 — Registrerte kjøretøy og elbilandel per region

- **Fag:** Informasjonsteknologi 2
- **Eksamen:** Vår 2026 (LK20)
- **Del:** Eksamenen var ikke delt — hele eksamen med hjelpemidler
- **Oppgavenummer:** 7
- **Nivå:** Middels (2 av 3)
- **Temaer:** Datasett, Datastrukturer, Filbehandling, Visualisering
- **Kort beskrivelse:** Lese inn datasett (CSV/JSON), summere elbiler per år, sortere regioner og regne prosentandel, og tegne linjediagram per drivstofftype.
- **Nettadresse:** https://matematikkoppgaver.no/it/oppgave/registrerte-kjoretoy-og-elbilandel-per-region/

### Oppgavetekst

**Registrerte kjøretøy 2008–2024**

Du skal lage et program som leser inn informasjon fra et datasett, bearbeider og presenterer det. Datasettet inneholder informasjon om registrering av nye kjøretøy. Dataene gir en oversikt over registrerte kjøretøy per drivstofftype i Norge i tidsperioden 2008–2024. Dataene er delt inn i regioner som følger dagens fylkesgrenser.

Du skal svare på alle oppgavene.

Datasettet er tilgjengelig i CSV- og JSON-format. Last ned datasettet her: [datasett(csv og json)](/assets/_resources/it2-v26-2-7-registrerte-kjoretoy.zip). Filene er kodet med tegnsettet UTF-8.

a) Lag et program som leser inn data fra datasettet, lagrer det i egnet datastruktur og regner ut totalt antall registrerte elbiler per år på tvers av alle regioner. Programmet skal presentere resultatet i et tabelliknende oppsett som viser antall registrerte elbiler i tidsperioden 2014–2024.
b) Utvid programmet slik at brukeren kan angi eller velge et årstall mellom 2014 og 2024 i grensesnittet. Programmet skal da presentere både antallet registrerte elbiler per region i synkende rekkefølge og hvilken prosentandel elbilene utgjorde av det totale antallet kjøretøy i hver region.
c) Utvid programmet slik at brukeren kan angi eller velge en region (f.eks. Telemark). Brukeren skal så få presentert utviklingen i antall registrerte kjøretøy fra 2008 til 2024 i et linjediagram fordelt på drivstofftyper.

---

## V2026 oppgave 8 — Spillet stolpebyggeren

- **Fag:** Informasjonsteknologi 2
- **Eksamen:** Vår 2026 (LK20)
- **Del:** Eksamenen var ikke delt — hele eksamen med hjelpemidler
- **Oppgavenummer:** 8
- **Nivå:** Krevende (3 av 3)
- **Temaer:** Objektorientert programmering, Spillprogrammering, Brukergrensesnitt
- **Kort beskrivelse:** Programmere et objektorientert spill med tastestyrt spiller, fallende objekter uten overlapp, kollisjon, fargeregel, liv og stabling av fangede deler.
- **Nettadresse:** https://matematikkoppgaver.no/it/oppgave/spillet-stolpebyggeren/

### Oppgavetekst

**Stolpebyggeren**

Spillet går ut på at stolpebyggeren skal fange stolpedeler som faller fra oven, og så sette dem sammen til to stolper: først en helt til høyre i hovedvinduet og så en til venstre.

**Ved oppstart**

Ved oppstart skal

- hovedscenen opprettes med størrelse 800 × 400 piksler
- stolpebyggeren opprettes med størrelsen 150 × 70 piksler plassert i midten nederst på hovedscenen
- stolpebyggeren kunne flyttes mot venstre og høyre med passende taster
- stolpebyggeren begynne med tre liv

*Merk: Hvis du bruker noe annet enn piltastene til å styre stolpebyggeren, må det stå veldig tydelig slik at sensor får spilt spillet.*

![Her er spillet kort tid etter oppstart. Det har kommet tre stolpedeler, men ingen har falt helt ned til stolpebyggeren ennå.](https://matematikkoppgaver.no/assets/_resources/it2-v26-2-8-1.avif)

**Under spillet**

Under spillets gang skal

- det falle nedover stolpedeler fra tilfeldige posisjoner langs øvre kant av hovedscenen
- stolpedelene ikke være mindre enn 50 piksler unna sidene, slik at det er plass til stolpene som skal bygges der
- stolpedelene ikke kunne overlappe hverandre
- stolpedelene ha høyde på 50 piksler og bredde på enten 50, 100 eller 150 piksler
- stolpedelene komme i to ulike farger, for eksempel blå og grønn

**Spillerens interaksjon med spillet**

Stolpebyggeren skal fange stolpedelene som faller fra oven, og bygge to stolper: en på hver side av hovedvinduet. Stolpebyggeren fanger delene ved å kollidere med dem, og må fange deler i riktig farge slik at stolpene har deler i vekslende farge.

Hver gang stolpebyggeren fanger en stolpedel med riktig farge, skal stolpedelen roteres en kvart rotasjon (90 grader), flyttes på toppen av den sidestolpen som er under bygging, og deretter stå stille.

Sidestolpene bygges fra bunn til topp: først en på høyre side, så en på venstre. En stolpe er ferdig når det er stolpedeler opp til toppen av hovedscenen. Spillet skal tillate at den siste stolpedelen går over øvre kant av hovedscenen, men skal ikke legge til flere stolpedeler over den igjen.

Stolpebyggeren mister et liv hvis han fanger en stolpedel av feil farge.

![Her har stolpebyggeren fanget tre stolpedeler uten å miste noen liv, men er nær å fange en del av feil farge.](https://matematikkoppgaver.no/assets/_resources/it2-v26-2-8-2.avif)

![Stolpebyggeren har fanget seks stolpedeler, men en av dem var av feil farge og har kostet ham et liv.](https://matematikkoppgaver.no/assets/_resources/it2-v26-2-8-3.avif)

**Spillets avslutning**

Spillet avsluttes når stolpebyggeren har bygget ferdig begge stolpene eller har mistet alle sine tre liv.

Ved avslutning skal spillet stoppe, og resultatet eller en oppsummering av spillet skal vises på en hensiktsmessig måte.

**Oppdrag**

Bruk objektorientert programmering til å implementere spillet.

---

## V2025 oppgave 1 — TrommeLom-funksjon i pseudokode

- **Fag:** Informasjonsteknologi 2
- **Eksamen:** Vår 2025 (LK20)
- **Del:** Eksamenen var ikke delt — hele eksamen med hjelpemidler
- **Oppgavenummer:** 1
- **Poeng:** 1.5
- **Nivå:** Lett (1 av 3)
- **Temaer:** Pseudokode, Løkker, Valgsetninger, Funksjoner
- **Kort beskrivelse:** Spore en pseudokodefunksjon som bygger en tekst med «Tromm», «Lom» og «TrommeLom» for tall delelige med 2, 3 og 6, og finne hva som vises for n = 6.
- **Nettadresse:** https://matematikkoppgaver.no/it/oppgave/trommelom-funksjon-i-pseudokode/

### Oppgavetekst

Ta utgangspunkt i følgende pseudokode:

```pseudo
FUNCTION sjekkTall(n):
   SET resultat TO " "
   FOR hvert tall i fra og med 1 til og med n
      IF i % 2 EQUAL TO 0 AND i % 3 EQUAL TO 0
         SET resultat TO resultat + "TrommeLom "
      ELSE IF i % 2 EQUAL TO 0
         SET resultat TO resultat + "Tromm "
      ELSE IF i % 3 EQUAL TO 0
         SET resultat TO resultat + "Lom "
      ELSE
         SET resultat TO resultat + i + " "
      ENDIF
   ENDFOR
   RETURN resultat
ENDFUNCTION
DISPLAY sjekkTall(6)
```

Hva vil bli vist som resultat av programmet pseudokoden over beskriver?

> **Flervalgsoppgave — velg riktig alternativ**
> - [ ] 1 2 3 4 5 6
> - [ ] 1 TrommeLom 3 Tromm 5 Lom
> - [x] 1 Tromm Lom Tromm 5 TrommeLom
> - [ ] 1 Tromm 3 TrommeLom 5 Tromm

---

## V2025 oppgave 2 — Relasjon når objekter bare finnes inne i en annen klasse

- **Fag:** Informasjonsteknologi 2
- **Eksamen:** Vår 2025 (LK20)
- **Del:** Eksamenen var ikke delt — hele eksamen med hjelpemidler
- **Oppgavenummer:** 2
- **Poeng:** 1.5
- **Nivå:** Lett (1 av 3)
- **Temaer:** Objektorientert programmering, UML, Klasser og objekter
- **Kort beskrivelse:** Velge riktig type relasjon i objektorientert modellering når objekter av en klasse bare eksisterer og brukes innenfor objekter av en annen klasse.
- **Nettadresse:** https://matematikkoppgaver.no/it/oppgave/relasjon-nar-objekter-bare-finnes-inne-i-en-annen-klasse/

### Oppgavetekst

Objekter av en klasse eksisterer og brukes kun innenfor objekter av en annen klasse.

Hva er riktig type relasjon mellom de to klassene i objektorientert modellering (OOM)? Velg riktig svar.

> **Flervalgsoppgave — velg riktig alternativ**
> - [ ] assosiasjon
> - [ ] generalisering
> - [x] komposisjon
> - [ ] avhengighet

---

## V2025 oppgave 3 — OOP-prinsipp for metoder med samme navn i superklasse og subklasser

- **Fag:** Informasjonsteknologi 2
- **Eksamen:** Vår 2025 (LK20)
- **Del:** Eksamenen var ikke delt — hele eksamen med hjelpemidler
- **Oppgavenummer:** 3
- **Poeng:** 1.5
- **Nivå:** Lett (1 av 3)
- **Temaer:** Objektorientert programmering, Arv
- **Kort beskrivelse:** Kjenne igjen polymorfisme som prinsippet som gjør at metoder med samme navn i superklasse og subklasser kalles riktig på objektene.
- **Nettadresse:** https://matematikkoppgaver.no/it/oppgave/oop-prinsipp-for-metoder-med-samme-navn-i-superklasse-og-subklasser/

### Oppgavetekst

En utvikler som lager et objektorientert program, oppdager at flere av klassene har like eller liknende metoder og egenskaper. Utvikleren velger å generalisere de felles metodene og egenskapene til en superklasse, men beholder spesialiserte varianter av metodene i subklassene.

Hvilket prinsipp i objektorientering innebærer at metodene kan ha samme navn i superklassen og subklassene og likevel kalles riktig på objektene? Velg riktig svar.

> **Flervalgsoppgave — velg riktig alternativ**
> - [ ] abstraksjon
> - [x] polymorfisme
> - [ ] innkapsling
> - [ ] arv

---

## V2025 oppgave 4 — OOP-prinsipp for å skille grensesnitt og interne detaljer

- **Fag:** Informasjonsteknologi 2
- **Eksamen:** Vår 2025 (LK20)
- **Del:** Eksamenen var ikke delt — hele eksamen med hjelpemidler
- **Oppgavenummer:** 4
- **Poeng:** 1.5
- **Nivå:** Middels (2 av 3)
- **Temaer:** Objektorientert programmering
- **Kort beskrivelse:** Velge hvilket prinsipp i objektorientering som skiller mellom objektenes grensesnitt og interne detaljer (UDIRs fasit er abstraksjon).
- **Nettadresse:** https://matematikkoppgaver.no/it/oppgave/oop-prinsipp-for-a-skille-grensesnitt-og-interne-detaljer/

### Oppgavetekst

I utvikling av objektorienterte programmer er det et poeng å samle og skjule implementasjon inne i objekter og bare beskrive objektenes bruk og funksjon ut mot resten av programmet.

Hvilket prinsipp i objektorientering innebærer å skille mellom grensesnittet og interne detaljer til objekter? Velg riktig svar.

> **Flervalgsoppgave — velg riktig alternativ**
> - [x] abstraksjon
> - [ ] polymorfisme
> - [ ] innkapsling
> - [ ] arv

---

## V2025 oppgave 5 — Bokstavforskyvning i pseudokode

- **Fag:** Informasjonsteknologi 2
- **Eksamen:** Vår 2025 (LK20)
- **Del:** Eksamenen var ikke delt — hele eksamen med hjelpemidler
- **Oppgavenummer:** 5
- **Poeng:** 6
- **Nivå:** Middels (2 av 3)
- **Temaer:** Pseudokode, Algoritmer, Løkker, Funksjoner
- **Kort beskrivelse:** Forklare og implementere en algoritme som forskyver hver bokstav i en tekst n plasser i et alfabet med æ, ø og å (Cæsar-chiffer), mens andre tegn beholdes.
- **Nettadresse:** https://matematikkoppgaver.no/it/oppgave/bokstavforskyvning-i-pseudokode/

### Oppgavetekst

Pseudokoden nedenfor beskriver en algoritme som behandler en tekst basert på et tall:

```pseudo
FUNCTION behandleTekst(tekst, n)
  SET nyTekst TO ""
  FOR hver bokstav i tekst
    IF bokstav er en bokstav (a-å eller A-Å)
      SET nyBokstav TO manipulereBokstav(bokstav, n)
      SET nyTekst TO nyTekst + nyBokstav
    ELSE
      SET nyTekst TO nyTekst + bokstav
    ENDIF
  ENDFOR
  RETURN nyTekst
ENDFUNCTION

FUNCTION manipulereBokstav(bokstav, n)
  SET alfabet TO "abcdefghijklmnopqrstuvwxyzæøåABCDEFGHIJKLMNOPQRSTUVWXYZÆØÅ"
  SET posisjon TO plasseringen til bokstav i alfabet
  SET nyPosisjon TO (posisjon + n) % 29
  RETURN bokstaven på nyPosisjon i alfabet
ENDFUNCTION
```

a) Forklar med egne ord hva algoritmen gjør. Beskriv hvordan algoritmen endrer teksten, og hvilke operasjoner som utføres på bokstavene. Du skal fokusere på hva som skjer med teksten som helhet, ikke forklare hver linje i pseudokoden.
b) Implementer algoritmen i eget programmeringsspråk. Programmet skal ta inn en tekststreng og et heltall $n$, for eksempel «Hei på deg» og tallet $n = 3$, og vise passende resultat.

---

## V2025 oppgave 6 — Bibliotek med bøker og lånere

- **Fag:** Informasjonsteknologi 2
- **Eksamen:** Vår 2025 (LK20)
- **Del:** Eksamenen var ikke delt — hele eksamen med hjelpemidler
- **Oppgavenummer:** 6
- **Poeng:** 12
- **Nivå:** Middels (2 av 3)
- **Temaer:** Objektorientert programmering, Klasser og objekter, UML, Feilhåndtering, Testing
- **Kort beskrivelse:** Modellere og implementere klassene Bok og Låner for utlån og tilbakelevering, med klassediagram, testprogram og håndtering av feil og unntak.
- **Nettadresse:** https://matematikkoppgaver.no/it/oppgave/bibliotek-med-boker-og-lanere/

### Oppgavetekst

I denne oppgaven skal du lage et program for administrasjon av et bibliotek ved hjelp av to klasser: `Bok` og `Låner`. Klassene `Bok` og `Låner` skal inneholde funksjonalitet for utlån og tilbakelevering av bøker. Klassene er definert med følgende egenskaper og metoder:

*Merk: Klassene under er beskrevet med navn i camelCase og norske bokstaver (æ, ø, å). Du kan bruke det som er naturlig i din løsning.*

Klassen `Bok`:

- `tittel : string` – tittelen på boken
- `forfatter : string` – forfatteren av boken
- `utlånt : Låner` – hvem boken er utlånt til, om den er det
- `visInfo()` – viser informasjon om boken (tittel, forfatter, om den er utlånt eller ikke)

Klassen `Låner`:

- `lånerID : int` – unik ID for låneren
- `lånteBøker : [Bok]` – referanser til bøkene som er lånt av denne låneren
- `lånBok(Bok)` – låner en bok og merker den som utlånt
- `leverTilbakeBok(Bok)` – returnerer den lånte boken og markerer den som levert tilbake

a) Lag et klassediagram som viser klassene `Bok` og `Låner` med egenskapene og metodene som er beskrevet over. Forklar og tegn riktig relasjon mellom de to klassene. *(Tips: Klassediagrammet kan lagres og leveres inn som pdf-dokument eller bildefil.)*
b) Med utgangspunkt i klassediagrammet du laget i oppgave a: Implementer klassene `Bok` og `Låner` i ditt programmeringsspråk.
c) Implementer et testprogram for klassene `Bok` og `Låner` som gjør følgende:
1\) oppretter noen bøker og låner dem ut til en låner
2\) tester at boken kan lånes ut og leveres tilbake korrekt
3\) tester at det ikke er mulig å låne ut en bok som allerede er utlånt
d) Implementer nødvendig håndtering av feil og unntak i programmet. *Hvis du allerede har skrevet programmet slik at dette er håndtert, trenger du bare å påpeke dette i kommentarer i koden.*

---

## V2025 oppgave 7 — Etiske dilemmaer ved VR-behandling av sosial angst

- **Fag:** Informasjonsteknologi 2
- **Eksamen:** Vår 2025 (LK20)
- **Del:** Eksamenen var ikke delt — hele eksamen med hjelpemidler
- **Oppgavenummer:** 7
- **Poeng:** 6
- **Nivå:** Middels (2 av 3)
- **Temaer:** Etikk, Personvern, Helse- og velferdsteknologi
- **Kort beskrivelse:** Drøfte to etiske dilemmaer når VR-teknologi brukes til å behandle sosial angst hos en 16 år gammel elev, for eksempel personvern, teknologiavhengighet og effekten på utviklingen.
- **Nettadresse:** https://matematikkoppgaver.no/it/oppgave/etiske-dilemmaer-ved-vr-behandling-av-sosial-angst/

### Oppgavetekst

**Tema: VR-briller skal hjelpe elever med sosial angst**

En gruppe forskere ved et sykehus i Norge har utviklet et prosjekt som bruker virtual reality (VR) for å hjelpe ungdom med sosial angst. Ved å bruke VR kan ungdommene øve på å holde presentasjoner foran en virtuell klasse, noe som gir dem mulighet til å overvinne frykten i et trygt og kontrollert miljø. Prosjektet er rettet mot ungdom i alderen 13–16 år. Målet er at de kan bygge selvtillit og redusere angst i VR-øvelser før de møter virkelige situasjoner. Forskning pågår for å vurdere effekten av denne tilnærmingen.

Forklaring av begrep innen virtual reality (virtuell virkelighet):

- virtual reality, VR (virtuell virkelighet): datasimulert, tredimensjonal, virkelighetsnær verden
- augmented reality, AR (utvidet virkelighet): blander VR med den virkelige verden
- immersive reality (dyp virkelighet): brukes om AR og VR, gjerne urealistisk virkelighet, kan også omfatte kobling til nervesystemet

Forklaring av hva sosial angst er:

- Sosial angst er en kronisk angst for en rekke dagligdagse situasjoner hvor du møter andre mennesker eller skal prestere noe.
- Det er en av de vanligste psykiske lidelsene.
- Sosial angst rammer ofte først i 14–16-årsalderen.
- Tilstanden behandles med mestringstrening og medikamenter.

Kilde: NHI, Norsk Helseinformatikk.

**Situasjonsbeskrivelse**

Emma, en 16 år gammel elev, deltar i et prosjekt hvor VR-teknologi blir brukt til å hjelpe ungdom med sosial angst til å øve på å snakke foran klassen. Gjennom VR kan Emma framføre presentasjoner i et virtuelt klasserom. Etter flere øvelser merker hun at hun føler seg tryggere i virtuelle situasjoner, men er usikker på hvordan hun vil håndtere virkelige presentasjoner.

Drøft to etiske dilemmaer som kan oppstå i Emmas situasjon der det blir brukt VR-teknologi for å behandle sosial angst. I drøftingen din kan du for eksempel vurdere faktorer som personvern, teknologiavhengighet, tidlig innsats eller effekten på ungdommenes utvikling.

---

## V2025 oppgave 8 — Deltakelse i friluftsaktiviteter per fylke

- **Fag:** Informasjonsteknologi 2
- **Eksamen:** Vår 2025 (LK20)
- **Del:** Eksamenen var ikke delt — hele eksamen med hjelpemidler
- **Oppgavenummer:** 8
- **Poeng:** 12
- **Nivå:** Middels (2 av 3)
- **Temaer:** Datasett, Datastrukturer, Filbehandling, Visualisering
- **Kort beskrivelse:** Lese inn et datasett (CSV/JSON) om deltakelse i friluftsaktiviteter per fylke, summere per aktivitet, vise aktivitetene for et valgt fylke sortert med antall og prosent, og tegne stolpediagram over de tre mest populære.
- **Nettadresse:** https://matematikkoppgaver.no/it/oppgave/deltakelse-i-friluftsaktiviteter-per-fylke/

### Oppgavetekst

**Deltakelse på ulike friluftsaktiviteter i 2024**

Du skal lage et program som leser inn informasjon fra et datasett, bearbeider og presenterer det. Datasettet inneholder informasjon om deltakelse i ulike friluftsaktiviteter i forskjellige fylker i Norge i 2024. Det er 1000 personer fra hvert fylke som har deltatt i denne undersøkelsen.

Datasettet er tilgjengelig i CSV- og JSON-format. Velg ønsket format og last ned datasettet her: [datasett (csv og json)](/assets/_resources/it2-v25-2-8-friluftsaktiviteter.zip).

*OBS! I innleveringsmappen må du huske å legge inn vedlegget sammen med programmet, slik at det fungerer når sensor skal kjøre det.*

a) Lag et program som leser inn data fra datasettet, lagrer det i egnet datastruktur og regner ut totalt antall personer som har deltatt i hver aktivitet, på tvers av alle fylker. Programmet skal presentere resultatet i et tabelliknende oppsett som viser aktiviteter og totalt antall deltakere for hver aktivitet.
b) Utvid programmet slik at brukeren kan angi eller velge et fylke i grensesnittet (f.eks. Oslo). Programmet skal deretter vise alle aktivitetene for det valgte fylket i stigende rekkefølge, både som antall og som prosentandel.
c) Utvid programmet slik at det kan finne de tre mest populære aktivitetene for et valgt fylke og presentere dem i et stolpediagram.

---

## V2025 oppgave 9 — Simulering av skogbrann

- **Fag:** Informasjonsteknologi 2
- **Eksamen:** Vår 2025 (LK20)
- **Del:** Eksamenen var ikke delt — hele eksamen med hjelpemidler
- **Oppgavenummer:** 9
- **Poeng:** 18
- **Nivå:** Krevende (3 av 3)
- **Temaer:** Objektorientert programmering, Klasser og objekter, Simulering
- **Kort beskrivelse:** Lage en objektorientert simulering av et rutenett der trær vokser fram, lynet kan tenne et tre og brannen sprer seg til nabotrær, uten vekst mens det brenner.
- **Nettadresse:** https://matematikkoppgaver.no/it/oppgave/simulering-av-skogbrann/

### Oppgavetekst

I denne oppgaven skal du lage et program som simulerer framvekst av skog, lynnedslag og hvordan en skogbrann kan spre seg.

Under ser du illustrasjoner av at skogen vokser fram …

![Rutenett på 40 ganger 40 ruter med lite skog. Bare 35 av rutene har et tre.](https://matematikkoppgaver.no/assets/_resources/it2-v25-2-9-skog-start.avif) ![Rutenett på 40 ganger 40 ruter der det er trær i 200 av rutene](https://matematikkoppgaver.no/assets/_resources/it2-v25-2-9-skog-mer.avif)

… lynet slår ned og ett tre begynner å brenne …

![Rutenett med trær i 250 av rutene. I én av rutene har det startet en brann etter lynnedslaget.](https://matematikkoppgaver.no/assets/_resources/it2-v25-2-9-lynnedslag.avif)

… og skogbrannen brer seg til de omkringliggende trærne (utsnitt).

![Animasjon av brannen som sprer seg til nærliggende trær](https://matematikkoppgaver.no/assets/_resources/it2-v25-2-9-brann.gif)

**Ta hensyn til følgende når du utvikler programmet:**

- Ved oppstart består simuleringen av et tomt rutenett.
- Hver celle i rutenettet kan bli et tre, og sannsynligheten for at en tom celle blir et tre, kan ved oppstart f.eks. være 0,3 %.
- Etter som det vokser fram trær i skogen, kan et lynnedslag slå ned i et tre og starte en skogbrann. Sannsynligheten for at et tre blir truffet av lyn, kan f.eks. settes til 0,03 %.
- Om lynet slår ned i et tre, begynner det å brenne, og skogbrannen sprer seg etter følgende regler:
    - Ved lynnedslag er det ett tre som begynner å brenne.
    - Ved neste trinn i simuleringen har treet lynet slo ned i, brent opp og blitt en blank celle. Trærne som sto ved siden av treet der lynet slo ned, brenner.
    - Simuleringen fortsetter på samme vis ved at alle trær som står ved et tre som nettopp brant opp, nå brenner.
- Skogen vokser ikke mens skogbrannen pågår. Det betyr at mens det pågår en brann, representerer hvert trinn i simuleringen veldig mye mindre tid enn mens skogen vokser.

Bruk objektorientert programmering med passende valg av klasser, og lag simuleringen.

*Den visuelle representasjonen av trær og brann trenger ikke å være detaljert. Du kan bruke helt enkle ruter med forskjellig farge eller form.*

---

## H2025 oppgave 1 — Mekanisme for å generalisere klasser til en superklasse

- **Fag:** Informasjonsteknologi 2
- **Eksamen:** Høst 2025 (LK20)
- **Del:** Eksamenen var ikke delt — hele eksamen med hjelpemidler
- **Oppgavenummer:** 1
- **Nivå:** Lett (1 av 3)
- **Temaer:** Objektorientert programmering, Arv
- **Kort beskrivelse:** Kjenne igjen arv som mekanismen som realiserer en modell der felles metoder og egenskaper er generalisert til en superklasse.
- **Nettadresse:** https://matematikkoppgaver.no/it/oppgave/mekanisme-for-a-generalisere-klasser-til-en-superklasse/

### Oppgavetekst

En utvikler som modellerer et objektorientert program, oppdager at flere av klassene har like eller lignende metoder og egenskaper. Utvikleren velger å generalisere de felles metodene og egenskapene til en superklasse.

Hvilket prinsipp eller hvilken mekanisme må implementeres for å realisere denne modellen med objektorientert programmering?

> **Flervalgsoppgave — velg riktig alternativ**
> - [ ] abstraksjon
> - [ ] polymorfisme
> - [ ] innkapsling
> - [x] arv

---

## H2025 oppgave 2 — Relasjon mellom student og fakultet

- **Fag:** Informasjonsteknologi 2
- **Eksamen:** Høst 2025 (LK20)
- **Del:** Eksamenen var ikke delt — hele eksamen med hjelpemidler
- **Oppgavenummer:** 2
- **Nivå:** Middels (2 av 3)
- **Temaer:** Objektorientert programmering, UML, Klasser og objekter
- **Kort beskrivelse:** Velge og begrunne riktig relasjon i et klassediagram der studenter kan knytte seg til et valgfritt fakultet og bli en del av det.
- **Nettadresse:** https://matematikkoppgaver.no/it/oppgave/relasjon-mellom-student-og-fakultet/

### Oppgavetekst

På et universitet kan studentene velge å knytte seg til et valgfritt fakultet og da bli en del av fakultetet. Dette er modellert med de to klassene `Student` og `Fakultet` i klassediagrammet nedenfor.

![Klassediagram med de to klassene Student og Fakultet, begge med attributtet navn](https://matematikkoppgaver.no/assets/_resources/it2-h25-2-2-klassediagram.avif)

a) Se på klassediagrammet ovenfor. Hva er riktig type relasjon mellom de to klassene i objektorientert modellering (OOM)?

> **Flervalgsoppgave — velg riktig alternativ**
> - [x] aggregering
> - [ ] generalisering
> - [ ] komposisjon
> - [ ] avhengighet

b) Begrunn svaret ditt på oppgave a.

---

## H2025 oppgave 3 — Fullføre pseudokode med dyrenavn

- **Fag:** Informasjonsteknologi 2
- **Eksamen:** Høst 2025 (LK20)
- **Del:** Eksamenen var ikke delt — hele eksamen med hjelpemidler
- **Oppgavenummer:** 3
- **Nivå:** Middels (2 av 3)
- **Temaer:** Pseudokode, Løkker, Valgsetninger, Funksjoner
- **Kort beskrivelse:** Skrive den manglende delen av en pseudokodefunksjon slik at den legger til riktig dyrenavn for hvert tall og gir et oppgitt resultat.
- **Nettadresse:** https://matematikkoppgaver.no/it/oppgave/fullfore-pseudokode-med-dyrenavn/

### Oppgavetekst

I denne oppgaven skal du lage en funksjon som bygger opp en tekst basert på noen regler. Funksjonen er ikke ferdig skrevet og mangler en del som bestemmer hvilket dyrenavn som skal legges til. Funksjonen er beskrevet ved hjelp av følgende pseudokode:

```pseudo
FUNCTION beskrivDyr(n):
   SET resultat TO " "
   FOR hvert tall i fra 1 til n
      IF i % 2 EQUAL TO 0
         SET resultat TO resultat + "Blå "
      ELSE
         SET resultat TO resultat + "Rød "
      ENDIF
      // mangler pseudokode her for å legge til dyrenavn
   ENDFOR
   RETURN resultat
ENDFUNCTION
DISPLAY beskrivDyr(5)
```

Forventet resultat for denne funksjonen er: `Rød Mus Blå Mus Rød Katt Blå Mus Rød Hund`

Fullfør funksjonen slik at den også legger til riktig dyrenavn for hvert tall. Skriv den manglende pseudokoden.

---

## H2025 oppgave 4 — Kaprekars rutine for firesifrede tall

- **Fag:** Informasjonsteknologi 2
- **Eksamen:** Høst 2025 (LK20)
- **Del:** Eksamenen var ikke delt — hele eksamen med hjelpemidler
- **Oppgavenummer:** 4
- **Nivå:** Middels (2 av 3)
- **Temaer:** Pseudokode, Algoritmer, Løkker, Sortering
- **Kort beskrivelse:** Forklare og implementere en algoritme som gjentatte ganger trekker det stigende sorterte tallet fra det synkende sorterte for et firesifret tall til tallet ikke endrer seg (Kaprekars konstant 6174).
- **Nettadresse:** https://matematikkoppgaver.no/it/oppgave/kaprekars-rutine-for-firesifrede-tall/

### Oppgavetekst

Pseudokoden nedenfor beskriver en algoritme som behandler et positivt **firesifret** heltall, der det første sifferet ikke er 0:

```pseudo
FUNCTION tallspill(tall)
  REPEAT
    SET stigendeTall TO sortAscending(sifrene i tall)
    SET synkendeTall TO sortDescending(sifrene i tall)
    SET nyttTall TO synkendeTall - stigendeTall
    DISPLAY tall, "->", synkendeTall, "-", stigendeTall, "=" og nyttTall
    SET tall TO nyttTall
  UNTIL tall er det samme som i forrige runde
  RETURN tall
ENDFUNCTION
```

**Forklaring**

- `sortAscending(sifrene i tall)`: sorterer sifrene i tallet fra minste til største
- `sortDescending(sifrene i tall)`: sorterer sifrene i tallet fra største til minste

**Eksempel**

```text
3142 -> 4321 - 1234 = 3087
3087 -> 8730 - 0378 = 8352
8352 -> 8532 - 2358 = 6174
6174 -> 7641 - 1467 = 6174
```

a) Forklar med egne ord hva algoritmen gjør. Beskriv hvordan algoritmen endrer tallet for hvert steg, og hvordan algoritmen fortsetter til et tall gjentas. Du skal fokusere på hva som skjer i algoritmen som helhet, ikke forklare hver linje i pseudokoden.
b) Implementer algoritmen i ditt programmeringsspråk. Programmet skal ta inn et heltall fra brukeren, for eksempel tallet 3142, og vise hvert steg i algoritmen slik pseudokoden beskriver, helt til tallet ikke endrer seg lenger.

---

## H2025 oppgave 5 — Digitalklokke med tallvisere

- **Fag:** Informasjonsteknologi 2
- **Eksamen:** Høst 2025 (LK20)
- **Del:** Eksamenen var ikke delt — hele eksamen med hjelpemidler
- **Oppgavenummer:** 5
- **Nivå:** Middels (2 av 3)
- **Temaer:** Objektorientert programmering, Klasser og objekter, UML, Feilhåndtering, Testing
- **Kort beskrivelse:** Forklare og implementere et klassediagram der en Digitalklokke består av to Tallviser-objekter for timer og minutter, med testprogram og håndtering av feil og unntak.
- **Nettadresse:** https://matematikkoppgaver.no/it/oppgave/digitalklokke-med-tallvisere/

### Oppgavetekst

I denne oppgaven får du utdelt et klassediagram som viser strukturen til en digital klokke. Diagrammet består av to klasser: `Tallviser` og `Digitalklokke`.

`Tallviser` representerer en enkel teller med en verdi og en maksimal verdi. Den kan brukes for timer og minutter.

`Digitalklokke` består av to tallvisere, en for timer og en for minutter, og har metoder for å stille inn tiden, la tiden gå og vise tiden som tekst.

![Klassediagram med klassene Tallviser (verdi, maks_verdi, set_verdi, øk, vis_verdi) og Digitalklokke (timer, minutter, set_tid, tid_går, vis_tid), koblet med en fylt rombe ved Digitalklokke](https://matematikkoppgaver.no/assets/_resources/it2-h25-2-5-klassediagram.avif)

a) Forklar diagrammet ved å beskrive relasjonen mellom klassene og hva klassene representerer. Du skal også identifisere og forklare attributtene og metodene i klassene.
b) Implementer klassene i ditt programmeringsspråk ved å lage klassen `Tallviser` med alle nødvendige attributter og metoder, og ved å lage klassen `Digitalklokke`, som bruker to instanser av klassen `Tallviser`.
c) Implementer et testprogram som oppretter en instans av klassen `Digitalklokke`, og som tester metodene for å stille inn tid, la tiden gå og vise tiden. Test også at 60 minutter blir til en time når klokken går.
d) Implementer nødvendig håndtering av feil og unntak i programmet. Hvis du allerede har skrevet programmet slik at dette er håndtert, trenger du bare å påpeke dette med kommentarer i koden.

---

## H2025 oppgave 6 — Etisk dilemma ved KI-chatbot som samtalepartner

- **Fag:** Informasjonsteknologi 2
- **Eksamen:** Høst 2025 (LK20)
- **Del:** Eksamenen var ikke delt — hele eksamen med hjelpemidler
- **Oppgavenummer:** 6
- **Nivå:** Middels (2 av 3)
- **Temaer:** Etikk, Kunstig intelligens, Personvern, Helse- og velferdsteknologi
- **Kort beskrivelse:** Drøfte ett etisk dilemma når en 17-åring som er nedstemt, bruker en gratis KI-chatbot som samtalepartner over tid, med begreper som ansvar, konsekvenser, tillit og personvern.
- **Nettadresse:** https://matematikkoppgaver.no/it/oppgave/etisk-dilemma-ved-ki-chatbot-som-samtalepartner/

### Oppgavetekst

**Tema: Kan kunstig intelligens hjelpe ungdom med depresjon?**

I dag undersøkes det hvordan kunstig intelligens (KI), som chatboter, kan brukes til å støtte ungdom som sliter med depresjon og vonde tanker. Forskning viser at mange ungdommer synes det er enklere å åpne seg for en chatbot enn for et menneske, fordi de ikke føler seg dømt og kan bruke den i trygge omgivelser, som hjemme.

Samtidig er det flere utfordringer ved det: Chatboter kan gi feil eller upassende svar dersom de ikke overvåkes godt nok, og det er viktig at ungdom forstår at de snakker med en maskin og ikke med et menneske. Et annet spørsmål er hvordan sensitive opplysninger blir lagret og brukt.

KI kan altså senke terskelen for å søke hjelp, men det reiser også vanskelige etiske dilemmaer.

**Situasjonsbeskrivelse**

Anna er 17 år og går på videregående. Hun har den siste tiden følt seg trist, ensom og nedstemt. Hun synes det er vanskelig å snakke med foreldrene eller helsesykepleieren på skolen, for hun er redd for at de skal misforstå eller tenke dårlig om henne.

En kveld finner hun en gratis chatbot-app som lover å være en «venn å snakke med». Anna opplever at det er mye lettere å åpne seg for chatboten enn for mennesker. Hun forteller om følelsene sine, og chatboten svarer raskt og vennlig. Etter en stund begynner hun å bruke den nesten hver dag.

Men så skjer det to ting:

- Chatboten gir av og til råd som virker litt rare og ikke alltid hjelper. Anna blir usikker på om den egentlig forstår henne.
- Hun leser på nettet at appen kan lagre dataene hennes og selge dem videre til andre selskaper.

Drøft ett etisk dilemma som kan oppstå i Annas situasjon når hun bruker chatboten som samtalepartner over lengre tid. I drøftingen din kan du presentere argumenter for og imot dilemmaet du velger, bruke etiske begreper som ansvar, konsekvenser, tillit og personvern og avslutte med din egen vurdering: Hva mener du Anna bør gjøre, og hvilken rolle bør KI ha i psykisk helsehjelp til ungdom?

---

## H2025 oppgave 7 — Elevtall i skolefag over tre år

- **Fag:** Informasjonsteknologi 2
- **Eksamen:** Høst 2025 (LK20)
- **Del:** Eksamenen var ikke delt — hele eksamen med hjelpemidler
- **Oppgavenummer:** 7
- **Nivå:** Middels (2 av 3)
- **Temaer:** Datasett, Datastrukturer, Filbehandling, Datavask
- **Kort beskrivelse:** Lese inn et datasett (CSV/JSON, Windows-1252) med elevtall i skolefag over tre skoleår, summere per fagområde, vise fagene i et valgt fagområde og finne fagene med størst absolutt og prosentvis oppgang og nedgang.
- **Nettadresse:** https://matematikkoppgaver.no/it/oppgave/elevtall-i-skolefag-over-tre-ar/

### Oppgavetekst

Du skal lage et program som leser inn informasjon fra et datasett, bearbeider og presenterer det. Datasettet inneholder informasjon om antall elever i noen skolefag i Norge de tre siste årene.

Datasettet er kodet i tegnsettet Windows-1252 og tilgjengelig i CSV- og JSON-format. Last ned datasettet her: [datasett med elevtall (csv og json)](/assets/_resources/it2-h25-2-7-elever-fag.zip).

I innleveringsmappen må du **huske å legge inn datasettfilen du bruker sammen med programmet**, slik at det fungerer når sensor skal kjøre det.

a) Lag et program som leser inn data fra datasettet, lagrer det i egnet datastruktur og regner ut totalt antall elever innenfor hvert fagområde. Programmet skal presentere resultatet i et tabellignende oppsett som viser fagområdene og antall elever i fagområdet hvert av de tre årene. *Merk: Fagområdene skal hentes fra datasettet for full uttelling. Sammenligning med hardkodede verdier gir bare noe eller ingen uttelling.*
b) Utvid programmet slik at brukeren kan angi eller velge et fagområde. Programmet skal deretter vise alle fagene for det valgte fagområdet med elevtall for hvert av de tre årene.
c) Utvid programmet til å vise fire fag for et valgt fagområde fra skoleåret 2022/23 til skoleåret 2024/25. Dette er de fire fagene som skal vises:
1\) faget med størst absolutt oppgang
2\) faget med størst prosentvis oppgang
3\) faget med størst absolutt nedgang
4\) faget med størst prosentvis nedgang

---

## H2025 oppgave 8 — Simulering av bunndyr som spiser plankton

- **Fag:** Informasjonsteknologi 2
- **Eksamen:** Høst 2025 (LK20)
- **Del:** Eksamenen var ikke delt — hele eksamen med hjelpemidler
- **Oppgavenummer:** 8
- **Nivå:** Krevende (3 av 3)
- **Temaer:** Objektorientert programmering, Klasser og objekter, Simulering, Brukergrensesnitt
- **Kort beskrivelse:** Lage en objektorientert simulering der grønt og rødt plankton faller mot et bunndyr som vokser eller krymper i bredde, med styrbar mengde grønt plankton og avslutning når dyret er forspist eller forgiftet.
- **Nettadresse:** https://matematikkoppgaver.no/it/oppgave/simulering-av-bunndyr-som-spiser-plankton/

### Oppgavetekst

Du skal lage en simulering av et bunndyr som sitter stille på havbunnen. Bunndyret lever av ulike typer plankton som faller mot bunnen. Enkelte planktontyper får bunndyret til å vokse, andre typer virker som gift og gjør at bunndyret krymper. Simuleringen avsluttes når bunndyret dør, enten fordi det har forspist seg, eller fordi det er forgiftet.

**Oppstart**

Simuleringen starter med at bunndyret sitter stille på havets bunn og samler plankton. Bunndyret vises nede i skjermbildet som en rektangulær, gråfarget boks.

Simuleringen skal bruke to typer plankton: grønne og røde. Begge typer plankton faller mot bunnen fra tilfeldige posisjoner øverst i skjermbildet.

![Oppstart av simuleringen: svart bakgrunn med noen få grønne (G) og røde (R) planktonbiter og en grå boks nederst](https://matematikkoppgaver.no/assets/_resources/it2-h25-2-8-oppstart.avif)

**Simuleringens gang**

Når grønnfarget plankton treffer bunndyret, vil bunndyret vokse i bredde. Når rødfarget plankton treffer bunndyret, vil bunndyret krympe i bredde. Plankton som ikke treffer bunndyret når det kommer ned til bunnen, skal forsvinne.

Under simuleringen skal mengden av grønnfarget plankton som faller ned mot bunnen, kunne økes eller reduseres. Mengden av grønt plankton som faller ned, kan styres med piltaster eller på en annen måte som du velger fritt. Obs: Husk å fortelle sensor hvordan det styres.

Simuleringen skal ha en maksverdi for mengde grønnfarget plankton som faller per tidsenhet.

På illustrasjonen nedenfor er mengden grønnfarget plankton økt.

![Underveis i simuleringen: flere grønne planktonbiter, og den grå boksen er blitt bredere](https://matematikkoppgaver.no/assets/_resources/it2-h25-2-8-underveis.avif)

**Avslutning**

Simuleringen avsluttes når bunndyret er forspist, eller når det er forgiftet. Bunndyret er forspist når det er like bredt som skjermbildet. Bunndyret dør av forgiftning når det når en minstestørrelse som du kan bestemme selv.

Bruk objektorientert programmering med passende valg av klasser, og lag simuleringen.

---

## V2024 oppgave 1 — Hva en klasse er i objektorientert programmering

- **Fag:** Informasjonsteknologi 2
- **Eksamen:** Vår 2024 (LK20)
- **Del:** Eksamenen var ikke delt — hele eksamen med hjelpemidler
- **Oppgavenummer:** 1
- **Poeng:** 1
- **Nivå:** Lett (1 av 3)
- **Temaer:** Objektorientert programmering, Klasser og objekter
- **Kort beskrivelse:** Velge alternativet som best beskriver en klasse i objektorientert programmering, en mal eller prototype for objekter.
- **Nettadresse:** https://matematikkoppgaver.no/it/oppgave/hva-en-klasse-er-i-objektorientert-programmering/

### Oppgavetekst

Hvilket av følgende alternativer beskriver best en klasse i objektorientert programmering (OOP)?

> **Flervalgsoppgave — velg riktig alternativ**
> - [ ] En klasse er en instans av et objekt.
> - [ ] En klasse er en funksjon som utfører en spesifikk oppgave.
> - [x] En klasse er en mal eller en prototype for objekter.
> - [ ] En klasse er en metode for å lagre data.

---

## V2024 oppgave 2 — Spesialisering når klasse B arver fra klasse A

- **Fag:** Informasjonsteknologi 2
- **Eksamen:** Vår 2024 (LK20)
- **Del:** Eksamenen var ikke delt — hele eksamen med hjelpemidler
- **Oppgavenummer:** 2
- **Poeng:** 1
- **Nivå:** Lett (1 av 3)
- **Temaer:** Objektorientert programmering, Arv, UML
- **Kort beskrivelse:** Velge riktig betegnelse i objektorientert modellering for en klasse B som arver fra klasse A, nemlig at B er en spesialisering av A.
- **Nettadresse:** https://matematikkoppgaver.no/it/oppgave/spesialisering-nar-klasse-b-arver-fra-klasse-a/

### Oppgavetekst

Hvis en klasse B arver fra klasse A, hvilken betegnelse er mest korrekt for klasse B i forhold til klasse A i objektorientert modellering?

> **Flervalgsoppgave — velg riktig alternativ**
> - [x] B er en spesialisering av A.
> - [ ] B er en assosiert klasse til A.
> - [ ] B er en generalisering av A.
> - [ ] B er en avhengig klasse av A.

---

## V2024 oppgave 3 — Løkke med nedtelling og løpende sum i pseudokode

- **Fag:** Informasjonsteknologi 2
- **Eksamen:** Vår 2024 (LK20)
- **Del:** Eksamenen var ikke delt — hele eksamen med hjelpemidler
- **Oppgavenummer:** 3
- **Poeng:** 1
- **Nivå:** Lett (1 av 3)
- **Temaer:** Pseudokode, Løkker
- **Kort beskrivelse:** Spore en for-løkke i pseudokode der én variabel telles ned og legges til en annen, og finne hva som vises.
- **Nettadresse:** https://matematikkoppgaver.no/it/oppgave/lokke-med-nedtelling-og-lopende-sum-i-pseudokode/

### Oppgavetekst

Gitt følgende pseudokode:

```pseudo
SET b TO 4
SET c TO 5
FOR hvert heltall a fra og med 2 til og med 4
    DISPLAY c
    DECREMENT b
    SET c TO c + b
ENDFOR
```

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

> **Flervalgsoppgave — velg riktig alternativ**
> - [ ] 1 3 6
> - [ ] 8 9 10
> - [ ] 3 6 9
> - [x] 5 8 10

---

## V2024 oppgave 4 — Sortere pseudokode for fortegn og partall

- **Fag:** Informasjonsteknologi 2
- **Eksamen:** Vår 2024 (LK20)
- **Del:** Eksamenen var ikke delt — hele eksamen med hjelpemidler
- **Oppgavenummer:** 4
- **Poeng:** 2
- **Nivå:** Middels (2 av 3)
- **Temaer:** Pseudokode, Løkker, Valgsetninger
- **Kort beskrivelse:** Sortere 18 pseudokodelinjer til en for-løkke med nøstede IF-tester som skriver om tallene fra −2 til 2 er negative, null eller positive og partall eller oddetall.
- **Nettadresse:** https://matematikkoppgaver.no/it/oppgave/sortere-pseudokode-for-fortegn-og-partall/

### Oppgavetekst

Nedenfor ser du flere linjer med pseudokode som skal skrive ut følgende resultat når linjene er sortert i riktig rekkefølge:

```
-2 er negativt og partall
-1 er negativt og oddetall
0 er null
1 er positivt og oddetall
2 er positivt og partall
```

*Merk: Operatoren `%` betyr rest ved heltallsdivisjon og kan skrives som `mod` eller `Mod` i noen programmeringsspråk.*

Sorter linjene med pseudokode i riktig rekkefølge slik at den skriver ut resultatet som er beskrevet ovenfor.

> - `DISPLAY num + " er positivt og partall"`
> - `DISPLAY num + " er positivt og oddetall"`
> - `DISPLAY num + " er negativt og oddetall"`
> - `DISPLAY num + " er negativt og partall"`
> - `IF num % 2 EQUAL TO 0`
> - `FOR hver num LESSER THAN OR EQUAL TO 2`
> - `ELSE`
> - `SET num to -2`
> - `ELSE`
> - `ELSE IF num EQUAL TO 0`
> - `IF num % 2 EQUAL TO 0`
> - `ENDIF`
> - `IF num LESSER THAN 0`
> - `ENDIF`
> - `ENDFOR`
> - `DISPLAY num + " er null"`
> - `ENDIF`
> - `ELSE`
>

---

## V2024 oppgave 5 — Fibonaccitall i pseudokode

- **Fag:** Informasjonsteknologi 2
- **Eksamen:** Vår 2024 (LK20)
- **Del:** Eksamenen var ikke delt — hele eksamen med hjelpemidler
- **Oppgavenummer:** 5
- **Poeng:** 4.5
- **Nivå:** Middels (2 av 3)
- **Temaer:** Pseudokode, Algoritmer, Løkker, Flytskjema
- **Kort beskrivelse:** Finne resultatet av og forklare en pseudokodealgoritme som bygger opp Fibonacci-tallene i en liste, og utvide den til å vise de ti første partallene i følgen med flytskjema.
- **Nettadresse:** https://matematikkoppgaver.no/it/oppgave/fibonaccitall-i-pseudokode/

### Oppgavetekst

Ta utgangspunkt i følgende pseudokode:

```pseudo
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]
```

a) Hva blir resultatet av programmet som er beskrevet i pseudokoden ovenfor?
b) Forklar algoritmen som er beskrevet i pseudokoden ovenfor.
c) 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.

---

## V2024 oppgave 6 — Kalkulatorklasse med fire regneoperasjoner

- **Fag:** Informasjonsteknologi 2
- **Eksamen:** Vår 2024 (LK20)
- **Del:** Eksamenen var ikke delt — hele eksamen med hjelpemidler
- **Oppgavenummer:** 6
- **Poeng:** 5.5
- **Nivå:** Middels (2 av 3)
- **Temaer:** Objektorientert programmering, Klasser og objekter, UML, Funksjoner, Feilhåndtering, Testing
- **Kort beskrivelse:** Lage klassediagram for en Kalkulator-klasse ut fra fire pseudokodefunksjoner, implementere klassen, teste den og håndtere feil som deling med null og feil datatype.
- **Nettadresse:** https://matematikkoppgaver.no/it/oppgave/kalkulatorklasse-med-fire-regneoperasjoner/

### Oppgavetekst

Vi ønsker å lage en liten kalkulator for de fire regneoperasjonene – minus, pluss, gange og dele. Nedenfor finner du pseudokode som beskriver en del av en løsning ved hjelp av fire funksjoner:

```pseudo
FUNCTION pluss(a, b)
    RETURN a + b
ENDFUNCTION

FUNCTION minus(a, b)
    RETURN a - b
ENDFUNCTION

FUNCTION gange(a, b)
    RETURN a * b
ENDFUNCTION

FUNCTION dele(a, b)
    RETURN a / b
ENDFUNCTION
```

a) Lag et klassediagram for en tilsvarende klasse kalt Kalkulator til bruk i en objektorientert løsning.
b) Implementer klassen i ditt programmeringsspråk.
c) Implementer et egnet testprogram for å teste løsningen, og identifiser mulige feil og unntak.
d) Implementer nødvendig håndtering av mulige feil og unntak.

---

## V2024 oppgave 7 — Deepfakes og kildekritikk

- **Fag:** Informasjonsteknologi 2
- **Eksamen:** Vår 2024 (LK20)
- **Del:** Eksamenen var ikke delt — hele eksamen med hjelpemidler
- **Oppgavenummer:** 7
- **Poeng:** 2
- **Nivå:** Lett (1 av 3)
- **Temaer:** Deepfakes, Kunstig intelligens, Kildekritikk
- **Kort beskrivelse:** Tre flervalgsspørsmål om deepfakes – hva det er, en mulig konsekvens og hvordan en godt laget deepfake-video kan avsløres.
- **Nettadresse:** https://matematikkoppgaver.no/it/oppgave/deepfakes-og-kildekritikk/

### Oppgavetekst

Oppgaven bygger på artiklene om deepfakes fra forberedelsesdelen. Du kan også bruke andre kunnskaper og kilder du har.

a) Hva er deepfakes?

> **Flervalgsoppgave — velg riktig alternativ**
> - [ ] en ny form for sosiale medier
> - [x] manipulerte medier
> - [ ] en type virtuell virkelighet
> - [ ] en populær app for ansiktsskifteeffekter

b) Hvilken av følgende er en potensiell konsekvens av deepfakes?

> **Flervalgsoppgave — velg riktig alternativ**
> - [ ] økt digital kompetanse blant enkeltpersoner
> - [x] økt risiko for politisk manipulering
> - [ ] reduksjon av desinformasjon på Internett
> - [ ] styrket tillit til video- og lydbevis

c) Hvordan kan du avsløre en godt laget deepfake-video? (Velg det alternativet som er mest riktig.)

> **Flervalgsoppgave — velg riktig alternativ**
> - [ ] ved å se på videoen og avgjøre om den ser ekte ut
> - [ ] ved å sjekke om videoen er laget av en profesjonell filmskaper
> - [x] ved å bruke teknikker fra kildekritikk
> - [ ] ved å se om den har fått mange likes

---

## V2024 oppgave 8 — Deepfake-svindel og deepfakes i jobbintervjuer

- **Fag:** Informasjonsteknologi 2
- **Eksamen:** Vår 2024 (LK20)
- **Del:** Eksamenen var ikke delt — hele eksamen med hjelpemidler
- **Oppgavenummer:** 8
- **Poeng:** 4
- **Nivå:** Middels (2 av 3)
- **Temaer:** Deepfakes, Kunstig intelligens, Etikk, Informasjonssikkerhet
- **Kort beskrivelse:** Foreslå hvordan en bedrift kan avsløre og forebygge deepfake-svindel i videomøter, og drøfte konsekvenser av at en bedrift bruker deepfakes til å vurdere jobbsøkere.
- **Nettadresse:** https://matematikkoppgaver.no/it/oppgave/deepfake-svindel-og-deepfakes-i-jobbintervjuer/

### Oppgavetekst

Oppgaven bygger på artiklene om deepfakes fra forberedelsesdelen. Du kan også bruke andre kunnskaper og kilder du har.

Som student på vei ut i arbeidslivet har du blitt invitert til et jobbintervju hos en anerkjent teknologibedrift. Bedriften ønsker blant annet under intervjuet å vurdere din kompetanse til å avsløre bruk av deepfake ved et konkret svindelforsøk bedriften nettopp har vært utsatt for. En ansatt har blitt lurt til å bli med på et falskt møte med kollegaer og en kunde der bedriften har blitt svindlet for et stort pengebeløp.

a) Hvordan kan du bidra til å avsløre tilsvarende svindelforsøk i bedriften? Hva kan bedriften gjøre for å forebygge framtidige svindelforsøk gjennom bruk av deepfake?

Under intervjuet blir du også overrasket når du finner ut at bedriften bruker deepfakes for å simulere ulike arbeidssituasjoner og vurdere kandidatenes reaksjoner. Det kan være utfordrende samtaler med framtidige kollegaer og ledere, videoopptak av samhandling med kunder eller at selve kandidaten er brukt i et deepfake-scenario. Hensikten er å identifisere kandidater som kan tilpasse seg og prestere under press.

b) Drøft konsekvenser ved bruk av deepfakes i vurdering av jobbsøkere.

---

## V2024 oppgave 9 — Tidsbruk på ulike aktiviteter etter kjønn

- **Fag:** Informasjonsteknologi 2
- **Eksamen:** Vår 2024 (LK20)
- **Del:** Eksamenen var ikke delt — hele eksamen med hjelpemidler
- **Oppgavenummer:** 9
- **Poeng:** 15
- **Nivå:** Middels (2 av 3)
- **Temaer:** Datasett, Datavask, Filbehandling, Visualisering, Brukergrensesnitt
- **Kort beskrivelse:** Lese inn et datasett (CSV/JSON) om tidsbruk på aktiviteter en gjennomsnittsdag etter kjønn, vise det i en tabell med kjønnsfilter og lage stolpe- og sektordiagram som oppdateres etter valgt kjønn.
- **Nettadresse:** https://matematikkoppgaver.no/it/oppgave/tidsbruk-pa-ulike-aktiviteter-etter-kjonn/

### Oppgavetekst

**Analyse av tidsbruk**

I denne oppgaven skal du bruke datasettet fra forberedelsen. Datasettet inneholder tid brukt til ulike aktiviteter en gjennomsnittsdag året 2000, kategorisert etter aktiviteter og kjønn, i CSV- og JSON-format. Last ned datasettet her: [datasett (csv og json)](/assets/_resources/it2-v24-2-9-tidsbruk.zip).

De ulike aktivitetene er gruppert i kategorier hvor tidsbruken er summert for kategoriene. Aktivitetene under hver kategori er kodet med innrykk. Tidsbruk er angitt i hele timer og minutter skilt med punktum. *Merk at dette ikke er timer med desimaltall.* Skilletegnet i CSV-filen er semikolon.

a) **Presentasjon av data.** Lag et program som presenterer dataene fra datasettet i en tabellignende visning med følgende kolonner: «Aktivitet», «Kjønn» og «Tidsbruk».
b) **Filtrering etter kjønn.** Utvid programmet slik at det skal være mulig å vise et utvalg av dataene i tabellen fra punkt a etter kjønn. Man skal kunne velge mellom «Alle», «Menn» og «Kvinner», og når kjønnet er valgt, skal visningen oppdateres med aktuelle data for det valgte kjønnet.
c) **Visualisering av data.** Utvid programmet og lag to diagrammer:
1\) et stolpediagram som viser fordelingen av tidsbruk på aktivitetene for det valgte kjønnet – hver aktivitet skal være representert med en stolpe, og høyden på stolpen skal vise tidsbruken for aktivitetene for det valgte kjønnet i punkt b
2\) et sektordiagram som viser andelen tid av døgnet brukt på hver kategori av aktiviteter for det valgte kjønnet i punkt b

---

## V2024 oppgave 10 — Livets spill

- **Fag:** Informasjonsteknologi 2
- **Eksamen:** Vår 2024 (LK20)
- **Del:** Eksamenen var ikke delt — hele eksamen med hjelpemidler
- **Oppgavenummer:** 10
- **Poeng:** 24
- **Nivå:** Krevende (3 av 3)
- **Temaer:** Objektorientert programmering, Klasser og objekter, Simulering, Brukergrensesnitt
- **Kort beskrivelse:** Lage Conways «Game of Life» objektorientert med et rutenett av celler, tilfeldig startoppsett, tømming av brettet, klikk for å bytte status og samlet oppdatering til neste generasjon etter de fire reglene.
- **Nettadresse:** https://matematikkoppgaver.no/it/oppgave/livets-spill/

### Oppgavetekst

I denne oppgaven skal du lage et program som simulerer livssyklusen til celler, altså hvordan celler oppstår, lever og dør, og hvordan én generasjon med celler gir opphav til en ny.

Programmet skal bygges opp som et todimensjonalt rutenett med celler som alle kjenner til sine naboceller. Cellene kan veksle mellom tilstandene levende og død. Celler reproduseres eller dør basert på de fire følgende regler for liv og død:

- Enhver levende celle med færre enn to levende naboer dør, som ved underpopulasjon.
- Enhver levende celle med to eller tre naboer lever videre til neste generasjon.
- Enhver levende celle med flere enn tre levende naboer dør, som ved overpopulasjon.
- Enhver død celle med akkurat tre levende naboer blir vekket til live, som ved reproduksjon.

Nedenfor oppgavepunktene ser du eksempler på hvordan en generasjon celler blir til neste generasjon celler når reglene ovenfor gjelder.

**Programmet skal utvikles som et objektorientert program med nødvendige klasser og metoder. Du kan svare på oppgaven stegvis eller som ett samlet program, akkurat som du selv ønsker. Ta utgangspunkt i disse stegene:**

a) Lag et spillebrett med et startoppsett av levende og døde celler, såkalt generasjon 0, der hver celle på spillebrettet har 1/3 sjanse til å starte som levende.
b) Implementer muligheter for å
1\) endre alle cellene til døde, slik at du får et «tomt» brett
2\) bytte om statusen til en enkeltcelle fra død til levende og omvendt, ved å klikke på den
c) Utvid programmet med funksjonalitet som automatisk oppdaterer tilstanden til hver celle i spillebrettet fra gjeldende generasjon til den neste, basert på de fire reglene som er beskrevet ovenfor. Alle cellene skal oppdateres samlet.

**Eksempel på startoppsett**

Et rutenett med et tilfeldig antall levende og døde celler kan for eksempel se slik ut:

![Rutenett med tilfeldig plasserte levende (svarte) og døde (hvite) celler](https://matematikkoppgaver.no/assets/_resources/it2-v24-2-10-rutenett.avif)

Levende celler er markert som svart rute og døde celler er markert som hvit rute.

**Eksempel 1**

Om man starter med følgende levende celler som generasjon 0,

![Generasjon 0 med tre levende celler på rad vannrett](https://matematikkoppgaver.no/assets/_resources/it2-v24-2-10-eksempel-1-generasjon-0.avif)

vil den etterfølgende serien med generasjoner bli slik:

![Generasjon 1 til 5, der de tre cellene veksler mellom å stå loddrett og vannrett](https://matematikkoppgaver.no/assets/_resources/it2-v24-2-10-eksempel-1-generasjoner.avif)

Nedenfor ser du en repeterende GIF som viser hvordan generasjonene gjentar seg:

![Animasjon av hvordan de to generasjonene veksler](https://matematikkoppgaver.no/assets/_resources/it2-v24-2-10-eksempel-1.gif)

**Eksempel 2**

Levende celler er markert som svart rute, døde celler er markert som hvit rute.

Om man starter med følgende levende celler som generasjon 0,

![Generasjon 0 med fire levende celler formet som en T](https://matematikkoppgaver.no/assets/_resources/it2-v24-2-10-eksempel-2-generasjon-0.gif)

vil den etterfølgende serien med generasjoner bli slik:

![Bilder av 10 generasjoner av celler](https://matematikkoppgaver.no/assets/_resources/it2-v24-2-10-eksempel-2-generasjoner.avif)

De siste to generasjonene gjentar seg akkurat som i eksempel 1. Nedenfor ser du en repeterende GIF som viser de 13 første generasjonene (0 til 12) for dette tilfellet:

![Animasjon av de 13 første generasjonene](https://matematikkoppgaver.no/assets/_resources/it2-v24-2-10-eksempel-2.gif)

---

## H2024 oppgave 1 — OOP-prinsipp for gjenbruk av kode

- **Fag:** Informasjonsteknologi 2
- **Eksamen:** Høst 2024 (LK20)
- **Del:** Eksamenen var ikke delt — hele eksamen med hjelpemidler
- **Oppgavenummer:** 1
- **Nivå:** Lett (1 av 3)
- **Temaer:** Objektorientert programmering, Arv
- **Kort beskrivelse:** Velge hvilket prinsipp i objektorientert programmering som handler om gjenbruk av kode.
- **Nettadresse:** https://matematikkoppgaver.no/it/oppgave/oop-prinsipp-for-gjenbruk-av-kode/

### Oppgavetekst

Hvilket av de følgende prinsippene innen objektorientert programmering handler om gjenbruk av kode?

> **Flervalgsoppgave — velg riktig alternativ**
> - [ ] abstraksjon
> - [ ] polymorfisme
> - [ ] innkapsling
> - [x] arv

---

## H2024 oppgave 2 — Relasjon når et felt inneholder objekter av en annen klasse

- **Fag:** Informasjonsteknologi 2
- **Eksamen:** Høst 2024 (LK20)
- **Del:** Eksamenen var ikke delt — hele eksamen med hjelpemidler
- **Oppgavenummer:** 2
- **Nivå:** Middels (2 av 3)
- **Temaer:** Objektorientert programmering, UML, Klasser og objekter
- **Kort beskrivelse:** Velge riktig type relasjon i objektorientert modellering når et felt i en klasse inneholder objekter av en annen klasse.
- **Nettadresse:** https://matematikkoppgaver.no/it/oppgave/relasjon-nar-et-felt-inneholder-objekter-av-en-annen-klasse/

### Oppgavetekst

En egenskap (et felt) i objekter av en klasse inneholder objekter av en annen klasse.

Hva er riktig type relasjon mellom de to klassene i objektorientert modellering (OOM)?

> **Flervalgsoppgave — velg riktig alternativ**
> - [ ] assosiasjon
> - [ ] generalisering
> - [ ] komposisjon
> - [x] aggregering

---

## H2024 oppgave 3 — Funksjon med vekslende sum i pseudokode

- **Fag:** Informasjonsteknologi 2
- **Eksamen:** Høst 2024 (LK20)
- **Del:** Eksamenen var ikke delt — hele eksamen med hjelpemidler
- **Oppgavenummer:** 3
- **Nivå:** Lett (1 av 3)
- **Temaer:** Pseudokode, Løkker, Valgsetninger, Funksjoner
- **Kort beskrivelse:** Spore en pseudokodefunksjon som legger til partall og trekker fra oddetall fra 1 til n, og finne hva som vises for n = 7.
- **Nettadresse:** https://matematikkoppgaver.no/it/oppgave/funksjon-med-vekslende-sum-i-pseudokode/

### Oppgavetekst

Ta utgangspunkt i følgende pseudokode:

```pseudo
FUNCTION beregn(n):
    SET s TO 0
    FOR hvert tall i fra og med 1 til og med n
        IF i % 2 EQUAL TO 0
            SET s TO s + i
        ELSE
            SET s TO s - i
        ENDIF
    ENDFOR
    RETURN s
ENDFUNCTION

DISPLAY beregn(7)
```

Hva vil vises som resultat av programmet beskrevet av pseudokoden ovenfor?

> **Flervalgsoppgave — velg riktig alternativ**
> - [ ] $1$
> - [ ] $-1$
> - [x] $-4$
> - [ ] $3$

---

## H2024 oppgave 4 — Sortere pseudokode for temperaturmeldinger

- **Fag:** Informasjonsteknologi 2
- **Eksamen:** Høst 2024 (LK20)
- **Del:** Eksamenen var ikke delt — hele eksamen med hjelpemidler
- **Oppgavenummer:** 4
- **Nivå:** Lett (1 av 3)
- **Temaer:** Pseudokode, Valgsetninger
- **Kort beskrivelse:** Sortere ni pseudokodelinjer til en IF–ELSE IF–ELSE-struktur som viser riktig melding for ulike temperaturer.
- **Nettadresse:** https://matematikkoppgaver.no/it/oppgave/sortere-pseudokode-for-temperaturmeldinger/

### Oppgavetekst

Nedenfor ser du flere linjer med pseudokode i uordnet rekkefølge. Når linjene er sortert i riktig rekkefølge, skal de beskrive et program som vurderer temperaturverdier og viser en passende melding.

Dette er meldingene som skal vises ved de ulike temperaturverdiene:

- Over 25 grader: "Det er varmt."
- Mellom 10 og 25 grader: "Det er mildt."
- Mellom 0 og 10 grader: "Det er kjølig."
- Under 0 grader: "Det er kaldt."

Sorter linjene med pseudokode i riktig rekkefølge slik at resultatet viser riktige meldinger.

> - `DISPLAY "Det er varmt."`
> - `DISPLAY "Det er mildt."`
> - `DISPLAY "Det er kjølig."`
> - `DISPLAY "Det er kaldt."`
> - `ELSE IF temperatur GREATER THAN OR EQUAL TO 0`
> - `ELSE`
> - `ELSE IF temperatur GREATER THAN OR EQUAL TO 10`
> - `ENDIF`
> - `IF temperatur GREATER THAN 25`
>

---

## H2024 oppgave 5 — Palindromtall i pseudokode

- **Fag:** Informasjonsteknologi 2
- **Eksamen:** Høst 2024 (LK20)
- **Del:** Eksamenen var ikke delt — hele eksamen med hjelpemidler
- **Oppgavenummer:** 5
- **Nivå:** Middels (2 av 3)
- **Temaer:** Pseudokode, Algoritmer, Løkker
- **Kort beskrivelse:** Forklare en pseudokodealgoritme som snur sifrene i et heltall og sjekker om tallet er et palindrom, og utvide den til et program som teller tresifrede palindromtall.
- **Nettadresse:** https://matematikkoppgaver.no/it/oppgave/palindromtall-i-pseudokode/

### Oppgavetekst

I pseudokoden nedenfor er `h` et positivt heltall. *Merk: Operatoren `//` betyr heltallsdivisjon.*

```pseudo
READ h
SET t TO h
SET s TO 0
SET r TO 0
WHILE h NOT EQUAL TO 0
    SET r TO h % 10
    SET s TO s * 10 + r
    SET h TO h // 10
ENDWHILE
IF t EQUAL TO s
    DISPLAY True
ELSE
    DISPLAY False
ENDIF
```

a) Forklar med egne ord algoritmen som er beskrevet av pseudokoden ovenfor.
b) Ta utgangspunkt i algoritmen fra punkt a). Utvid og implementer algoritmen til et program som teller opp og viser hvor mange tresifrede tall som oppfyller IF-betingelsen fra algoritmen.

---

## H2024 oppgave 6 — Batteriklasse med lading og energibruk

- **Fag:** Informasjonsteknologi 2
- **Eksamen:** Høst 2024 (LK20)
- **Del:** Eksamenen var ikke delt — hele eksamen med hjelpemidler
- **Oppgavenummer:** 6
- **Nivå:** Middels (2 av 3)
- **Temaer:** Objektorientert programmering, Klasser og objekter, UML, Feilhåndtering, Testing
- **Kort beskrivelse:** Implementere en Batteri-klasse fra et klassediagram, lage et testprogram som avdekker feil og unntak, og håndtere dem.
- **Nettadresse:** https://matematikkoppgaver.no/it/oppgave/batteriklasse-med-lading-og-energibruk/

### Oppgavetekst

Det skal lages en applikasjon for et energisystem med en klasse som beskriver et batteri. Denne klassen skal gjøre det mulig å håndtere lading av et batteri og bruk av energi fra batteriet, samt å vise hvor mye energi som er igjen i batteriet.

Nedenfor finner du et forslag til klassediagram for denne klassen.

*Merk: Datatypen `float` representerer desimaltall, `-` angir tilgangsnivå private og `+` angir tilgangsnivå public.*

![Klassediagram for klassen Batteri med feltene batteriID, energinivå og energikapasitet og metodene ladOpp, brukEnergi og visEnerginivå](https://matematikkoppgaver.no/assets/_resources/it2-h24-2-6-klassediagram.avif)

a) Ta utgangspunkt i klassediagrammet ovenfor og implementer klassen i programmeringsspråket ditt.
b) Implementer et egnet testprogram for å teste klassen, og identifiser to mulige feil og ett unntak.
c) Implementer nødvendig håndtering av feilene og unntaket du identifiserte i punkt b).

---

## H2024 oppgave 7 — Velferdsteknologi og informert samtykke

- **Fag:** Informasjonsteknologi 2
- **Eksamen:** Høst 2024 (LK20)
- **Del:** Eksamenen var ikke delt — hele eksamen med hjelpemidler
- **Oppgavenummer:** 7
- **Nivå:** Lett (1 av 3)
- **Temaer:** Helse- og velferdsteknologi, Etikk, Personvern
- **Kort beskrivelse:** Tre flervalgsspørsmål om velferdsteknologi – hovedmålet med innføringen, hvilket etisk prinsipp GPS-sporing og kameraovervåking kan true, og hva et informert samtykke innebærer.
- **Nettadresse:** https://matematikkoppgaver.no/it/oppgave/velferdsteknologi-og-informert-samtykke/

### Oppgavetekst

Oppgaven bygger på artikkelen [Velferdsteknologi har etiske fordeler og ulemper](https://doi.org/10.4220/Sykepleiens.2023.93662) av Anne Kari Tolo Heggestad (Sykepleien, 2023) fra forberedelsesdelen. Du kan også bruke andre kunnskaper og kilder du har.

a) Hva er hovedmålet med innføringen av velferdsteknologi i helse- og omsorgstjenestene?

> **Flervalgsoppgave — velg riktig alternativ**
> - [ ] redusere kostnadene i helsevesenet
> - [ ] øke sikkerheten for eldre på sykehjem
> - [x] effektivisere tjenestene og bidra til at eldre kan bo hjemme lenger
> - [ ] fjerne behovet for menneskelig interaksjon i omsorgstjenester

b) Hvilken etisk verdi eller hvilket etisk prinsipp kan potensielt trues ved bruk av GPS-sporing og kameraovervåking i helsetjenesten?

> **Flervalgsoppgave — velg riktig alternativ**
> - [ ] trygghet
> - [ ] mestring
> - [ ] medbestemmelse
> - [x] autonomi

c) Hva innebærer et informert samtykke i forbindelse med bruk av velferdsteknologi? Velg alle alternativene som til sammen utgjør et informert samtykke.

> **Flervalgsoppgave — velg riktig alternativ**
> - [ ] at personen informeres om at hen samtykker når hen ønsker å ta i bruk teknologien
> - [x] at personen har mottatt tilstrekkelig informasjon om bruk av teknologien
> - [ ] at helsepersonell tar avgjørelsen på vegne av personen som skal bruke teknologien
> - [ ] at pårørende er enig i at teknologien skal brukes
> - [x] at personen samtykker frivillig til bruken av teknologien

---

## H2024 oppgave 8 — Etiske dilemmaer ved velferdsteknologi for Kari

- **Fag:** Informasjonsteknologi 2
- **Eksamen:** Høst 2024 (LK20)
- **Del:** Eksamenen var ikke delt — hele eksamen med hjelpemidler
- **Oppgavenummer:** 8
- **Nivå:** Middels (2 av 3)
- **Temaer:** Helse- og velferdsteknologi, Etikk, Personvern, Overvåking
- **Kort beskrivelse:** Drøfte to etiske dilemmaer ved komfyrvakt, GPS-sporing og kameraovervåking for en hjemmeboende kvinne med demens, der verdier som trygghet, autonomi og personvern kommer i konflikt.
- **Nettadresse:** https://matematikkoppgaver.no/it/oppgave/etiske-dilemmaer-ved-velferdsteknologi-for-kari/

### Oppgavetekst

Oppgaven bygger på artikkelen [Velferdsteknologi har etiske fordeler og ulemper](https://doi.org/10.4220/Sykepleiens.2023.93662) fra forberedelsesdelen. Du kan også bruke andre kunnskaper og kilder du har.

Kari er en 84 år gammel kvinne med moderat demens som bor alene i sitt eget hjem. Hun har hatt noen episoder der hun har glemt å slå av komfyren, noe som har ført til bekymring i familien og hjemmesykepleien. Kari har også en tendens til å gå seg bort når hun går turer, noe som har skjedd flere ganger det siste året. Både Kari og familien ønsker at hun skal kunne bli boende hjemme så lenge som mulig, men de er bekymret for hennes sikkerhet og helse.

Hjemmesykepleien vurderer å innføre følgende velferdsteknologiske løsninger som et tiltak for Kari:

- komfyrvakt som automatisk slår av komfyren hvis den står på for lenge uten tilsyn
- GPS-sporing for å kunne lokalisere Kari når hun går seg bort
- kameraovervåking som kan brukes til å følge med på Kari i hjemmet, spesielt om natten, for å sikre at hun ikke skader seg

Drøft to av de etiske dilemmaene som kan oppstå ved bruk av disse velferdsteknologiske løsningene i Karis situasjon. I drøftingen bør du identifisere hvilke etiske verdier og prinsipper som kommer i konflikt med hverandre i denne casen, og reflektere over positive og negative sider ved bruk av velferdsteknologi.

---

## H2024 oppgave 9 — Befolkningsutvikling i Norge

- **Fag:** Informasjonsteknologi 2
- **Eksamen:** Høst 2024 (LK20)
- **Del:** Eksamenen var ikke delt — hele eksamen med hjelpemidler
- **Oppgavenummer:** 9
- **Nivå:** Middels (2 av 3)
- **Temaer:** Datasett, Datavask, Filbehandling, Visualisering, Brukergrensesnitt
- **Kort beskrivelse:** Lese inn et datasett (CSV/JSON) om befolkningsutviklingen i Norge 1945–2024, vise fødselstall, inn- og utflyttinger og netto folkevekst i en tabell, og lage et diagram med valgfri kolonne og periode.
- **Nettadresse:** https://matematikkoppgaver.no/it/oppgave/befolkningsutvikling-i-norge/

### Oppgavetekst

Du skal lage et program som leser inn og presenterer informasjon fra et datasett. Du skal bruke datasettet fra forberedelsen, som inneholder en oversikt over befolkningsutviklingen i Norge i CSV- og JSON-format. Du kan velge hvilket av formatene du vil bruke. Last ned datasettet her: [datasett (csv og json)](/assets/_resources/it2-h24-2-9-befolkningsutvikling.zip). Separatoren i CSV-filen er komma.

*Tips: Du står fritt til å velge hvordan programmet skal presentere informasjon så lenge presentasjonen er godt egnet til å vise det oppgaven spør etter. Du kan også velge om du vil besvare a) og b) i en samlet oversikt eller lage en oversikt for hvert oppgavepunkt.*

Programmet du lager i denne oppgaven, skal inneholde en flerlinjekommentar øverst som beskriver de vurderingene og valgene du har gjort for å forberede datasettet til bruk i programmering, hvis du har gjort det.

Formelen for netto folkevekst er

$$
\text{netto folkevekst} = \text{fødselstall} + \text{innflyttinger} - \text{utflyttinger}
$$

a) Lag et program som presenterer data fra datasettet i en tabellignende visning med følgende kolonner: "fødselstall", "innflyttinger", "utflyttinger", "netto folkevekst".
b) Utvid programmet til å vise et egnet diagram som viser utviklingen for en kolonne som velges i grensesnittet, enten "fødselstall", "innflyttinger", "utflyttinger" eller "netto folkevekst", for en periode som velges mellom 1945 og 2024. Man skal kunne velge kolonne og avgrense perioden valgfritt (hele år) i brukergrensesnittet.

---

## H2024 oppgave 10 — Simulering av virusspredning i en populasjon

- **Fag:** Informasjonsteknologi 2
- **Eksamen:** Høst 2024 (LK20)
- **Del:** Eksamenen var ikke delt — hele eksamen med hjelpemidler
- **Oppgavenummer:** 10
- **Nivå:** Krevende (3 av 3)
- **Temaer:** Objektorientert programmering, Klasser og objekter, Simulering, Brukergrensesnitt
- **Kort beskrivelse:** Lage et objektorientert program som simulerer smitte i et rutenett av personer som går fra frisk via smittet og syk til immun eller død, med smitte til nabopersoner og visning dag for dag.
- **Nettadresse:** https://matematikkoppgaver.no/it/oppgave/simulering-av-virusspredning-i-en-populasjon/

### Oppgavetekst

I denne oppgaven skal du utvikle et program som simulerer smitte, smittespredning, sykdom og død eller friskhet med immunitet. I simuleringen skal en person kunne gjennomløpe følgende faser: frisk uten immunitet (lys grå), smittet uten symptomer (rosa), syk (rød), død (svart) eller frisk med immunitet (mørk grå).

Programmet skal utvikles som et objektorientert program med nødvendige klasser og metoder gjennom tre deler. *Merk: Du kan svare på én del av oppgaven om gangen eller levere kun siste del som et enkelt program, akkurat som du selv ønsker.*

**Del 1: klassen Person**

I denne delen skal du implementere en klasse som modellerer en person. Personen skal kunne være i følgende tilstander:

- frisk uten immunitet (lys grå)
- smittet (rosa med svart skråstrek)
- syk (rød med hvit skråstrek)
- frisk med immunitet (mørk grå med sort prikk)
- død (svart med hvit prikk)

a) Personklassen skal inneholde funksjonalitet for at nye personer starter som friske uten immunitet og kan bli smittet av andre. Etter tre dager som smittet blir personer syke, og etter fire dagers sykdom blir de friske med immunitet. Sannsynligheten for død mens en person er syk skal være 1 % (0,01) hver dag mens de er syke. Definer klassen med passende datafelter og metoder.

Nedenfor ser du eksempler på en grafisk representasjon av et sykdomsforløp for en enkeltperson. *Merk: Du trenger ikke å lage en simulering i denne delen, kun implementere funksjonaliteten i Personklassen.*

![Sykdomsforløp der personen er frisk uten immunitet, smittet i tre dager, syk i fire dager og til slutt frisk med immunitet](https://matematikkoppgaver.no/assets/_resources/it2-h24-2-10-forlop-frisk.avif)

eller

![Sykdomsforløp der personen er frisk uten immunitet, smittet i tre dager, syk i to dager og så dør](https://matematikkoppgaver.no/assets/_resources/it2-h24-2-10-forlop-dod.avif)

**Del 2: smittespredning i en populasjon**

b) I denne delen skal du gjøre to ting:

1\) Implementer en klasse Populasjon som skal holde orden på et bestemt antall personer og smitte fra en person til naboer. I denne oppgaven er naboer definert som plassert inntil hverandre vannrett og loddrett, men ikke på skrå. Hver person har altså fire naboer.
2\) Implementer funksjonalitet for å overføre smitte fra en smittet eller syk person til alle naboer som er friske uten immunitet, slik som i figur &fig:it2-h24-2-10-figur2. Sannsynligheten for å bli smittet av en nabo skal være 30 % (0,3).

![En syk person i en populasjon](https://matematikkoppgaver.no/assets/_resources/it2-h24-2-10-figur1.avif)

---

![En syk person med to smittede naboer](https://matematikkoppgaver.no/assets/_resources/it2-h24-2-10-figur2.avif)

Rutenettet representerer populasjonen. De lysegrå boksene representerer friske personer uten immunitet, og den røde boksen med hvit skråstrek i figur &fig:it2-h24-2-10-figur1 representerer en syk person. De to rosa boksene med svart skråstrek i figur &fig:it2-h24-2-10-figur2 representerer de smittede naboene til personen i midten.

**Del 3: simuleringen**

c) I denne delen skal du implementere en simulering av smittespredning i en populasjon av personer som starter med en syk og fire smittede personer, som vist i figuren nedenfor.

![Rutenett på 49 ganger 49 med en syk person i midten og smittede personer over, under, til høyre og til venstre](https://matematikkoppgaver.no/assets/_resources/it2-h24-2-10-startoppsett.gif)

Den røde boksen med hvit skråstrek representerer en syk person. De fire rosa boksene med sorte skråstreker representerer fire smittede personer som ikke har symptomer, de er altså i virusets inkubasjonstid.

![Animasjon av de ti første dagene med smittespredning fra den syke personen i midten](https://matematikkoppgaver.no/assets/_resources/it2-h24-2-10-simulering.gif)

Ovenfor ser vi en simulering av de 10 første dagene med smittespredning. De røde boksene med hvit skråstrek representerer personer som er syke, de har smitten med symptomer, mens de rosa boksene med hvit skråstrek representerer smittede personer uten symptomer. De mørkegrå boksene med svart prikk representerer friske personer med immunitet, og de svarte boksene med hvit prikk representerer døde personer.

---

## V2023 oppgave 1 — Hva en while-løkke er

- **Fag:** Informasjonsteknologi 2
- **Eksamen:** Vår 2023 (LK20)
- **Del:** Eksamenen var ikke delt — hele eksamen med hjelpemidler
- **Oppgavenummer:** 1
- **Nivå:** Lett (1 av 3)
- **Temaer:** Løkker
- **Kort beskrivelse:** Kjenne igjen at en while-løkke kjører så lenge en bestemt betingelse er sann.
- **Nettadresse:** https://matematikkoppgaver.no/it/oppgave/hva-en-while-lokke-er/

### Oppgavetekst

Hva er en while-løkke i programmering? (ett riktig svar)

> **Flervalgsoppgave — velg riktig alternativ**
> - [ ] en løkke som kjører et bestemt antall ganger
> - [ ] en løkke som kjører til en bestemt hendelse inntreffer
> - [x] en løkke som kjører så lenge en bestemt betingelse er sann
> - [ ] en løkke som kjører så lenge en tilfeldig betingelse er sann

---

## V2023 oppgave 2 — Antall utskrifter fra en while-løkke

- **Fag:** Informasjonsteknologi 2
- **Eksamen:** Vår 2023 (LK20)
- **Del:** Eksamenen var ikke delt — hele eksamen med hjelpemidler
- **Oppgavenummer:** 2
- **Nivå:** Lett (1 av 3)
- **Temaer:** Pseudokode, Løkker
- **Kort beskrivelse:** Spore en while-løkke med betingelsen i > m og se at løkka aldri kjører når i starter på 1 og m er 3.
- **Nettadresse:** https://matematikkoppgaver.no/it/oppgave/antall-utskrifter-fra-en-while-lokke/

### Oppgavetekst

Ta utgangspunkt i den følgende pseudokoden:

```pseudo
SET m TO 3
SET i TO 1
WHILE i GREATER THAN m
  DISPLAY "Lukkeleg dag!"
  INCREMENT i
```

Velg hvor mange ganger teksten «Lykkelig dag!» blir skrevet ut.

> **Flervalgsoppgave — velg riktig alternativ**
> - [ ] tre ganger
> - [ ] to ganger
> - [ ] en gang
> - [x] ingen ganger

---

## V2023 oppgave 3 — Summen av de ti første trekanttallene i pseudokode

- **Fag:** Informasjonsteknologi 2
- **Eksamen:** Vår 2023 (LK20)
- **Del:** Eksamenen var ikke delt — hele eksamen med hjelpemidler
- **Oppgavenummer:** 3
- **Nivå:** Middels (2 av 3)
- **Temaer:** Pseudokode, Løkker, Funksjoner
- **Kort beskrivelse:** Skrive pseudokode som bruker en oppgitt funksjon for trekanttall til å summere og skrive ut summen av de ti første trekanttallene.
- **Nettadresse:** https://matematikkoppgaver.no/it/oppgave/summen-av-de-ti-forste-trekanttallene-i-pseudokode/

### Oppgavetekst

Tallene 1, 3, 6, 10, 15, 21 og så videre kalles for trekanttall. De tilsvarer antallet prikker som vil vises i en likesidet trekant når man bruker et grunnleggende trekantmønster for å bygge trekanten. Se illustrasjonen nedenfor:

![De fire første trekanttallene 1, 3, 6 og 10 vist som prikker i likesidede trekanter](https://matematikkoppgaver.no/assets/_resources/it2-v23-2-3-trekanttall.avif)

Den følgende pseudokoden beskriver en funksjon som regner ut og returnerer trekanttallet nummer $n$:

```pseudo
FUNCTION trekanttall(n)
  SET tn TO n * (n+1)/2
  RETURN tn
ENDFUNCTION
```

Bruk funksjonen som er beskrevet ovenfor, og skriv pseudokoden til et program som regner sammen og skriver ut totalsummen av de ti første trekanttallene. Bruk dobbelt mellomrom for innrykk i koden der det er aktuelt.

*OBS: Du kan bruke din egen standard for pseudokode, bare den er hensiktsmessig.*

---

## V2023 oppgave 4 — Pseudokode som samsvarer med et flytskjema

- **Fag:** Informasjonsteknologi 2
- **Eksamen:** Vår 2023 (LK20)
- **Del:** Eksamenen var ikke delt — hele eksamen med hjelpemidler
- **Oppgavenummer:** 4
- **Nivå:** Middels (2 av 3)
- **Temaer:** Pseudokode, Flytskjema, Løkker
- **Kort beskrivelse:** Sammenligne et flytskjema som skriver ut tallene 1 til 10 med fire sekvenser pseudokode og finne den som gjør det samme.
- **Nettadresse:** https://matematikkoppgaver.no/it/oppgave/pseudokode-som-samsvarer-med-et-flytskjema/

### Oppgavetekst

Nedenfor finner du et flytskjema for en algoritme og fire sekvenser med pseudokode.

![Flytskjema: START, n = 0, deretter spørsmålet n > 9?. Ved YES går flyten til STOP. Ved NO settes n = n + 1, så DISPLAY n, og flyten går tilbake til spørsmålet.](https://matematikkoppgaver.no/assets/_resources/it2-v23-2-4-flytskjema.avif)

**Sekvens 1**

```pseudo
SET n TO 1
WHILE n LESSER THAN OR EQUAL TO 10
INCREMENT n
DISPLAY n
ENDWHILE
```

**Sekvens 2**

```pseudo
SET n TO 0
FOR hver n LESSER THAN OR EQUAL TO 10
DISPLAY n
ENDFOR
```

**Sekvens 3**

```pseudo
SET n TO 1
WHILE n LESSER THAN 10
DISPLAY n
INCREMENT n
ENDWHILE
```

**Sekvens 4**

```pseudo
SET n TO 1
FOR hver n LESSER THAN OR EQUAL TO 10
DISPLAY n
ENDFOR
```

Hvilken av sekvensene med pseudokode gjør det samme som flytskjemaet?

> **Flervalgsoppgave — velg riktig alternativ**
> - [ ] Sekvens 1
> - [ ] Sekvens 2
> - [ ] Sekvens 3
> - [x] Sekvens 4

---

## V2023 oppgave 5 — Sortere pseudokode for største av tre tall

- **Fag:** Informasjonsteknologi 2
- **Eksamen:** Vår 2023 (LK20)
- **Del:** Eksamenen var ikke delt — hele eksamen med hjelpemidler
- **Oppgavenummer:** 5
- **Nivå:** Lett (1 av 3)
- **Temaer:** Pseudokode, Valgsetninger
- **Kort beskrivelse:** Sortere åtte linjer med pseudokode slik at de danner et program som leser inn tre tall og skriver ut hvilket som er størst.
- **Nettadresse:** https://matematikkoppgaver.no/it/oppgave/sortere-pseudokode-for-storste-av-tre-tall/

### Oppgavetekst

Nedenfor finner du flere linjer med pseudokode.

Sorter linjene i riktig rekkefølge, slik at det blir pseudokoden til et program som skal finne det største tallet av tre tall.

*Tips: Linjene med pseudokode har ikke innrykk/indentering.*

> - `DISPLAY tall1 + " er størst"`
> - `ELSE IF tall2 GREATER THAN tall3`
> - `DISPLAY tall2 + " er størst"`
> - `ENDIF`
> - `DISPLAY tall3 + " er størst"`
> - `READ tall1, tall2, tall3`
> - `ELSE`
> - `IF tall1 GREATER THAN tall2 AND tall1 GREATER THAN tall3`
>

---

## V2023 oppgave 6 — Testplan for karakterprogram med poengsum

- **Fag:** Informasjonsteknologi 2
- **Eksamen:** Vår 2023 (LK20)
- **Del:** Eksamenen var ikke delt — hele eksamen med hjelpemidler
- **Oppgavenummer:** 6
- **Nivå:** Middels (2 av 3)
- **Temaer:** Pseudokode, Valgsetninger, Testing
- **Kort beskrivelse:** Implementere pseudokode som gjør poengsum om til karakter, kjøre en testplan med grenseverdier, finne de logiske feilene i betingelsene og rette programmet.
- **Nettadresse:** https://matematikkoppgaver.no/it/oppgave/testplan-for-karakterprogram-med-poengsum/

### Oppgavetekst

Vi ønsker å lage et program der brukeren skal skrive inn en poengsum fra og med 0 til og med 100, og programmet skal bestemme og skrive ut tilsvarende karakter etter følgende regler:

- Enhver poengsum under 50 får karakteren «Ikke bestått».
- Enhver poengsum fra og med 50 til og med 69 får karakteren «Bestått».
- Enhver poengsum fra og med 70 til og med 89 får karakteren «Godt bestått».
- Enhver poengsum på 90 eller høyere får karakteren «Meget godt bestått».
- Enhver poengsum som er mindre enn 0 eller større enn 100, får karakteren «Ikke gyldig poengsum!».

Pseudokoden nedenfor beskriver logikken og programflyten i et forslag til dette programmet:

```pseudo
PRINT "Skriv inn poengsummen din:"
READ poengsum
IF poengsum LESSER THAN 50
  PRINT "Ikke bestått"
ELSE IF poengsum GREATER THAN 50 AND poengsum LESSER THAN 69
  PRINT "Bestått"
ELSE IF poengsum GREATER THAN 70 AND poengsum LESSER THAN 89
  PRINT "Godt bestått"
ELSE IF poengsum GREATER THAN 90 AND poengsum LESSER THAN 100
  PRINT "Meget godt bestått"
ELSE
  PRINT "Ikke gyldig poengsum!"
ENDIF
```

a) Implementer den foreslåtte pseudokoden i det programmeringsspråket du foretrekker, gjennomfør testene som er beskrevet i testplanen nedenfor, og fyll inn de faktiske resultatene du får.

Table: Testplan {#tbl:it2-v23-2-6-tabell-1}

| Test nr. | Input-verdier | Forventet resultat | Faktisk resultat |
|:-:|:-----|:--------|:-----------|
| 1 | Poengsum: 30 | Ikke bestått |  |
| 2 | Poengsum: 65 | Bestått |  |
| 3 | Poengsum: 82 | Godt bestått |  |
| 4 | Poengsum: 97 | Meget godt bestått |  |
| 5 | Poengsum: 102 | Ikke gyldig poengsum! |  |
| 6 | Poengsum: 0 | Ikke bestått |  |
| 7 | Poengsum: 50 | Bestått |  |
| 8 | Poengsum: 69 | Bestått |  |
| 9 | Poengsum: 70 | Godt bestått |  |
| 10 | Poengsum: 89 | Godt bestått |  |
| 11 | Poengsum: 90 | Meget godt bestått |  |
| 12 | Poengsum: 100 | Meget godt bestått |  |
| 13 | Poengsum: −1 | Ikke gyldig poengsum! |  |

b) Er de forventede resultatene like de faktiske resultatene? Hvis ikke: Finn de logiske feilene i pseudokoden som forårsaker det. Skriv inn og forklar svaret ditt.
c) Rett opp programmet fra punkt a slik at du får det forventede resultatet.

---

## V2023 oppgave 7 — Påstander om KI og personvern

- **Fag:** Informasjonsteknologi 2
- **Eksamen:** Vår 2023 (LK20)
- **Del:** Eksamenen var ikke delt — hele eksamen med hjelpemidler
- **Oppgavenummer:** 7
- **Nivå:** Middels (2 av 3)
- **Temaer:** Kunstig intelligens, Personvern, Etikk
- **Kort beskrivelse:** Vurdere sju påstander om personvern ved utvikling og bruk av kunstig intelligens som sanne eller usanne.
- **Nettadresse:** https://matematikkoppgaver.no/it/oppgave/pastander-om-ki-og-personvern/

### Oppgavetekst

Sett ett kryss for hver påstand, enten sant eller usant.

| Påstand | Sant | Usant |
|:----------------------------------------|:------:|:------:|
| Fordi utvikling av KI kan kreve mye og uventede data, kan det være fornuftig å samle inn flere personopplysninger enn det man i utgangspunktet tror er nødvendig for et bestemt prosjekt. |  |  |
| Alle reglene for personvern gjelder også under utvikling av KI. |  |  |
| Når KI bruker personopplysninger i en beslutningsprosess, har den registrerte ikke rett til innsyn, fordi det å forklare prosessen er veldig vanskelig. |  |  |
| Det er viktig å gjøre tverrfaglige vurderinger av de etiske konsekvensene ved bruk av KI. |  |  |
| Det er enten etiske eller juridiske dilemmaer ved bruk av KI. |  |  |
| KI er objektiv, og derfor er bruken av KI rettferdig for alle. |  |  |
| KI kan alltid gjenbruke personopplysninger fra andre prosjekter, fordi utvikling av KI betraktes som forskning. |  |  |

---

## V2023 oppgave 8 — Personvernprinsipper ved utvikling av KI

- **Fag:** Informasjonsteknologi 2
- **Eksamen:** Vår 2023 (LK20)
- **Del:** Eksamenen var ikke delt — hele eksamen med hjelpemidler
- **Oppgavenummer:** 8
- **Nivå:** Middels (2 av 3)
- **Temaer:** Kunstig intelligens, Personvern, Etikk
- **Kort beskrivelse:** Velge de tre personvernprinsippene som er mest relevante for kunstig intelligens, og drøfte dilemmaer knyttet til ett av dem.
- **Nettadresse:** https://matematikkoppgaver.no/it/oppgave/personvernprinsipper-ved-utvikling-av-ki/

### Oppgavetekst

a) Velg de tre personvernprinsippene som er mest relevante for utfordringer knyttet til utvikling og bruk av kunstig intelligens (KI), ifølge kildene fra forberedelsesdelen.

> **Flervalgsoppgave — velg riktig alternativ**
> - [ ] ansvarlighet
> - [x] formålsbegrensning
> - [ ] riktighet
> - [x] dataminimering
> - [ ] lagringsbegrensning
> - [x] lovlighet, rettferdighet og gjennomsiktighet
> - [ ] integritet og konfidensialitet

b) Velg ett av de tre personvernprinsippene du krysset av for i punkt a. Drøft dilemmaer og utfordringer som oppstår rundt utvikling og bruk av KI, knyttet til det prinsippet du har valgt.

---

## V2023 oppgave 9 — Oversikt over apper i Google Play Store

- **Fag:** Informasjonsteknologi 2
- **Eksamen:** Vår 2023 (LK20)
- **Del:** Eksamenen var ikke delt — hele eksamen med hjelpemidler
- **Oppgavenummer:** 9
- **Nivå:** Middels (2 av 3)
- **Temaer:** Datasett, Datastrukturer, Filbehandling, Datavask
- **Kort beskrivelse:** Lese inn et datasett over apper i Google Play Store og presentere de tre største kategoriene med antall apper, gjennomsnittlig rating og installasjoner, og de tre mest installerte appene i hver.
- **Nettadresse:** https://matematikkoppgaver.no/it/oppgave/oversikt-over-apper-i-google-play-store/

### Oppgavetekst

Du skal lage et program som leser inn informasjon fra datasettet og presenterer dette i to oversikter. Du skal bruke datasettet fra forberedelsesdelen.

Datasettet er tilgjengelig i CSV- og JSON-format. Last ned datasettet her: [datasett (csv og json)](/assets/_resources/it2-v23-2-9-googleplaystore.zip).

> **Advarsel**
> Feil i datasettet
> Rad 10474 (appen «Life Made WI-Fi Touchscreen Photo Frame») mangler kategorien, så de andre verdiene i raden er forskjøvet ett felt til venstre. Kategorien blir `1.9`, ratingen `19`, antall installasjoner `Free`, og feltet `Content Rating` er tomt. I CSV-fila har raden bare 12 felt, mens de andre radene har 13.
>
> Utdanningsdirektoratet varslet om feilen dagen før eksamen: Kandidatene måtte selv håndtere den, for eksempel ved å rette raden i fila eller ved å la programmet hoppe over rader med feil antall felt.

*Tips: Du står fritt til å velge hvordan programmet skal presentere informasjon, så lenge presentasjonen er godt egnet til å vise det oppgaven spør etter.*

a) Lag et program som presenterer en oversikt over de tre største kategoriene målt i antall apper. Oversikten skal vise antallet apper, gjennomsnittsratingen og det gjennomsnittlige antallet installasjoner for hver av disse tre kategoriene. *Tips: For å kunne beregne gjennomsnittet av antallet installasjoner må du tilpasse innholdet i det aktuelle datafeltet. Du vil få noe uttelling om du bare viser antallet apper og gjennomsnittsratingen.*
b) Utvid programmet slik at det også presenterer de tre mest populære appene, målt i antall installasjoner, i hver av disse tre kategoriene.

---

## V2023 oppgave 10 — Spillet PacTroll

- **Fag:** Informasjonsteknologi 2
- **Eksamen:** Vår 2023 (LK20)
- **Del:** Eksamenen var ikke delt — hele eksamen med hjelpemidler
- **Oppgavenummer:** 10
- **Nivå:** Krevende (3 av 3)
- **Temaer:** Objektorientert programmering, Klasser og objekter, UML, Spillprogrammering
- **Kort beskrivelse:** Lage klassediagram og implementere et objektorientert spill der et troll styres med tastaturet, spiser matbiter som blir hindringer, og spillet slutter ved kollisjon med kant eller hindring.
- **Nettadresse:** https://matematikkoppgaver.no/it/oppgave/spillet-pactroll/

### Oppgavetekst

I denne oppgaven skal du utvikle et spill som vi har kalt PacTroll. Du bør sette av om lag to timer til denne oppgaven.

Spillet starter med et spillbrett (svart hovedboks), et troll (grønn boks merket T) og tre matbiter (gule bokser merket M) – se illustrasjonen nedenfor til venstre. Trollet skal bevege seg på spillbrettet og spise så mange matbiter som mulig. Trollet har en konstant fart og kan ikke stoppes, men spilleren styrer retningen ved å bruke tastaturet. Hver gang en matbit spises, blir den gjort om til en hindring (grå boks merket H), og en ny matbit plasseres ut på spillbrettet – se illustrasjonen nedenfor til høyre.

Hvis trollet treffer en av hindringene eller spillbrettets kanter, avsluttes spillet.

![Til venstre: spillbrettet ved oppstart med trollet T i midten og tre matbiter M. Til høyre: spillbrettet etter en stund med tre matbiter og sju hindringer H.](https://matematikkoppgaver.no/assets/_resources/it2-v23-2-10-pactroll.avif)

**Funksjonelle krav:**

- Ved oppstart skal grensesnittet se ut omtrent som i illustrasjonen ovenfor til venstre. Spillet skal bestå av et spillbrett, et trollobjekt og tre matobjekter. (Du kan utelate bokstavene på boksene.)
- Ved oppstart plasseres matobjektene på tre tilfeldige plasseringer på spillbrettet, og trollobjektet plasseres i sentrum. Ingen objekter skal være oppå hverandre.
- Trollobjektet beveger seg i rolig hastighet i en retning, enten opp, ned, til venstre eller til høyre. Retningen trollobjektet beveger seg i, styres med piltaster (alternativt tastene W, S, A og D).
- Når trollobjektet treffer et matobjekt, skal det følgende skje:
    - Spilleren får et poeng.
    - Matobjektet gjøres om til et hindringsobjekt som trollobjektet ikke skal treffe igjen.
    - Et nytt matobjekt opprettes et tilfeldig sted på spillbrettet, slik at det alltid er tre matobjekter på spillbrettet. Nye matobjekter skal ikke plasseres på allerede eksisterende objekter.
    - Farten til trollobjektet økes.
- Antallet poeng spilleren har, skal hele tiden være synlig i grensesnittet.
- Spillet avsluttes om trollobjektet treffer en av spillbrettets kanter eller et av hindringsobjektene.

a) Lag et klassediagram der du definerer nødvendige klasser, med egenskaper og metoder, for å implementere/lage spillet.
b) Implementer/lag spillet i samsvar med klassediagrammet fra a.

---

## H2023 oppgave 1 — Hva som ikke kjennetegner pseudokode

- **Fag:** Informasjonsteknologi 2
- **Eksamen:** Høst 2023 (LK20)
- **Del:** Eksamenen var ikke delt — hele eksamen med hjelpemidler
- **Oppgavenummer:** 1
- **Nivå:** Lett (1 av 3)
- **Temaer:** Pseudokode
- **Kort beskrivelse:** Velge hvilket utsagn som ikke er et typisk kjennetegn på pseudokode.
- **Nettadresse:** https://matematikkoppgaver.no/it/oppgave/hva-som-ikke-kjennetegner-pseudokode/

### Oppgavetekst

Hvilket av følgende er *ikke* et typisk kjennetegn på pseudokode?

> **Flervalgsoppgave — velg riktig alternativ**
> - [ ] Den har uformell syntaks.
> - [ ] Den ligner på vanlig menneskespråk.
> - [x] Den kan kjøres direkte på en datamaskin.
> - [ ] Den brukes ofte i planleggingsfasen av programmering.

---

## H2023 oppgave 2 — Påstander om for- og while-løkker

- **Fag:** Informasjonsteknologi 2
- **Eksamen:** Høst 2023 (LK20)
- **Del:** Eksamenen var ikke delt — hele eksamen med hjelpemidler
- **Oppgavenummer:** 2
- **Nivå:** Lett (1 av 3)
- **Temaer:** Løkker
- **Kort beskrivelse:** Velge den riktige påstanden om når for-løkker og while-løkker brukes.
- **Nettadresse:** https://matematikkoppgaver.no/it/oppgave/pastander-om-for-og-while-lokker/

### Oppgavetekst

Hvilken av de følgende påstandene er riktig om for- og while-løkker innen programmering?

> **Flervalgsoppgave — velg riktig alternativ**
> - [ ] en for-løkke kan bare brukes med tallsekvenser
> - [ ] en while-løkke kjører alltid et bestemt antall ganger
> - [x] en for-løkke er best egnet når du vet hvor mange ganger du vil at løkken skal kjøre
> - [ ] en while-løkke kan ikke bruke en teller for å holde rede på hvor mange ganger den har kjørt

---

## H2023 oppgave 3 — Hovedprinsippet bak objektorientert programmering

- **Fag:** Informasjonsteknologi 2
- **Eksamen:** Høst 2023 (LK20)
- **Del:** Eksamenen var ikke delt — hele eksamen med hjelpemidler
- **Oppgavenummer:** 3
- **Nivå:** Lett (1 av 3)
- **Temaer:** Objektorientert programmering
- **Kort beskrivelse:** Velge hovedprinsippet bak objektorientert programmering, å representere data og funksjoner som objekter.
- **Nettadresse:** https://matematikkoppgaver.no/it/oppgave/hovedprinsippet-bak-objektorientert-programmering/

### Oppgavetekst

Hva er hovedprinsippet bak objektorientert programmering (OOP)?

> **Flervalgsoppgave — velg riktig alternativ**
> - [ ] å lage lineære og sekvensielle programkoder
> - [ ] å bryte ned et problem i et sett med funksjoner
> - [x] å representere data og funksjoner som objekter
> - [ ] å minimere bruken av variabler

---

## H2023 oppgave 4 — Pseudokode som skriver ut tallene fra 1 til 5

- **Fag:** Informasjonsteknologi 2
- **Eksamen:** Høst 2023 (LK20)
- **Del:** Eksamenen var ikke delt — hele eksamen med hjelpemidler
- **Oppgavenummer:** 4
- **Nivå:** Lett (1 av 3)
- **Temaer:** Pseudokode, Løkker
- **Kort beskrivelse:** Lese fire korte pseudokodesekvenser med for- og while-løkker og finne de som skriver ut tallene fra og med 1 til og med 5.
- **Nettadresse:** https://matematikkoppgaver.no/it/oppgave/pseudokode-som-skriver-ut-tallene-fra-1-til-5/

### Oppgavetekst

**Sekvens 1**

```pseudo
SET i TO 1
FOR hver i LESSER OR EQUAL 5
    PRINT i
ENDFOR
```

---

**Sekvens 2**

```pseudo
SET i TO 1
WHILE i < 5
    PRINT i
    INCREMENT i
ENDWHILE
```

**Sekvens 3**

```pseudo
SET i TO 0
FOR hver i LESSER OR EQUAL 4
    PRINT i+1
ENDFOR
```

---

**Sekvens 4**

```pseudo
SET i TO 1
WHILE i <= 5
    PRINT i
    INCREMENT i BY 2
ENDWHILE
```

Hvilke av sekvensene med pseudokode ovenfor skriver ut tallene fra og med 1 til og med 5? Flere alternativer kan være riktige.

> **Flervalgsoppgave — velg riktig alternativ**
> - [x] sekvens 1
> - [ ] sekvens 2
> - [x] sekvens 3
> - [ ] sekvens 4

---

## H2023 oppgave 5 — Flytdiagram for billettpris etter alder

- **Fag:** Informasjonsteknologi 2
- **Eksamen:** Høst 2023 (LK20)
- **Del:** Eksamenen var ikke delt — hele eksamen med hjelpemidler
- **Oppgavenummer:** 5
- **Nivå:** Middels (2 av 3)
- **Temaer:** Flytskjema, Valgsetninger
- **Kort beskrivelse:** Lage et flytdiagram for et program som leser inn alderen til kjøperen og velger barne-, voksen- eller pensjonistbillett med riktig pris.
- **Nettadresse:** https://matematikkoppgaver.no/it/oppgave/flytdiagram-for-billettpris-etter-alder/

### Oppgavetekst

Et system som beregner billettprisen avhengig av kjøperens alder, bruker følgende regler for billettkategorier:

- Hvis brukeren er 15 år gammel eller yngre, skal brukeren få barnebillett til 30 kroner.
- Hvis brukeren er 16 år gammel eller eldre, skal brukeren få voksenbillett til 50 kroner.
- Hvis brukeren er 67 år gammel eller eldre, skal brukeren få pensjonistbillett til 35 kroner.

Lag et flytdiagram for et program der brukeren skriver inn alderen på kjøperen og programmet regner ut og skriver ut riktig billettpris.

Lag flytdiagrammet i et egnet program, og lagre det i et allment lesbart format (f.eks. pdf).

---

## H2023 oppgave 6 — Finne det nest største tallet i en liste

- **Fag:** Informasjonsteknologi 2
- **Eksamen:** Høst 2023 (LK20)
- **Del:** Eksamenen var ikke delt — hele eksamen med hjelpemidler
- **Oppgavenummer:** 6
- **Nivå:** Middels (2 av 3)
- **Temaer:** Algoritmer, Pseudokode, Løkker
- **Kort beskrivelse:** Vurdere fire pseudokodeløsninger som finner det nest største tallet i en liste der like største tall ikke skal telle, og sammenligne de to riktige.
- **Nettadresse:** https://matematikkoppgaver.no/it/oppgave/finne-det-nest-storste-tallet-i-en-liste/

### Oppgavetekst

Du får i oppgave å finne det nest største tallet i en liste (array) med tall. Dersom det finnes flere like tall som er størst, skal ingen av disse regnes som nest størst. Under finner du fire alternative løsninger for denne oppgaven skrevet i pseudokode.

**Løsning 1**

```pseudo
SET størst TO negativt uendelig tall
FOR hvert tall i listen
    IF tall GREATER THAN størst
        SET størst TO tall
    ENDIF
ENDFOR
Fjern størst fra listen
SET nestStørst TO negativt uendelig tall
FOR hvert tall i listen
    IF tall GREATER THAN nestStørst
        SET nestStørst TO tall
    ENDIF
ENDFOR
DISPLAY nestStørst
```

---

**Løsning 2**

```pseudo
SET størst TO første tall i listen
SET nestStørst TO andre tall i listen
IF nestStørst GREATER THAN størst
    Bytt størst og nestStørst
ENDIF
FOR hvert tall i listen med start fra tredje tall
    IF tall GREATER THAN størst
        SET nestStørst TO størst
        SET størst TO tall
    ELSEIF tall GREATER THAN nestStørst AND tall NOT EQUAL TO størst
        SET nestStørst TO tall
    ENDIF
ENDFOR
DISPLAY nestStørst
```

**Løsning 3**

```pseudo
SET størst TO negativt uendelig tall
SET nestStørst TO negativt uendelig tall
FOR hvert tall i listen
    IF tall GREATER THAN størst
        SET nestStørst TO størst
        SET størst TO tall
    ELSEIF tall GREATER THAN nestStørst
        SET nestStørst TO tall
    ENDIF
ENDFOR
DISPLAY nestStørst
```

---

**Løsning 4**

```pseudo
Sorter listen i synkende rekkefølge
FOR hvert tall i listen
    IF tall NOT EQUAL TO neste tall i listen
        DISPLAY neste tall i listen
        avbryt for-løkken
    ENDIF
ENDFOR
```

a) Hvilke to løsninger er riktige?

> **Flervalgsoppgave — velg riktig alternativ**
> - [x] løsning 1
> - [ ] løsning 2
> - [ ] løsning 3
> - [x] løsning 4

b) Vurder og sammenlign de to løsningene du valgte i punkt a.

---

## H2023 oppgave 7 — Boblesortering i pseudokode

- **Fag:** Informasjonsteknologi 2
- **Eksamen:** Høst 2023 (LK20)
- **Del:** Eksamenen var ikke delt — hele eksamen med hjelpemidler
- **Oppgavenummer:** 7
- **Nivå:** Middels (2 av 3)
- **Temaer:** Algoritmer, Sortering, Pseudokode, Løkker, Funksjoner
- **Kort beskrivelse:** Spore én gjennomgang av boblesortering i pseudokode, utvide pseudokoden til full sortering med en byttPlass-funksjon og implementere den.
- **Nettadresse:** https://matematikkoppgaver.no/it/oppgave/boblesortering-i-pseudokode/

### Oppgavetekst

Elementene i en indeksert variabel (liste/array) skal sorteres i stigende rekkefølge etter følgende algoritme: Man sammenligner hvert element fra venstre til høyre i listen med neste element, og hvis elementet er større enn neste element, bytter de plass. Deretter går man videre til neste element og sammenligner på nytt frem til hele listen er gjennomgått. Dette gjentas til hele listen gjennomgås uten at det forekommer noen ombyttinger.

Under finner du deler av pseudokoden for denne algoritmen. Her er `a` en liste med `n` elementer, og `a[i]` er elementet på plass `i` i listen.

```pseudo
SET i TO 0
FOR hver i LESSER THAN n - 1
    IF a[i] GREATER THAN a[i+1]
        CALL byttPlass()
    ENDIF
ENDFOR
```

*Presisering: `byttPlass()` er en funksjon som bytter plass på to naboelementer i listen.*

a) Hva blir innholdet i listen etter at vi har kjørt programmet representert ved pseudokoden over for listen `a = [8, 5, 2, 6, 12]`, som har `n = 5` elementer?

> **Flervalgsoppgave — velg riktig alternativ**
> - [ ] `[5, 8, 2, 6, 12]`
> - [ ] `[5, 2, 8, 6, 12]`
> - [x] `[5, 2, 6, 8, 12]`
> - [ ] `[2, 5, 6, 8, 12]`

b) Utvid pseudokoden slik at programmet den representerer, sorterer ferdig listen `a` i stigende rekkefølge etter algoritmen som er vist øverst. Forklar endringene du gjør. Obs! Du må også lage pseudokode for funksjonen `byttPlass()`.
c) Implementer pseudokoden fra punkt b i ditt programmeringsspråk. Listen skal leses inn automatisk, og den ferdig sorterte listen skal skrives til konsollet eller vises i programmet.

---

## H2023 oppgave 8 — Godt personvern i finanssektoren i framtiden

- **Fag:** Informasjonsteknologi 2
- **Eksamen:** Høst 2023 (LK20)
- **Del:** Eksamenen var ikke delt — hele eksamen med hjelpemidler
- **Oppgavenummer:** 8
- **Nivå:** Lett (1 av 3)
- **Temaer:** Personvern
- **Kort beskrivelse:** Velge hvorfor godt personvern kan bli viktigere for finanssektoren, med utgangspunkt i Datatilsynets rapport om personlige finanser.
- **Nettadresse:** https://matematikkoppgaver.no/it/oppgave/godt-personvern-i-finanssektoren-i-framtiden/

### Oppgavetekst

Oppgaven bygger på Datatilsynets rapport [Personlige finanser – Hvordan utviklingstrekk i finanssektoren påvirker personvernet (pdf)](https://www.datatilsynet.no/globalassets/global/dokumenter-pdfer-skjema-ol/rettigheter-og-plikter/rapporter/personlige-finanser_rapport2018.pdf) fra forberedelsesdelen.

Hvorfor kan godt personvern bli viktig for finanssektoren i framtiden?

> **Flervalgsoppgave — velg riktig alternativ**
> - [ ] flere kunder vil kreve digital tilgang
> - [x] antallet aktører som behandler personopplysninger, vil øke
> - [ ] rentene vil sannsynligvis stige
> - [ ] flere banker vil bli slått sammen for å danne større enheter

---

## H2023 oppgave 9 — Risikovurdering før samarbeid med IoT-leverandører

- **Fag:** Informasjonsteknologi 2
- **Eksamen:** Høst 2023 (LK20)
- **Del:** Eksamenen var ikke delt — hele eksamen med hjelpemidler
- **Oppgavenummer:** 9
- **Nivå:** Lett (1 av 3)
- **Temaer:** Personvern, Risikovurdering
- **Kort beskrivelse:** Velge hvorfor forsikringsselskaper bør gjøre risikovurderinger før de samarbeider med leverandører av IoT-produkter.
- **Nettadresse:** https://matematikkoppgaver.no/it/oppgave/risikovurdering-for-samarbeid-med-iot-leverandorer/

### Oppgavetekst

Oppgaven bygger på Datatilsynets rapport [Personlige finanser – Hvordan utviklingstrekk i finanssektoren påvirker personvernet (pdf)](https://www.datatilsynet.no/globalassets/global/dokumenter-pdfer-skjema-ol/rettigheter-og-plikter/rapporter/personlige-finanser_rapport2018.pdf) fra forberedelsesdelen.

Hvorfor bør forsikringsselskaper gjøre risikovurderinger før de samarbeider med leverandører av Internet of things (IoT)-produkter?

> **Flervalgsoppgave — velg riktig alternativ**
> - [ ] fordi IoT-produkter er dyre
> - [ ] fordi IoT ikke er populært blant forbrukere
> - [ ] fordi leverandører av IoT-produkter ofte gir rabatter eller tilbyr gratis tjenester
> - [x] for å forsikre seg om at produktene er trygge og overholder personvernregelverket

---

## H2023 oppgave 10 — Personverndilemma ved digitalisering av finanssektoren

- **Fag:** Informasjonsteknologi 2
- **Eksamen:** Høst 2023 (LK20)
- **Del:** Eksamenen var ikke delt — hele eksamen med hjelpemidler
- **Oppgavenummer:** 10
- **Nivå:** Middels (2 av 3)
- **Temaer:** Personvern, Etikk
- **Kort beskrivelse:** Beskrive en endring i finanssektoren som skyldes informasjonsteknologi, og drøfte et personverndilemma som endringen skaper.
- **Nettadresse:** https://matematikkoppgaver.no/it/oppgave/personverndilemma-ved-digitalisering-av-finanssektoren/

### Oppgavetekst

Oppgaven bygger på Datatilsynets rapport [Personlige finanser – Hvordan utviklingstrekk i finanssektoren påvirker personvernet (pdf)](https://www.datatilsynet.no/globalassets/global/dokumenter-pdfer-skjema-ol/rettigheter-og-plikter/rapporter/personlige-finanser_rapport2018.pdf) fra forberedelsesdelen. Du kan også bruke andre kunnskaper og kilder du har.

a) Beskriv og forklar en endring i finanssektoren som er forårsaket av utviklingen av informasjonsteknologi.
b) Drøft et personverndilemma som er skapt av denne endringen.

---

## H2023 oppgave 11 — YouTube-kanaler per land

- **Fag:** Informasjonsteknologi 2
- **Eksamen:** Høst 2023 (LK20)
- **Del:** Eksamenen var ikke delt — hele eksamen med hjelpemidler
- **Oppgavenummer:** 11
- **Nivå:** Middels (2 av 3)
- **Temaer:** Datasett, Datavask, Datastrukturer, Filbehandling, Visualisering
- **Kort beskrivelse:** Vaske og lese inn et datasett (CSV/JSON) med ukjent tegnsett og tall lagret som tekst, finne de ti landene med flest YouTube-kanaler og regne gjennomsnittlig antall abonnenter og visninger per kanal.
- **Nettadresse:** https://matematikkoppgaver.no/it/oppgave/youtube-kanaler-per-land/

### Oppgavetekst

**YouTube-statistikk**

Du skal lage et program som leser inn informasjon fra et datasett og presenterer den. Datasettet inneholder statistikk om YouTube-kanaler fra ulike land, i CSV- og JSON-format. Du kan velge hvilket av formatene du vil bruke. Last ned datasettet her: [datasett (csv og json)](/assets/_resources/it2-h23-2-11-youtube-statistikk.zip).

Datasettet er kodet med et ukjent tegnsett. Det kan være nødvendig å angi tegnsett og/eller gjøre andre tilpasninger når du skal lese datasettet med programmering.

Separatoren i CSV-filen er komma, og nøklene er listet på første linje i datasettet. Feltene i CSV-filen er ikke kodet med datatyper.

I JSON-filen må du håndtere at en del datafelter er kodet som tekststrenger, selv om de inneholder numeriske verdier.

*Tips: Du står fritt til å velge hvordan programmet skal presentere informasjonen, så lenge presentasjonen er godt egnet til å vise det oppgaven spør etter. Du kan også velge om du besvarer a og b i en samlet oversikt eller lager en oversikt for hvert oppgavepunkt.*

Programmet du lager i denne oppgaven, skal inneholde en flerlinjet kommentar øverst som beskriver de vurderingene og valgene du har gjort for å vaske og forberede datasettet til bruk med programmet ditt.

a) Lag et program som finner og presenterer de ti landene i datasettet som har flest YouTube-kanaler.
b) Utvid programmet til å regne ut og presentere gjennomsnittlig antall abonnenter og videovisninger per kanal for hvert av disse landene.

---

## H2023 oppgave 12 — Spillet Manic Mansion

- **Fag:** Informasjonsteknologi 2
- **Eksamen:** Høst 2023 (LK20)
- **Del:** Eksamenen var ikke delt — hele eksamen med hjelpemidler
- **Oppgavenummer:** 12
- **Nivå:** Krevende (3 av 3)
- **Temaer:** Objektorientert programmering, UML, Klasser og objekter, Arv, Spillprogrammering
- **Kort beskrivelse:** Forklare en gitt objektorientert modell (UML-klassediagram) for spillet Manic Mansion, tilpasse den og implementere spillet med tastestyrt menneske, spøkelser som spretter, hindringer, sauer, frisoner og poeng.
- **Nettadresse:** https://matematikkoppgaver.no/it/oppgave/spillet-manic-mansion/

### Oppgavetekst

**Manic Mansion**

I denne oppgaven skal du utvikle et spill som heter Manic Mansion.

I Manic Mansion styrer spilleren et menneske som prøver å hente hjem sauene sine en etter en. På veien må mennesket ta seg forbi hindringer og unngå å bli tatt av spøkelser.

Spillet starter med et spillebrett, et menneske, et spøkelse, tre hindringer og tre sauer. Mennesket skal styres av spilleren, og målet med spillet er å komme seg over på den andre siden av brettet og hente en sau flest mulig ganger uten å være i kontakt med noen av spøkelsene.

**Krav**

- Ved oppstart skal spillet bestå av et spillebrett, et menneskeobjekt, et spøkelsesobjekt, tre hindringsobjekter og tre saueobjekter.
- Det skal være en liten frisone både på venstre og høyre side av spillebrettet hvor kun mennesker og sauer kan oppholde seg, mens det ikke kan være spøkelser eller hindringer der.
- Spøkelses- og hindringsobjektene plasseres på tilfeldige steder på spillebrettet, menneskeobjektet i frisonen på venstre side av spillebrettet og sauene på tilfeldige steder i frisonen på høyre side av spillebrettet. Ingen objekter skal være oppå hverandre.
- Ulike typer objekter skal være visuelt forskjellige.
- Menneskeobjektet starter i ro og kan bevege seg i rolig hastighet opp, ned, til venstre eller til høyre. Retningen styres med piltaster (alternativt tastene W, S, A og D).
- Spøkelsesobjektene starter på et tilfeldig sted på spillebrettet, men altså ikke i noen av frisonene. Spøkelsesobjektene beveger seg med konstant fart i en tilfeldig retning. Spøkelsesobjektene kan bevege seg på skrå i flere forskjellige vinkler. Når et spøkelse treffer kanten av spillebrettet eller kanten på en av frisonene, endrer spøkelset retning. Spøkelset blokkeres ikke av hindringer eller av andre spøkelser, men går tvers gjennom dem.
- Når menneskeobjektet treffer en hindring eller kanten av spillebrettet, blokkeres menneskeobjektet helt til retningen endres.
- Når menneskeobjektet treffer et saueobjekt, skal det følgende skje:
    - Saueobjektet fjernes fra spillebrettet (dette representerer at mennesket bærer sauen). (Alternativt: Saueobjektet «festes» til menneskeobjektet og følger menneskeobjektets bevegelser.)
    - Farten til menneskeobjektet reduseres.
    - Fram til saueobjektet er levert på den andre siden, vil en kollisjon mellom menneskeobjektet og et annet saueobjekt føre til at spillet stoppes.
- Når menneskeobjektet kommer tilbake til startsonen på venstre side av spillebrettet, skal det følgende skje:
    - Spilleren får et poeng.
    - Farten til menneskeobjektet økes til samme fart som ved spillets start.
    - Et nytt saueobjekt plasseres et tilfeldig sted i frisonen til høyre på spillebrettet.
    - Et nytt spøkelsesobjekt og et nytt hindringsobjekt plasseres på tilfeldige steder på spillebrettet.
- Når menneskeobjektet, med eller uten sau, treffer et spøkelsesobjekt, skal spillet stoppes.

**Oppdrag**

På figuren under ser du et forslag til en objektorientert modell for spillet.

![Klassediagram for Manic Mansion med superklassen SpillObjekt, subklassene Menneske, Spøkelse, Hindring og Sau, og klassen Spillebrett som inneholder spillobjektene](https://matematikkoppgaver.no/assets/_resources/it2-h23-2-12-klassediagram.avif)

a) Forklar modellen.
b) Ta utgangspunkt i modellen, gjør tilpasninger av egenskaper og metoder der du mener det er nødvendig, og implementer spillet slik det er beskrevet i kravene. Tilpasningene du gjør, skal dokumenteres med kommentarer i programkoden.