Informasjonsteknologi 2 Høst 2023

LK2012 oppgaver · 5 timer

Vis på projektor

Eksamensoppgavene er utgitt av Utdanningsdirektoratet. Første nedlasting kjører en bot-sjekk i nettleseren (Vercel BotID) — mer i personvernerklæringen.

5 timer — alle hjelpemidler12 oppgaver

Oppgave 1Hva som ikke kjennetegner pseudokode

Hjelpemiddelkrav: For hånd

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

Fasit

Den kan kjøres direkte på en datamaskin.

LøsningsforslagKI-generert

Pseudokode er en uformell beskrivelse av en algoritme. Den blandes med vanlig språk og følger ingen fast syntaks, så den brukes til å planlegge et program før det skrives.

Nettopp fordi syntaksen er uformell, finnes det ingen kompilator eller tolk som kan kjøre pseudokode. Den må oversettes til et programmeringsspråk først. Derfor er «Den kan kjøres direkte på en datamaskin» ikke et kjennetegn på pseudokode. De tre andre alternativene er typiske kjennetegn.

Forstå oppgaven med en KI

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

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

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

Oppgave 2Påstander om for- og while-løkker

Hjelpemiddelkrav: For hånd

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

Fasit

En for-løkke er best egnet når du vet hvor mange ganger du vil at løkken skal kjøre.

LøsningsforslagKI-generert

En for-løkke går gjennom en kjent sekvens: et tallområde, elementene i en liste eller tegnene i en tekst. Den passer derfor best når antall gjentakelser er kjent på forhånd.

De andre påstandene er gale:

  • En for-løkke kan også gå gjennom lister, tekster og andre samlinger, ikke bare tallsekvenser.
  • En while-løkke kjører så lenge betingelsen er sann. Antall gjentakelser er derfor ofte ikke kjent på forhånd.
  • En while-løkke kan godt bruke en teller, for eksempel INCREMENT i inne i løkken.

Forstå oppgaven med en KI

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

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

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

Oppgave 3Hovedprinsippet bak objektorientert programmering

Hjelpemiddelkrav: For hånd

Hva er hovedprinsippet bak objektorientert programmering (OOP)?

Fasit

Å representere data og funksjoner som objekter.

LøsningsforslagKI-generert

I objektorientert programmering samles data (egenskaper) og funksjonene som virker på dataene (metoder) i objekter. En klasse beskriver hvordan objektene av den typen ser ut. Objektene er konkrete forekomster av klassen.

De andre alternativene beskriver ikke OOP:

  • Lineær, sekvensiell kode kjennetegner enkel prosedyreorientert programmering.
  • Å bryte ned et problem i funksjoner er hovedideen i funksjonell eller prosedyreorientert programmering.
  • OOP har ikke som mål å bruke færre variabler.

Forstå oppgaven med en KI

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

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

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

Oppgave 4Pseudokode som skriver ut tallene fra 1 til 5

Hjelpemiddelkrav: For hånd

Sekvens 1

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

Sekvens 2

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

Sekvens 3

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

Sekvens 4

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.

Fasit

Sekvens 1 og sekvens 3.

LøsningsforslagKI-generert

Vi følger verdien av i gjennom hver sekvens og ser hva som skrives ut.

SekvensVerdier av iUtskriftRiktig?
11, 2, 3, 4, 51 2 3 4 5ja
21, 2, 3, 4 (stopper når i blir 5)1 2 3 4nei
30, 1, 2, 3, 41 2 3 4 5 (skriver ut i+1)ja
41, 3, 5 (øker med 2)1 3 5nei
  • Sekvens 1: For-løkken går fra startverdien 1 så lenge i er mindre enn eller lik 5, og skriver ut hver verdi.
  • Sekvens 2: Betingelsen er i < 5. Løkken stopper derfor før 5 skrives ut.
  • Sekvens 3: i går fra 0 til og med 4, men utskriften er i+1. Da blir det 1 til og med 5.
  • Sekvens 4: INCREMENT i BY 2 hopper over partallene.

Forstå oppgaven med en KI

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

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

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

Oppgave 5Flytdiagram for billettpris etter alder

Hjelpemiddelkrav: For hånd

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).

