Vad är en algoritm?

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.

Algorithm Machine Purple

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.

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

  1. 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.123.
  2. 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!
  3. 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!

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.

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.

Att fundera på:

  • Varför behöver en algoritm vara exakt?
  • Varför behöver en algoritm vara fullständig?
  • Varför behöver en algoritm vara i rätt ordning?
  • När kan det vara bra att använda villkor i en algoritm?
  • När kan det vara bra att använda repetition i en algoritm?
Har du kommentarer till materialet på den här sidan? Mejla info@kodcentrum.se