1 / 27

Computervaardigheden

Computervaardigheden. Hoofdstuk 4 — Scripting ( Let op : dit is enkel voor studenten Biologie .). Inhoud. Dit hoofdstuk bekijkt heel kort de basis van scripting. Opstellen van functies. Conditionele code. Iteraties. Wat is scripting ?. Scripting is programmeren “in the small”

betrys
Download Presentation

Computervaardigheden

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. Computervaardigheden Hoofdstuk 4 — Scripting (Let op: dit is enkel voor studenten Biologie.)

  2. Inhoud • Dit hoofdstuk bekijkt heel kort de basis van scripting. • Opstellen van functies. • Conditionele code. • Iteraties.

  3. Wat is scripting ? • Scripting is programmeren “in the small” • Automatiseren van kleine, repetitieve taken • Vaak eenmalig gebruik • Excel biedt hiervoor VBScript aan • Het is een subset van grote broer Visual Basic • Heeft integratie met Excel

  4. De editor • Open VisualBasic Editor • Tools > Macro > Visual Basic Editor De code komt hier. Code testen kan (o.a.) hier.

  5. Voorbereidend werk • Maak Module • (1) rechtsklik op "VBA Project" • Dan: Insert > Module • Hernoem Module1 • (2) venster "Properties" • Klik in vak naast "(Name)" • Nieuwe naam: "GlobaleFuncties" 1 2

  6. Een eerste Functie • In Editor • Schrijf volgende code: • Sla op • In Excel • Plaats volgende formule in een cel: "=inc(0)" Public Function inc(x) inc = x + 1 End Function

  7. Testen van je code • Ga terug naar de Visual Basic Editor • In het venster "Immediate”: • Schrijf: "MsgBox(inc(1))" + keyboard: Enter • Dit toont een pop-up venstertje met daarin het resultaat van de berekening. • Schrijf: "Debug.print(inc(2))" + keyboard: Enter • Dit schrijft het resultaat van de berekening naar het Immediate venster. • Merk op dat je deze functies ook rechtsreeks in je eigen code kan gebruiken.

  8. Public Wat hier gedefinieerd wordt is "overal" te gebruiken. Function Wat we aan het maken zijn. name Vrij te kiezen, maar moet wel uniek zijn. parameters Data die meegegeven wordt en gebruikt kan worden binnen de functie. statements De echte code. Eén statement per lijn. End Function Einde van de code voor deze functie. De vorm van elke functie Public Function name(parameters) statements End Function

  9. Variabelen en "assignment" Een variabele is een naam die verwijst naar een waarde. naam = ”Bert” leeftijd = 22 Deze twee statements stellen twee variabelen (naam en leeftijd) in, elk met een eigen waarde (resp. de tekst “Bert” en het getal 22). leeftijd = leeftijd + 1 Dit statement neemt de waarde van variabele leeftijd (22), en telt er 1 bij op. Het resultaat (23) wordt daarna toegekend (ge-assigneerd) aan variabele leeftijd. Na afloop van deze statement heeft leeftijd de nieuwe waarde (23).

  10. Functie-oproep leeftijd = inc(leeftijd) Dit statement toont een functie-oproep. De functie die opgeroepen wordt is onze “inc” functie. Deze functie vraagt één parameter. We kiezen hiervoor de waarde van variabele leeftijd (23). De functie geeft een nieuwe waarde terug (24), en deze nieuwe waarde wordt ge-assigneerd aan de variabele leeftijd. Na afloop van dit statement is de nieuwe waarde van variabele leeftijd dan ook 24. functienaam(parameter1, parameter2, ...) Dit is de algemene vorm van een functie-aanroep. Je gebruikt de naam van de functie gevolgd met de lijst van parameters tussen haakjes. De parameters zelf worden gescheiden met kommas.

  11. Functie-waarde Hoe maak je duidelijk wat het resultaat moet zijn van een functie die je aan het schrijven bent ? Heel eenvoudig: assigneer de waarde die je wil doorgeven aan de naam van de functie. Bij onze “inc” schreven we dan ook: inc = x + 1 Eens de “End Function” bereikt wordt, neemt Excel deze waarde om door te geven aan de oproeper van de functie.

  12. Output en tekst-manipulatie Debug.Print(leeftijd) Dit statement schrijft de waarde van variabele leeftijd uit (24). Merk op dat ook dit statement een functie-aanroep is. Debug.Print(naam & ” is ” & leeftijd & ” jaar.”) Dit statement concateneert (d.m.v. de &’en) de waarde van variabele naam (“Bert”), “ is “, de waarde van variabele leeftijd (24) en “ jaar.”, en schrijft het geheel uit. Je zou dan ook in het immediate venster moeten zien verschijnen: “Bert is 24 jaar.”

  13. Commentaar in je code Het is vaak nuttig om een woordje uitleg te schrijven bij je code. Dit kan je doen met behulp van zogenaamde commentaar-regels. Een voorbeeld: ‘ Dit is commentaar. Volgende regel is dat niet. maand = 1 ‘ Dit is dan weer wel commentaar. Rem En dit ook. Alles wat na een enkele quote (‘) of na “Rem” staat, tot het einde van de lijn, wordt door Excel genegeerd. Je kan hier dan ook schrijven wat je wil.

  14. Voorwaardelijke code Volgende code doet vast wat je denkt: If (zon > 0) Then Debug.Print(”Zonneschijn.”) Else Debug.Print(”Geen zon.”) End If Dit is een voorbeeld van voorwaardelijke code. Afhankelijk van de waarde van variabele “zon” schrijf je ofwel de ene boodschap uit, ofwel de tweede. In geen geval zullen beide boodschappen verschijnen!

  15. expr true false else-block then-block Werking van het If-statement If expr Then then-block Else else-block End If If expr Then then-block End If expr true false then-block

  16. Voorwaardelijke expressies a = b ‘ is gelijk aan ? a <> b ‘ is niet gelijk aan ? a < b ‘ is kleiner dan ? a > b ‘ is groter dan ? a <= b ‘ is kleiner dan of gelijk aan ? a >= b ‘ is groter dan of gelijk aan ? Merk hier op dat "=" in VBScript gebruikt wordt zowel voor het testen op gelijkheid als voor assignatie. De context zou duidelijk moeten maken in welk geval je zit. expr_1 or expr_2 ‘ Geldt er minstens één ? expr_1 and expr_2 ‘ Gelden beide ? not expr ‘ Geldt dit niet ? Elke “expr” kan op zich weer een voorwaardelijke expressie zijn. Gebruik waar nodig haakjes om de juiste logica te krijgen.

  17. IF-statement variant expr1 true If expr1 Then block-1 ElseIf expr2 Then block-2 ‘ Enzovoort... ElseIf exprn-1 Then block-n-1 Else block-n End If false block-1 expr2 true false block-2 ... ... exprn-1 true block-n-1 false block-n

  18. Voorbeeld: faculteit ‘ Volgende functie berekent de faculteit van een getal. ‘ We nemen aan dat n >= 1. Public Function faculteit(n) If (n = 1) Then faculteit = 1 Else faculteit = n * faculteit(n - 1) End If End Function De implementatie van deze functie steunt op het feit dat n! = n * (n-1)!, en dit voor alle n. Dit “truukje” moet echter op een gegeven moment stoppen, vandaar de controle of n gelijk is aan 1, in welk geval de functiewaarde 1 moet zijn.

  19. Oneindige lus faculteit(-1) Probeer eens: Dit veroorzaakt een oneindige lus. faculteit(-1) ‘ => -1 * faculteit(-2) ‘ => -1 * -2 * faculteit(-3) ‘ => -1 * -2 * -3 * faculteit(-4) ‘ enz... Wat je dan bij uitvoering kan zien is dat Excel meldt dat er geen “stack space” meer is. Dit komt omdat elke functie-aanroep plaats op “de stack” vraagt. Door de oneindige lus heb je oneindig plaats nodig, wat nog steeds niet kan in onze computers... Hoe je met dergelijk situaties om moet gaan wordt wel duidelijk in de oefeningenlessen.

  20. Alternatieve definitie van faculteit ‘ Volgende functie berekent de faculteit van een getal. ‘ We nemen aan dat n >= 1. Public Function faculteit(n) faculteit = 1 Do While (n <> 1) faculteit = faculteit * n n = n - 1 Loop End Function Deze implementatie maakt gebruik van herhaling (ook “iteratie” genoemd). Hoe iteratie werkt, wordt getoond op de volgende slides.

  21. WHILE/UNTIL statement Do While expr block Loop expr false true block block wordt mogelijk 0 x uitgevoerd ! expr false Do Until expr block Loop true block

  22. Oneindige lus (2) faculteit(-1) Probeer nog eens: Dit veroorzaakt nog steeds een oneindige lus. faculteit(-1) ‘ => faculteit = -1; n = -2 ‘ => faculteit = -1 * -2; n = -3 ‘ => faculteit = -1 * -2 * -3; n = -4 ‘ enz... Ook hier weer kan Excel je een melding geven van het probleem. In dit geval zie je waarschijnlijk een “overflow” melding. Dit is omdat de waarde van variabele faculteit telkens groter en groter wordt. Er is echter een limiet aan wat de waarde van een getal kan zijn. Gaat de berekende waarde over die limiet dan krijg je “overflow”.

  23. FOR-statement (vorm) For naam = first To last Step step block Next naam naam = first first, last, step: expressies met als resultaat een geheel getal true false naam <= last block For naam = first To last block Next naam naam = naam + step Hierbij impliciet: step = 1

  24. Nog maar eens een faculteit ‘ Volgende functie berekent de faculteit van een getal. ‘ We nemen aan dat n >= 1. Public Function faculteit(n) faculteit = 1 For i = 1 To n faculteit = faculteit * i Next i End Function Ook hier maken we weer gebruik van iteratie. Het verschil met de “Do While” versie is dat we deze keer niet zelf onze “teller” moeten beheren. Merk op dat we deze keer geen oneindige lus krijgen als n = -1. Reden hiervoor is dat tellen van 1 tot -1 meteen stopt.

  25. Exit Function ‘ Volgende functie berekent de faculteit van een getal. Public Function faculteit(n) faculteit = 1 If (n < 1) Then Exit Function ‘ => Verlaat de functie met waarde 1. End If For i = 1 To n faculteit = faculteit * i Next i End Function Deze versie controleert de waarde van parameter n, en indien die kleiner dan 1 is stopt de functie meteen (Exit Function).

  26. Survival guide • Belangrijk • Een eigen functie definiëren. • Die functie kunnen aanroepen vanuit een werkblad. • Een IF-statement gebruiken. • Nuttig • Een lus-structuur gebruiken. • Loop While • Loop Until • For

  27. Conclusie • Scripting • Eigen functies opstellen en gebruiken vanuit Excel. • Conditionele code (If Then Else). • Iteratieve code. (Do While, Do Until, For).

More Related