Fasit

Flytdiagram med innlesing av alder, testen «alder ≤ 15?» (barnebillett, 30 kr), deretter «alder ≥ 67?» (pensjonistbillett, 35 kr), ellers voksenbillett (50 kr), og utskrift av prisen.

LøsningsforslagKI-generert

Reglene overlapper: en person på 70 år er både «16 år eller eldre» og «67 år eller eldre». Pensjonistregelen må derfor gjelde foran voksenregelen. Vi tester først om kjøperen er barn og så om kjøperen er pensjonist. Alle andre får voksenbillett.

Flytdiagrammet bruker standardsymbolene:

  • oval for start og slutt
  • parallellogram for inndata og utdata
  • rombe for valg (ja/nei)
  • rektangel for en handling

Flytdiagram for billettprisen

Aldersgrensene gir disse tre tilfellene:

AlderKategoriPris
15 år eller yngrebarnebillett30 kr
16–66 årvoksenbillett50 kr
67 år eller eldrepensjonistbillett35 kr

Det er ikke nødvendig å teste «alder ≥ 16» for voksenbillett. Når vi kommer til den siste grenen, vet vi allerede at kjøperen er mellom 16 og 66 år.

Et fullstendig svar kan også sjekke at alderen er gyldig. Det gjøres med en rombe «alder < 0?» rett etter innlesingen, som gir en feilmelding.

Forstå oppgaven med en KI

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

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

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

Oppgave 6Finne det nest største tallet i en liste

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

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

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

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

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
Hjelpemiddelkrav: For hånd

Hvilke to løsninger er riktige?

Hjelpemiddelkrav: For hånd

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

Fasit

Løsning 1 og løsning 4. Løsning 1 forutsetter at «Fjern størst fra listen» fjerner alle forekomstene av det største tallet.

Begge er riktige. Løsning 1 går gjennom listen to ganger (lineær tid), mens løsning 4 sorterer først og er tregere på store lister, men kortere og enklere å lese. Begge endrer listen, og begge må håndtere lister der alle tallene er like.

LøsningsforslagKI-generert

Vi tester løsningene med to lister: [3, 7, 5] (ingen like tall) og [5, 5, 3]. I den siste listen er 5 størst to ganger, så det riktige svaret er 3.

Løsning[3, 7, 5][5, 5, 3]
153 (hvis alle femmerne fjernes)
255 (feil)
355 (feil)
453

Løsning 1 finner det største tallet, fjerner det fra listen og finner deretter det største av tallene som er igjen. Det blir riktig så lenge alle forekomstene av det største tallet fjernes. Fjernes bare én forekomst (som liste.remove(x) i Python), blir resultatet det samme som i løsning 3.

Løsning 2 har en sjekk for like tall (tall NOT EQUAL TO størst) inne i løkken. Den starter likevel med de to første tallene uten å sjekke om de er like. For [5, 5, 3] blir både størst og nestStørst 5 før løkken starter, og tallet 3 endrer ikke dette. Løsningen feiler hver gang listen begynner med to like tall og det ikke kommer et større tall senere.

Løsning 3 mangler sjekken for like tall. Når samme største tall kommer en gang til, er det større enn nestStørst, og det blir satt som nest størst.

Løsning 4 sorterer listen synkende. Da ligger alle forekomstene av det største tallet først. Det første tallet som er ulikt tallet foran seg, er det nest største. For [5, 5, 3] er rekkefølgen etter sortering 5, 5, 3, og løkken skriver ut 3.

De to riktige løsningene er derfor 1 og 4.

Hvordan de virker. Løsning 1 bruker to vanlige gjennomganger av listen og finner det største tallet hver gang. Løsning 4 overlater mesteparten av arbeidet til en sorteringsalgoritme og trenger bare å se på tallene øverst i den sorterte listen.

Effektivitet. Løsning 1 går gjennom listen to ganger. I tillegg må den finne og fjerne forekomstene av det største tallet. Tidsbruken vokser proporsjonalt med antall tall n (lineær tid). Å sortere en liste tar mer tid, typisk proporsjonalt med n⋅log⁡n med en god sorteringsalgoritme. Løsning 4 blir derfor tregere enn løsning 1 for store lister. For lister med noen hundre eller tusen tall merkes ikke forskjellen.

