Upload
martin-trevino
View
47
Download
4
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
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
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.
Flödesdiagram
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
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
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
Abelli, B. (2004). Programmeringens Grunder – med exempel i C#. Lund: Studentlitteratur 88
fler?
nej
jaålder?
ålder < 18
18 ≤ ålder ≤ 64
ålder ≥ 65
Val
Abelli, B. (2004). Programmeringens Grunder – med exempel i C#. Lund: Studentlitteratur 99
Nej
Ja
13
1 3
2
2
Konnektorer
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
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
Jackson Structured Programming (JSP)
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
Abelli, B. (2004). Programmeringens Grunder – med exempel i C#. Lund: Studentlitteratur 1414
Selektion o Iteration *Sekvens
Symboler
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
Abelli, B. (2004). Programmeringens Grunder – med exempel i C#. Lund: Studentlitteratur 1616
Bo
Co
A
(villkor)
Selektion
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
Abelli, B. (2004). Programmeringens Grunder – med exempel i C#. Lund: Studentlitteratur 1818
A
B *
(villkor)
Iteration
Abelli, B. (2004). Programmeringens Grunder – med exempel i C#. Lund: Studentlitteratur 1919
C
A
Do *
Endast samma typ under en rotnod
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
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
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
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å.