Kap 2.1
Vad är en algoritm?
En algoritm är en tydlig plan för hur ett problem ska lösas steg för steg.
Mål
Efter lektionen ska du kunna...
- förklara vad en algoritm är
- beskriva en algoritm i text och pseudokod
- känna igen olika typer av algoritmer
- testa en algoritm med flera testfall
Kärnidé
Inte avancerat från början
En algoritm är instruktioner.
Instruktionerna ska ha en tydlig ordning.
De ska leda till ett resultat.
De ska gå att testa.
Definition
En sekvens av steg
En algoritm löser ett problem eller utför en uppgift.
Den kan beskrivas med text, pseudokod, flödesschema eller kod.
Den ska vara tydlig nog för någon annan att följa.
En bra algoritm
Fem delar
- indata: vad behövs från början?
- steg: vad händer och i vilken ordning?
- villkor: vilka beslut måste fattas?
- resultat: vad ska algoritmen ge?
- testfall: hur vet vi att den fungerar?
Vardag
Algoritm för kaffe
- Fyll vatten i kaffebryggaren.
- Lägg i ett kaffefilter.
- Tillsätt kaffe i filtret.
- Starta bryggaren.
- Vänta tills det är klart.
- Servera.
Programmering
Jämnt eller udda
- Läs in ett tal.
- Dela talet med 2.
- Om resten är 0: skriv
Jämnt. - Annars: skriv
Udda.
Pseudokod
Samma algoritm utan Python-detaljer
INPUT number
IF number MOD 2 == 0 THEN
PRINT "Even"
ELSE
PRINT "Odd"
Python
Samma idé som kod
number = int(input("Skriv ett tal: "))
if number % 2 == 0:
print("Jämnt")
else:
print("Udda")
Operator
Vad betyder %?
% ger resten vid division.
8 % 2 # 0
9 % 2 # 1
Om resten är 0 när vi delar med 2, är talet jämnt.
Typer
Algoritmer används överallt
- beslut: kontrollera lösenord eller rabatt
- beräkning: räkna ut medelvärde
- sökning: hitta ett namn i en lista
- sortering: ordna värden
- repetition: upprepa tills ett villkor uppfylls
Problem
Ungdomsrabatt
Vi vill kontrollera om en person får ungdomsrabatt.
Indata: personens ålder.
Villkor: är åldern under 18?
Resultat: rabatt eller ingen rabatt.
Textform
Algoritm för rabatt
- Läs in personens ålder.
- Om åldern är under 18: skriv
Du får rabatt. - Annars: skriv
Du får ingen rabatt.
Pseudokod
Rabatt med villkor
INPUT age
IF age < 18 THEN
PRINT "You get a discount"
ELSE
PRINT "No discount"
Test
Algoritmen måste testas
12→ ska ge rabatt17→ ska ge rabatt18→ ska inte ge rabatt30→ ska inte ge rabatt
Gränsfall
Varför testa 18?
18 är precis på gränsen.
Om villkoret är age < 18 får 18-åringar inte rabatt.
Om du råkar skriva age <= 18 ändras regeln.
Misstag
Vanliga fel
- steg som är för otydliga
- fel gräns i villkor
- inget
else-fall - bara ett enda testvärde
Öva själv
Fyra uppgifter
- Skriv algoritm för ungdomsrabatt i textform.
- Skriv pseudokod för medelvärde av tre tal.
- Skriv Pythonkod för jämnt eller udda.
- Skapa minst fyra testfall till en egen algoritm.
Reflektion
Fundera
- Hur skiljer sig en algoritm från färdig kod?
- Hur hjälper planeringen innan du kodar?
- Vilken typ av algoritm verkar mest användbar?
Sammanfattning
Kom ihåg
- En algoritm är en tydlig sekvens av steg.
- Den har indata, steg, villkor, resultat och testfall.
- Pseudokod hjälper dig planera innan syntaxen.
- Testfall visar om algoritmen följer regeln.