Algoritmer og algoritmisk tenkning¶
VG2 IT-Utvikling Teori: Algoritmer
Hva er en algoritme?¶
En algoritme er en presis, avgrenset og entydig beskrivelse av hvordan et problem skal løses, gitt som en rekke steg som skal utføres i en bestemt rekkefølge. Algoritmen sier ikke bare hva som skal gjøres, men også nøyaktig hvordan og i hvilken rekkefølge – slik at den kan følges av en person, eller omsettes til kode og kjøres av en datamaskin. Algoritmer er ikke noe som er forbeholdt programmering. Vi bruker algoritmer hele tiden i hverdagen uten å tenke over det – en oppskrift, en bruksanvisning for å montere et møbel, eller rutinen du følger når du skal legge deg om kvelden, er alle eksempler på algoritmer. I skolehverdagen og i arbeid med fagstoff kan algoritmer være til stor hjelp for deg som elev. Har du laget deg en algoritme for hvordan du skal jobbe med fag den tiden du skal være på Greveskogen vgs?
Husk
- En god algoritme skal være entydig, samme input skal alltid gi samme output
- En god algoritme skal være presis, hvert steg skal være klart definert
- En algoritme skal avsluttes etter et begrenset antall steg
- Mye arbeid = Mye lønn
Algoritmisk tenkning¶
Algoritmisk tenkning er evnen til å bryte ned et problem i mindre, håndterbare deler og beskrive en løsning som en tydelig rekke av steg. Dette er en tankemåte/arbeidsmetode, ikke et programmeringsspråk – man kan tenke algoritmisk lenge før man skriver en eneste kodelinje.
Algoritmisk tenkning bygger gjerne på fire delferdigheter:
- Dekomponering å dele et stort og komplekst problem opp i mindre, enklere deloppgaver.
- Mønstergjenkjenning å oppdage likheter og gjentakende mønstre mellom problemer, slik at løsninger kan gjenbrukes.
- Abstraksjon å se bort fra unødvendige detaljer og sette søkelys på det som faktisk er relevant for å løse problemet.
- Algoritmedesign å utforme selve steg-for-steg-løsningen, gjerne med tydelige betingelser og forgreininger (som i oppgavene med bilverksted, lege og jobbintervju).
Fordeler ved å jobbe algoritmisk¶
Å tenke og jobbe algoritmisk gir en rekke fordeler, både når man utvikler programvare og når man løser problemer mer generelt:
- Struktur og oversikt: Et komplekst problem blir mer håndterbart når det er brutt ned i klare, avgrensede steg.
- Forutsigbarhet: En veldefinert algoritme gir samme resultat hver gang den følges med samme utgangspunkt, noe som gjør resultatet pålitelig og til å stole på.
- Enklere feilsøking: Når en løsning er delt opp i tydelige steg, er det lettere å finne ut nøyaktig hvor noe går galt.
- Gjenbruk og effektivitet: Løsninger som er utformet algoritmisk kan ofte gjenbrukes på lignende problemer, i stedet for at man må finne opp løsningen på nytt hver gang.
- Bedre kommunikasjon: En algoritme (for eksempel som flytskjema eller pseudokode) gjør det enklere å forklare og diskutere en løsning med andre, uavhengig av hvilket programmeringsspråk man til slutt bruker.
- Grunnlag for automatisering: Når en prosess er beskrevet presist nok som en algoritme, kan den implementeres i kode og utføres automatisk av en datamaskin.
- Kvalitetssikring: Systematiske, algoritmiske prosesser reduserer risikoen for at viktige steg blir glemt eller gjort i feil rekkefølge, sammenlignet med en løsning basert på magefølelse.
Husk
Fordelene med algoritmisk tenkning gjelder ikke bare i programmering – de samme prinsippene gjør deg bedre til å løse problemer strukturert i mange andre sammenhenger, som i bilverksteder, legevakt og i jobbintervjuer.
Fra algoritme til program¶
Når vi skal iverksette en algoritme i et programmeringsspråk, beskrives den ofte først som pseudokode eller et flytskjema. Dette gjør at man kan planlegge og diskutere logikken før man begynner å skrive faktisk kode – og gjør det enklere å oppdage logiske feil tidlig. Et enkelt eksempel på pseudokode for å finne det største av to tall:
Legg merke til at pseudokoden bruker tydelig betinget logikk (HVIS/ELLERS). Dette er kjernen i algoritmisk tenkning: å bryte en beslutningsprosess ned i konkrete, entydige steg med klare forgreininger.