Kapitel 3
Problemlösning i programmering
Från en idé till en plan som kan bli fungerande kod.
Mål
Efter kapitlet ska du kunna...
- förstå och avgränsa ett programmeringsproblem
- skriva en tydlig algoritm
- dela upp ett problem i mindre delar
- planera med pseudokod och flödesschema
- gå från problem till kod och testning
3.1
Ett problem har tre delar
- Input: vilken information behövs?
- Bearbetning: vad ska programmet göra?
- Output: vilket resultat ska visas?
Exempelproblem
Ålder om fem år
Fråga användaren efter sin ålder
Räkna ut åldern om fem år
Skriv ut resultatet
Planen beskriver vad som ska ske utan att fastna i Python-syntax.
Hela programmet
Planen blir Pythonkod
age = int(input("Hur gammal är du? "))
print(f"Om fem år är du {age + 5} år gammal")
Input: användaren skriver sin ålder.
Bearbetning: programmet adderar 5.
Output: den framtida åldern skrivs ut.
Förstå först
Tre frågor före koden
- Vad ska programmet göra?
- Vilken information behöver programmet?
- Vad ska programmet ge för resultat?
Om svaren är otydliga är problemet ännu inte tillräckligt förstått.
3.2
En algoritm är en lösning i steg
Stegen ska utföras i en bestämd ordning.
Varje steg ska vara tydligt och möjligt att följa.
Recept, möbelinstruktioner och vägbeskrivningar är vardagliga algoritmer.
Algoritm · exempel
Ålder om fem år
- Fråga användaren efter ålder.
- Spara åldern i en variabel.
- Lägg till 5.
- Skriv ut resultatet.
Bra algoritm
Fyra krav
- Tydlig: stegen går att förstå.
- Stegvis: ett moment i taget.
- Logisk: rätt ordning ger rätt resultat.
- Genomförbar: varje steg går att utföra.
Kontrollfråga
Vad saknas?
fråga efter två tal
skriv ut summan
Programmet har fått input, men inget steg beräknar summan.
Lägg till: summa = tal1 + tal2.
3.3
Dela upp stora problem
Ett stort problem kan vara svårt att lösa som en enda uppgift.
Mindre delar kan förstås, skrivas och testas var för sig.
Det gör även fel lättare att hitta.
Uppdelning · summa
Gör ett steg i taget
- Läs in det första talet.
- Läs in det andra talet.
- Lägg ihop talen.
- Spara summan.
- Skriv ut summan.
Hela programmet
Summan av två tal
number1 = int(input("Skriv ett tal: "))
number2 = int(input("Skriv ett tal till: "))
summa = number1 + number2
print(f"Summan är {summa}")
Varje rad motsvarar en tydlig del: input, beräkning eller output.
3.4
Pseudokod planerar logiken
Pseudokod använder vanliga ord i stället för exakt Python-syntax.
Den visar struktur, ordning och beslut.
Den kan inte köras av datorn – den är en plan för människor.
Pseudokod
Stort eller litet tal?
läs in ett tal
om talet är större än 10
skriv ut "Stort tal"
annars
skriv ut "Litet tal"
Indraget visar vilka instruktioner som hör till respektive väg.
Från pseudokod till kod
Samma logik i Python
number = int(input("Skriv ett tal: "))
if number > 10:
print("Stort tal")
else:
print("Litet tal")
Python kräver kolon och korrekt indrag efter if och else.
3.5
Flödesschemat visar planen
Symboler visar olika typer av steg.
Pilar visar i vilken ordning stegen utförs.
Förgreningar visar val och bakåtpilar visar upprepning.
Sekvens
Steg efter steg
läs in namn
skriv ut namn
skriv ut "Välkommen"Alla instruktioner körs en gång i ordning.

Sekvens · exempel
Input, beräkning, output

Selektion
Ett villkor väljer väg
om tal > 10
skriv ut "Stort tal"
annars
skriv ut "Litet tal"Endast en av vägarna körs.

Selektion · exempel
Stort eller litet tal

Iteration
En pil går tillbaka
så länge talet inte är 0
skriv ut talet
läs in nytt talStegen upprepas tills villkoret inte längre gäller.

Jämförelse
Tre sätt att beskriva lösningen
| Form | Visar | Användning |
|---|---|---|
| Algoritm | lösningens steg | översikt |
| Pseudokod | programlik struktur | detaljerad plan |
| Flödesschema | flöde, val och loopar | visuell kontroll |
3.6
Från idé till program
Om testet misslyckas går du tillbaka, rättar planen eller koden och testar igen.
Plan
Ålder om tio år
fråga efter ålder
spara åldern
lägg till 10
skriv ut resultatet
Input: ålder. Bearbetning: + 10. Output: framtida ålder.
Kod
Ålder om tio år
age = int(input("Hur gammal är du? "))
future_age = age + 10
print(f"Om tio år är du {future_age} år gammal")
Test: om input är 15 ska output innehålla 25.
Testa även andra rimliga värden.
3.7 · Problem
Celsius till Fahrenheit
Programmet ska läsa in en temperatur i Celsius.
Det ska omvandla temperaturen med formeln:
F = C × 9 / 5 + 32
Resultatet ska skrivas ut i Fahrenheit.
Temperatur · algoritm
Lösningen i tre steg
- Läs in temperaturen i Celsius.
- Räkna ut temperaturen i Fahrenheit.
- Skriv ut resultatet.
Temperatur · pseudokod
Planen blir mer exakt
start
läs in temperatur i Celsius
fahrenheit = celsius × 9 / 5 + 32
skriv ut temperaturen i Fahrenheit
slut
Temperatur · hela programmet
Planen blir Python
celsius = float(input("Skriv en temperatur i Celsius: "))
fahrenheit = celsius * 9 / 5 + 32
print(f"Temperaturen i Fahrenheit är {fahrenheit}")
Test: 20 grader Celsius ska ge 68.0 grader Fahrenheit.
Temperatur · steg för steg
Varje rad har en uppgift
input()läser text från användaren.float()gör texten till ett decimaltal.- Formeln beräknar Fahrenheit.
- F-strängen visar resultatet.
3.8 · Övning
Summan av två tal
- Beskriv input, bearbetning och output.
- Skriv algoritmen.
- Skriv pseudokod.
- Skriv programmet i Python.
- Testa exempelvis
10 + 15.
Förväntat resultat: Summan är 25.
Fördjupningsövning
Medelvärdet av tre tal
- Läs in tre tal.
- Beräkna summan.
- Dela summan med
3. - Skriv ut resultatet.
- Testa med tal vars medelvärde du känner till.
Sammanfattning
Kom ihåg
- Förstå input, bearbetning och output före kodningen.
- En algoritm beskriver lösningen steg för steg.
- Dela upp stora problem i mindre delar.
- Pseudokod beskriver logiken med ord.
- Flödesscheman visar sekvens, val och upprepning.
- Skriv kod först när planen är tydlig – och testa alltid.