Lesbarhet og hvor lett de er å implementere. Løsning 4 er kortest. De fleste språk har en innebygd sorteringsfunksjon, så løsningen kan skrives med få linjer. Løsning 1 er også enkel, men lengre. Den krever at vi vet hvordan listefunksjonen for å fjerne elementer virker, siden remove i mange språk fjerner bare den første forekomsten.

Sideeffekter. Begge løsningene endrer listen: løsning 1 fjerner elementer, og løsning 4 endrer rekkefølgen. Trenger programmet den opprinnelige listen senere, må begge jobbe på en kopi.

Spesialtilfeller. Hvis alle tallene i listen er like, finnes det ikke noe nest største tall:

  • Løsning 1 ender med en tom liste og viser «negativt uendelig tall». Det må håndteres særskilt.
  • Løsning 4 finner ikke to ulike naboer og viser ingenting.

I løsning 4 finnes det heller ikke noe «neste tall» når løkken kommer til det siste tallet. Løkken må derfor stoppe på det nest siste tallet, ellers gir programmet en feil (indeks utenfor listen).

Konklusjon. Løsning 4 er enklest å skrive og lese og passer godt for små og mellomstore lister. Løsning 1 er mer effektiv for store datamengder. Den beste løsningen for store lister er én gjennomgang som ligner løsning 2, men som også tar hensyn til like tall helt fra starten.

Forstå oppgaven med en KI

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

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

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

Oppgave 7Boblesortering i pseudokode

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.

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.

Hjelpemiddelkrav: For hånd

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?

Hjelpemiddelkrav: For hånd

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().

Hjelpemiddelkrav: Krever PC

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.

Fasit

[5, 2, 6, 8, 12]

En ytre løkke (REPEAT … UNTIL) gjentar gjennomgangen til en hel runde går uten ombyttinger. Et flagg byttet settes til FALSE ved starten av hver runde og til TRUE ved hver ombytting. byttPlass(a, i) bytter a[i] og a[i+1] ved hjelp av en hjelpevariabel.

LøsningsforslagKI-generert

Pseudokoden går gjennom listen én gang og sammenligner hvert element med naboen til høyre:

iSammenligningBytte?Listen etterpå
08 > 5ja[5, 8, 2, 6, 12]
18 > 2ja[5, 2, 8, 6, 12]
28 > 6ja[5, 2, 6, 8, 12]
38 > 12nei[5, 2, 6, 8, 12]

Etter én gjennomgang er listen [5, 2, 6, 8, 12]. Det største tallet som ikke står på riktig plass, «bobler» mot høyre, men listen er ikke ferdig sortert, siden 5 og 2 står i feil rekkefølge.

Algoritmen sier at gjennomgangen skal gjentas til en hel gjennomgang skjer uten ombyttinger. Vi trenger derfor

  1. en ytre løkke som gjentar gjennomgangen
  2. en variabel byttet som husker om det har skjedd en ombytting i denne runden
  3. en funksjon byttPlass() som vet hvilke elementer den skal bytte
FUNCTION byttPlass(a, i)
    SET temp TO a[i]
    SET a[i] TO a[i+1]
    SET a[i+1] TO temp
ENDFUNCTION

REPEAT
    SET byttet TO FALSE
    SET i TO 0
    FOR hver i LESSER THAN n - 1
        IF a[i] GREATER THAN a[i+1]
            CALL byttPlass(a, i)
            SET byttet TO TRUE
        ENDIF
    ENDFOR
UNTIL byttet EQUAL TO FALSE

DISPLAY a

Forklaring av endringene:

  • Ytre løkke. Den opprinnelige for-løkken er én gjennomgang. Den er lagt inne i en REPEAT … UNTIL-løkke. Vi må alltid gjennom listen minst én gang for å vite om den er sortert, og derfor passer REPEAT … UNTIL, som sjekker betingelsen til slutt. En WHILE byttet EQUAL TO TRUE-løkke virker også hvis byttet settes til TRUE før løkken.
  • Flagget byttet. Det settes til FALSE ved starten av hver gjennomgang og til TRUE hver gang to elementer bytter plass. Er det fortsatt FALSE etter en hel gjennomgang, er listen sortert, og løkken stopper.
  • Funksjonen byttPlass(a, i). Funksjonen må vite hvilken liste og hvilken plass den skal jobbe med. Derfor får den a og i som parametere. Vi trenger en hjelpevariabel temp. Uten den ville vi overskrevet a[i] før verdien var flyttet til a[i+1].

