Programmering nivå 2

Kap 1.6 – Flödesscheman och pseudokod

Analysera, strukturera och visualisera programflöden.

Lektion 1.6 – Flödesscheman och pseudokod

Mål med lektionen

När du har arbetat klart med denna lektion ska du:

· Kunna beskriva hur ett program fungerar med hjälp av flödesscheman.

· Förstå vad pseudokod är och hur det används för att planera program.

· Kunna skapa egna flödesscheman och pseudokod för enklare program.

· Veta hur dessa verktyg hjälper dig att analysera och lösa programmeringsproblem.

Så här lär du dig bäst

Tänk inte på exakt syntax i denna lektion – fokusera istället på vad som ska hända i ett program och i vilken ordning. Visualisering är ett verktyg för att förstå och planera. Träna på att rita flöden för uppgifter du redan kan lösa i kod.

Vad är ett flödesschema?

Ett flödesschema är en visuell modell av hur ett program fungerar – steg för steg. Det används för att:

· Strukturera logik innan du skriver kod.

· Förklara din lösning för andra.

· Felsöka och förbättra befintlig kod.

Exempel: Kontrollera om ett tal är jämnt

flowchart TD
    A([Start]) --> B[Läs in tal]
    B --> C{Delbart med 2?}
    C -->|Ja| D[Jämnt]
    C -->|Nej| E[Udda]
    D --> F([Slut])
    E --> F

Vanliga symboler:

· Ovala former: start/slut

· Rektanglar: instruktioner

· Diamanter: beslut (villkor)

· Pilar: flödet

Vad är pseudokod?

Pseudokod är en förenklad beskrivning av programlogik, skriven med ord och programmeringsliknande struktur – men utan krav på korrekt syntax. Du kan blanda svenska och engelska, så länge strukturen är tydlig.

Användningsfall och kravanalys

Ett användningsfall är ett sätt att beskriva vem som använder ett system, vad personen vill göra och vilket resultat som ska uppnås. Det är ett bra analysverktyg när du ska förstå ett problem innan du väljer lösning.

Det här hänger direkt ihop med kravet att du ska kunna analysera, bryta ned och modellera programmeringstekniska problem med lämpliga verktyg. Först identifierar du användningsfall, sedan bryter du ned problemet och väljer till exempel flödesschema, pseudokod eller annan modell för att designa lösningen.

flowchart TD
    A[Analysera behov] --> B[Skapa användningsfall]
    B --> C[Bryt ned problemet]
    C --> D[Modellera med flödesschema eller pseudokod]
    D --> E[Designa lösningen]

Exempel på användningsfall i den här lektionen:

· Eleven vill läsa en lektion.

· Eleven vill köra ett quiz och få rättning direkt.

· Eleven vill kunna få tips om svaret är fel.

Exempel: Användningsfallsdiagram

Det här är ett enklare exempel som visar en elev som använder en kursportal. Diagrammet följer samma grundidé som i riktiga use case-diagram: aktören är utanför systemgränsen och användningsfallen visar vad systemet ska hjälpa användaren att göra.

flowchart LR
    elev["Elev"]

    subgraph system["Kursportal för Programmering 2"]
        UC1((Läsa lektion))
        UC2((Köra quiz))
        UC3((Rätta svar))
        UC4((Visa resultat))
        UC5((Visa tips))
        UC6((Hantera frågor))
        UC8((Exportera rapporter))
    end

    admin["Admin"]

    elev --> UC1
    elev --> UC2
    elev --> UC4
    UC2 -.->|<<include>>| UC3
    UC2 -.->|<<include>>| UC4
    UC5 -.->|<<extend>>| UC2

    UC2 --> UC6
    UC6 --> admin
    UC8 --> admin

I ett klassiskt UML-diagram skulle elev vara en streckgubbe och användningsfallen ritas som ovaler. Här använder vi Mermaid för att få samma struktur i en enklare form som går att läsa direkt på sidan.

Exempel 2: Logga in i en kursportal

Det här exemplet visar olika roller i en kursportal: elev till vänster, och lärare samt admin till höger. Lärare kan ändra kursinnehåll, medan admin dessutom kan göra mer, till exempel hantera användare.

flowchart LR
    elev["Elev"]

    subgraph system["Kursportal"]
        UC1((Logga in))
        UC2((Se kursinnehåll))
        UC3((Ändra kursinnehåll))
        UC4((Hantera användare))
    end

    larare["Lärare"]
    admin["Admin"]

    elev --- UC1
    elev --> UC1
    elev --> UC2
    UC3 --> larare
    UC3 --> admin
    UC4 --> admin

Exempel 3: Webbutik

Det här exemplet liknar bilden du skickade: två aktörer som interagerar med samma system, och flera användningsfall som visar vad systemet ska klara av.

flowchart LR
    visitor["Visitor"]
    admin["Admin"]

    subgraph system["Online Store"]
        UC1((Place Order))
        UC2((Cancel Order))
        UC3((Manage Order))
        UC4((Change Order Status))
        UC5((Update Products))
    end

    visitor --- UC1
    visitor --- UC2
    visitor --- UC3
    UC2 --- admin
    UC3 --- admin
    UC4 --- admin
    UC5 --- admin

Det här är ett bra exempel på hur man kan hålla ett use case-diagram enkelt: identifiera aktörer först, lista bara de viktigaste funktionerna och visa systemgränsen tydligt.

Exempel:

Börja
Läs in ett heltal
Om talet är jämnt
Skriv "Jämnt tal"
Annars
Skriv "Udda tal"
Slut

Eller:

BEGIN
INPUT number
IF number MOD 2 == 0 THEN
PRINT "Even"
ELSE
PRINT "Odd"
END

Varför använda flödesscheman och pseudokod?

· Du får bättre struktur på din kod.

· Du ser logiska fel innan du programmerar.

· Du kan dela din lösning med andra utan att de behöver förstå ett visst språk.

· Du tränar din förmåga att tänka som en programmerare.

Öva själv

  1. Rita ett flödesschema som visar hur ett program frågar efter ett lösenord tills det är rätt, och därefter skriver “Access granted”.
  2. Skriv pseudokod för ett program som:

o Frågar efter ett pris.

o Frågar efter användarens ålder.

o Räknar ut rabatt (10 % för under 18, 15 % för över 65).

o Skriver ut det nya priset.

  1. Kombinera: Gör först ett flödesschema, skriv sedan pseudokod, och sist skriv programmet i Python eller C#.

Reflektion

· Kände du att flödesschemat hjälpte dig att tänka igenom logiken?

· Hur kan pseudokod fungera som en bro mellan problemformulering och kod?

· Vill du använda detta arbetssätt även i kommande projekt?

Det här är ett förslag på innehåll. Vad vill du justera? Du kan till exempel ändra språket, justera tonen, lägga mer fokus på ett visst ämne eller anpassa strukturen. Saknas något viktigt? Vill du att jag går vidare med Lektion 1.7 (Python)?

Läs mer

Fördjupa dig i planering innan du kodar

På Kapitel 3 går vi vidare med flödesscheman, pseudokod och hur du planerar en lösning innan du skriver själva koden.

Till Kapitel 3

Tillbaka till Kapitel 1