Hopp til innhald

Fagstoff

Algoritmar

Kva er ein algoritme, og korleis lagar vi presise instruksjonar?

Innleiing

Papirlappar i ulike former og fargar med piler mellom. Foto.
Opne bilete i eit nytt vindauge

Du har lyst på ei brødskive med smør og tre brunostskiver. Du har ein ven som du vil be om å ordne brødskiva for deg.

Venen din er litt spesiell. Han gjer berre akkurat det du ber han om og absolutt ingenting anna. Venen veit godt korleis ein bruker ein ostehøvel og ein kniv, men han veit ikkje kva det betyr å lage ei brødskive med smør og tre brunostskiver. Det nyttar derfor ikkje å gi han denne instruksjonen: "Lag ei brødskive med smør og tre skiver med brunost."

Venen må ha heilt presise instruksjonar om korleis han skal gå fram for å lage brødskivene. Instruksjonane må kome i rett rekkjefølgje. Først må du beskrive oppgåva/problemet.

Beskriving av oppgåva

På eit bord ligg det

  • ein pose med oppskorne brødskiver
  • ein ostehøvel
  • ein pakke med smør
  • ein pakke med brunost klar til å skjere frå
  • ein kniv

Den spesielle venen din skal lage ei brødskive med smør og tre skiver med brunost ut frå det som ligg på bordet.

Du må no gi venen din ei presis beskriving eller instruksjonar om korleis han skal gå fram. Ei slik beskriving eller sett av instruksjonar kallar vi ein algoritme.

Algoritme

Ein algoritme er eit sett av trinnvise instruksjonar i ei bestemd rekkjefølgje som er laga for å oppnå noko.

Oppgåve

Prøv å lage så presise instruksjonar som mogleg til jobben med å lage ei brødskive med smør og tre skiver med brunost. Få nokon andre til å sjå på instruksjonane og vurdere om dei er presise nok for ein som er heilt uvitande til å gjere jobben.

Løysingsforslag

Her er det ikkje noko eksakt fasitsvar, men instruksjonsrekkja, algoritmen, kan sjå slik ut:

  • Ta ut ei brødskive frå brødposen, og legg ho med flatsida ned.
  • Ta kniven, og overfør smør frå smørpakken til knivbladet.
  • Overfør smøret frå knivbladet til den sida av brødskiva som vender opp.
  • Ta ostehøvelen, og skjer ei skive med brunost.
  • Legg brunostskiva på brødet på den sida som har smør.
  • Ta ostehøvelen, og skjer ei skive med brunost.
  • Legg brunostskiva på brødet på den sida som har smør.
  • Ta ostehøvelen, og skjer ei skive med brunost.
  • Legg brunostskiva på brødet på den sida som har smør.

Vi må repetere instruksjonane om å skjere ei skive med brunost og å leggje brunostskiva på brødet tre gonger sidan vi skal ha tre brunostskiver. I eit programmeringsspråk vil det heldigvis vere kommandoar vi kan bruke slik at vi slepp å skrive den same instruksjonen mange gonger.

Den ferdige instruksjonen for å lage brødskiva seier vi er ein algoritme for å lage ei brødskive med smør og tre skiver med brunost.

Tenk over

Er denne algoritmen presis nok? Korleis kan du vite at venen din tek ei passeleg mengde smør på skiva? Kan du gjere algoritmen meir presis?

Kommentar

Vi har eigentleg ikkje formulert problemet godt nok. Problemet vårt er at vi ønskjer å få laga ei brødskive med smør og tre skiver med brunost. "Ei brødskive med smør og tre skiver med brunost" seier ikkje noko om kor mykje smør som skal brukast. Den andre instruksjonen i algoritmen ovanfor kunne kanskje ha vore slik:

  • Ta kniven, og overfør ei mengde smør omtrent så stor som det ytste leddet på langfingeren til ein vaksen frå smørpakken til knivbladet.

Algoritmar og dataprogram

Datamaskiner liknar mykje på den spesielle venen i eksempelet over. Dei er fenomenalt gode til å gjere ein del enkle oppgåver, som til dømes å addere, subtrahere, multiplisere og dividere tal – og dei gjer desse oppgåvene raskt! Vi må gi presise kommandoar som fortel kva maskinene skal gjere. Derfor er det viktig å setje opp gode algoritmar når vi skal programmere.

Datamaskiner har òg godt minne. Dersom vi fortel ei maskin at "lengde = 6" og "breidde = 8", så hugsar maskina det. Etterpå kan vi be maskina rekne ut lengde multiplisert med breidde, og maskina reknar ut 6·8=48.

Eit enkelt eksempel

Utgangspunkt: Vi ønskjer å få datamaskina til å rekne ut 6·8 for oss. Sidan vi skal øve oss på å programmere, ønskjer vi å lage eit program som reknar ut svaret for oss.

Oppgåve

Skriv instruksjonane eller algoritmen med ord om kva programmet skal gjere, og forklar kvifor det ikkje er nok å be programmet multiplisere tala 6 og 8 med kvarandre.

Løysing

Algoritmen kan sjå slik ut:

  • Multipliser tala 6 og 8 med kvarandre.
  • Skriv resultatet av multiplikasjonen til dataskjermen.

Vi må ha med den andre instruksjonen, elles får vi ikkje greie på resultatet av multiplikasjonen. Det er lett å tenkje at det er opplagt at svaret skal skrivast til skjermen, men vi gi datamaskina instruksjon om å gjere det, elles blir svaret ein godt lagra løyndom i det indre av datamaskina.

Det neste steget blir å lage programmet, det vil seie å bruke eit programmeringsspråk til å få gjort desse to instruksjonane i algoritmen. Vi seier òg at vi må setje om instruksjonane til programkode. Det kan du lese meir om på sida "Variablar, matematiske operatorar og funksjonen print()". Først bør du prøve deg på oppgåvene der du blir bedd om å lage algoritmar for ulike ting.

Relatert innhald

Algoritmar er oppskrifter som viser korleis ei oppgåve skal løysast. Vi programmerer datamaskiner til å løyse kompliserte oppgåver.

Her får du ulike oppgåver der du skal lage algoritmar.

CC BY-SASkrive av Bjarne Skurdal og Olav Kristensen.
Sist fagleg oppdatert 18.08.2020

Læringsressursar

Grunnopplæring