24
Universiteit Antwerpen Scripting 5.1 Informatica Informatica 1rste BAC Biologie Hoofdstuk 5 Scripting

Informatica 1rste BAC Biologie

  • Upload
    fawzia

  • View
    43

  • Download
    0

Embed Size (px)

DESCRIPTION

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 - PowerPoint PPT Presentation

Citation preview

Page 1: Informatica 1rste BAC Biologie

Universiteit Antwerpen

Scripting

5.1Informatica

Informatica1rste BAC Biologie

Hoofdstuk 5Scripting

Page 2: Informatica 1rste BAC Biologie

Universiteit Antwerpen

Scripting

5.2Informatica

Inhoud• Inleiding• Programeerconstructies

– functies– variabelen (toekenning)– statements (print, ...)– controlestructuren (if, while, until, for)

• Oefeningen

Page 3: Informatica 1rste BAC Biologie

Universiteit Antwerpen

Scripting

5.3Informatica

Context• "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

Kan dit eenvoudiger ?

Page 4: Informatica 1rste BAC Biologie

Universiteit Antwerpen

Scripting

5.4Informatica

Editor voor Programmeercode

Project: Alle plaatsen waar VisualBasic code kan zittenProgrameercode wordt best bewaard in Modules

Programeercode wordt geschreven in de editor

Immediate: eventjes proberen

Inspecteren / veranderen van Properties (o.a. naam)

Page 5: Informatica 1rste BAC Biologie

Universiteit Antwerpen

Scripting

5.5Informatica

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

Page 6: Informatica 1rste BAC Biologie

Universiteit Antwerpen

Scripting

5.6Informatica

Eerste Functie• "VBASampleCode.txt"

– van de web-site• In Editor

– (1) Copy/Paste 1rste codePublic Function datafunction(x) If x = 0 Then datafunction = 0 Else datafunction = Cos(1 / x) End IfEnd Function

– (2) Bewaren• (3) Ga terug naar excel

– in cel "=datafunction(0)"

1

2

3

Page 7: Informatica 1rste BAC Biologie

Universiteit Antwerpen

Scripting

5.7Informatica

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

Page 8: Informatica 1rste BAC Biologie

Universiteit Antwerpen

Scripting

5.8Informatica

Functie (vorm)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 ...

Page 9: Informatica 1rste BAC Biologie

Universiteit Antwerpen

Scripting

5.9Informatica

Statementsname = ...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 & ")"

Page 10: Informatica 1rste BAC Biologie

Universiteit Antwerpen

Scripting

5.10Informatica

Varia• commentaarrem ...' ...

– 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"

Page 11: Informatica 1rste BAC Biologie

Universiteit Antwerpen

Scripting

5.11Informatica

IF-statement (vorm)If expr Then

then-blockElse

else-blockEnd If

If expr Thenthen-block

End If

expr

then-block else-block

true false

expr

then-block

true

false

Page 12: Informatica 1rste BAC Biologie

Universiteit Antwerpen

Scripting

5.12Informatica

IF-statement variant (vorm)If expr1 Then

block-1ElseIf expr2 Then

block-2...ElseIf exprn-1 Then

block-n-1Else

block-nEnd If

expr1

block-1

true

false

expr2

block-2

true

false

exprn-1

block-n-1

true

false

...

block-n

...

Page 13: Informatica 1rste BAC Biologie

Universiteit Antwerpen

Scripting

5.13Informatica

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 IfEnd Function

– Roep datafunction(x) op vanuit cel in rekenblad– Vervang "MsgBox" door "Debug.Print"– Roep datafunction(x) op vanuit "Immediate" window

Page 14: Informatica 1rste BAC Biologie

Universiteit Antwerpen

Scripting

5.14Informatica

Oproepen vanuit Spreadsheet• 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 IfEnd Function

Vervang sin(1/x) door•tan(1/x)•cos(1/x)Bewaar. Grafiek ennulpunten ?

Page 15: Informatica 1rste BAC Biologie

Universiteit Antwerpen

Scripting

5.15Informatica

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

Page 16: Informatica 1rste BAC Biologie

Universiteit Antwerpen

Scripting

5.16Informatica

Variabelen, Toekenning ("assignment")

• variabele = waardevb1=0vb2=0vb3=0 'vb1, vb2, vb3 bevatten 0vb1 = 1 'vb1 bevat 1vb2 = 2 'vb2 bevat 2

vb3 = vb1 + vb2 'vb3 bevat 3

vb1 = vb2 ' vb1 bevat 2

vb3 = vb3 + 1 ' vb3 bevat 4

0 0 0vb1 vb2 vb3

1 0 0vb1 vb2 vb3

1 2 0vb1 vb2 vb3

1 23

vb1 vb2

vb3

+

22

3 4vb3

+ 1

Page 17: Informatica 1rste BAC Biologie

Universiteit Antwerpen

Scripting

5.17Informatica

WHILE/UNTIL statement (vorm 1)

Do While exprblock

Loop

expr

block

truefalse

block wordt misschien

0 x uitgevoerd !

Do Until exprblock

Loop

expr

block

truefalse

Page 18: Informatica 1rste BAC Biologie

Universiteit Antwerpen

Scripting

5.18Informatica

WHILE/UNTIL statement (vorm 1)

Doblock

Loop While exprexpr

block

true

false

Doblock

Loop Until expr

expr

block

false

true

block wordt minstens

1 x uitgevoerd !

Page 19: Informatica 1rste BAC Biologie

Universiteit Antwerpen

Scripting

5.19Informatica

FOR-statement (vorm)For naam = first To last Step step

blockNext naam

true falsenaam <= last

block

naam = first

naam = naam + step

first, last, step:rekenkundige expressies

met als resultaat een geheel getal !!!

Page 20: Informatica 1rste BAC Biologie

Universiteit Antwerpen

Scripting

5.20Informatica

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 = mEnd Function

Probeer eens• computezero(0.38, 0.18)•computezero(0.18, 0.38)...keyboard: ctrl-break om te onderbreken

Page 21: Informatica 1rste BAC Biologie

Universiteit Antwerpen

Scripting

5.21Informatica

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 ...

Page 22: Informatica 1rste BAC Biologie

Universiteit Antwerpen

Scripting

5.22Informatica

Matrix met nulpuntberekeningen• Maak een matrix

– rij: 0 tot 0,39 step 0,1

– kolom: 0 tot 0,39 step 0,1

– waarde: computezero(...)

Page 23: Informatica 1rste BAC Biologie

Universiteit Antwerpen

Scripting

5.23Informatica

Oefeningen• 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

Page 24: Informatica 1rste BAC Biologie

Universiteit Antwerpen

Scripting

5.24Informatica

Conclusie• Inleiding• Programeerconstructies

– functies– variabelen (toekenning)– statements (print, ...)– controlestructuren (if, while, until, for)

• Oefeningen