Presentationer Slide 1/1

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

InputBearbetningOutput
  • 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

  1. Vad ska programmet göra?
  2. Vilken information behöver programmet?
  3. 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

  1. Fråga användaren efter ålder.
  2. Spara åldern i en variabel.
  3. Lägg till 5.
  4. 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

  1. Läs in det första talet.
  2. Läs in det andra talet.
  3. Lägg ihop talen.
  4. Spara summan.
  5. 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.

Flödesschema som visar en sekvens
Sekvens: pilarna går vidare till nästa steg.

Sekvens · exempel

Input, beräkning, output

Flödesschema för summan av två tal
Två värden läses in, adderas och skrivs ut i en rak sekvens.

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.

Flödesschema med ett villkor och två vägar
Beslutspunkten delar flödet i sant och falskt.

Selektion · exempel

Stort eller litet tal

Flödesschema för stort eller litet tal
Villkoret avgör vilken av de två utskrifterna som används.

Iteration

En pil går tillbaka

så länge talet inte är 0
    skriv ut talet
    läs in nytt tal

Stegen upprepas tills villkoret inte längre gäller.

Flödesschema som visar iteration
Bakåtpilen skapar en upprepning.

Jämförelse

Tre sätt att beskriva lösningen

FormVisarAnvändning
Algoritmlösningens stegöversikt
Pseudokodprogramlik strukturdetaljerad plan
Flödesschemaflöde, val och looparvisuell kontroll

3.6

Från idé till program

FörståPlaneraBeskrivKodaTesta

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

  1. Läs in temperaturen i Celsius.
  2. Räkna ut temperaturen i Fahrenheit.
  3. 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

  1. Beskriv input, bearbetning och output.
  2. Skriv algoritmen.
  3. Skriv pseudokod.
  4. Skriv programmet i Python.
  5. Testa exempelvis 10 + 15.

Förväntat resultat: Summan är 25.

Fördjupningsövning

Medelvärdet av tre tal

  1. Läs in tre tal.
  2. Beräkna summan.
  3. Dela summan med 3.
  4. Skriv ut resultatet.
  5. 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.