Modul 3: Sentrale konsepter og begreper
En algoritme er en oppskrift. En serie av spesifikke instruksjoner eller skritt, som løser et problem eller fullfører en oppgave. Vi kommer borti dem daglig, kanskje uten at vi tenker over det. Det kan være oppskriften for å bake en kake, rekkefølgen du gjør ting i når du pusser tennene, hvordan du kler på deg eller ruten du går for å komme hjemmefra til skolen.
Programmerere skriver algoritmer på et programmeringsspråk som en datamaskin kan forstå. Når programmereren bestemmer det, går datamaskinen gjennom algoritmen, skritt for skritt, og gjør hver av tingene den får beskjed om, til hele oppskriften er gjennomført. På den måten kan man få en datamaskin til å gjøre en stor oppgave ved å dele den opp i en rekke mindre beskjeder.
Pilene på bildet under er en algoritme.
En løkke er en del av et program som gjentar seg. Vi bruker løkker når vi vil gjenta en del av et program uten å skrive den samme koden flere ganger. Man kan velge om koden i løkken skal gjentas et visst antall ganger (for-løkke) eller om den skal gjentas så lenge en spesifikk betingelse er sann (while-løkke). For eksempel kan en for-løkke si at en figur skal hoppe ti ganger (for 10 times), mens en while-løkke kan si at en figur skal ha paraplyen sitt oppslått så lenge det regner (while it rains).
Fordelen med løkker er at vi slipper å skrive mange linjer med kode. Koden blir enklere å feilsøke og rette. Den blir også mer kompakt, slik at det tar kortere tid å kjøre gjennom programmet.
Hva tror du resultatet blir hvis du kjører denne koden?
Her er den gule blokken en for-løkke som sier at kommandoene inne i løkken skal gjentas fire ganger. Fant du ut hva programmet over gjør? Hint: Tegner en geometrisk form.
For å beherske dette med løkker må man kunne se mønstre. Hvis du finner gjentakelser og mønstre, kan du se hva som kan effektiviseres ved å bruke løkker. Tenk for eksempel på danser som fugledansen eller macarena. Oppskriften på en lang dans kan skrives på en effektiv måte hvis man bruker løkker. Kjenner du igjen denne dansen?
Gjenta while musikk høres:
venstre fot til siden
venstre fot tilbake
venstre fot til siden
venstre fot tilbake
høyre fot til siden
høyre fot tilbake
høyre fot til siden
høyre fot tilbake
hopp frem
hopp tilbake
hopp frem
hopp frem
hopp frem
Fordi løkken øverst sier at dette skal gjentas så lenge musikken spilles, vil koden kjøres på nytt ovenfra igjen hver gang man kommer til bunnen, så lenge vilkåret om at musikk høres er oppfylt. Har du en lang spilleliste med musikk, kan du dermed gjennomføre timevis av dans med disse 14 linjene med kode. Samtidig ser vi at det er gjentakelser i koden, så den kunne ha vært gjort enda mer effektiv med flere løkker inne i hovedløkken. (PS. Ja, det er Jenka ;))
Oppgave: Se på koden for dansen over og finn gjentakelser. Skriv ned en ny algoritme for dansen som er mer effektiv.
Når du har laget din algoritme kan du titte på to løsningsforslag her. Men husk, i programmering er det alltid mange veier til mål, så din variant kan være vel så god.
Oppgave: Tenk på en dans med gjentakelser eller finn på en ny dans. Skriv oppskriften for dansen som en algoritme med løkker. Test oppskriften på kollegaer eller elever. Klarer de å gjennomføre dansen basert på algoritmen din?