Eksamensoppgavene er utgitt av Utdanningsdirektoratet. Første nedlasting kjører en bot-sjekk i nettleseren (Vercel BotID) — mer i personvernerklæringen.
5 timer — alle hjelpemidler9 oppgaver · 60 poeng
Oppgave 1·TrommeLom-funksjon i pseudokode
Hjelpemiddelkrav: For hånd
Ta utgangspunkt i følgende pseudokode:
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 resultatENDFUNCTIONDISPLAY sjekkTall(6)
Hva vil bli vist som resultat av programmet pseudokoden over beskriver?
Fasit
1 Tromm Lom Tromm 5 TrommeLom
LøsningsforslagKI-generert
Løkken går gjennom tallene fra 1 til og med 6. For hvert tall sjekker funksjonen betingelsene i rekkefølge, og bare den første som er sann, blir brukt:
i
Delelig med 2?
Delelig med 3?
Legges til
1
nei
nei
1
2
ja
nei
Tromm
3
nei
ja
Lom
4
ja
nei
Tromm
5
nei
nei
5
6
ja
ja
TrommeLom
Programmet viser derfor «1 Tromm Lom Tromm 5 TrommeLom».
Rekkefølgen på testene er viktig. Tallet 6 er delelig med både 2 og 3, og den første testen (i % 2 EQUAL TO 0 AND i % 3 EQUAL TO 0) fanger det opp før de to andre. Hadde testen for delelighet med 2 stått først, ville 6 gitt «Tromm».
De andre alternativene er feil:
«1 2 3 4 5 6» får vi bare hvis ingen av betingelsene slår til.
«1 TrommeLom 3 Tromm 5 Lom» og «1 Tromm 3 TrommeLom 5 Tromm» plasserer ordene på tall som ikke har de riktige faktorene. For eksempel er verken 2 eller 4 delelige med 3, så de kan ikke gi «TrommeLom».
Sensorveiledning
Oppgaven gir til sammen 1,5 poeng
1 Tromm Lom Tromm 5 TrommeLom vurderes som riktig.
Oppgave 2·Relasjon når objekter bare finnes inne i en annen klasse
Hjelpemiddelkrav: For hånd
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.
Fasit
Komposisjon: delobjektene hører til helheten og kan ikke eksistere uten den.
LøsningsforslagKI-generert
Komposisjon er en sterk «har»-relasjon mellom en helhet og delene den består av. Delobjektene lages og brukes inne i helhetsobjektet, og de slutter å eksistere når helheten blir borte. Et eksempel er et hus og rommene i huset. I et UML-klassediagram tegnes komposisjon med en fylt rombe ved helhetsklassen.
De andre alternativene passer ikke:
Assosiasjon er en løsere kobling der objektene kjenner til hverandre, men lever uavhengig av hverandre, for eksempel en elev og en lærer.
Generalisering er arv, en «er en»-relasjon mellom en subklasse og en superklasse.
Avhengighet betyr at en klasse bruker en annen midlertidig, for eksempel som parameter i en metode, uten å ta vare på objektet.
Oppgave 3·OOP-prinsipp for metoder med samme navn i superklasse og subklasser
Hjelpemiddelkrav: For hånd
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.
Fasit
Polymorfisme.
LøsningsforslagKI-generert
Polymorfisme betyr «mange former». Når en subklasse har en metode med samme navn som i superklassen, overstyrer den superklassens versjon. Programmet kan kalle metoden på et objekt uten å vite hvilken subklasse objektet tilhører, og det er alltid versjonen i objektets egen klasse som blir kjørt.
Et eksempel: Superklassen Dyr har metoden lagLyd(), og subklassene Hund og Katt har hver sin versjon. Går vi gjennom en liste med dyr og kaller lagLyd() på hvert av dem, bjeffer hundene og mjauer kattene.
De andre alternativene:
Arv er det som lar subklassene få egenskapene og metodene fra superklassen. Arv er en forutsetning for situasjonen i oppgaven, men det er polymorfisme som sørger for at riktig variant av metoden blir kalt.
Abstraksjon handler om å beskrive hva et objekt gjør, uten å vise hvordan det er implementert.
Innkapsling handler om å samle data og metoder i et objekt og skjule de interne dataene for resten av programmet.
Oppgave 4·OOP-prinsipp for å skille grensesnitt og interne detaljer
Hjelpemiddelkrav: For hånd
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.
Fasit
Abstraksjon.
LøsningsforslagKI-generert
Abstraksjon betyr å trekke fram det som er vesentlig ved et objekt og se bort fra detaljene. Objektet beskrives ut mot resten av programmet gjennom grensesnittet sitt, altså hvilke metoder det har og hva de gjør. Hvordan metodene er programmert, er en intern detalj. Resten av programmet trenger bare å vite hva objektet kan gjøre, ikke hvordan det gjøres. Det er dette skillet mellom grensesnitt og interne detaljer oppgaven spør etter, og UDIRs fasit er derfor abstraksjon.
Innkapsling ligger svært nær. Innkapsling er å samle data og metoder i objektet og skjule de interne dataene, for eksempel med private egenskaper som bare kan endres via metoder. Første setning i oppgaveteksten («samle og skjule implementasjon inne i objekter») beskriver innkapsling. Man kan si at innkapsling er mekanismen som skjuler detaljene, mens abstraksjon er prinsippet om å vise fram et forenklet grensesnitt. Spørsmålet gjelder selve skillet mellom grensesnitt og interne detaljer, og da er abstraksjon det beste svaret.
De to andre alternativene passer ikke:
Polymorfisme er at metoder med samme navn kan ha ulik oppførsel i ulike klasser.
Arv er at en subklasse får egenskapene og metodene til en superklasse.
Pseudokoden nedenfor beskriver en algoritme som behandler en tekst basert på et tall:
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 nyTekstENDFUNCTIONFUNCTION 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 alfabetENDFUNCTION
a)Hjelpemiddelkrav: For hånd
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)Hjelpemiddelkrav: Krever PC
Implementer algoritmen i eget programmeringsspråk. Programmet skal ta inn en tekststreng og et heltall , for eksempel «Hei på deg» og tallet , og vise passende resultat.
Fasit
a)
Algoritmen krypterer teksten med et Cæsar-chiffer. Den går gjennom teksten tegn for tegn og bytter hver bokstav med bokstaven plasser lenger ut i alfabetet a–å. Når alfabetet tar slutt, begynner det på nytt fra a. Mellomrom, tall og andre tegn beholdes uendret. «Hei på deg» med gir «khl sc ghj».
LøsningsforslagKI-generert
a)
Algoritmen er et Cæsar-chiffer, en enkel form for kryptering der alle bokstavene i teksten forskyves like mange plasser i alfabetet.
Teksten gås gjennom tegn for tegn. For hvert tegn bygges en ny tekst opp fra starten av.
Bokstaver forskyves. Hver bokstav byttes ut med bokstaven som står plasser lenger ut i alfabetet. Alfabetet har 29 bokstaver, fra a til å. Med blir a til d og e til h.
Alfabetet er sirkulært. Restdivisjonen % 29 gjør at telleren begynner på nytt fra a når den kommer forbi å. Med blir æ til a, ø til b og å til c.
Andre tegn endres ikke. Mellomrom, tall og skilletegn legges til den nye teksten slik de er.
Resultatet er en kryptert tekst som er like lang som den opprinnelige, med mellomrom og tegnsetting på samme plass. Den som kjenner , kan dekryptere teksten ved å forskyve plasser tilbake, altså med .
For «Hei på deg» og blir resultatet:
Bokstav
H
e
i
p
å
d
e
g
Posisjon
36
4
8
15
28
3
4
6
Ny posisjon
10
7
11
18
2
6
7
9
Ny bokstav
k
h
l
s
c
g
h
j
Posisjonene regnes fra 0. De to mellomrommene beholdes. Teksten blir «khl sc ghj».
Merk: Store bokstaver står på plass 29–57 i alfabet-strengen. Siden den nye posisjonen regnes ut med % 29, havner den alltid blant de små bokstavene. Algoritmen slik den står, gjør derfor store bokstaver om til små, og «H» blir «k». Skal store bokstaver forbli store, må algoritmen regne med et eget alfabet for store bokstaver.
Sensorveiledning
Oppgaven gir til sammen 6 poeng
a)3p3 poeng
Det kreves forklaring av algoritmen, mens forklaring av pseudokoden gir som hovedregel ikke uttelling. Det gis uttelling for at strengen traverseres, at alle bokstaver forskyves med n plasser i alfabetet og at andre teksttegn ikke [endres].
b)3p3 poeng
Det gis uttelling for implementert program med korrekt kontrollstruktur, forskyvning av teksttegn og korrekt retur.
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)Hjelpemiddelkrav: For hånd
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)Hjelpemiddelkrav: Krever PC
Med utgangspunkt i klassediagrammet du laget i oppgave a: Implementer klassene Bok og Låner i ditt programmeringsspråk.
c)Hjelpemiddelkrav: Krever PC
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)Hjelpemiddelkrav: Krever PC
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.
Fasit
a)
Klassediagram med Bok (tittel, forfatter, utlånt / visInfo) og Låner (lånerID, lånteBøker / lånBok, leverTilbakeBok). Relasjonen er en toveis assosiasjon: en låner kan ha 0..* bøker, og en bok er lånt ut til 0..1 låner. Det er ikke komposisjon, fordi bøkene finnes uavhengig av låneren.
LøsningsforslagKI-generert
a)
Klassene. Hver klasse tegnes som en boks med tre felt: klassenavnet, egenskapene med datatype og metodene med parametertype. Egenskapene er merket - (private), slik at de bare kan endres gjennom metodene. Metodene er merket + (offentlige).
Bok har tittel og forfatter av typen string og utlånt, som er en referanse til den låneren som har boken, eller ingenting hvis boken er ledig. Metoden visInfo() viser tittel, forfatter og om boken er utlånt.
Låner har lånerID av typen int og lånteBøker, som er en liste med referanser til Bok-objekter. Metoden lånBok(Bok) legger boken i lista og setter utlånt på boken til låneren. leverTilbakeBok(Bok) fjerner boken fra lista og setter utlånt tilbake til ingenting.
Relasjonen. Klassene er knyttet sammen med en assosiasjon, tegnet som en heltrukket linje mellom boksene. Assosiasjonen går begge veier: Låner kjenner til bøkene sine gjennom lånteBøker, og Bok kjenner til låneren sin gjennom utlånt. Derfor har linjen ingen pilspiss.
Multiplisiteten står ved hver ende av linjen:
0..* ved Bok: en låner kan ha lånt ingen, én eller mange bøker.
0..1 ved Låner: en bok er enten ledig eller lånt ut til nøyaktig én låner.
Hvorfor ikke komposisjon eller arv? Komposisjon ville betydd at bøkene bare finnes inne i låneren og forsvinner sammen med den. Slik er det ikke. En bok finnes i biblioteket før den lånes ut og etter at den er levert tilbake, og den kan lånes av mange lånere etter hverandre. Arv passer heller ikke, fordi en bok ikke er en spesiell type låner eller omvendt. Aggregering (hul rombe ved Låner) kan forsvares, siden låneren «har» bøker som lever uavhengig av den. Men relasjonen er midlertidig og gjelder bare så lenge boken er utlånt, så en vanlig assosiasjon beskriver den best.
Sensorveiledning
Oppgaven gir til sammen 12 poeng
a)3p3 poeng
Det gis uttelling for klassene, egenskaper og metoder, riktig forklart relasjon og riktig tegnet relasjon.
b)3p3 poeng
Det gis uttelling for implementerte klasser med riktig konstruksjon/instansiering/initialisering, egenskaper og metoder.
c)3p3 poeng
Det gis uttelling for hvert av de tre punktene som skal testes.
d)3p3 poeng
Det gis uttelling for håndtering av feil og unntak i inntil tre nivåer etter sensors skjønn.
Oppgave 7·Etiske dilemmaer ved VR-behandling av sosial angst
Hjelpemiddelkrav: For hånd
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.
Fasit
Drøftingsoppgave. Et godt svar beskriver to dilemmaer, for eksempel personvern og behandlingsdata på den ene siden og nytten av data til forskning og bedre behandling på den andre, og mestring i et trygt VR-miljø på den ene siden og fare for at VR blir en fluktvei som hindrer overføring til virkelige situasjoner på den andre. Svaret drøfter argumenter på begge sider og ender i en begrunnet konklusjon.
LøsningsforslagKI-generert
Svaret nedenfor er et eksempel. Kandidaten kan velge andre dilemmaer, for eksempel om tidlig innsats eller om samtykke fra foreldre, så lenge dilemmaene knyttes til Emmas situasjon og drøftes med argumenter på begge sider.
Innledning. VR-behandling av sosial angst er en form for eksponeringsterapi. Emma øver i et virtuelt klasserom der vanskelighetsgraden kan styres, og der det ikke får konsekvenser om noe går galt. Teknologien kan hjelpe mange ungdommer, men den reiser også etiske spørsmål. Jeg drøfter to dilemmaer: personvern og innsamling av data om Emma, og faren for at VR-treningen ikke blir overført til virkeligheten.
Dilemma 1: Personvern og data om Emma
VR-briller registrerer mye mer enn det brukeren sier. De kan samle inn stemmeopptak, hode- og øyebevegelser, hvor lenge Emma ser på publikum, og ofte pulsdata. Sammen med opplysningen om at Emma har sosial angst er dette helseopplysninger, som er en særlig kategori personopplysninger etter GDPR og krever ekstra vern.
For å samle inn og bruke dataene:
Dataene kan gjøre behandlingen bedre. Behandleren kan se hvor Emma blir urolig, og tilpasse øvelsene til henne.
Prosjektet er et forskningsprosjekt. Data fra mange deltakere er nødvendig for å vite om metoden virker. Det kan komme mange ungdommer til gode senere.
Behandlingen foregår på et sykehus, som har taushetsplikt og strenge rutiner for helseopplysninger.
Mot, eller for strenge grenser:
Emma er 16 år, og data om psykisk helse er svært sensitive. En lekkasje kan få store følger for henne, for eksempel mobbing eller at opplysningene dukker opp senere i livet.
VR-utstyr og programvare er ofte laget av kommersielle selskaper. Det er ikke sikkert Emma vet om data sendes til utlandet eller brukes til andre formål enn behandlingen.
Samtykket kan være lite reelt. En ungdom som ønsker hjelp, kan føle at hun må godta alt for å få være med. Etter norsk lov kan ungdom over 16 år som regel samtykke selv til helsehjelp, men hun må forstå hva hun samtykker til.
Vurdering: Dataene er nyttige, men prinsippene i GDPR må følges. Prosjektet bør bare samle inn det som trengs for behandlingen og forskningen (dataminimering), bare bruke dataene til det formålet Emma har fått vite om (formålsbegrensning), lagre dem sikkert og anonymisere dem i forskningen. Emma må få forklart dette på en måte hun forstår, og hun må kunne trekke seg uten at det går ut over behandlingen.
Dilemma 2: Trygg øving eller en ny fluktvei?
Emma føler seg tryggere i det virtuelle klasserommet, men er usikker på hvordan det går foran en ekte klasse. Det viser kjernen i dilemmaet.
For VR-behandling:
Mestring i trinn er en kjent behandlingsmetode for angst. VR gjør det mulig å starte med en rolig klasse og øke vanskelighetsgraden gradvis.
Emma kan øve mange ganger uten at klassekameratene ser det. Det kan gi mestringsfølelse og selvtillit som hun tar med seg.
Tidlig innsats er viktig. Sosial angst rammer ofte først i 14–16-årsalderen og kan bli kronisk. Et tilbud som ungdom synes er spennende og lite skremmende, kan gjøre at flere får hjelp tidlig.
Mot, eller risiko:
Et virtuelt publikum reagerer ikke som ekte mennesker. Hvis treningen ikke overføres til virkeligheten, har Emma lært å mestre VR, ikke klasserommet.
Emma kan bli avhengig av teknologien og velge den trygge virtuelle verdenen framfor de virkelige situasjonene hun egentlig er redd for. Da kan VR forsterke unngåelsen, som er selve problemet ved angst.
Emma er i en viktig utviklingsfase. Tid i VR går på bekostning av tid med ekte mennesker, og den langsiktige effekten av VR på ungdommers utvikling er lite kjent. Metoden er fortsatt under utprøving.
Vurdering: VR bør være et hjelpemiddel i en større behandling, ikke erstatte den. Øvelsene i VR må følges opp med gradvis trening i virkelige situasjoner, for eksempel å snakke foran én venn, så en liten gruppe og til slutt klassen. En behandler bør følge Emma tett og avslutte VR-bruken når den ikke lenger gir framgang.
Konklusjon. Begge dilemmaene handler om å veie nytten for Emma og for andre ungdommer mot risikoen for at hun blir skadet. Ut fra et konsekvensetisk syn er VR-behandling forsvarlig hvis fordelene er større enn ulempene. Da kreves det at personopplysningene hennes er godt beskyttet, og at treningen fører til mestring i virkeligheten. Ut fra et pliktetisk syn må Emma behandles som et mål i seg selv og ikke bare som en kilde til forskningsdata. Hun må gi et informert samtykke og ha rett til å trekke seg. Jeg mener derfor at prosjektet er etisk forsvarlig, men bare med strenge regler for data og med VR som et første steg på veien mot virkelige situasjoner.
Sensorveiledning
Oppgaven gir til sammen 6 poeng
Vurderingsmatrisen for samfunn og systemer brukes direkte, med 2p for kar. 2, 4p for kar. 4 og 6p for kar. 6.
Oppgave 8·Deltakelse i friluftsaktiviteter per fylke
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).
OBS! I innleveringsmappen må du huske å legge inn vedlegget sammen med programmet, slik at det fungerer når sensor skal kjøre det.
a)Hjelpemiddelkrav: Krever PC
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)Hjelpemiddelkrav: Krever PC
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)Hjelpemiddelkrav: Krever PC
Utvid programmet slik at det kan finne de tre mest populære aktivitetene for et valgt fylke og presentere dem i et stolpediagram.
Sensorveiledning
Oppgaven gir til sammen 12 poeng
Vedleggene som ble gitt til oppgave 8, inneholdt utilsiktede feil, og det har gjort oppgaven vanskeligere å løse enn tenkt. Dette gjelder spesielt for vedlegget i JSON-format. Sensorene skal hensynta dette i sensuren og gi uttelling etter skjønn.
a)4p4 poeng
Det gis uttelling for innlesing av datasettet til en egnet datastruktur, hensiktsmessig traversering av strukturen og utregning av antall personer i hver aktivitet, og for presentasjon.
b)4p4 poeng
Det gis uttelling for implementert filter på fylke, visning av aktivitetene i det valgte fylket og for visning av antall og prosentandel.
c)4p4 poeng
Det gis uttelling for utregning av aktivitetene i det valgte fylket, utvelgelse av de tre mest populære aktivitetene og for visning i stolpediagram. Andre hensiktsmessige visninger gir også uttelling etter sensors skjønn.
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 …
… lynet slår ned og ett tre begynner å brenne …
… og skogbrannen brer seg til de omkringliggende trærne (utsnitt).
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.
Sensorveiledning
Oppgaven gir til sammen 18 poeng
Klasser (6 poeng): Det gis uttelling for å implementere klasser som er egnet til å løse oppgaven ved å representere et rutenett, tomme celler, trær og trær i brann.
Simulering (6 poeng): Det gis uttelling for å implementere en simulering med vekst av trær, lynnedslag som antenner trær og påfølgende stans i trevekst mens det er brann.
Brann (6 poeng): Det gis uttelling for å implementere spredning av brannen, fjerning av utbrente trær og igjen vekst av trær når brannen har brent ut.