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:

  1. Fyll vatten i kaffebryggaren.
  2. Lägg i ett kaffefilter.
  3. Tillsätt kaffe i filtret.
  4. Starta bryggaren.
  5. Vänta tills det är klart.
  6. 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

  1. Läs in ett tal.
  2. Dela talet med 2.
  3. Om resten är 0, skriv Jämnt.
  4. 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:

  1. Läs in personens ålder.
  2. Om åldern är under 18, skriv Du får rabatt.
  3. 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 <= 18 nä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

  1. Skriv en algoritm i textform som kontrollerar om en person får ungdomsrabatt.
  2. Skriv pseudokod som beräknar medelvärdet av tre tal.
  3. Skriv Pythonkod för algoritmen som kontrollerar om ett tal är jämnt eller udda.
  4. 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?

Tillbaka till Kapitel 2