1 / 24

Informatica 1rste BAC Biologie

Informatica 1rste BAC Biologie. Hoofdstuk 5 Scripting. Inhoud. Inleiding Programeerconstructies functies variabelen (toekenning) statements (print, ...) controlestructuren (if, while, until, for) Oefeningen. "functionzero.zip" gebruik die van vorige week of haal via de web-site

fawzia
Download Presentation

Informatica 1rste BAC Biologie

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Informatica1rste BAC Biologie Hoofdstuk 5 Scripting Scripting

  2. Inhoud • Inleiding • Programeerconstructies • functies • variabelen (toekenning) • statements (print, ...) • controlestructuren (if, while, until, for) • Oefeningen Scripting

  3. "functionzero.zip" gebruik die van vorige week of haal via de web-site vervang in alle rekenbladen de functie "sinus" door "cosinus" find-replace: "sin("  "cos(" hoeveel cellen moet je aanpassen ? hoeveel operaties heb je nodig ? nulpuntberekening convergeert niet meer ! pas a0 en b0 aan zie grafiek Context Kan dit eenvoudiger ? Scripting

  4. Editor voor Programmeercode Project: Alle plaatsen waar VisualBasic code kan zitten Programeercode wordt best bewaard in Modules Inspecteren / veranderen van Properties (o.a. naam) Programeercode wordt geschreven in de editor Immediate: eventjes proberen Scripting

  5. Voorbereiding • Open VisualBasic Editor • In Excel • >>Tools>>Macro>>Visual Basic Editor • Maak Module • (1) rechtsklik op "VBA Project (functionzero)" • >>Insert>>Module • Hernoem Module1 • nieuw naam "GlobaleFuncties" • (2) venster "Properties" 1 2 Scripting

  6. Eerste Functie • "VBASampleCode.txt" • van de web-site • In Editor • (1) Copy/Paste 1rste code Public Function datafunction(x) If x = 0 Then datafunction = 0 Else datafunction = Cos(1 / x) End If End Function • (2) Bewaren • (3) Ga terug naar excel • in cel "=datafunction(0)" 2 3 1 Scripting

  7. Even uitproberen • Ga terug naar Visual Basic Editor • in venster "Immediate" • "MsgBox datafunction(0.1)" + keyboard: Enter • "Debug.print datafunction (0.2)" + keyboard: Enter • Merk op: Amerikaanse conventie voor komma getallen Scripting

  8. Public Function name ( argumenten) statements End Function gereserveerde woorden public, function, end public wat hier gedefinieerd wordt is "overal" te gebruiken in tegenstelling tot "private" alleen binnen module Function we maken een functie <name> zelf in te vullen naam <argumenten> tussen haakjes, gescheiden door kommas <statements> programmacode elk statement begint op een nieuwe lijn End Function 't is gedaan ... Functie (vorm) Scripting

  9. name = ... Exit Function name = ... toekenning ("assignment") name wordt gelijk aan ... Exit Function berekening van functie is gedaan, ga naar "End Function" MsgBox ... waarschuwing via dialoog MsgBox "Hello World" MsgBox "datafunction(" & x & ")" Debug.print ... schrijf uit in "Immediate Window" Debug.Print "datafunction(" & x & ")" Statements Scripting

  10. commentaar rem ... ' ... alles na rem of ' wordt genegeerd uitleg naar lezer van programmacode tijdelijk een bepaald statement niet uitvoeren lange regels ... _ lange regels splitsen over meerdere regels ? "spatie" gevolgd door "_" gevolgd door "Enter" Varia Scripting

  11. If expr Then then-block Else else-block End If If expr Then then-block End If expr true false else-block then-block IF-statement (vorm) expr true false then-block Scripting

  12. If expr1 Then block-1 ElseIf expr2 Then block-2 ... ElseIf exprn-1 Then block-n-1 Else block-n End If IF-statement variant (vorm) expr1 true false block-1 expr2 true false block-2 ... ... exprn-1 true block-n-1 false block-n Scripting

  13. Voorbeeld (1) • Vervang code voor datafunction(x) door • Copy/Paste vanuit "VBASampleCode.txt" (web-site) Public Function datafunction(x) ' a function used as input for a spreadsheet ' producing graphs and calculating zero points MsgBox "oproep van datafunction(" _ & x & ")" If x = 0 Then datafunction = 0 Else datafunction = Cos(1 / x) End If End Function • Roep datafunction(x) op vanuit cel in rekenblad • Vervang "MsgBox" door "Debug.Print" • Roep datafunction(x) op vanuit "Immediate" window Scripting

  14. Vervang in "functionzero" alle IF(…=0;0;(COS(1/…))) door datafunction(...) bekijk grafiek en nulpunten Vervang code door voorbeeld3 Copy/Paste vanuit "VBASampleCode.txt" Application.volatile elke verandering aan rekenblad: alle oproepen datafunction herberekenen zie "Immediate window" Public Function datafunction(x) ' a function used as input ... ' producing graphs and ... Application.Volatile Debug.print _ "oproep van datafunction(" _ & x & ")" If x = 0 Then datafunction = 0 Else datafunction = sin(1 / x) End If End Function Oproepen vanuit Spreadsheet • Vervang sin(1/x) door • tan(1/x) • cos(1/x) • Bewaar. Grafiek en • nulpunten ? Scripting

  15. Herhaling: Nulpunten (Bissectie methode) • kies a0 en b0 zodat f(a0) < 0 en f(b0) > 0 • stap 0: stel m0 := (a0 + b0) / 2 • f(m0) = 0 ? GEVONDEN • f(m0) < 0 ? a1 := m0 en b1 := b0 • f(m0) > 0 ? a1 := a0 en b1 := m0 • ... • stap n: stel mn := (an + bn) / 2 • f(mn) = 0 ? GEVONDEN • f(mn) < 0 ? an+1 := mn en bn+1 := bn • f(m0) > 0 ? an+1 := an en bn+1 := mn • Benodigheden • variabelen • lus Scripting

  16. Variabelen, Toekenning ("assignment") • variabele = waarde vb1=0 vb2=0 vb3=0 'vb1, vb2, vb3 bevatten 0 vb1 = 1 'vb1 bevat 1 vb2 = 2 'vb2 bevat 2 vb3 = vb1 + vb2 'vb3 bevat 3 vb1 = vb2 ' vb1 bevat 2 vb3 = vb3 + 1 ' vb3 bevat 4 vb1 vb2 vb3 0 0 0 vb1 vb2 vb3 1 0 0 vb1 vb2 vb3 1 2 0 vb1 vb2 1 2 vb3 3 + 2 2 vb3 3 4 + 1 Scripting

  17. Do While expr block Loop WHILE/UNTIL statement (vorm 1) expr false true block block wordt misschien 0 x uitgevoerd ! expr false true Do Until expr block Loop block Scripting

  18. Do block Loop While expr WHILE/UNTIL statement (vorm 1) block expr true false block wordt minstens 1 x uitgevoerd ! Do block Loop Until expr block expr false true Scripting

  19. For naam = first To last Step step block Next naam FOR-statement (vorm) naam = first true false naam <= last first, last, step: rekenkundige expressies met als resultaat een geheel getal !!! block naam = naam + step Scripting

  20. Bissectiemethode (1rste poging) Public Function computeZero(a0, b0) 'calculates a zero point of a function using the bissection method a = a0 b = b0 m = (a + b) / 2 Do While Abs(datafunction(m)) > 0.000000001 ' Debug.Print " a = " & a & " - b = " & " - m = " & m If datafunction(m) > 0 Then b = m Else a = m End If m = (a + b) / 2 Loop computeZero = m End Function • Probeer eens • computezero(0.38, 0.18) • computezero(0.18, 0.38) • ... • keyboard: ctrl-break om te onderbreken Scripting

  21. Bissectiemethode (2de poging) Public Function computeZero(a0, b0) 'calculates a zero point of a function using the bissection method If datafunction(a0) > 0 Then computeZero = "First parameter " & a0 & _ " should have negative function value (has " _ & datafunction(a0) & ")" Exit Function End If If datafunction(b0) < 0 Then computeZero = "Second parameter " & b0 & _ " should have positive function value (has " _ & datafunction(b0) & ")" Exit Function End If a = a0 b = b0 m = (a + b) / 2 ... Scripting

  22. Matrix met nulpuntberekeningen • Maak een matrix • rij: 0 tot 0,39 step 0,1 • kolom: 0 tot 0,39 step 0,1 • waarde: computezero(...) Scripting

  23. schrijf functie "fsin(x)" grafiek en nulpunten via functionzero x = 0 dan fsin(x) = 1 x  0 dan fsin(x) = Sin(x) / x schrijf functie "fac(n)" faculteit(n) of n! n is positief natuurlijk getal n = 0 dan fac(n) = 1 n > 0 dan fac(n) = n * fac (n-1) schrijf met FOR en WHILE schrijf functie "MExp(x)" exponentieel via benadering door Maclaurin exp(x) = 1 + (x) + (x2 / 2!) + ... + (xn / n!) stop voor n = 10 stop als (xn / n!) < 10-10 schrijf functie "sumrange(a, b)" a en b natuurlijke getallen a < b: a + (a+1) + ... + b a > b: b + (b+1) + ... + a Oefeningen Scripting

  24. Conclusie • Inleiding • Programeerconstructies • functies • variabelen (toekenning) • statements (print, ...) • controlestructuren (if, while, until, for) • Oefeningen Scripting

More Related