Flowchart

Fra HTX Arduino
Spring til navigation Spring til søgning

Flowcharts anvendes til at beskrive funktionen af software.

Når man tegner et flowchart, så handler det om at give en mere overskuelig beskrivelse af softwaren.

Til brug for dette anvendes nogle standard figurer som man forbinder pile, så man beskriver de handlinger programmet udfører, og hvilken rækkefølge programmet gør det i. Denne dokumentationsform egner sig godt til programmer med sekventiel opførsel.

ISO Standard

Tegnemåden til Flowcharts er standardiseret inden for ISO 5807, så symboler og pile skal tegnes ud fra denne standard.

Standarden er defineret på ISO-organisationens hjemmeside[1], men her skal man betale for at kunne læse dokumentet.

Der ligger en udemærket beskrivelse på denne hjemmeside https://www.wikiwand.com/en/Flowchart[2], hvor de elementer der passer bedst til beskrivelse af program-flow er taget fra.

Software værktøj

Flowchart kan på enkel vis tegnes ved hjælp af Dia, der kan hentes på Dias download side.

Alternativt kan man anvende draw.io, der ligger på sin egen side, hvor man kan tegne diagrammer uden at installere et program.

https://app.diagrams.net/ ligger også et alternativ, som er godt at tegne flowcharts i.

Tegnestandarden

Herunder vises de elementer der indgår i tegnestandarden omkring flowcharts, specielt til at vise et program-flow.

Start og Stop

Til at angive starten af et program anvendes en aflang figur med afrundede ender som vist her:

Figuren der anvendes til at starte programforløbet i et flowchart med
Figuren der anvendes til at starte programforløbet i et flowchart med

Normalt placeres start-figuren i toppen af flowchartet, så man får en normal læseretning.

Nogle programmer afsluttes også, og den samme form anvendes til at afslutte et program med, som vist her:

Figuren der anvendes til at afslutte programforløbet i et flowchart med
Figuren der anvendes til at afslutte programforløbet i et flowchart med

Normalt når man har en afslutning på programmet, så placeres den i bunden af flowchartet.

Andre typer programmer afsluttes ikke, men vil fortsætte med at loope (som fx Arduino). Her vil man bare udelade stop-funktionen, og føre en pil derop hvor der loopes.

Handlinger

Når et program skal udføre en form for handling (gerne bestående af flere programlinjer), så anvendes et rektangel som vist her:

Figuren der anvendes til at udføre en handling i flowchartet
Figuren der anvendes til at udføre en handling i flowchartet

Normalt vil programforløbet komme ind i toppen af rektanglet, men det kan også komme ind af en side. Normalt vil programforløbet komme ud af bunden. Dette giver det mest naturlige læseforløb.

Betingelser

Både i if-sætninger og i loops anvendes betingelser, der illustreres med en rhombe som vist her:

Figuren der anvendes til at udføre en betingelse i flowchartet
Figuren der anvendes til at udføre en betingelse i flowchartet

Som det kan ses vil program komme ind i toppen af rhomben, og normalt vil den opfyldte betingelse komme ud af den ene side eller bunden, og den ikke opfyldte betingelse vil komme ud af den anden mulighed.

Der noteres ved linjerne hvad der kommer ud hvor (ja / nej).

Input og Output

For at angive at noget i et flowchart læser et input der kommer ude fra, eller at programmet sender et output til fx en skærm anvendes et parallelogram som vist her:

Figuren der anvendes til at angive et input eller et output i flowchartet
Figuren der anvendes til at angive et input eller et output i flowchartet

Normalt vil programforløbet komme ind i toppen af parallelogrammet, men det kan også komme ind af en side. Normalt vil programforløbet komme ud af bunden. Dette giver det mest naturlige læseforløb.

Kommentarer

Ønsker man at tilknytte en kommentar til en bestemt del af et flowchart kan det gøres som vist her:

Figuren der anvendes til at angive en kommentar i flowchartet
Figuren der anvendes til at angive en kommentar i flowchartet

Rutiner

Til mere sammensatte handlinger kan anvendes symbolet til en rutine som vist her:

Figuren der anvendes til at angive en sammensat rutine i flowchartet
Figuren der anvendes til at angive en sammensat rutine i flowchartet

