Bokstavforskyvning i pseudokode
Lov på eksamen
- Datamaskin med programmeringsverktøy
- Lærebok, dokumentasjon og egne notater og programmer
Ikke åpent internett (bare noen utvalgte nettressurser), kommunikasjon med andre eller kunstig intelligens.
Kan den løses uten PC?
1 av 2 deloppgaver kan løses uten PC.
Fra 2027 er det bare kalkulator og skriftlige hjelpemidler på del 2. Vurderingen er gjort med KI og kan inneholde feil.
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 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
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.
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
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
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
% 29gjø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
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].
Det gis uttelling for implementert program med korrekt kontrollstruktur, forskyvning av teksttegn og korrekt retur.