23
9. Gör ritningen innan Du bygger huset

9. Gör ritningen innan Du bygger huset

Embed Size (px)

DESCRIPTION

9. Gör ritningen innan Du bygger huset. Beskrivning av algoritmen. Tillräckligt detaljerat för implementation Tillräckligt generellt för att vara oberoende av programmeringsspråket Flödesdiagram Jackson Structured Programming (JSP) Pseudokod. Varför?. Dokumentation - PowerPoint PPT Presentation

Citation preview

Page 1: 9. Gör ritningen innan Du bygger huset

9. Gör ritningen innan Du bygger huset

Page 2: 9. Gör ritningen innan Du bygger huset

Abelli, B. (2004). Programmeringens Grunder – med exempel i C#. Lund: Studentlitteratur 22

Beskrivning av algoritmen• Tillräckligt detaljerat för implementation• Tillräckligt generellt för att vara oberoende av

programmeringsspråket• Flödesdiagram• Jackson Structured Programming (JSP)• Pseudokod

Page 3: 9. Gör ritningen innan Du bygger huset

Abelli, B. (2004). Programmeringens Grunder – med exempel i C#. Lund: Studentlitteratur 33

Varför?• Dokumentation

• man kan i efterhand se varför man skrivit programmet på det sätt man har gjort. Detta gör också att det blir lättare för kollegor att i efterhand sätta sig in i hur programmet fungerar.

• Enklare att koda• med lösningen redan på pränt i form av pseudokod/ flödesschema blir kodningen

lättare.• Översikt

• desto större applikationer, desto mer komplex blir lösningen. Det är dödsdömt att tro att man kan göra ett större program utan att fästa algoritmerna på papper först. I detta arbete ser man också tydligare vilka delar som kan brytas ned till separata moduler och funktioner

• Programspråks- och plattformsoberoende• pseudokod/flödesschema/ JSP-diagram görs utan egentlig hänsyn till vilket

programspråk man senare skall koda i. Detta gör det också lättare att senare konvertera program från ett språk till ett annat.

• Man börjar i rätt ände• nämligen med att lösa själva problemet. Det visar sig snabbt att de som börjar

hacka kod direkt, fastnar i design av användargränssnitt eller andra detaljer utan ha lösningen till det egentliga problemet klar för sig.

Page 4: 9. Gör ritningen innan Du bygger huset

Flödesdiagram

Page 5: 9. Gör ritningen innan Du bygger huset

Abelli, B. (2004). Programmeringens Grunder – med exempel i C#. Lund: Studentlitteratur 55

Mata in person

Addera 1 till A1

Kategori 1?

Start

Stopp

Addera åldern till G1

Fler?

M1 = G1/A1

Skriv ut A1 och M1

M2 = G2/A2

Skriv ut A2 och M2

Nej

Ja

Addera 1 till A2

Addera åldern till G2

NejJa

Flödesdiagram

Page 6: 9. Gör ritningen innan Du bygger huset

Abelli, B. (2004). Programmeringens Grunder – med exempel i C#. Lund: Studentlitteratur 66

Start

Stopp

Symboler

Start- och stopp

Generell symbol för in- eller utmatning

Tangentbord

Lagrade data,

exempelvis fil på disk

Dokument, vanligen uttolkad som utskrift

på skrivare

Bildskärm eller annan

display

In- och utmatning

Page 7: 9. Gör ritningen innan Du bygger huset

Abelli, B. (2004). Programmeringens Grunder – med exempel i C#. Lund: Studentlitteratur 77

Bearbetning

Subprocedur eller funktion

Alternativ process-symbol

Bearbetning(vanligen en enkel imperativ sats)

Bearbetning någon annanstans(vanligen ett anrop till en procedur eller funktion)

Bearbetning

Page 8: 9. Gör ritningen innan Du bygger huset

Abelli, B. (2004). Programmeringens Grunder – med exempel i C#. Lund: Studentlitteratur 88

fler?

nej

jaålder?

ålder < 18

18 ≤ ålder ≤ 64

ålder ≥ 65

Val

Page 9: 9. Gör ritningen innan Du bygger huset

Abelli, B. (2004). Programmeringens Grunder – med exempel i C#. Lund: Studentlitteratur 99

Nej

Ja

13

1 3

2

2

Konnektorer

Page 10: 9. Gör ritningen innan Du bygger huset

Abelli, B. (2004). Programmeringens Grunder – med exempel i C#. Lund: Studentlitteratur 1010

1. Uppdatera löneregister

Start

Stopp

2. Beräkna lönen

3. Uppdatera lönekonton

4. Redigera statistik

Exempel: Lönebearbetning, huvudflöde

Page 11: 9. Gör ritningen innan Du bygger huset

Abelli, B. (2004). Programmeringens Grunder – med exempel i C#. Lund: Studentlitteratur 1111

Nej

Ja

Start 2.

Stopp

Läs in arbetstimmar

Arb.tim ≤ 40?

Nlön = Arb.tim * NTimLön

Registrera Nlön och Ölön

Ö.tim = Arb.tim - 40

Arb.tim = Arb.tim – Ö.tim

Ölön = Ö.tim * ÖTimLön

Exempel: Beräkna lönen

