Presentationer Slide 1/1

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

  1. Input: vad kommer in?
  2. Bearbetning: vad ska hända?
  3. Output: vad ska ut?
  4. Datastruktur: hur lagras datan?
  5. 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

Start Visa meny Vilket val? Lägg till namn Visa namn Avsluta 1 2 3

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

  1. Skriv en plan för ett vardagsproblem.
  2. Skapa ett flödesschema för en meny med tre alternativ.
  3. Skriv minst tre testfall innan du kodar.
  4. 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å.