For listen i a) blir gjennomgangene:

GjennomgangListen etterpåbyttet
1[5, 2, 6, 8, 12]TRUE
2[2, 5, 6, 8, 12]TRUE
3[2, 5, 6, 8, 12]FALSE

Etter tredje gjennomgang har det ikke skjedd noen ombytting, så programmet stopper og viser den sorterte listen.

Mulig forbedring: Etter hver gjennomgang står det største av de usorterte tallene på riktig plass bakerst. Den indre løkken kan derfor stoppe ett element tidligere for hver gjennomgang. Det er ikke nødvendig for at algoritmen skal virke.

Forstå oppgaven med en KI

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

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

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

Oppgave 8Godt personvern i finanssektoren i framtiden

Hjelpemiddelkrav: For hånd

Oppgaven bygger på Datatilsynets rapport Personlige finanser – Hvordan utviklingstrekk i finanssektoren påvirker personvernet (pdf) fra forberedelsesdelen.

Hvorfor kan godt personvern bli viktig for finanssektoren i framtiden?

Fasit

Antallet aktører som behandler personopplysninger, vil øke.

LøsningsforslagKI-generert

Ifølge rapporten fra Datatilsynet vil opplysninger om privatøkonomien vår «bli behandlet på nye måter og av langt flere aktører enn i dag». Med betalingstjenestedirektivet PSD2 mister bankene monopolet på kundenes transaksjonsopplysninger. Med samtykke fra kunden kan nye aktører få innsyn i kontoer og transaksjoner. Det er ofte små, nyetablerte selskaper som ikke nødvendigvis har like høye krav til sikkerhet som bankene.

Når informasjon som tidligere ble håndtert av noen få, deles med mange, blir det vanskeligere for kunden å ha oversikt. Risikoen for misbruk og datainnbrudd øker også. Derfor blir godt personvern viktig.

De andre alternativene handler ikke om personvern:

  • Krav om digital tilgang handler om brukervennlighet.
  • Rentenivået handler om økonomi.
  • Sammenslåinger gir færre aktører, ikke flere.

Forstå oppgaven med en KI

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

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

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

Oppgave 9Risikovurdering før samarbeid med IoT-leverandører

Hjelpemiddelkrav: For hånd

Oppgaven bygger på Datatilsynets rapport Personlige finanser – Hvordan utviklingstrekk i finanssektoren påvirker personvernet (pdf) fra forberedelsesdelen.

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

Fasit

For å forsikre seg om at produktene er trygge og overholder personvernregelverket.

LøsningsforslagKI-generert

Forsikringsselskapene samarbeider med produsenter av sensorer i bil, hjem og på kroppen, for eksempel aktivitetsarmbånd, for å kunne prise forsikringen etter hvordan hver enkelt lever. Rapporten fra Datatilsynet peker på at sammenstilling og analyse av slike data kan avsløre nye og sensitive opplysninger som kunden ikke har samtykket til å dele. Risikoen er særlig stor med kroppsnær teknologi. Rapporten konkluderer med at forsikringsselskaper «må derfor gjennomføre gode risikovurderinger før de tar i bruk slike produkter som aktivitetsarmbånd eller tilsvarende».

Forsikringsselskapet er ansvarlig for personopplysningene det behandler, også når dataene samles inn via en samarbeidspartner. En risikovurdering skal avdekke om produktet er sikkert (kryptering, tilgangsstyring, sårbarheter) og om datainnsamlingen oppfyller personvernforordningen (GDPR), for eksempel kravene om dataminimering, formålsbegrensning og gyldig samtykke.

De andre alternativene handler om pris, popularitet og rabatter, ikke om risiko for kundene.

Forstå oppgaven med en KI

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

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

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

Oppgave 10Personverndilemma ved digitalisering av finanssektoren

