Eksamensoppgavene er utgitt av Utdanningsdirektoratet. Første nedlasting kjører en bot-sjekk i nettleseren (Vercel BotID) — mer i personvernerklæringen.
5 timer — alle hjelpemidler8 oppgaver
Oppgave 1·Hovedformålet med en konstruktør
Hjelpemiddelkrav: For hånd
Hva er hovedformålet med en konstruktør (constructor) i objektorientert programmering?
Fasit
Å sette startverdier for objektets attributter når det opprettes.
LøsningsforslagKI-generert
Konstruktøren er en spesiell metode som kjøres automatisk når vi lager et nytt objekt av en klasse. Den tar vanligvis imot verdier som parametere og gir objektets egenskaper (attributter) startverdier. I Python er konstruktøren __init__, og Elev("Noah", 15) lager et objekt der navn og alder får verdier med en gang. Da er objektet i en gyldig tilstand fra starten av.
De andre alternativene er gale:
Metodene et objekt kan bruke, defineres i klassen, ikke i konstruktøren.
Nye klasser basert på eksisterende klasser lager vi med arv.
Hvordan objektene kommuniserer, bestemmes av metodene og av hvordan objektene kaller hverandres metoder.
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.
Figur 1: Klassediagram for transportsystemet
Hvilket utsagn beskriver best hvordan arv fungerer i dette tilfellet?
Fasit
Klassene Bil og Buss arver attributter og metoder fra klassen Kjøretøy og kan i tillegg ha egne.
LøsningsforslagKI-generert
Pilene med hul trekant i klassediagrammet går fra Bil og Buss til Kjøretøy. Det betyr arv: Kjøretøy er superklassen, og Bil og Buss er subklasser. En bil er et kjøretøy, og det samme er en buss. Subklassene får automatisk alle attributtene og metodene til Kjøretøy, for eksempel et registreringsnummer og en metode for å kjøre hvis Kjøretøy har det. Diagrammet viser bare klassenavnene, men attributtene og metodene som oppgaveteksten nevner, ligger i Kjøretøy. I tillegg kan de legge til egne attributter og metoder, som antall sitteplasser for bussen, eller overstyre metoder de har arvet.
De andre utsagnene er gale:
Arven går bare én vei. Superklassen Kjøretøy vet ingenting om det som er definert i Bil og Buss.
Bil og Buss er ikke uavhengige, arvepilene knytter dem direkte til Kjøretøy.
Det opprettes ikke et eget Kjøretøy-objekt. Et Bil-objekt er ett objekt som har både de arvede og de egne egenskapene.
Oppgave 3·Sortere pseudokode som teller tall større enn 10
Hjelpemiddelkrav: For hånd
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.
Sorter linjene
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
Fasit
SET i TO 1SET antall TO 0WHILE i <= 5READ tallIF tall > 10SET antall TO antall + 1ENDIFSET i TO i + 1ENDWHILEDISPLAY antall
De to første linjene kan bytte plass, og SET i TO i + 1 kan stå hvor som helst i løkka utenfor IF-blokken.
LøsningsforslagKI-generert
Programmet trenger to variabler: en teller i som styrer hvor mange tall som leses inn, og antall som teller tallene som er større enn 10. Begge må få startverdi før løkka, ellers har de ingen verdi første gang de brukes. Derfor kommer SET i TO 1 og SET antall TO 0 først, i valgfri rekkefølge.
WHILE i <= 5 gjentar løkka så lenge i er 1, 2, 3, 4 eller 5, altså fem ganger. Inne i løkka skjer tre ting:
READ tall leser inn et nytt tall.
IF tall > 10 sjekker tallet. Bare når det er større enn 10, øker antall med 1. ENDIF avslutter testen.
SET i TO i + 1 øker telleren, slik at løkka stopper etter fem runder.
READ tall må stå før IF-testen, siden testen bruker tallet som akkurat er lest inn. SET i TO i + 1 må stå inne i løkka, men utenfor IF-blokken. Står den inne i IF-blokken, øker telleren bare når tallet er større enn 10, og programmet leser inn flere enn fem tall. Står den etter ENDWHILE, stopper løkka aldri.
DISPLAY antall står til slutt, etter ENDWHILE, slik at svaret skrives ut én gang når alle fem tallene er sjekket.
Med tallene 4, 12, 10, 25 og 11 blir det slik:
i
tall
tall > 10?
antall etterpå
1
4
nei
0
2
12
ja
1
3
10
nei
1
4
25
ja
2
5
11
ja
3
Etter femte runde er i lik 6, løkka stopper, og programmet skriver ut 3. Legg merke til at 10 ikke telles, siden testen er «større enn», ikke «større enn eller lik».
Oppgave 4·Flytskjema og pseudokode for sum av partall
Nedenfor ser du et flytskjema som beskriver en algoritme, og tre sekvenser med pseudokode.
Du skal svare på begge oppgavene.
Flytskjema
Pseudokode 1
SET sum TO 0READ tallIF 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 sumENDIF
Pseudokode 2
SET sum TO 0READ tallIF 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 sumENDIF
Pseudokode 3
SET sum TO 0READ tallIF 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 sumENDIF
a)Hjelpemiddelkrav: For hånd
Hvilken sekvens med pseudokode beskriver den samme algoritmen som flytskjemaet?
b)Hjelpemiddelkrav: For hånd
Forklar med egne ord hva algoritmen gjør, basert på flytskjemaet ovenfor.
Fasit
a)
Pseudokode 3
b)
Algoritmen leser inn et tall. Er tallet mindre enn 1, skriver den ut «Ugyldig». Ellers legger den sammen alle partall fra 1 til og med tallet og skriver ut summen, for eksempel 2 + 4 + 6 = 12 for tallet 6.
LøsningsforslagKI-generert
a)
Vi følger flytskjemaet steg for steg og sammenligner med de tre sekvensene. Alle tre starter likt: sum settes til 0, tallet leses inn, og tall mindre enn 1 gir «Ugyldig». Forskjellen ligger i løkka.
I flytskjemaet
starter n på 1
sjekker løkka n <= tall
legges n til summen bare hvis n er et partall
øker n med 1 i hver runde, uansett om n var partall eller ikke
Startverdi
Test inne i løkka
Økning
Flytskjemaet
n = 1
er n et partall?
1
Pseudokode 1
n = 2
ingen test
2
Pseudokode 2
n = 1
n % 2 NOT EQUAL TO 0 (oddetall)
1
Pseudokode 3
n = 1
n % 2 EQUAL TO 0 (partall)
1
n % 2 er resten når n deles på 2. Resten er 0 for partall og 1 for oddetall.
Pseudokode 3 har samme startverdi, samme partallstest og samme økning som flytskjemaet. Den beskriver den samme algoritmen.
Pseudokode 2 tester om resten er forskjellig fra 0. Da legges oddetallene sammen i stedet. Med tall = 6 gir den , mens flytskjemaet gir 12.
Pseudokode 1 gir faktisk samme resultat som flytskjemaet for alle tall, for eksempel når tall = 6. Men den løser oppgaven på en annen måte: Den starter på 2, hopper to om gangen og trenger ingen partallstest. Flytskjemaet går gjennom alle tallene 1, 2, 3, … og tester hvert av dem. Pseudokode 1 er derfor en annen (og mer effektiv) algoritme for det samme problemet.
Svaret er pseudokode 3.
b)
Algoritmen leser inn et tall. Er tallet mindre enn 1, skriver den ut «Ugyldig» og stopper. Ellers går den gjennom alle hele tall fra 1 opp til og med tallet, legger sammen de som er partall, og skriver ut summen.
Med tall = 7 blir det slik:
n
Partall?
sum etterpå
1
nei
0
2
ja
2
3
nei
2
4
ja
6
5
nei
6
6
ja
12
7
nei
12
Når n blir 8, er n <= tall usann. Løkka stopper, og algoritmen skriver ut 12. Er tallet 1, blir det ingen partall å legge sammen, og utskriften blir 0.
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.
Figur 1: Klassediagram for Togsett og Lokomotiva)Hjelpemiddelkrav: Krever PC
Implementer klassene Togsett og Lokomotiv i samsvar med klassediagrammet i figur 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)Hjelpemiddelkrav: Krever PC
Implementer et program som bruker klassene Togsett og Lokomotiv og
oppretter et togsett
skriver ut informasjon om lokomotivet
Figur 2: Klassediagram for Togdel, Togsett, Vogn og Lokomotivc)Hjelpemiddelkrav: Krever PC
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 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)Hjelpemiddelkrav: Krever PC
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
Oppgave 6·Etisk dilemma ved kameraovervåking i skolen
Hjelpemiddelkrav: For hånd
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.
Fasit
Dilemmaet står mellom målet om et tryggere skolemiljø med mindre konflikter og hærverk på den ene siden og elevenes personvern, frihet og trygghet i læringssituasjonen på den andre. En god drøfting får fram argumenter på begge sider, bruker fagbegreper som personopplysninger, formål, proporsjonalitet, dataminimering og samtykke, og ender i en begrunnet konklusjon.
LøsningsforslagKI-generert
Svaret nedenfor er et eksempel. Kandidaten kan vinkle dilemmaet på andre måter, for eksempel mot lærernes personvern eller mot teknologibedriftens bruk av dataene, så lenge begge sider drøftes og konklusjonen er begrunnet.
Dilemmaet. Skolen vil gjøre skolehverdagen bedre og tryggere. Kameraene kan gi kunnskap om arbeidsro og konflikter og kanskje forebygge bråk og hærverk. Samtidig blir Noah og de andre elevene filmet gjennom hele skoledagen. Dilemmaet er om nytten av overvåkingen er stor nok til å forsvare inngrepet i personvernet og friheten til elevene, og om kameraene i klasserommet kan skade det de er ment å forbedre.
Argumenter for kameraovervåking
Skolen har plikt til å sørge for et trygt og godt skolemiljø. Kan kameraene i kantina avdekke eller forebygge slåsskamper, mobbing og hærverk, beskytter de elevene.
Opptak kan gi et mer objektivt bilde av hva som skjedde i en konflikt, i stedet for ord mot ord.
Et forskningsprosjekt kan gi ny kunnskap om læringsmiljø og undervisning som kommer mange skoler til gode. Prosjektet er avgrenset til seks måneder.
Fra et konsekvensetisk perspektiv kan tiltaket forsvares hvis de samlede fordelene for elevene er større enn ulempene.
Argumenter mot kameraovervåking
Opptakene er personopplysninger: elevene kan kjennes igjen på bildene. Når en teknologibedrift analyserer ansikter, bevegelser og atferd, kan det også bli behandlet særlig sensitive opplysninger, for eksempel biometriske data eller opplysninger om helse og trivsel. Elevene er mindreårige, og barn har etter GDPR krav på særlig beskyttelse.
Overvåking endrer hvordan vi oppfører oss. Noah blir usikker når han spør om hjelp. Elever som vet at de blir filmet, tør kanskje ikke å prøve og feile, stille «dumme» spørsmål eller si hva de mener. Kameraene i klasserommet kan dermed svekke læringsmiljøet, det motsatte av formålet.
Samtykke er vanskelig i en skole. Elevene har møteplikt og står i et avhengighetsforhold til skolen. Et samtykke er da ikke helt frivillig, og den som sier nei, kan føle seg presset eller utpekt.
Proporsjonalitet og dataminimering: GDPR krever at man ikke samler inn mer enn nødvendig for formålet. Det er vanskelig å forsvare at hele undervisningen filmes, når arbeidsro og samarbeid kan undersøkes med observasjon, spørreundersøkelser eller elevsamtaler. Datatilsynet har uttalt at kameraovervåking av skoler i skoletiden som hovedregel ikke er tillatt.
Formålsbegrensning og tillit: En privat bedrift får tilgang til store mengder data om elever. Det er fare for at opptakene brukes til andre formål enn det som ble lovet, for eksempel til å vurdere enkeltelever eller lærere eller til å trene bedriftens egne analyseverktøy. Opptakene kan også lekke.
Fra et pliktetisk perspektiv har hver elev rett til privatliv og til å bli behandlet som et menneske, ikke som et objekt for måling. Den retten gjelder selv om tiltaket skulle gi gode resultater i gjennomsnitt.
Konklusjon. Kameraer i kantina er lettere å forsvare enn kameraer i klasserommet. Kantina er et felles rom der konflikter og hærverk faktisk skjer, og et kamera der kan ha et konkret og avgrenset formål. Klasserommet er derimot et sted der elevene skal kunne være usikre og gjøre feil, og kontinuerlig filming der griper sterkt inn i personvernet og kan skade læringen. Etter min vurdering bør skolen ikke filme undervisningen, men heller bruke mindre inngripende metoder for å undersøke læringsmiljøet. Hvis kameraer brukes i kantina, må det være et klart formål, tydelig merking, informasjon til elever og foresatte, kort lagringstid, streng tilgangsstyring og en databehandleravtale som hindrer at bedriften bruker opptakene til noe annet. Bare da er det mulig å ivareta både tryggheten og personvernet til Noah og de andre elevene.
Oppgave 7·Registrerte kjøretøy og elbilandel per region
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). Filene er kodet med tegnsettet UTF-8.
a)Hjelpemiddelkrav: Krever PC
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)Hjelpemiddelkrav: Krever PC
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)Hjelpemiddelkrav: Krever PC
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.
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.
Figur 1: Her er spillet kort tid etter oppstart. Det har kommet tre stolpedeler, men ingen har falt helt ned til stolpebyggeren ennå.
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.
Figur 2: Her har stolpebyggeren fanget tre stolpedeler uten å miste noen liv, men er nær å fange en del av feil farge.Figur 3: Stolpebyggeren har fanget seks stolpedeler, men en av dem var av feil farge og har kostet ham et liv.
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.