Normalt vil dette symbol anvendes til rutiner, som bliver dokumenteret i sit eget selvstændige flowchart.

Forbindelser

Normalt anbefales det at holde flowcharts så simple at de er lette at overskue, men i enkelte tilfælde kan det være relevant at lave så store og komplekse flowcharts, at man er nødt til at dele flowchartet op. Det gøres forskelligt, alt efter om det er på samme side det fortsætter eller om det fortsætter på en anden side. De to symboler er vist her:

Figuren der anvendes til at angive en forbindelse til en anden del af flowchartet på samme side
Figuren der anvendes til at angive en forbindelse til en anden del af flowchartet på samme side

Figuren der anvendes til at angive en forbindelse til en anden del af flowchartet på en anden side
Figuren der anvendes til at angive en forbindelse til en anden del af flowchartet på en anden side

Program-Strukturer vist som flowchart

De grundlæggende strukturer der anvendes i de fleste programmeringssprog er vist ved beskrivelsen af strukturerne.

if-betingelsen

If kan kombineres med else til at give følgende strukturer:

If-flowchart.png

Flowchart for simpel if-sætning

If-else-flowchart.png

Flowchart for if-sætning med else

Else-if-flowchart.png

Flowchart for else-if-struktur

while-løkke

En while-løkke vil normalt kunne skitseres som følger:

While-flowchart.png
Flowchart der viser et eksempel på en while-løkke

do-while-løkke

En while-løkke vil normalt kunne skitseres som følger:

Do-while-flowchart.png
Flowchart der viser et eksempel på en do-while-løkke

for-løkke

For-løkken er lidt kompliceret at skitsere, og vil derfor tit blive simplificeret til en simpel handlingsboks, hvor der beskrives at noget gentages et antal gange

For-flowchart.png

Flowchart der viser kodeopbygningen i en for-løkke

For-kasse-flowchart.png

Flowchart der viser et simplere eksempel på en for-løkke

switch-strukturen

En forgrening ved hjælp af en switch-case struktur kan illustreres som følger, enten på en måde så den ligner en else-if struktur, eller med et modificeret symbol:

Switch-case1-flowchart.png

Switch-case struktur vist med klassisk flowchart

Switch-case2-flowchart.png

Switch-case struktur vist med ikke standard flowchart

Referencer

Kom i gang med Arduino
Grundlæggende forståelse for Arduino Arduino Hardware - Arduino Prototype Print - Blink Eksempel - Overblik - Serial Monitor - Simple Komponenter - Software og Udviklingsmiljø
Programmering af Arduino Anvendelse af Eksempler - Klasser og Objekter - Programafvikling i Arduino - Test af Programmer
Dokumentationsformer Dokumentation med Kode og Flowchart - Dokumentation med State-machines - Flowchart - Pseudokode - Program-kommentarer - Systemdokumentation - Syntaksfarvning - Blokdiagram - Pulsplaner - UML
Opkoblinger til Arduino Moduler og Biblioteker - Driver - Opkobling af Hardware - Simple Komponenter - Tips til anvendelse af ben på Arduino UNO
Kompliceret Programmering Arduino kombineret med Processing - Kommunikation fra Arduino til Processing - Kommunikation fra Processing til Arduino - CopyThread Multitasking - Dokumentation med State-machines - Tid og Samtidighed i Software - Arduino Memory
Kompliceret Hardware I2C - Andre Processorboards - Internet of Things (IoT)
Oprindelige Dokumenter PDF-Version - Forfattere
Software Udviklingsteknikker Agile metoder - Brugertest - SCRUM

Fasemodellen - Kravspecifikation - Databasedesign - Struktur eller Arkitektur - Softwaretest

Projekter Afstand programforslag - Lysmåling - Projektforslag - Prototyper
Undervisningsforløb 4t Valgfag til Folkeskolen - Læsevejledning 4t Valgfag - Materialer til 4t Valgfag - Undervisningsnoter 4t Valgfag - Undervisningsplan 4t Valgfag - Slides til Undervisning

Kort Valgfag til Folkeskolen - Læsevejledning Kort Valgfag - Materialer til Kort Valgfag - Undervisningsnoter Kort Valgfag - Undervisningsplan Kort Valgfag