Programmering nivå 2
Kap 2.1 – Vad är en algoritm?
Lär dig beskriva problem som tydliga steg innan du skriver kod.
Mål med lektionen
När du har arbetat klart med denna lektion ska du:
- Förstå vad en algoritm är och varför den är viktig i programmering.
- Känna till olika typer av algoritmer och hur de används.
- Kunna beskriva en enkel algoritm i både text och flödesform.
- Använda algoritmer för att lösa vardagliga och programmeringstekniska problem.
Så här lär du dig bäst
Tänk inte på algoritmer som något avancerat. De är instruktioner för att lösa ett problem steg för steg. Börja med vardagliga exempel, försök sedan översätta dem till kod eller pseudokod. Träna på att se mönster och dela upp problem i mindre delar.
Vad är en algoritm?
En algoritm är en väldefinierad sekvens av steg som löser ett problem eller utför en uppgift. Det är grunden i varje program, oavsett om du vill sortera tal, beräkna en rabatt eller kontrollera ett lösenord.
Exemplen i det här kapitlet är enkla för att visa grundidén. I verkliga program kan algoritmer vara mycket mer komplicerade, till exempel när de hanterar stora datamängder, söker bästa vägen på en karta eller rekommenderar innehåll till en användare.
En bra algoritm ska vara tydlig nog för att någon annan ska kunna följa den utan att gissa vad som menas. Den ska också gå att testa med olika indata.
En bra algoritm har
- Indata: vad algoritmen behöver veta från början.
- Steg: vad som ska hända och i vilken ordning.
- Villkor: vilka beslut som ska fattas.
- Resultat: vad algoritmen ska ge tillbaka eller skriva ut.
- Testfall: exempel som visar att algoritmen fungerar.
Exempel: algoritm i vardagen
Algoritm för att koka kaffe:
- Fyll vatten i kaffebryggaren.
- Lägg i ett kaffefilter.
- Tillsätt kaffe i filtret.
- Starta bryggaren.
- Vänta tills det är klart.
- Servera.
Detta är en algoritm eftersom stegen är tydliga och leder fram till ett resultat.
Algoritmer i programmering
När du programmerar skapar du algoritmer i form av kod. Innan du skriver koden kan du beskriva lösningen i text eller pseudokod.
Algoritm för att kontrollera om ett tal är jämnt
- Läs in ett tal.
- Dela talet med 2.
- Om resten är 0, skriv
Jämnt. - Annars, skriv
Udda.
I pseudokod:
INPUT number
IF number MOD 2 == 0 THEN
PRINT "Even"
ELSE
PRINT "Odd"
Samma idé i Python:
number = int(input("Skriv ett tal: "))
if number % 2 == 0:
print("Jämnt")
else:
print("Udda")
Här betyder % resten vid division. Om resten blir 0 när talet delas med
2, är talet jämnt.
Olika typer av algoritmer
I programmering finns många typer av algoritmer. Här är några du kommer att stöta på:
- Beslutsalgoritmer: till exempel kontrollera om ett lösenord är korrekt.
- Beräkningsalgoritmer: till exempel räkna ut ett medelvärde.
- Sökningsalgoritmer: till exempel hitta ett namn i en lista.
- Sorteringsalgoritmer: till exempel sortera en lista i stigande ordning.
- Repetitiva algoritmer: till exempel upprepa en kontroll tills ett villkor uppfylls.
Från problem till lösning
Problem: Kontrollera om en person är berättigad till ungdomsrabatt.
Algoritm i text:
- Läs in personens ålder.
- Om åldern är under 18, skriv
Du får rabatt. - Annars, skriv
Du får ingen rabatt.
I pseudokod:
INPUT age
IF age < 18 THEN
PRINT "You get a discount"
ELSE
PRINT "No discount"
Senare i kursen kommer du att översätta fler sådana algoritmer till Python.
Testa en algoritm
En algoritm är inte klar bara för att den låter rimlig. Du behöver testa den med olika exempel.
För ungdomsrabatten kan du testa:
- Ålder
12- ska ge rabatt. - Ålder
17- ska ge rabatt. - Ålder
18- ska inte ge rabatt. - Ålder
30- ska inte ge rabatt.
Vanliga misstag
- Stegen är för otydliga, till exempel "räkna ut svaret" utan att beskriva hur.
- Villkoret använder fel gräns, till exempel
age <= 18när 18-åringar inte ska få rabatt. - Algoritmen saknar vad som ska hända i
else-fallet. - Algoritmen testas bara med ett enda värde.
Öva själv
- Skriv en algoritm i textform som kontrollerar om en person får ungdomsrabatt.
- Skriv pseudokod som beräknar medelvärdet av tre tal.
- Skriv Pythonkod för algoritmen som kontrollerar om ett tal är jämnt eller udda.
- Skapa minst fyra testfall till en egen algoritm.
När du har försökt själv kan du ladda ner ett lösningsförslag: kap2-1-algoritmer-losningsforslag.py
Reflektion
- Hur skiljer sig en algoritm från färdig kod?
- Hur hjälper det dig att skriva algoritmen först, innan du börjar programmera?
- Vilken typ av algoritm tycker du verkar mest användbar?