Page 12: 9. Gör ritningen innan Du bygger huset

Jackson Structured Programming (JSP)

Page 13: 9. Gör ritningen innan Du bygger huset

Abelli, B. (2004). Programmeringens Grunder – med exempel i C#. Lund: Studentlitteratur 1313

Jackson Structured Programming (JSP)

M1 = G1/A1 M2 = G2/A2

Addera 1 till A2

Addera åldern till G2

Programmet

Mata in person Kategori

Kvinna Annat

Addera 1 till A1

Addera åldern till G1

Bearbeta poster

o

*

Skriv ut A1 och M1

Skriv ut A2 och M2

o

(Så länge det finns uppgifter)

(1)

BPStomme

Page 14: 9. Gör ritningen innan Du bygger huset

Abelli, B. (2004). Programmeringens Grunder – med exempel i C#. Lund: Studentlitteratur 1414

Selektion o Iteration *Sekvens

Symboler

Page 15: 9. Gör ritningen innan Du bygger huset

Abelli, B. (2004). Programmeringens Grunder – med exempel i C#. Lund: Studentlitteratur 1515

C

A

E F

DB

sedan senare ännu senare

först

Nivå 1

Nivå 3

Nivå 2

Noder i ett träd

Endast lövnoderna ”utför” något

Page 16: 9. Gör ritningen innan Du bygger huset

Abelli, B. (2004). Programmeringens Grunder – med exempel i C#. Lund: Studentlitteratur 1616

Bo

Co

A

(villkor)

Selektion

Page 17: 9. Gör ritningen innan Du bygger huset

Abelli, B. (2004). Programmeringens Grunder – med exempel i C#. Lund: Studentlitteratur 1717

C

A

E F

DB

Selektion

Selektions-delar

o o o

o o

(villkor) (villkor)

(villkor)

Selektion

Page 18: 9. Gör ritningen innan Du bygger huset

Abelli, B. (2004). Programmeringens Grunder – med exempel i C#. Lund: Studentlitteratur 1818

A

B *

(villkor)

Iteration

Page 19: 9. Gör ritningen innan Du bygger huset

Abelli, B. (2004). Programmeringens Grunder – med exempel i C#. Lund: Studentlitteratur 1919

C

A

Do *

Endast samma typ under en rotnod

Page 20: 9. Gör ritningen innan Du bygger huset

Abelli, B. (2004). Programmeringens Grunder – med exempel i C#. Lund: Studentlitteratur 2020

Beräkna lönen

Löne-programmet

Uppdatera lönekonton

Uppdatera löneregister

Redigera statistik

Exempel: Lönebearbetning

Page 21: 9. Gör ritningen innan Du bygger huset

Abelli, B. (2004). Programmeringens Grunder – med exempel i C#. Lund: Studentlitteratur 2121

Ö.tim = Arb.tim - 40

Arb.tim = Arb.tim – Ö.tim

Ölön = Ö.tim * ÖTimLön

Övertid

Beräkna lönen

Nlön = Arb.tim * NTimLön

Läs in arbetstimmar

Registrera Nlön och Ölön

(Arb.tim > 40)

Beräkna övertid

- oo

Exempel: Beräkna lönen

Page 22: 9. Gör ritningen innan Du bygger huset

Abelli, B. (2004). Programmeringens Grunder – med exempel i C#. Lund: Studentlitteratur 2222

Subprocedur eller funktion

Extern bearbetning

Löne-programmet

Uppdatera löneregister

Beräkna lönen

Uppdatera lönekonton

Redigera statistik

Page 23: 9. Gör ritningen innan Du bygger huset

Abelli, B. (2004). Programmeringens Grunder – med exempel i C#. Lund: Studentlitteratur 2323

Pseudokod1. Efterlikna både bra kod och bra svenska,

• Identifierare skall ha begripliga namn, inkludera användbara kommentarer, indentera även pseudokoden så olika blocknivåer syns, samt att uttryck på svenska skall vara begripliga (oftast behöver de dock inte vara fullständiga meningar).

2. Strunta i onödiga detaljer. • Om du i pseudokod bekymrar dig över placeringen av punkt och komma, så är du på för

detaljerad nivå. Det är givetvis bra att använda någon standard för att gruppera sammanhängande programsatser (begin-end, måsvingar, eller något annat som blir tydligt), men fastna inte i hur det skrivs i något specifikt språk.

3. Hoppa över självklarheter. • I många fall är exempelvis vilken datatyp en viss variabel skall ha tydligt utifrån

sammanhanget. Om det inte är särskilt viktigt för programmet om det skall vara ett heltal eller reellt tal, så är det oftast onödigt att skriva ut det.

4. Utnyttja kortformer för särskilda koncept. • Konstruktioner som är återkommande genom flera programmeringsspråk är mycket

lämpliga att skriva på samma sätt även i pseudokod. Att använda parametrar när vi skriver pseudokod för procedurer och funktioner är tydligt och klart och kan knappast missförstås.

5. Kontrollera balansen i pseudokoden. • Det skall gå att enkelt utläsa av pseudokoden hur algoritmen skall kunna implementeras,

annars ligger pseudokoden på för hög nivå. Om pseudokoden däremot är svår att läsa och begripa ligger den troligen på för låg nivå.