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
- 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”.
- 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.
- 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.