Kap 2.5
Planera program med algoritmtänk
Vi gör problemet tydligt innan vi börjar skriva kod.
Mål
Efter lektionen ska du kunna...
- förklara vad algoritmtänkande innebär
- bryta ner ett problem i mindre delar
- planera med pseudokod, flödesschema och testfall
- välja datastruktur och funktioner utifrån problemet
Algoritmtänk
Se problemet som steg
Vilken information behövs?
Vilka beslut måste programmet fatta?
Vad ska upprepas?
Vad ska visas eller sparas?
Viktigt
Planen är inte extraarbete
En tydlig plan gör koden lättare att skriva.
Den gör också fel lättare att hitta.
Om planen är rörig blir koden ofta rörig.
Mall
Fem frågor
- Input: vad kommer in?
- Bearbetning: vad ska hända?
- Output: vad ska ut?
- Datastruktur: hur lagras datan?
- Funktioner: vad kan delas upp?
Exempel
Menyprogram
Problem:
Användaren ska kunna lägga till namn,
visa alla namn och avsluta.
Input:
Menyval och namn.
Output:
Meny, bekräftelser och lista med namn.
Bearbetning
Vad gör programmet?
Upprepa menyn tills användaren väljer avsluta.
Om valet är 1:
lägg till namn i listan
Om valet är 2:
skriv ut alla namn
Om valet är 3:
avsluta programmet
Struktur
Data och funktioner
Datastruktur:
names = []
En lista passar eftersom vi samlar flera namn.
Funktioner:
print_menu()
add_name(names)
show_names(names)
Funktionerna gör varje del lättare att förstå och testa.
Flödesschema
Meny med tre alternativ
Pseudokod
Skriv logiken innan koden
names = tom lista
UPPREPA
visa meny
läs in val
OM val är 1
läs in namn
lägg till namn i listan
ANNARS OM val är 2
skriv ut alla namn
ANNARS OM val är 3
avsluta loopen
Testfall
Testa innan du kodar
Test 1:
Val: 1, namn: Sara
Förväntat: Sara finns i listan
Test 2:
Val: 2 när listan är tom
Förväntat: Programmet säger att listan är tom
Test 3:
Val: 3
Förväntat: Programmet avslutas
Från plan till kod
Koden följer planen
def add_name(names):
name = input("Namn: ")
names.append(name)
def show_names(names):
if len(names) == 0:
print("Listan är tom.")
else:
for name in names:
print(name)
Analys
Bryt ner ett tidigare program
- Input: vad skriver användaren in?
- Bearbetning: vilka villkor, loopar och beräkningar finns?
- Output: vad visas?
- Datastruktur: används variabel, lista, dictionary eller tuple?
- Funktioner: vilka delar är egna funktioner?
Vanliga misstag
När planen saknas
- All kod hamnar i en lång sekvens.
- Samma kod upprepas på flera ställen.
- Datastrukturen passar inte problemet.
- Testningen börjar först när allt är färdigt.
Öva själv
Fyra uppgifter
- Skriv en plan för ett vardagsproblem.
- Skapa ett flödesschema för en meny med tre alternativ.
- Skriv minst tre testfall innan du kodar.
- Analysera ett tidigare program med planeringsmallen.
Sammanfattning
Kom ihåg
- Algoritmtänk gör problemet stegvis.
- Planera input, bearbetning och output.
- Välj datastruktur innan du bygger vidare.
- Testfall avslöjar luckor i planen.
- Funktioner gör programmet lättare att förstå.