Oppgaven bygger på Datatilsynets rapport Personlige finanser – Hvordan utviklingstrekk i finanssektoren påvirker personvernet (pdf) fra forberedelsesdelen. Du kan også bruke andre kunnskaper og kilder du har.

Hjelpemiddelkrav: For hånd

Beskriv og forklar en endring i finanssektoren som er forårsaket av utviklingen av informasjonsteknologi.

Hjelpemiddelkrav: For hånd

Drøft et personverndilemma som er skapt av denne endringen.

Fasit

For eksempel åpen bank (PSD2): Med kundens samtykke kan nye aktører (fintech-selskaper) få tilgang til kontoinformasjon og transaksjoner og tilby tjenester som samler kontoer fra flere banker eller setter i gang betalinger. Et annet eksempel er bruksbasert forsikring med sensordata.

Dilemmaet står mellom nyttige, persontilpassede og billigere tjenester på den ene siden og kartlegging, tap av kontroll og økt risiko for misbruk av opplysninger på den andre. En god drøfting tar for seg argumenter på begge sider og ender i en begrunnet konklusjon.

LøsningsforslagKI-generert

Svarene nedenfor er eksempler. Kandidaten kan velge andre endringer, så lenge endringen skyldes informasjonsteknologi og dilemmaet henger sammen med den.

Åpen bank og nye betalingstjenester (PSD2). Tidligere var det bare banken som hadde tilgang til kundens kontoer og transaksjoner. Betalingstjenestedirektivet PSD2 (2018) krever at bankene, når kunden samtykker, åpner for at andre aktører kan hente ut kontoinformasjon og sette i gang betalinger via standardiserte grensesnitt (API-er).

Dette har gitt nye typer tjenester:

  • Kontoinformasjonstjenester samler kontoer fra flere banker i én app, lager budsjett og gir råd om privatøkonomien basert på transaksjonene.
  • Betalingsinitieringstjenester lar en nettbutikk eller en app betale direkte fra kundens konto uten kort.

Endringen skyldes informasjonsteknologi. Smarttelefoner, skytjenester, API-er og dataanalyse gjør det mulig for små teknologiselskaper (fintech) å bygge tjenester «på toppen av» bankenes data og infrastruktur. Konkurransen øker, og kundene har fått raskere og mer brukervennlige tjenester, jf. rapporten fra Datatilsynet.

Andre mulige endringer: forsikring priset etter sensordata fra bil, hjem eller aktivitetsarmbånd, kredittvurdering med kunstig intelligens, og mobilbetaling (Vipps).

Dilemmaet. Når nye aktører får tilgang til transaksjonene våre, får kunden bedre og billigere tjenester, men mister samtidig oversikt og kontroll over hvem som vet hva om privatøkonomien. Begge sider har gode argumenter.

For å dele dataene:

  • Kunden får bedre oversikt over egen økonomi, persontilpassede råd og kan lettere sammenligne og bytte tilbydere.
  • Økt konkurranse gir lavere priser og nye tjenester.
  • Tilgangen krever samtykke, og PSD2 og GDPR stiller krav til sikker identifisering, formålsbegrensning og innsyn. Kunden bestemmer i prinsippet selv.

Mot å dele dataene:

  • Transaksjonene røper svært mye: hvor vi er, hva vi handler, helse (apotek, lege), religion, fagforening og vaner. Ved sammenstilling kan selskapene trekke slutninger som kunden aldri har samtykket til å dele.
  • Informasjon som før lå hos noen få banker, spres til mange små aktører. Hver av dem kan bli en vei inn for kriminelle, og ved en datalekkasje er skaden stor.
  • Samtykket er ofte lite reelt. Mange godtar vilkårene uten å lese dem. Gratis tjenester kan være betalt med data, og det kan bli «bli sporet eller betal»: den som ikke vil dele, får dårligere eller dyrere tilbud.
  • Profilering kan føre til forskjellsbehandling, for eksempel at noen får dårligere lånevilkår basert på handlemønster.

