Datorer idag är väldigt kraftfulla och har en enorm bredd av användningsområden, men för att kunna utnyttja den här kraften måste datorn först förstå vad den ska göra. Det går inte att bara säga åt den att lösa ett problem, utan man måste ge tydliga instruktioner som förklarar hur den ska göra. Att formulera sådana instruktioner är att programmera.
Inom matematik och programmering är en algoritm en serie instruktioner för att uppnå något. I skolan får man t.ex. lära sig en algoritm för addition genom uppställning, och senare pq-formeln som är en algoritm för att lösa andragradsekvationer. Algoritmer kan liknas vid recept, där tydliga steg måste utföras i en viss ordning för att det ska bli rätt. Ta t.ex. ett recept på havregrynsgröt.
Blanda 1 dl havregryn med 2 dl vatten och 1 krm salt i en kastrull.
Koka upp blandningen och låt sjuda tills gröten är tillräckligt tjock.
Recept behöver inte vara mer detaljerade än så, men en algoritm är ofta väldigt specifik. Receptet skulle kunna göras mer som en algoritm genom att dela upp stegen så här.
Ställ fram en kastrull.
Häll 2 dl vatten i kastrullen.
Häll 1 dl havregryn i kastrullen.
Häll 1 krm salt i kastrullen.
Blanda innehållet i kastrullen.
Ställ kastrullen på en spis.
Sätt spisens temperatur på medelhög värme.
Vänta tills blandningen kokar.
Sänk temperaturen till låg värme.
Rör om tills gröten når önskad konsistens.
Skriv en algoritm som beskriver hur man beräknar arean av en kvadrat om man känner till dess omkrets.
Arean av en kvadrat beräknas genom att multiplicera sidlängden med sig själv, så först måste vi bestämma dess sidlängd. Eftersom vi känner till kvadratens omkrets kan vi dividera den med 4 för att få sidlängden. Det blir vårt första steg.
Dividera omkretsen med 4.
För att beräkna arean upphöjer vi sedan resultatet till 2. Det blir andra steget.
Dividera omkretsen med 4.
Upphöj resultatet till 2.
Det är allt man behöver göra för att beräkna arean baserat på omkretsen, så vår algoritm är färdig.
När man skriver algoritmer måste man ibland ta en mer komplicerad väg genom instruktionerna än att bara gå igenom dem steg för steg. Det kan t.ex. vara så att vissa instruktioner bara ska göras ibland eller att vissa ska upprepas.
Om en algoritm innehåller något som ska göras flera gånger kan man markera upprepningen i instruktionerna istället för att skriva samma sak gång på gång. Ibland kanske man inte ens vet hur många gånger stegen ska upprepas när algoritmen skrivs. Om man t.ex. ska skriva en algoritm för att skala morötter kan man använda något i stil med följande.
Ta fram morötter.
Upprepa för varje morot: Skölj av moroten. Skär av blasten. Skala moroten.
Här ska de indragna instruktionerna, dvs. de som står längre in på raderna, göras för varje morot. Har man t.ex. 10 morötter kommer alltså rad 3 till 5 upprepas 10 gånger.
Om en algoritm innehåller steg som bara ska göras under vissa omständigheter kan man införa ett villkor. Om man ska ut och cykla behöver man förmodligen inte pumpa däcken varje gång, så en algoritm för förberedelserna skulle kunna se ut på följande sätt.
Ta fram cykeln.
Om det är dåligt med luft i däcken: Pumpa däcken.
Sätt dig på cykeln och åk.
Följande algoritm tar ett tal och gör en beräkning baserat på det.
Multiplicera talet med 3.
Subtrahera 12 från resultatet.
Om resultatet är jämnt: Dividera resultatet med 2.
Upphöj resultatet till 2.
Vad får man om man använder algoritmen på talet 7?
För att använda algoritmen går vi igenom stegen i ordning och utför instruktionerna. Först ska vi alltså multiplicera vårt tal med 3. 7⋅3=21 Vi tar sedan resultatet 21 och subtraherar 12. 21−12=9 Sedan ska vi dividera med 2 om det resultat vi fick från föregående steget är jämnt. Vårt resultat 9 är inte jämnt så vi går vidare utan att göra något. Till sist ska vi upphöja resultatet till 2. 92=81 Algoritmen ger alltså resultatet 81 för talet 7.