Componenten van een algoritme Variabelen en hun Inhoud Instructies Sekwenties (van instructies) Selecties (tussen instructies) Herhalingen (van instructies) Procedures (verzameling van instructies) Modules (= idem, als black box) Documentatie
Aktie-diagram Beschrijving Standaard blok Repeterend blok Repetitie beschrijving Konditioneel blok Voorwaarde beschrijving Alternatieve blokken Voorwaarde beschrijving Voorwaarde beschrijving Voorwaarde beschrijving Globale beschrijving Genest blok: gedetaillerde uitwerking Beschrijving detail 1 Beschrijving detail 2
Aktie-diagram
Modules - Input Hoe kom je er aan ?? Initialisatie Geef startwaarden aan variabelen Lengte := 153 LEES Opdracht LEES ‘Lengte’ Uit een file Lengte := LEES_FILE ‘A:\proef.dta’ EDIT_FILE ‘A:\proef.dta’ Parameter overdracht Inhoud := PRODUKT Lngt,Brdt,Hgt PROGRAM ‘PRODUKT OUTPUT PARAM’
Modules - parameters PROGRAM 'MID' {Bereken gemiddelde van vector} LEES 'A' teller :=1 S := 0 LA := LENGTE A Herhaal S := S + A[teller] teller := teller + 1 Totdat LA KLEINER DAN teller Eindherhaal M := S GEDEELD DOOR LA SCHRIJF 'Het gemiddelde van vector A is ' PLAK M
Modules - parameters PROGRAM 'MID OUTPUT PARAM’ {Bereken gemiddelde van vector} A := PARAM teller :=1 S := 0 LA := LENGTE A Herhaal S := S + A[teller] teller := teller + 1 Totdat LA KLEINER DAN teller Eindherhaal OUTPUT := S GEDEELD DOOR LA z := MID 34,45,67,21,102,5,16 z = MID 34,45,67,21,102,5,
Modules PROGRAM 'MID OUTPUT PARAM {Bereken gemiddelde van vector} A := PARAM teller :=1 S := 0 LA := LENGTE A Als LA IDENTIEK EMPTY Dan OUTPUT := A Anders Herhaal S := S + A[teller] teller := teller + 1 Totdat LA KLEINER DAN teller Eindherhaal OUTPUT := S GEDEELD DOOR LA Eindals
Modules PROGRAM 'MID OUTPUT PARAM {Bereken gemiddelde van vector} A := PARAM Als IS_CHAR A Dan SCHRIJF 'Sorry...! Input is niet numeriek' Anders teller :=1 S := 0 LA := LENGTE A Als LA IDENTIEK EMPTY Dan OUTPUT := A Anders Herhaal S := S + A[teller] teller := teller + 1 Totdat LA KLEINER DAN teller Eindherhaal OUTPUT := S GEDEELD DOOR LA Eindals
Modules PROGRAM 'MID OUTPUT PARAM {Bereken gemiddelde van vector} A := PARAM OUTPUT := 0 Als IS_CHAR A Dan SCHRIJF 'Sorry...! Input is niet numeriek' Anders teller :=1 S := 0 LA := LENGTE A Als LA IDENTIEK EMPTY Dan OUTPUT := A Anders Herhaal S := S + A[teller] teller := teller + 1 Totdat LA KLEINER DAN teller Eindherhaal OUTPUT := S GEDEELD DOOR LA Eindals
Modules PROGRAM 'MID OUTPUT PARAM {Bereken gemiddelde van vector} A := PARAM OUTPUT := 0 Als IS_CHAR A Dan SCHRIJF 'Sorry...! Input is niet numeriek' Anders teller :=1 S := 0 LA := LENGTE A Als LA IDENTIEK EMPTY Dan OUTPUT := A Anders Als 1 < DIMENSIE A Dan SCHRIJF ‘Sorry…! Input is geen vector…’ Anders Herhaal S := S + A[teller] teller := teller + 1 Totdat LA KLEINER DAN teller Eindherhaal Eindals OUTPUT := S GEDEELD DOOR LA Eindals
Modules PROGRAM 'MID OUTPUT PARAM {Bereken gemiddelde van vector} A := PARAM {stop input parameters in variabele} OUTPUT := 0 {verstekwaarde voor output} Als IS_CHAR A {test of input numeriek is} Dan SCHRIJF 'Sorry...! Input is niet numeriek’ {foutmelding} Anders {input is numeriek} teller :=1 {initialiseer teller} S := 0 {initialiseer som op startwaarde 0} LA := LENGTE A {bereken lengte van input} Als LA IDENTIEK EMPTY {test of input scalair is} Dan OUTPUT := A {stop input dan gelijk in output} Anders {input is niet leeg} Als 1 < DIMENSIE A {test of input vector is} Dan SCHRIJF ‘Sorry…! Input is geen vector…’ Anders {input OK… we kunnen beginnen} Herhaal S := S + A[teller] teller := teller + 1 Totdat LA KLEINER DAN teller Eindherhaal Eindals OUTPUT := S GEDEELD DOOR LA Eindals
Modules PROGRAM 'MID OUTPUT PARAM {Bereken gemiddelde van vector} A := PARAM {stop input parameters in variabele} OUTPUT := 0 {verstekwaarde voor output} Als IS_NUM A {test of input numeriek is} Dan teller :=1 {initialiseer teller} S := 0 {initialiseer som op startwaarde 0} LA := LENGTE A {bereken lengte van input} Als LA IDENTIEK EMPTY {test of input scalair is} Dan OUTPUT := A {stop input dan gelijk in output} Anders {input is niet leeg} Als 1 < DIMENSIE A {test of input vector is} Dan SCHRIJF ‘Sorry…! Input is geen vector…’ Anders {input OK… we kunnen beginnen} Herhaal S := S + A[teller] teller := teller + 1 Totdat LA KLEINER DAN teller Eindherhaal Eindals OUTPUT := S GEDEELD DOOR LA Eindals Anders {input is NIET numeriek} SCHRIJF 'Sorry...! Input is niet numeriek’ {foutmelding} Eindals
Modules: Voordelen van het gebruik Passen in 'stapsgewijze verfijning’ als ontwerp model -> hebben een 'top-down' ontwerp tot gevolg Module is een op zichzelf staande component van elk algoritme dat het aanroept. Ontwerp van module en aanroepend algoritme kan apart gedaan worden: -> vereenvoudigd ontwerp- proces Om module in algoritme op te nemen is alleen nodig te weten wat de module doet; niet hoe ie het doet… Vereenvoudigen naast het ontwerpen van algoritmen ook het begrip. We hoeven alleen het effect van een module te kennen; niet het interne proces Eenmaal goed werkende modules kunnen worden ingevoegd in elk algorime dat hen nodig heeft. Opbouw van bibliotheek van modules.