Algoritmer

En instruktion som löser ett problem eller en uppgift kallas för en algoritm. Ett datorprogram består av flera algoritmer och kan bestå av ett fåtal rader kod till flera miljoner eller mer rader kod. Då är algoritmerna skrivna i programmeringskod.

Men algoritmer behöver inte alltid datorer. Faktum är att algoritmer har funnits bra mycket längre än vad datorer har funnits! De används för att lösa problem inom matematik.

Varför passar algoritmer och datorer ihop så bra? Datorer är bra på att utföra instruktioner supersnabbt. Men en dator är en maskin som bara gör exakt det som den blir tillsagd att göra. Därför måste du vara väldigt tydlig när du skriver instruktioner till en dator.

Att skapa algoritmer

När en dator utför en algoritm så läser datorn algoritmen rad för rad efter varandra, precis som när du läser en bok. Det betyder att det är viktigt att tänka efter lite när du ska skriva algoritmer så att datorn gör som du vill att den ska göra. Algoritmer behöver vara exakta, fullständiga och i rätt ordning.

Tre gyllene regler för algoritmer

Här är tre gyllene regler för att skapa algoritmer:

Exakt: datorn kan inte förstå eller gissa av sig självt om du råkar stava fel i din instruktion eller om du bara säger på ett ungefär hur något ska göras. Om du vill att en robot ska göra en bra pannkaksmet behöver du beskriva exakta antal och mått på hur många ägg och hur mycket mjölk, mjöl, salt och så vidare som behöver användas, annars blir det en konstig smet.

Fullständig: datorn kan inte förstå eller gissa sig till vad den ska göra om det saknas information i instruktionerna den fått, om du exempelvis glömt skriva ut ett tecken eller någon sak som datorn ska utföra. Den kan inte tolka ofullständiga meningar eller fylla i kunskap på samma sätt som en människa ofta kan. Alla moment är viktiga och måste beskrivas i detalj. Om du säger “knäck ägg ned i skålen” till pannkaksroboten så vet den inte att äggskalet aldrig ska tas med i smeten - den behöver få en fullständig instruktion!

I rätt ordning: datorn kan inte förstå av sig självt om den borde göra något i en annan ordning än vad som står i instruktionen. Därför är det viktigt att ordningen är rätt, för vad skulle hända om pannkaksroboten först knäckte äggen direkt i den varma stekpannan och sen hällde resten av ingredienserna i ner skålen? Istället för pannkakor skulle du få stekt ägg med en smet i skål bredvid!

Olika algoritmer

Det finns också olika typer av algoritmer:

  • Sekvens: instruktion som sker i tur och ordning, först – sedan – sist. Som i pannkaksexemplet ovan.

  • Villkor: instruktion som innehåller val för OM – DÅ – ANNARS. Det göra att man kan programmera att olika saker ska hända beroende på förutsättningar; OM något bestämt sker, DÅ ska något annat hända, ANNARS ska något annat hända. Till exempel: OM det är veckodagen torsdag, DÅ ska roboten laga pannkakor, ANNARS ska den laga pasta.

  • Repetition: instruktion som upprepas i ”loopar”. Instruktionen kan upprepas för alltid, ett visst antal gånger eller tills något annat händer. Till exempel att roboten ska vispa runt ingredienserna i skålen tills det har blivit en slät pannkaksmet utan klumpar.

Hur känner du igen en algoritm?

En algoritm är en instruktion som löser ett problem eller uppdrag. En algoritm måste kunna förstås av den som ska utföra den. Är instruktionen till en människa kan det till exempel vara: “Häll vatten i ett glas”. Du som människa vet ju hur man häller vatten i ett glas. En dator däremot vet inte hur man häller vatten i ett glas så för en dator är det inte en algoritm.

Förståelse för algoritmen

Så hur en algoritm ser ut beror på vem eller vad som ska förstå den. En dator kan vara förprogrammerad att förstå och veta om vissa saker sen tidigare, som man sen enkelt kan hänvisa till i sin algoritm. Om en dator förprogrammerats till att veta hur den ska kunna skriva ordet HEJ! på skärmen, så kan en algoritm till datorn vara “Skriv ordet HEJ! på skärmen”. Och om pannkaksroboten förprogrammerats att redan veta vad en STEKPANNA är för någon sak, behöver du inte beskriva hur en stekpanna ser ut i din algoritm, det räcker med ordet STEKPANNA då roboten ju redan fått det förklarat tidigare. En algoritm måste alltså kunna förstås av den som ska utföra algoritmen för att det ska fungera!

Vad är inte en algoritm då?

Till exempel påståenden som att “himlen är blå.”. Himlen är såklart blå men det är ingen instruktion som vi eller en dator kan utföra. Det finns inget att göra, bara en beskrivning om himlens färg.

Vardagsexempel

Recept

Det är vanligt att likna en algoritm med ett recept. Ett recept består av en lista av ingredienser och instruktioner för att få till en maträtt av ingredienserna. Tänk dig att du har ett recept på att laga pannkakor: du ska blanda ägg, mjölk och mjöl och sedan steka smeten i en panna till dess att pannkakorna är gyllenbruna. Här är det viktigt att receptet är exakt så att du vet till exempel hur mycket av ingredienserna du ska blanda i smeten. Det är också viktigt att receptet är fullständigt så att du vet till exempel när du ska sluta steka pannkakorna. Till sist är det viktigt att instruktionerna är i rätt ordning så att du till exempel inte försöker vispa i äggen efter att du har stekt pannkakorna.

image alt text

Morgonrutinen

Ett annat exempel på en algoritm är instruktioner till dig själv vad du ska göra på morgonen och hur du tar till dig skolan. Det kanske börjar med att du ska klä på dig, och sen att du ska äta frukost, och till sist att du ska sätta sig på rätt buss. Varje av dessa steg kan du sedan se som en algoritm i sig, till exempel en algoritm för att äta frukost kan bestå i att 1) hälla filmjölk i en skål, 2) hälla flingor över filmjölken, 3) ta upp frukosten med en sked och 4) stoppa skeden i munnen.

image alt text