Konklusjon. Åpen bank gir reelle fordeler, og det er ikke ønskelig å stanse utviklingen. Personvernet må likevel ivaretas av aktørene, ikke bare av kunden. Tjenestene bør bare hente de dataene de trenger (dataminimering), være åpne om bruken, gjøre det enkelt å trekke tilbake samtykket og tilby alternativer uten deling. Da kan kunden velge fritt, og tilliten som finanssektoren er avhengig av, blir bevart.

Forstå oppgaven med en KI

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

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

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

Oppgave 11YouTube-kanaler per land

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).

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.

Hjelpemiddelkrav: Krever PC

Lag et program som finner og presenterer de ti landene i datasettet som har flest YouTube-kanaler.

Hjelpemiddelkrav: Krever PC

Utvid programmet til å regne ut og presentere gjennomsnittlig antall abonnenter og videovisninger per kanal for hvert av disse landene.

Forstå oppgaven med en KI

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

Denne oppgaven har ikke løsningsforslag ennå, så chatboten må regne den ut selv. Da kan den ta feil — sjekk svaret nøye.

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

Oppgave 12Spillet Manic Mansion

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

Hjelpemiddelkrav: For hånd

Forklar modellen.

Hjelpemiddelkrav: Krever PC

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.

Fasit

Abstrakt superklasse SpillObjekt med posisjon og metodene plassering og flytt. Fire subklasser arver fra den: Menneske, Spøkelse, Hindring og Sau. Spillebrett har størrelse og en liste med spillobjekter (komposisjon) og metoder for å legge til og fjerne objekter.

LøsningsforslagKI-generert

Oversikt. Modellen er et UML-klassediagram med seks klasser. Hver boks har tre felt: klassenavnet, egenskapene (attributter med datatype) og metodene (med parametertyper).

Arv. SpillObjekt er superklassen. Navnet er skrevet i kursiv, som betyr at klassen er abstrakt. Det skal ikke lages objekter av selve SpillObjekt, bare av subklassene. Pilene med hul trekant peker fra Menneske, Spøkelse, Hindring og Sau til SpillObjekt. Det betyr at de fire klassene arver fra superklassen. Alle spillobjektene får dermed egenskapene xPosisjon og yPosisjon og metodene plassering(int, int) og flytt(int, int). Felles kode skrives én gang, og brettet kan behandle alle objektene likt.

Komposisjon. Linjen mellom SpillObjekt og Spillebrett har en fylt rombe ved Spillebrett og teksten «inneholder». Det er komposisjon: spillebrettet består av spillobjekter. Objektene lever bare så lenge brettet finnes. Spillebrett har egenskapene høyde, bredde og objekter (en liste med SpillObjekt). Metodene leggTilObjekt og fjernObjekt legger til nye objekter (ny sau, nytt spøkelse og ny hindring etter poeng) og fjerner objekter (sau som blir hentet).

Subklassene:

  • Menneske har fart, poeng og bærerSau. Metodene er beveg(int, retning) for styring med piltastene, reduserFart og økPoeng, bærSau(Sau) når mennesket henter en sau, og sjekkKollisjon() som finner ut om mennesket treffer en hindring, en sau, et spøkelse eller kanten.
  • Spøkelse har endreRetning(), som brukes når spøkelset treffer kanten av brettet eller en frisone.
  • Hindring har ingen egne egenskaper. Den står stille.
  • Sau har blirBåret og metodene blirLøftet() og fjernSau().

Polymorfi. plassering(int, int) står i superklassen og igjen i alle subklassene. Det betyr at subklassene overstyrer metoden. Reglene for startplassering er ulike: mennesket i venstre frisone, sauene tilfeldig i høyre frisone, og spøkelser og hindringer tilfeldig utenfor frisonene.

Svakheter som kan rettes i b). Spøkelse mangler egenskaper for fart og retning (for eksempel dx og dy), selv om spøkelset beveger seg med konstant fart på skrå. sjekkKollisjon() kunne ligget i SpillObjekt, siden kollisjonstesten er den samme for alle objekter. Sau har både blirBåret og Menneske.bærerSau, så den samme informasjonen lagres to steder. Modellen har heller ingen klasse eller metode som styrer selve spillet (spill-løkke, tastetrykk, poengvisning og avslutning).

Forstå oppgaven med en KI

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

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

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

Tastatursnarveier

Navigasjon

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

I oppgave

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