GENEAAL - Plugin compiler versie 9.0

Maat: px
Weergave met pagina beginnen:

Download "GENEAAL - Plugin compiler versie 9.0"

Transcriptie

1 GENEAAL - Plugin compiler versie / 58

2 Inhoudsopgave Plugins voor GENEAAL... 3 Wat is een plugin?... 4 Plugin, variabelen... 5 Expressies en voorwaarden... 8 Opdrachten, functies Het gebruik van plugins Syntaxdiagrammen van de plugintaal PIPL Wat is een syntaxdiagram? Namen, getallen, tekenrijen en variabelen Expressies en voorwaarden Declaraties en specificaties Opdrachten en plugin-programma Standaardfuncties Databasefuncties s voor in- en uitvoer Algemene functies Het gebruik van de Plugin Compiler Overzicht van het maken van een plugin Plugintekst aanmaken en bewerken Plugintekst compileren en testen / 58

3 Plugins voor GENEAAL Inhoud Wat is een plugin? Plugin, variabelen Expressies en voorwaarden Opdrachten, functies Het gebruik van plugins 3 / 58

4 Wat is een plugin? Omschrijving GENEAAL is een programma dat de genealoog ondersteunt bij zijn werkzaamheden. Hij kan de genealogische gegevens over personen en relaties tussen de personen opslaan en bewerken. Er bestaat een groot aantal mogelijkheden voor het genereren van genealogische rapporten en uitvoer. Bekend zijn uiteraard de genealogie, het parenteel, de stamreeksen en de kwartierstaat. Daarnaast kan ook een z.g. uitgebreide genealogie worden gemaakt. Uitvoer kan een document (standaard MS-Word, of RTF), een webpagina, een schema of een CSV-bestand zijn. Toch kan het voorkomen dat de gebruiker een ander soort document of uitvoer wil maken dan er standaard in Geneaal is voorzien. Om dit te kunnen realiseren moet de gebruiker zelf een programma maken dat de gewenste uitvoer genereert. Zo'n, programma kan door Geneaal worden uitgevoerd en heet een plugin. Het is als het ware een kleine toepassing die in Geneaal wordt "geplugd" en door Geneaal wordt uitgevoerd. Het maken van een dergelijke plugin bestaat uit het programmeren in een eenvoudige programmeertaal, genaamd PIPL (PlugIn Programming Language). Iedereen die programmeerervaring heeft, zal dit gemakkelijk leren. Het is een taal die lijkt op zeer eenvoudig Pascal. Iemand die geen programmeerervaring heeft, kan de taal snel aanleren door zijn eenvoud. De gang van zaken bij het maken van een plugin is als volgt: programmeer de plugin. Dit kan met behulp van elke teksteditor. Met het programma Plugin Compiler kan ook de programmatekst worden aangemaakt in de taal PIPL. De Compiler herkent de taalwoorden en geeft deze in een speciale kleur weer, wat de leesbaarheid zeer bevordert. Nadat de plugin-tekst is ingevoerd moet deze worden opgeslagen. Dit wordt gedaan in een bestand met de extensie.tpi. "TPI" staat voor tekst plugin. Nu kan de plugin worden gecompileerd. Dit betekent dat de programmatekst wordt gecontroleerd op fouten, en bij afwezigheid van fouten wordt omgezet in een vorm die GENEAAL kan uitvoeren. Dit levert een bestand op als Plugin.GPI. De extensie GPI staat voor Geneaal-plugin. Om de plugin te gebruiken of te testen wordt GENEAAL gestart. Men kiest menu Extra, en daarna Plugins. Hier verschijnen alle plugins, waarna er één kan worden gekozen en uitgevoerd. 4 / 58

5 Plugin, variabelen wat is een programma? opbouw van een plugin variabelen voorbeeld Wat is een programma? Een programma in het algemeen bestaat uit een aantal opdrachten die een computer moet uitvoeren. Deze opdrachten moet de computer kunnen begrijpen om ze uit te voeren. Een taal die een computer kan uitvoeren is van een zeer eenvoudige structuur, b.v. een serie getallen die voor de computer een betekenis hebben als opdrachten. Voor de mens zijn deze reeksen getallen allesbehalve goed leesbaar. Daarom wordt een programma in een bepaalde programmeertaal geschreven, die de mens goed kan begrijpen en doorzien, maar die nog ongeschikt is om door de computer te laten uitvoeren. Zo'n programma geschreven in een programmeertaal moet eerst door een z.g. compiler (vertaler) worden vertaald (gecompileerd) naar een versie die door de computer kan worden uitgevoerd. Een programma zal in het algemeen bewerkingen/opdrachten uitvoeren op z.g. data, of informatie. Het programma bewerkt de data en produceert meestal weer andere data die wordt uitgevoerd. Daarom bestaat een computerprogramma uit twee delen: de data (of informatie) en de opdrachten die werken op die data. Een plugin-programma is ook een computerprogramma. Het is in die zin een bijzonder programma dat het niet rechtstreeks door een computer wordt uitgevoerd, maar door Geneaal, dat zelf ook een computerprogramma is. (In het vervolg zal, in plaats van "plugin-programma" over "Plugin"worden gesproken.) Voordat een plugin kan worden uitgevoerd door Geneaal, moet het ook eerst worden gecompileerd. Hiervoor is het programma Plugin Compiler beschikbaar. Opbouw van een plugin Een plugin wordt geschreven in de programmeertaal PIPL (Plugin Programming Language). Net als elke taal, bevat PIPL ook woorden. Dit kunnen woorden zijn die zijn gereserveerd voor het schrijven van een programma, of woorden die de programmeur zelf mag verzinnen. Een voorbeeld van het allereenvoudigste plugin-programma is: plugin programma1 description 'Eenvoudigste programma, dat niets doet...' main {dit programma heeft geen opdrachten} endmain In dit programma zijn enkele woorden vet geschreven. Dat zijn z.g. gereserveerde woorden, die tot PIPL behoren: plugin description main, endmain Hiermee start een plugin-programma. Achter plugin komt een naam, de titel van de plugin. Deze titel mag geen spatie of leesteken bevatten. Bovenstaande plugin heet dus: programma1. Het woord description gaat vooraf een een tekst die de beschrijving van de functie van de plugin geeft. Deze beschrijving mag alle tekens bevatten. Ze moet tussen twee bovenkomma's worden geplaatst. Opm. Zo'n tekst tussen bovenkomma's heet een tekenrij of (in het engels) string. Tussen de woorden main en endmain moeten de opdrachten worden geplaatst die worden uitgevoerd. In dit programma zijn er dus geen opdrachten: het programma doet dan ook niets. Het enige wat er wel staat tussen main en endmain is een zin tussen accolades: alles wat tussen accolades staat wordt door de Plugin Compiler beschouwd als commentaar, ofwel als iets dat niet tot het programma behoort. Commentaar is een hulpmiddel om de lezer van het programma de werking van het programma te verduidelijken. Opmerking: Het programma is weergegeven met behulp van een aantal kleuren. Dit komt de leesbaarheid ten goede. Deze kleuren worden ook gebruikt door de Plugin Compiler. Gebruikte kleuren zijn: zwart gereserveerde woorden en tekens van PIPL blauwgroen rood groen blauw namen en andere woorden tekenrij getallen commentaar PIPL heeft een aantal ingebouwde opdrachten. Deze kunnen worden gebruikt, zonder dat ze behoeven te worden 5 / 58

6 geprogrammeerd. Zulke opdrachten heten ook wel standaardfuncties. Eén van de standaardfuncties is de functie om een tekst te laten weer te geven door Geneaal: de functie melding Naam Parameter(s) Werking melding titel, tekenrij In een schermpje, met titel, wordt de tekenrij weergegeven. Voorbeeld: melding('informatie', 'Hallo iedereen!') We kunnen programma1 aanvullen met deze opdracht: plugin programma2 description 'Eenvoudig programma, dat iets meldt...' main {dit programma laat een scherm zien...} melding('informatie', 'Hallo iedereen!'); endmain Wanneer dit programma wordt gecompileerd (zie compileren) en daarna wordt uitgevoerd door Geneaal, dan laat Geneaal zien: N.B. Een compiler begrijpt alleen programma's die voldoen aan de definitie van de programmeertaal. Zo'n definitie is altijd zeer precies, en niet zoals b.v. een spreektaal, die veel vrijer kan worden gebruikt. Een compiler kan een programma afkeuren om de minste afwijking, b.v. een punt teveel, of te weinig. De definitie van PIPL wordt gegeven met behulp van goed toegankelijke syntaxdiagrammen. Zie hiervoor het hoofdstuk Syntaxdiagrammen van de plugintaal PIPL. In het vervolg zal bij ieder voorbeeld van een PIPL-taalelement een verwijzing worden gegeven naar een syntaxdiagram dat dit element beschrijft. Deze verwijzingen zullen in blauw worden gegeven. Beschrijving plugin Variabelen Alleen opdrachten zijn niet voldoende om een programma te maken dat een realistisch resultaat moet geven. Wanneer er bijvoorbeeld een programma gemaakt moet worden dat de eerste 100 getallen optelt, dan hebben is er tenminste een getal nodig dat aangeeft welk getal nu moet worden opgeteld en een getal dat de som weergeeft. Dergelijke getallen worden variabelen genoemd. Variabelen kunnen dus getallen weergeven, maar ook tekenrijen. Dat betekent dat ze van het type getal (engels number) of van het type tekenreeks (engels string) zijn. Elke variabele heeft een naam (engels: identifier) en een type. In PIPL kan men variabelen bekend maken (ofwel declareren) die men in het programma wil gebruiken. Een voorbeeld van een declaratie van variabelen is: globalvars Getal: number; Som: number; Het "kopje" globalvars geeft aan dat er een declaratiegedeelte volgt. Een declaratie bestaat uit de naam van de variabele, gevolgd door een ":" en een aanduiding voor het type van de variabele. In het voorbeeld zijn beide variabelen, Getal en Som van het type number (een getal dus). N.B. elke declaratie wordt gevolgd door een ";". Een kortere schrijfwijze is: globalvars Getal, Som: number; 6 / 58

7 Er zijn dus twee basistypen voor variabelen in PIPL: getal en tekenreeks, voorgesteld door number en string. N.B. Getallen kunnen gehele getallen zijn of gebroken getallen. In PIPL worden beide types gevangen onder het basistype number. Voorbeeld van een geheel getal: Voorbeeld van een gebroken getal: 10,25. N.B.2 Gebroken getallen kunnen niet zondermeer worden gebruikt in een programmatekst. Voor het weergeven van een gebroken getal moet worden gebruik gemaakt van een formule: 10,25 wordt ingevoerd als: /100. Omdat er ook vaak met lijsten getallen en lijsten tekenrijen wordt gewerkt bestaan er ook de typen getallenlijst en tekenrijenlijst. Een lijst is eigenlijk een rij die genummerd wordt vanaf 1 tot en met de laatste. De termen getallenlijst en tekenrijenlijst heten in PIPL resp. numberlist en stringlist. Om dergelijke lijsten te gebruiken moet er in de declaratie aangegeven worden hoe lang de lijsten maximaal zijn. De lengte wordt aangegeven door een geheel getal tussen "[" en "]". Voorbeeld: globalvars Leeftijden: numberlist[10]; {Leeftijden kan 10 getallen bevatten} Namen: stringlist[25]; {Namen bevat maximaal 25 tekenrijen} Lijsten hebben genummerde elementen. De nummering begint bij 1, en eindigt bij het maximum, zoals dat aangegeven wordt in de declaratie. In bovenstaande voorbeeld heeft Leeftijden elementen (getallen) met de nummers 1 t/m 10. Beschrijving declaratie, variabelen, globale variabelen 7 / 58

8 Expressies en voorwaarden expressies van type getal expressies van type tekenrij voorwaarden voorbeeld Expressies van het type getal In de toekenningsopdracht kan een variabele een waarde krijgen. Veelal zal een enkele waarde niet voldoende zijn, maar zal een z.g. expressie moeten worden gebruikt om "iets" uit te rekenen. Voorbeeld: Getal * 1/100 Hier wordt 1 % van Getal berekend. Het is een voorbeeld van een expressie. In een expressie van het type number (numerieke expressies) kunnen meer z.g. operatoren voorkomen dan de "*" (vermenigvuldiging). Operatoren in een numerieke expressie: + Optelling - Aftrekking; of unaire min * Vermenigvuldiging / Deling met resultaat een gebroken getal % Deling van gehele getallen, met als resultaat een geheel getal N.B. Operatoren worden in een bepaalde volgorde uitgevoerd in een expressie: eerst *, / of %, daarna + en -. Behalve operatoren, variabelen en getallen kunnen in numerieke expressies ook haakjes voorkomen: "(" en ")". Zij dienen om de volgorde van verwerking van de operatoren te wijzigen. Voorbeeld: (Getal - 100) / 200 Eerst wordt van de waarde van Getal 100 afgetrokken en dit resultaat wordt gedeeld door 200. Beschrijving numerieke expressie Expressies van het type tekenrij Niet alleen met getallen of variabelen van het type number kunnen expressies worden gemaakt, ook met tekenrijen en variabelen van het type string kunnen expressies worden opgebouwd: Voorbeeld: 'Naam:' ++ Totalenaam Hier wordt de tekenrij "Naam:" gekoppeld met de inhoud van string-variabele Totalenaam. Dit is een expressie van het type string (tekerijexpressie). In een tekerijexpressie kan maar één operator voorkomen alleen de koppel-operator (++). Beschrijving tekenrijexpressie Voorwaarden In een voorwaarde worden variabelen en expressies met andere vergeleken. Vaak komt voor dat getest moet worden of een variabele een bepaalde waarde heeft. Voorbeeld: Teller > 100 In dit voorbeeld wordt getest of de waarde van de variabele Teller groter is dan 100. Is dat zo dan is de waarde van de voorwaarde waar, anders levert de voorwaarde onwaar op. Er is een aantal vergelijkingsoperatoren waarmee voorwaarden kunnen worden gemaakt: 8 / 58

9 = Is gelijk bruikbaar voor number en string <> Is ongelijk bruikbaar voor number en string > Is groter dan bruikbaar voor number en string < Is kleiner dan bruikbaar voor number en string >= Is groter of gelijk bruikbaar voor number en string <= Is kleiner of gelijk bruikbaar voor number en string N.B. Een string a is groter dan string b wanneer a lexicografisch gezien ná b komt. Dus 'Wat' is groter dan 'Aap'. Evenzo geldt: een string a is kleiner dan string b wanneer a lexicografisch gezien vóór b komt. Voorbeeld: 'garage' is kleiner dan 'schuur'. Verder geldt dat hoofdletters voor kleine letters komen. Naast deze eenvoudige voorwaarden kunnen ook voorwaarden worden gecombineerd met behulp van de operatoren and, or en not (in het nederlands: en, of en niet). In de volgende tabel wordt duidelijk hoe deze operatoren werken. In de tabel staat r1 en r2 voor een voorwaarde, zoals hiervoor omschreven. Operator Gebruik Verklaring and r1 and r2 is waar alleen als én r1 én r2 waar zijn or r1 or r2 is waar wanneer óf r1 óf r2 waar is not not r1 is waar wanneer r1 niet waar is Voorbeelden: Wanneer getest moet worden of de waarde van Getal tussen 100 en 199 ligt, noteert men dat als: Getal >= 100 and Getal <= 199 (rechtstreeks testen of Getal binnen de grenzen ligt) of als: not (Getal < 100 or Getal > 199) (hier wordt getest of Getal niet buiten de grenzen ligt. Let ook op het gebruik van de haakjes!) Beschrijving voorwaarden 9 / 58

10 Opdrachten, functies Soorten opdrachten s Standaardfuncties Soorten opdrachten Zoals elke programmeertaal kent ook PIPL diverse soorten opdrachten. Hieronder een overzicht. toekenningsopdracht (engels: assignment statement) met een toekenningsopdracht kan een variabele een waarde worden gegeven. Voorbeeld: Getal := 1024; N.B. ":=" betekent: "wordt gelijk aan". Beschrijving toekenningsopdracht als-dan-anders-opdracht (engels: if-then-else statement) Met deze opdracht kan een voorwaarde worden getest of die waar is. Wanneer dit het geval is wordt het then-gedeelte uitgevoerd; anders (indien aanwezig) het else-gedeelte. Voorbeeld: if Getal = 1000 then Naam := 'kilo' else Naam := 'mega'; N.B. Het symbool "=" is duidelijk anders dan in de toekenningsopdracht gebruikt ":="-symbool. De enkele "=" vergelijkt twee grootheden ("is gelijk aan?"); en het symbool ":=" betekent "wordt gelijk aan". N.B.2 De opdracht achter then mag elke soort opdracht, behalve weer een als-dan-opdracht zijn; en achter else mag elke soort opdracht geplaatst worden. N.B.3 Het else-gedeelte mag worden weggelaten. Beschrijving als-dan-opdracht samengestelde opdracht (engels: compound statement) tussen de gereserveerde woorden begin en end worden een aantal opdrachten gezet, die dan als één geheel worden beschouwd. Een dergelijke samenstelling is goed te gebruiken in een als-dan-opdracht. Voorbeeld: begin Getal := 789; Naam := '<leeg>'; end; Beschrijving samengestelde opdracht lusopdracht (engels: loop statement) de tussen de gereserveerde woorden loop en endloop geplaatste opdrachten worden herhaald uitgevoerd: bij endloop wordt weer naar de eerste opdracht achter loop- gesprongen. De herhaling wordt gestopt wanneer aan de voorwaarde van een stop-als-opdracht wordt voldaan. Voorbeeld: loop Getal := Getal + 2; stopif Getal > 100; endloop; Beschrijving lusopdracht 10 / 58

11 stop-als-opdracht (engels: stopif statement) deze opdracht kan alleen voorkomen in een herhaalopdracht. Wanneer aan de voorwaarde achter stopif wordt voldaan, wordt de herhaalopdracht afgebroken, en verder gegaan met de opdracht na de herhaalopdracht. Voorbeeld: stopif Naam = 'Piet'; Beschrijving stop-als-opdracht resultaatopdracht deze opdracht kan alleen voorkomen in een functie. Achter het gereserveerde woord result komt een expressie. De functie krijgt hiermee een waarde. Zie s. Voorbeeld: result Getal - 2; Beschrijving resultaatopdracht N.B. Elke opdracht wordt dus afgesloten door een puntkomma (";"). s Het komt bij het programmeren van een plugin voor dat een aantal opdrachten telkens weer voorkomen. In zo'n geval is het handig om een dergelijk stukje code een naam te kunnen geven en met behulp van die naam het stukje telkens weer te kunnen gebruiken. Een dergelijk stukje code met een naam heet een functie. Een functie heeft dus een naam en een bevat een aantal opdrachten. Een voorbeeld is b.v. het geven van een bericht aan de gebruiker: function Bericht beginfunc Aantal := Aantal + 1; Melding('Bericht aan de gebruiker'); endfunc Deze functie telt het aantal berichten in de variabele Aantal (die als globale variabele elders in het programma is gedeclareerd) en geeft via de standaardfunctie Melding een bericht in een klein scherm. Telkens wanneer in het hoofdproramma een bericht moet worden gezonden, wordt de functie aangeroepen: Bericht; De functie zou nog beter bruikbaar zijn, wanneer van vanuit de functie-aanroep kon worden meegegeven wat het bericht is dat moet worden weergegeven aan de gebruiker. Dit kan met behulp van parameters: function Bericht(B:string) beginfunc Aantal := Aantal + 1; Melding(B); endfunc De functie Bericht is nu voorzien van een parameter B, die van het type string is. In de opdracht Melding staat nu dat het bericht B moet worden weergegeven in plaats van het 'constante' bericht 'Bericht aan de gebruiker'. De functie kan worden aangeroepen door: Bericht('Start'); en b.v. Bericht('Klaar'); Het zou ook wel eens gemakkelijk zijn dat een functie een waarde kan doorgeven. Wanneer er een functie nodig is om de getallen van 1 t/m n op te tellen, dan kan de functie de waarde van de som aan het programma doorgeven. De kop van de functie is dan: function Som(n: number): number Hierin is n de parameter die aangeeft tot hoeveel moet worden opgeteld vanaf 1. Aan het einde van de kop staat een aanduiding voor het type van het resultaat van de functie: number. Een functie kan een getal of een tekenrij als resultaat hebben. 11 / 58

12 Om een rij getallen op te kunnen tellen hebben we een variabele nodig die het op te tellen getal aangeeft en een variabele die de opgebouwde som voorstelt. Deze variabelen kunnen onder globalvars worden gedeclareerd, maar omdat deze alleen binnen de functie nodig zijn, kunnen ze ook bij de functie worden gedeclareerd onder localvars. De variabelen die onder localvars worden bekend gemaakt, zijn elders in het programma niet bekend. De functie ziet er als volgt uit: (N.B. alles wat tussen accolades staat is commentaar ter verduidelijking) function Som(n: number): number localvars i: number; s: number; beginfunc i := 1; {getalteller, begint bij 1 en moet lopen tot n} s := 0; {lopende som, initieel dus 0} loop stopif i > n; {de lusopdracht stoppen, wanneer i groter is dan n} s := s + i; {tel i op bij de lopende som} endloop; result s; {geef de functie als resultaat de lopende som in s} endfunc De functie kan worden aangeroepen met bijvoorbeeld: Gemiddelde := Som(12) / 12; Hier wordt het gemiddelde van 1 t/m 12 berekend. Hierboven is het concept van parameters weergegeven. Er is een aantal vormen van parameters mogelijk. In de functiekop: function Som(n: number): number is de parameter n van het type number. Dit betekent dat bij de aanroep de parameter n de waarde krijgt van de overeenkomste expressie in de aanroep. In feite lijkt n net een locale variabele onder localvars met dien verstande dat de parameter een beginwaarde krijgt bij de aanroep. Het is ook mogelijk om een parameter een soort doorgeefluik naar een globale variabele te laten zijn: function A(Par: numbervar): number beginfunc Par := Par + 1; endfunc De parameter Par is nu gespecificeerd als zijnde van het type numbervar i.p.v number. Wanneer B en C globale variabelen zijn van het type number dan is het effect van de aanroep: A(B); dat de globale variabele B met 1 wordt opgehoogd! Evenzo, bij de aanroep: A(C); wordt de globale variabele C met 1 opgehoogd. Ook de parametrs van het type numberlist en stringlist worden zo behandeld. dus: bij numbervar, stringvar, numberlist en stringlist wordt bij de aanroep niet de waarde van de meegegeven expressie doorgegeven aan de functie, maar het naam van de globale variabele. Beschrijving functiekop, locale variabelen, functiedeclaratie, formele parameters Standaardfuncties In de Plugin Compiler is een aantal functies ingebouwd, die de gebruiker niet zelf hoeft te definiéren. Deze functies hebben betrekking op een aantal gebieden: gegevens over personen, relaties en plaatsen uit de genealogiedatabase halen; uitvoer schrijven en invoer van de gebruiker lezen; nuttige functies m.b.t. tekenrijen, bestandsnamen, conversie van getallen naar tekst e.d. Al deze functies worden besproken in het hoofdstuk Standaardfuncties. 12 / 58

13 Het gebruik van plugins Hoe worden plugins opgeslagen? Een plugin bestaat in twee versies: Een leesbare tekstversie, deze wordt opgeslagen als bestand met de extensie.tpi. Deze versie wordt m.b.v. de Plugin Compiler aangemaakt en bewerkt. Een uitvoerbare versie, die de opdrachtcodes bevat die GENEAAL kan uitvoeren: een bestand met de extensie:.gpi. Deze versie wordt aangemaakt door de Plugin Compiler, na het controleren van de leesbare versie op fouten. Waar worden plugins opgeslagen? Iedere gebruiker van GENEAAL kan zijn eigen set van plugins hebben. De plugins worden standaard opgeslagen in de map C:\Documents and Settings\<gebruiker>\Application Data\GENEAAL\ (voor Windows XP). Voor Windows Vista, 7 en 8 is de map: C:\Users\<gebruiker>\AppData\Roaming\Geneaal. Men overigens wel plugin-teksten elders opslaan, maar de.gpi-bestanden moeten altijd in de genoemde map worden bewaard, anders kan GENEAAL ze niet vinden. Overigens hoeft men genoemde opslagmap normaliter niet te onthouden, zij wordt automatisch door de Plugin Compiler gekozen. 13 / 58

14 Syntaxdiagrammen van de plugintaal PIPL Inhoud Wat is syntaxdiagram? Namen, getallen, tekenrijen en variabelen Expressies en voorwaarden Declaraties en specificaties Opdrachten en plgin-programma 14 / 58

15 Wat is een syntaxdiagram? Wat is een syntaxdiagram? Elke (programmeer)taal heeft een aantal regels die beschrijven hoe de taal is opgebouwd, en waarmee men kan bepalen welke zinnen tot deze taal behoren. Zulke regels kan men natuurlijk met gewoon Nederlands weergeven, maar het blijkt erg moeilijk om met het Nederlands zeer precies de regels te formuleren. Daarom gebruikt men vaak wiskundige formules, die niet voor tweeërlei uitleg vatbaar zijn. Het is ook mogelijk om de regels niet met een formule weer te geven, maar schematisch, met een diagram. Zulk een diagram is voor iedereen gemakkelijk te begrijpen en te gebruiken. In een syntaxdiagram maak men gebruik van twee soorten "eenheden" (weergegeven met "blokjes") en van verbindingen tussen die eenheden. Verder heeft elke diagram een beginpunt en een eindpunt. De twee soorten eenheden zijn: elementaire eenheden: deze bestaan in het algemeen uit de symbolen/woorden die met het toetsenbord kunnen worden gemaakt, b.v. plugin Zulke eenheden worden in een syntaxdiagram weergegeven met: De "waarde" staat in het blokje vermeld. gedefinieerde eenheden: dit is een blokje met daarin de naam van een ander syntaxdiagram, weergegeven met: De naam in het blokje verwijst naar de naam van het elders gedefinieerde diagram. De verbindingen hebben de vorm van een pijl. De pijlrichting geeft aan op welke wijze men "door het diagram mag lopen". De pijlen gaan van een eenheid naar een eenheid of naar een eindpunt. Pijlen zien er als volgt uit: Men begint altijd bij het beginpunt van een diagram, dat altijd links is geplaatst. Het eindpunt staat altijd rechts. Een begin- of eindpunt wordt getekend als: Een syntaxdiagram zou men kunnen vergelijken met een "rangeerterrein": de trein begint links en kan al dan niet via afslaande wissels het eindpunt, rechts, bereiken: naam Bovenstaand diagram geeft weer hoe een naam kan worden verkregen. Men begint bij het beginpunt (links), moet dan naar rechts voorbij de elementaire eenheid "een letter", in de richting van de pijl, vervolgens naar de volgende elementaire eenheid, Daarna heeft men de keus: direct naar het eindpunt (rechts), óf terug naar de elementaire eenheid "letter, cijfer of _", en later naar het eindpunt. Wanneer men via een elementaire eenheid komt wordt opgeschreven wat deze 'produceert'. Aan het eindpunt heeft men een voorstelling van een naam. Voorbeelden van een naam zijn: "a", "abc", "jan_de_groot". Maar niet: "van 't hul", omdat hier spaties zijn gebruikt en een bovenkomma, die niet in een elementaire eenheid van het gebruikte diagram voorkomt! Ook niet "3a" omdat een naam niet met een cijfer mag beginnen. Het volgende syntaxdiagram bevat een elders gedefinieerde eenheid: 15 / 58

16 lijsttype Dit diagram levert een stukje van de taal PIPL op dat een lijsttype wordt genoemd. Men begint weer bij het beginpunt (links) en kiest eerst welke 'afslag' wordt genomen: b.v. die van "numberlist" (levert op: numberlist), vervolgens wordt "[" gepasseerd (geeft dus: numberlist[). Nu komt de gedefinieerde eenheid "getal". Hiervoor schakelt men naar het diagram getal: getal Dit diagram levert b.v. op: 25. Hierna gaat men weer terug naar het diagram lijsttype: het resultaat hiervan is na het uitvoeren van getal: numberlist[25. Tot slot volgt nog "]" en men bereikt het eindpunt, rechts. Totale resultaat voor een lijsttype in PIPL is dus numberlist[25]. Met bovenstaande voorbeelden is duidelijk gemaakt hoe syntaxdiagrammen kunnen worden gebruikt om correcte taalelementen van de taal PIPL te genereren. 16 / 58

17 Namen, getallen, tekenrijen en variabelen Namen naam Namen Basistypen Variabelen Opmerking: Voorbeelden: Een naam bestaat uit een letter, eventueel gevolgd door een aantal letters, cijfers of "onderstreping". z, A198, Piet_2 Basistypen getal Opmerking: Voorbeelden: Het diagram getal produceert alleen gehele getallen. Wanneer een gebroken getal moet worden gebruikt, kan dit worden genoteerd als een numerieke expressie. Voorbeeld: 9,67 wordt: /100. tekenrij Opmerking: Voorbeelden: Er is een aantal bijzondere tekens die in een tekenreeks mogen worden gebruikt: \n staat voor een nieuwe regel \\ staat voor een \ \ kan worden gebruikt om een tekenreeks over twee regels te verdelen \' staat voor een ', terwijl toch de tekenreeks niet wordt afgeloten 'Dit is een tekenreeks' 'Dit is een tekenreeks, verdeeld over\ twee regels' 'in deze zit een \', die niet het einde aangeeft' Variabelen eenvoudige variabele lijstvariabele Opmerking: Voorbeelden: De numerieke expressie moet een geheel getal opleveren. Ook mag de numerieke expressie geen getal opleveren dat kleiner is dan 1, of groter is dan de hoogst mogelijke index zoals die bij de declaratie is opgegeven. Wanneer Achternamen een lijst is, die is gedeclareerd als: Achternamen: stringlist[100], dan is Achternamen[25] of Achternamen[i] een lijstvariabele (van het type string). 17 / 58

18 Het eerste element uit de lijst is Achternamen[1], en het laatste element is Achternamen[100]. variabele Zie ook: naam, numerieke expressie, eenvoudige variabele, lijstvariabele 18 / 58

19 Expressies en voorwaarden Numerieke expressie en (algemene) expressie Tekenrij-expressie Logische expressie en voorwaarde Numerieke expressie en algemene expressie factor Opmerking: Voorbeelden: -12 Som(i) (24 % 4) Piet[2] De variabele moet een variabele zijn die uiteindelijk een number bevat. De functieaanroep moet een resultaat van het type number opleveren. term Opmerking: - Voorbeelden: 1000 a * b[1] Lijst[2] / 20 * 34 numerieke expressie Opmerking: Bovenstaande diagrammen definieren een bepaalde volgorde van berekenen voor wat betreft de operatoren. Zo wordt in een numerieke expressie als eerste uitgevoerd de unaire -, daarna de *, / en %; en tenslotte de + en - operatoren. Tip: bij twijfel over de volgorde, haakjes ( "(" en ")" ) gebruiken! De operator % staat voor de deling met een geheel resultaat (de "rest" van de deling wordt genegeerd). Voorbeelden: * 3 levert op 40 (4 + 12) * - 3 levert op / 5 levert op 2,5 12 % 5 levert op 2 19 / 58

20 expressie Zie ook: variabele, functieaanroep, numerieke expressie, getal, tekenrij-expressie Tekenrij-expressie tekenrijfactor Opmerking: Voorbeelden: De variabele moet een variabele zijn die uiteindelijk een tekenrij bevat. De functieaanroep moet een resultaat van het type tekenrij opleveren. S HfdLetters(T) 'Voornaam: ' tekenrijexpressie Opmerking: - Voorbeelden: 'Voornaam: ' ++ Persoon[i] Zie ook: variabele, functieaanroep, tekenreeks Logische expressie en voorwaarde logische factor Opmerking: - Voorbeelden: not true (z <= y) 20 / 58

21 logische term Opmerking: - Voorbeelden: a > 10 and b < 100 not (teller > 12 and voornaam <> '') logische expressie Opmerking: Voorbeelden: Bovenstaande diagrammen samen leveren een bepaalde volgorde van berekenen op voor wat betreft de operatoren not, and en or. Zo wordt als eerste uitgevoerd de not, daarna de and en tenslotte de or. Tip: bij twijfel over de volgorde, haakjes ( "(" en ")" ) gebruiken! not (teller > 12 and voornaam <> '') or achternaam = '' voorwaarde Opmerking: Voorbeelden: i >= 100 naam <= 'Zwier' In een voorwaarde worden expressies vergeleken. Deze expressies moeten van het zelfde type zijn. Dus een tekenrijexpressie kan alleen worden vergeleken met een tekenrijexpressie, en een numerieke expressie kan niet worden vergeken met een tekenrijexpressie. Voor numerieke expressies zijn de operatoren duidelijk. Voor een tekenrijexpressie is dat niet voorshand duidelijk. Een tekenrijexpressie is groter dan een andere tekenrijexpressie wanneer de eerste lexicografisch gezien na de tweede komt. Hierbij geldt dat de hoofdletters voor de kleine letters komen, dus: 'Jan' is kleiner dan 'Piet' (want J komt eerder in het alfabet dan P) en 'piet' is groter dan 'Piet' (want kleine letters komen na de hoofdletters) Zie ook: expressie 21 / 58

22 Declaraties en specificaties Declaratie- en specificatietypen Declaraties, globale variabelen declaratie Declaratie- en specificatietypen basistype lijsttype Opmerking: - Voorbeelden: numberlist[100] declaratietype Opmerking: Voorbeelden: Bij een lijsttype geeft het getal aan hoeveel getallen of tekenrijen er in de lijst kunnen worden opgeborgen. De elementen uit een lijst worden achtereenvolgens genummerd van 1 tot en met de waarde van het "getal". stringlist[2000] specificatietype Zie ook: getal, basistype, lijsttype 22 / 58

23 Declaraties, globale variabelen basisdeclaratie Opmerking: Voorbeelden: Wanneer er meer dan één naam wordt gebruikt, gescheiden door een komma, krijgen alle namen het type zoals dat achter de ":" is vermeld. Getal: number i,j:number Naam: string declaratie Opmerking: Voorbeelden: Wanneer er meer dan één naam wordt gebruikt, gescheiden door een komma, krijgen alle namen het type zoals dat achter de ":" is vermeld. Getal: numberlist[99] g,h:number Namen: stringlist[10] globale variabelen Opmerking: Voorbeelden: Globale variabelen kunnen dus leeg zijn, d.w.z. ze komen niet voor. Variabelen in een globalvars-sectie kunnen overal in het programma worden gebruikt. globalvars Voornaam: string; Aantal: number; Achternamen: stringlist[1000]; Zie ook: naam, basistype, declaratietype declaratie formele parameters Opmerking: Formele parameters worden tijden de functie-aanroep vervangen door de waarden die in de functieaanroep worden meegegeven. Met deze waarden worden de opdrachten in de functie uitgevoerd. Voor specificatietype is dit: number string aan de formele parameter wordt een getalwaarde toegekend aan de formele parameter wordt een tekenrij toegekend 23 / 58

24 Voorbeelden: numbervar stringvar numberlist stringlist a,b: stringvar; c: stringlist; d,e: number de formele parameter verwijst naar een globale variabele van type number de formele parameter verwijst naar een globale variabele van type string de formele parameter verwijst naar een globale variabele van type numberlist de formele parameter verwijst naar een globale variabele van type stringlist functiekop Opmerking: Voorbeelden: De naam is dus de functienaam, die ook bij de functieaanroep wordt gebruikt. De formele parameters kunnen leeg zijn. Telop(Van, Naar: number) Sorteer(L: stringlist; Aantal: numbervar) Bewerken( ) locale variabelen Opmerking: Voorbeelden: Locale variabelen zijn vergelijkbaar met globale variabelen. Er zijn twee uitzonderingen op deze vergelijking: 1. de locale variabelen zijn alleen bekend in de functie waarbinnen zij gedeclareerd zijn. 2. als locale variabelen kunnen alleen variabelen van een basistype worden genoemd, dus geen lijsten. localvars s: string; i: number; functiedeclaratie Opmerking: Voorbeelden: Elke functie heeft een resultaat: dit is een waarde van een basistype, dus een tekenrij (string) of een getal (number). Deze waarde wordt gevuld met behulp van de resultaat-opdracht. Wanneer er in de functie geen resultaat-opdracht voorkomt wordt de waarde van de functie '' (lege tekenrij) resp. 0. function PlakAanElkaar(a, b: string): string beginfunc result a ++ b; endfunc Zie ook: naam, specificatietype, basisdeclaratie, basistype, opdracht 24 / 58

25 Opdrachten en plugin-programma Opdrachten Opdrachten Plugin-programma functieaanroep Opmerking: Voorbeelden: Per opgegeven parameter in de functiedeclaratie moet er een waarde(expressie) in de aanroep worden geplaatst. De uitkomst van de expressie moet passen bij het specificatietype van de parameter. Zie hiervoor de opmerking bij formele parameters Telop(1,10) Sorteer(Namenlijst, 100) SchrijfTekst(0, 'Klaar!') toekenningsopdracht Opmerking: Het type van de exppressie moet passen bij het type van de variabele Bij type variabele past type number, numberlist, numbervar string, stringlist, stringvar Voorbeelden: i := 1 Namen[2] := 'Jansen' number string als-dan-opdracht Opmerking: Voorbeelden: De opdracht na then mag geen als-dan-opdracht zijn. Het else-deel mag worden weggelaten. if i < j then i := j else j := i if n > 10 then Klaar(1) stop-als-opdracht Opmerking: Voorbeelden: De stop-als-opdracht mag alleen voorkomen in een lusopdracht. stopif i >= Laatste 25 / 58

26 lusopdracht Opmerking: Voorbeelden: De opdrachten tussen loop en endloop worden herhaald uitgevoerd. loop Telop(i, Aantal); i := i + 1; stopif i > Aantal; endloop samengestelde opdracht Opmerking: Voorbeelden: De opdrachten tussen begin en end worden als één opdracht beschouwd. begin a := 1; Namenlijst[a] := Leeg; if b > a then a := b; end resultaat-opdracht Opmerking: De resultaat-opdracht kan alleen voorkomen in een functie Voorbeelden: result 1 result 25 * b + a opdracht Opmerking: Een functieaanroep is een element dat een waarde oplevert (een getal of een tekenrij). Wanneer de functie-aanroep niet in een expressie wordt gebruikt, maar als zelfstandige opdracht, dan wordt de resultaat waarde niet gebruikt. Zie ook: variabele, expressie, logische expressie 26 / 58

27 Plugin-programma plugin-programma Opmerking: Voorbeelden: De naam is de naam van de plugin. Deze naam wordt gebruikt als naam van de uitvoer van de compiler, het z.g. GPI-bestand. De tekenrij na description bevat de korte omschrijving van de functie van de plugin. Deze wordt in GENEAAL getoond. Voorbeeld van een (niet zinnig) programma waar alle taalelementen worden gebruikt: plugin voorbeeld description 'voorbeeld-programma dat geen\ \'zinnige\' taak uitvoert\n' globalvars n: number; s string; nl numberlist[10]; sl: stringlist[7]; function BergOp(Index: numbervar; Lijst: stringlist): number localvars i: number; beginfunc i := Index; if i < 7 then begin Lijst[i] := 'leeg'; s := GetalnaarTekst(i, 0) ++ ' gevuld!'; end; Index := Index + 1; result i; endfunc main s := 'ongevuld...'; n := 1; loop BergOp(n, sl); stopif n > 10; endloop endmain Zie ook: naam, tekenrij, globale variabelen, functiedeclaratie, opdracht 27 / 58

28 Standaardfuncties Inhoud Databasefuncties s voor in- en uitvoer Algemene functies Alle standaardfuncties zijn aan de Plugin Compiler reeds bekend. De gebruiker kan de functies in de plugin gebruiken, zonder deze te hoeven declareren. Bij de beschrijving van de functies zal telkens de functiekop worden gegeven, zodat duideljk is welke parameters nodig zijn en van welk type de parameters zijn. Ook wordt aangegeven welk resultaat de functie terug geeft. 28 / 58

29 Databasefuncties s voor persoonsgegevens s voor relatiegegevens s voor plaatsgegevens s voor verbinden met de database en de personenlijst s voor persoonsgegevens De functies voor het ophalen van persoonsgegevens hebben alle als eerste parameter nodig het persoonsnummer. Wanneer GENEAAL een persoonsnummer vermeldt als b.v. 2:234, dan is het getal om mee te geven aan een functie voor persoonsgegevens: 2 * : Dus familienummer * nummer binnen de familie. Datums worden teruggegeven zoals deze zijn ingevoerd in GENEAAL: dus in het formaat ddmmjjjj, eventueel voorafgegaan door C, N, V; of het formaat Tjjjjjjjj (tussen twee jaren). Tijdstippen (b.v. geboorteuur) worden weergegevn zoals deze zijn ingevoerd in GENEAAL, dus in het formaat uumm. De functies geven alle als resultaat een getal: 0 wanneer de functieuitvoering is mislukt (b.v. persoonsnummer bestaat niet, of er was een databasefout) 1 wanneer de functie goed is uitgevoerd. De uitvoer-parameter is altijd een stringvar of numbervar waarin het gevraagde veld van het persoonsrecord wordt geplaatst. kop Vraag titels van een persoon function PersoonTitels(Pnummer: number; Titels:stringvar): number Titels: de gevraagde titels, uitvoer Vraag voornamen van een persoon kop function PersoonVoornamen(Pnummer: number; Voornamen:stringvar): number Voornamen: de gevraagde voornamen, uitvoer Vraag patroniem van een persoon kop function PersoonPatroniem(Pnummer: number; Patroniem:stringvar): number Patroniem: het gevraagde patroniem, uitvoer Vraag tussenvoegsels van een persoon kop function PersoonTussenv(Pnummer: number; Tussenv:stringvar): number Tussenv: de gevraagde tussenvoegsels, uitvoer Vraag achternaam van een persoon kop function PersoonAchternaam(Pnummer: number; Achternaam:stringvar): number Achternaam: de gevraagde achternaam, uitvoer Vraag roepnaam van een persoon kop function PersoonRoepnaam(Pnummer: number; Roepnaam:stringvar): number Roepnaam: de gevraagde roepnaam, uitvoer 29 / 58

30 Vraag bijnaam van een persoon kop function PersoonBijnaam(Pnummer: number; Bijnaam:stringvar): number Bijnaam: de gevraagde bijnaam, uitvoer kop Vraag of de persoon ongehuwd is function PersoonOngehuwd(Pnummer: number; Ongehuwd:numbervar): number Ongehuwd: 0, wanneer de persoon niet ongehuwd is, 1, wanneer de persoon wel ongehuwd is, uitvoer kop Vraag geslacht van een persoon function PersoonGeslacht(Pnummer: number; Geslacht:stringvar): number Geslacht: 'M' wanneer de persoon een man is, 'V' wanneer de persoon een vrouw is, 'O' wanneer het geslacht onbekend is, uitvoer Vraag geboorteplaats van een persoon kop function PersoonGebPlaats(Pnummer: number; GebPlaats:numbervar): number GebPlaats: 0. wanneer de geboorteplaats onbekend is, anders het nummer van de geboorteplaats, uitvoer Vraag geboortedatum van een persoon kop function PersoonGebDatum(Pnummer: number; GebDatum:stringvar): number GebDatum: de gevraagde geboortedatum, uitvoer Vraag geboorteuur van een persoon kop function PersoonGebUur(Pnummer: number; GebUur:stringvar): number GebUur: het gevraagde geboortetijdstip, uitvoer kop Vraag geboortekalender van een persoon function PersoonGebKalender(Pnummer: number; Kal:stringvar): number Kal: de gevraagde kalender (G = gregoriaans, J = juliaans, - = v.chr.), uitvoer Vraag geboorteaktenummer van een persoon kop function PersoonGebAkte(Pnummer: number; GebAkte:stringvar): number GebAkte: het gevraagde geboorteaktenummer, uitvoer kop Vraag plaats van geboorteakte van een persoon function PersoonGebAktePlaats(Pnummer: number; GebAktePlaats:numbervar): number GebAktePlaats: 0: wanneer de geboorteakteplaats onbekend is, anders het nummer van de geboorteakteplaats, uitvoer 30 / 58

31 Vraag geboorteaktedatum van een persoon kop function PersoonGebAkteDatum(Pnummer: number; GebAkteDatum:stringvar): number GebAkteDatum: de gevraagde geboorteaktedatum, uitvoer kop Vraag geboorteaktekalender van een persoon function PersoonGebAkteKalender(Pnummer: number; Kal:stringvar): number Kal: de gevraagde kalender (G = gregoriaans, J = juliaans, - = v.chr.), uitvoer kop Vraag doopplaats van een persoon function PersoonDoopplaats(Pnummer: number; Doopplaats:numbervar): number Doopplaats: 0: wanneer de doopplaats onbekend is, anders het nummer van de doopplaats, uitvoer Vraag doopplaatstoevoeging van een persoon kop function PersoonDoopPlToev(Pnummer: number; DooplToev:stringvar): number DoopPlToev: de gevraagde toevoeging, uitvoer Vraag doopdatum van een persoon kop function PersoonDoopDatum(Pnummer: number; DoopDatum:stringvar): number DoopDatum: de gevraagde doopdatum, uitvoer kop Vraag doopkalender van een persoon function PersoonDoopKalender(Pnummer: number; Kal:stringvar): number Kal: de gevraagde kalender (G = gregoriaans, J = juliaans, - = v.chr.), uitvoer Vraag doopreligie van een persoon kop function PersoonDoopReligie(Pnummer: number; DoopReligie:stringvar): number DoopReligie: de gevraagde doopreligie, uitvoer kop Vraag overlijdensplaats van een persoon function PersoonOverlPlaats(Pnummer: number; OverlPlaats:numbervar): number OverlPlaats: 0: wanneer de overlijdensplaats onbekend is, anders het nummer van de overlijdensplaats, uitvoer Vraag overlijdensplaatstoevoeging van een persoon kop function PersoonOverlPlToev(Pnummer: number; OverlPlToev:stringvar): number OverlPlToev: de gevraagde toevoeging, uitvoer kop Vraag overlijdensdatum van een persoon function PersoonOverlDatum(Pnummer: number; OverlDatum:stringvar): number 31 / 58

32 OverlDatum: de gevraagde overlijdensdatum, uitvoer kop Vraag overlijdenskalender van een persoon function PersoonOverlKalender(Pnummer: number; Kal:stringvar): number Kal: de gevraagde kalender (G = gregoriaans, J = juliaans, - = v.chr.), uitvoer Vraag overlijdenstijdstip van een persoon kop function PersoonOverlUur(Pnummer: number; OverlUur:stringvar): number OverlUur: het gevraagde overlijdenstijdstip, uitvoer Vraag overlijdensaktenummer van een persoon kop function PersoonOverlAkte(Pnummer: number; OverlAkte:stringvar): number OverlAkte: het gevraagde overlijdensaktenummer, uitvoer kop Vraag overlijdensakteplaats van een persoon function PersoonOverlAktePlaats(Pnummer: number; OverlAktePlaats:numbervar): number OverlAktePlaats: 0: wanneer de overlijdensakteplaats onbekend is, anders het nummer van de overlijdensakteplaats, uitvoer Vraag overlijdensaktedatum van een persoon kop function PersoonOverlAkteDatum(Pnummer: number; OverlAkteDatum:stringvar): number OverlAkteDatum: de gevraagde overlijdensaktedatum, uitvoer kop Vraag overlijdensaktekalender van een persoon function PersoonOverlAkteKalender(Pnummer: number; Kal:stringvar): number Kal: de gevraagde kalender (G = gregoriaans, J = juliaans, - = v.chr.), uitvoer kop Vraag of de persoon overleden is function PersoonOverleden(Pnummer: number; Overleden:numbervar): number Overleden: 0: wanneer de persoon niet overleden is, 1: wanneer de persoon wel overleden is, uitvoer kop Vraag of de persoon begraven of gecremeerd is function PersoonBegrCrem(Pnummer: number; BegrCrem:stringvar): number BegrCrem: 'B' : de persoon is begraven (default) 'C' : de persoon is gecremeerd, uitvoer Vraag begrafenis- of crematieplaats van een persoon kop function PersoonBegrCremPlaats(Pnummer: number; BegrCremPlaats:numbervar): number 32 / 58

33 BegrCremPlaats: 0: wanneer de plaats onbekend is, anders het nummer van de plaats, uitvoer Vraag toevoeging begrafenis-/crematieplaats van een persoon kop function PersoonBegrCremPlToev(Pnummer: number; BegrCremPlToev:stringvar): number BegrCremPlToev: de gevraagde toevoeging, uitvoer Vraag begrafenis- of crematiedatum van een persoon kop function PersoonBegrCremDatum(Pnummer: number; BegrCremDatum:stringvar): number BegrCremDatum: de gevraagde datum, uitvoer Vraag begrafenis- of crematiekalender van een persoon kop function PersoonBegrCremKalender(Pnummer: number; Kal:stringvar): number Kal: de gevraagde kalender (G = gregoriaans, J = juliaans, - = v.chr.), uitvoer Vraag grafnummer van een persoon kop function PersoonGrafNummer(Pnummer: number; Grafnummer:stringvar): number GrafNummer: het gevraagde grafnummer, uitvoer kop Vraag relatienummer van de ouders van een persoon function PersoonRelatieOuders(Pnummer: number; RelatieOuders:numbervar): number RelatieOuders: het gevraagde relatienummer, uitvoer Vraag beroepen van een persoon kop function PersoonBeroepen(Pnummer: number; Beroepen:stringvar): number Beroepen: de gevraagde beroepen, uitvoer Vraag woonplaatsen van een persoon kop function PersoonWoonpl(Pnummer: number; Woonpl:stringvar): number Woonpl: de gevraagde woonplaatsen, uitvoer Vraag aantal relaties van een persoon kop function PersoonAantalRels(Pnummer: number; AantalRels:numbervar): number AantalRels: het gevraagde aantal relaties, uitvoer Vraag de n-de relatie van een persoon kop function PersoonRelatie(Pnummer: number; n: number; Relatie:numbervar): number n nummer van de relatie (maximaal 8), invoer Relatie: het gevraagde relatienummer, uitvoer 33 / 58

34 kop Vraag of de persoon afgerond is function PersoonAfgerond(Pnummer: number; Afgerond:numbervar): number Afgerond: 0: wanneer de persoon niet afgerond is, 1: wanneer de persoon wel afgerond is, uitvoer kop Vraag of de persoon waarschijnlijk overleden is function PersoonWaarschOverleden(Pnummer: number; WO:numbervar): number WO: 0: wanneer de persoon waarschijnlijk niet is overleden, 1: wanneer de persoon waarschijnlijk wel is overleden, uitvoer kop Vraag of de gegevens van een persoon uitgevoerd mogen worden function PersoonNietUitvoeren(Pnummer: number; NietUitvoeren:numbervar): number NietUitvoeren: 0: wanneer de gegevens wel uitgevoerd mogen worden, 1: wanneer de persoon niet uitgevoerd mogen worden, uitvoer kop Vraag privacy-gegevens van een persoon function PersoonPrivacy(Pnummer: number; Privacy:numbervar): number Privacy: 0 : geen beperking, 1 : alleen namen, 2 : verbergen, uitvoer Vraag opmerkingen/referenties bij de geboorte van een persoon kop function PersoonGebOpmRef(Pnummer: number; GebOpmRef:stringvar): number GebOpmRef: de gevraagde opmerkingen/referenties, uitvoer Vraag opmerkingen/referenties bij de doop van een persoon kop function PersoonDoopOpmRef(Pnummer: number; DoopOpmRef:stringvar): number DoopOpmRef: de gevraagde opmerkingen/referenties, uitvoer Vraag opmerkingen/referenties bij het overlijden van een persoon kop function PersoonOverlOpmRef(Pnummer: number; OverlOpmRef:stringvar): number OverlOpmRef: de gevraagde opmerkingen/referenties, uitvoer Vraag opmerking/referenties bij het begraven of de crematie van een persoon kop function PersoonBegrCremOpmRef(Pnummer: number; BegrCremOpmRef:stringvar): number BegrCremOpmRef: de gevraagde opmerkingen/referenties, uitvoer Vraag opmerking/referenties bij de namen van een persoon kop function PersoonNamenOpmRef(Pnummer: number; NamenOpmRef:stringvar): number NamenOpmRef: de gevraagde opmerkingen/referenties, uitvoer 34 / 58

35 Vraag algemene opmerkingen van een persoon kop function PersoonAlgemeneOpm(Pnummer: number; AlgemeneOpm:stringvar): number AlgemeneOpm: de gevraagde opmerking, uitvoer Vraag gegevens over gekoppelde beelden (bestanden) van een persoon kop function PersoonBeelden(Pnummer: number; Files:stringlist; Titels:stringlist; Aantal:numbervar): number Files: een lijst met bestandsnamen, inclusief de mapnamen, uitvoer Titels: een lijst met de titels van de beelden, uitvoer Aantal: het aantal ingevulde bestandsnamen en titels in de lijsten Files en Titels, uitvoer Vraag extra veld van een persoon kop function PersoonExtraVeld(Pnummer: number; VeldNr: number; Veld: stringvar): number VeldNr: het nummer van het extraveld. Nummering begint bij 1, uitvoer Veld: de inhoud van het gevraagde veld, uitvoer s voor relatiegegevens De functies voor het ophalen van relatiegegevens hebben alle als eerste parameter nodig het relatienummer. Datums worden teruggegeven zoals deze zijn ingevoerd in GENEAAL: dus in het formaat ddmmjjjj, eventueel voorafgegaan door C, N, V; of het formaat Tjjjjjjjj (tussen twee jaren). De functies geven alle als resultaat een getal: 0 wanneer de functieuitvoering is mislukt (b.v. relatienummer bestaat niet, of er was een databasefout) 1 wanneer de functie goed is uitgevoerd. De uitvoerparameter is altijd een stringvar of numbervar waarin het gevraagde veld van het relatierecord wordt geplaatst. kop Vraag het persoonsnummer van de man in een relatie function RelatieMan(Rnummer: number; Mannr:numbervar): number Mannr: het gevraagde persoonsnummer, uitvoer Vraag het persoonsnummer van de vrouw in een relatie kop function RelatieVrouw(Rnummer: number; Vrouwnr:numbervar): number Vrouwnr: het gevraagde persoonsnummer, uitvoer kop Vraag type van een relatie function RelatieType(Rnummer: number; RelType:stringvar): number RelType: 'H': de relatie is een huwelijk 'S': de relatie betreft een samenwoning 'R': de relatie is een geregisteerd partnerschap 'O': de relatie is van onbekend type, uitvoer Vraag ondertrouwplaats van een relatie kop function RelatieOndertrPlaats(Rnummer: number; OndertrPlaats:numbervar): number 35 / 58

36 OndertrPlaats: 0: wanneer de ondertrouwplaats onbekend is, anders het nummer van de ondertrouwplaats, uitvoer Vraag ondertrouwplaatstoevoeging van een relatie kop function RelatieOndertrPlToev(Rnummer: number; OndertrPlToev:stringvar): number OndertrPlToev: de gevraagde toevoeging, uitvoer Vraag ondertrouwdatum van een relatie kop function RelatieOndertrDatum(Rnummer: number; OndertrDatum:stringvar): number OndertrDatum: de gevraagde datum, uitvoer Vraag ondertrouwkalender van een relatie kop function RelatieOndertrKalender(Rnummer: number; Kal:stringvar): number Kal: de gevraagde kalender (G = gregoriaans, J = juliaans, - = v.chr.), uitvoer kop Vraag huwelijksplaats van een relatie function RelatieHuwPlaats(Rnummer: number; HuwPlaats:numbervar): number HuwPlaats: 0: wanneer de ondertrouwplaats onbekend is, anders het nummer van de ondertrouwplaats, uitvoer Vraag huwelijksplaatsoevoeging van een relatie kop function RelatieHuwPlToev(Rnummer: number; HuwPlToev:stringvar): number HuwPlToev: de gevraagde toevoeging, uitvoer Vraag huwelijksdatum van een relatie kop function RelatieHuwDatum(Rnummer: number; HuwDatum:stringvar): number HuwDatum: de gevraagde datum, uitvoer kop Vraag huwelijkskalender van een relatie function RelatieHuwKalender(Rnummer: number; Kal:stringvar): number Kal: de gevraagde kalender (G = gregoriaans, J = juliaans, - = v.chr.), uitvoer Vraag huwelijksaktenummer van een relatie kop function RelatieHuwAkte(Rnummer: number; HuwAkte:stringvar): number HuwAkte: het gevraagde aktenummer, uitvoer kop Vraag huwelijksakteplaats van een relatie function RelatieHuwAktePl(Rnummer: number; HuwAktePl:numbervar): number HuwAktePl: 0: wanneer de plaats onbekend is, anders het nummer van de plaats, uitvoer 36 / 58

37 kop Vraag kerkelijk huwelijkplaats van een relatie function RelatieKerkHuwPlaats(Rnummer: number;kerkhuwplaats :numbervar): number KerkHuwPlaats: 0: wanneer de plaats onbekend is, anders het nummer van de plaats, uitvoer Vraag toevoeging kerkelijk huwelijksplaats van een relatie kop function RelatieKerkHuwPlToev(Rnummer: number; KerkHuwPlToev:stringvar): number KerkHuwPlToev: de gevraagde toevoeging, uitvoer Vraag kerkelijk huwelijksdatum van een relatie kop function RelatieKerkHuwDatum(Rnummer: number; KerkHuwDatum:stringvar): number KerkHuwDatum: de gevraagde datum, uitvoer kop Vraag kerkelijk huwelijkskalender van een relatie function RelatieKerkHuwKalender(Rnummer: number; Kal:stringvar): number Kal: de gevraagde kalender (G = gregoriaans, J = juliaans, - = v.chr.), uitvoer Vraag kerkelijk huwelijk religie van een relatie kop function RelatieKerkHuwRel(Rnummer: number; KerkHuwRel:stringvar): number KerkHuwRel: de gevraagde religie, uitvoer kop Vraag of er gescheiden is in de relatie function RelatieGescheiden(Rnummer: number; Gescheiden:numbervar): number Gescheiden: 0: wanneer er niet gescheiden is, 1: wanneer er wel gescheiden is, uitvoer kop Vraag plaats van scheiding van een relatie function RelatieScheidPlaats(Rnummer: number; ScheidPlaats:numbervar): number ScheidPlaats: 0: wanneer de plaats onbekend is, anders het nummer van de plaats, uitvoer Vraag datum van scheiding van een relatie kop function RelatieScheidDatum(Rnummer: number; ScheidDatum:stringvar): number ScheidDatum: de gevraagde datum, uitvoer kop Vraag kalender van scheidingsdatum van een relatie function RelatieScheidKalender(Rnummer: number; Kal:stringvar): number Kal: de gevraagde kalender (G = gregoriaans, J = juliaans, - = v.chr.), uitvoer 37 / 58

38 Vraag het aantal kinderen uit een relatie kop function RelatieAantalKind(Rnummer: number; AantalKind:numbervar): number AantalKind: het gevraagde aantal kinderen, uitvoer Vraag het n-de kind van een relatie kop function RelatieKind(Rnummer: number; KNr: number; Kind:numbervar): number KNr: het rangnummer van het kind in de relatie, invoer Kind: het gevraagde persoonsnummer van het kind, uitvoer kop Vraag of er geen kinderen zijn uit een relatie function RelatieGeenKind(Rnummer: number; GeenKind:numbervar): number GeenKind: 0: wanneer er kinderen zijn, 1: wanneer er geen kinderen zijn, uitvoer kop Vraag of de gegevens van de relatie mogen worden uitgevoerd function RelatieNietUitvoeren(Rnummer: number; NietUitvoeren:numbervar): number NietUitvoeren: 0: gegevens wel uitvoeren, 1: gegevens niet uitvoeren, uitvoer Vraag opmerkingen/referenties bij de ondertrouw kop function RelatieOndertrOpmRef(Rnummer: number; OndertrOpmRef:stringvar): number OndertrOpmRef: de gevraagde opmerkingen/referenties, uitvoer Vraag opmerkingen/referenties bij het huwelijk kop function RelatieHuwOpmRef(Rnummer: number; HuwOpmRef:stringvar): number HuwOpmRef: de gevraagde opmerkingen/referenties, uitvoer Vraag opmerkingen/referenties bij het kerkelijk huwelijk kop function RelatieKerkHuwOpmRef(Rnummer: number; KerkHuwOpmRef:stringvar): number KerkHuwOpmRef: de gevraagde opmerkingen/referenties, uitvoer Vraag opmerkingen/referenties bij de scheiding kop function RelatieScheidOpmRef(Rnummer: number; ScheidOpmRef:stringvar): number ScheidOpmRef: de gevraagde opmerkingen/referenties, uitvoer Vraag algemene opmerkingen bij een relatie kop function RelatieAlgemeneOpm(Rnummer: number; AlgemeneOpm:stringvar): number AlgemeneOpm: de gevraagde algemene opmerkingen, uitvoer kop Vraag extra veld van een relatie function RelatieExtraVeld(Rnummer: number; VeldNr: number; Veld: stringvar): number 38 / 58

39 VeldNr: Veld: het nummer van het extraveld. Nummering begint bij 1, uitvoer de inhoud van het gevraagde veld, uitvoer s voor plaatsgegevens De functies voor het ophalen van plaatsgegevens hebben alle als eerste parameter nodig het plaatsnummer. De functies geven alle als resultaat een getal: 0 wanneer de functieuitvoering is mislukt (b.v. plaatsnummer bestaat niet, of er was een databasefout) 1 wanneer de functie goed is uitgevoerd. De tweede parameter is altijd een stringvar waarin het gevraagde veld van het plaatsrecord wordt geplaatst. Vraag plaatsnaam kop function PlaatsNaam(Plnummer: number; Naam:stringvar): number Parameters Plnummer: plaatsnummer, invoer Naam: de gevraagde plaatsnaam, uitvoer Vraag provincienaam kop function PlaatsProv(Plnummer: number; Prov:stringvar): number Parameters Plnummer: plaatsnummer, invoer Prov: de gevraagde provincienaam, uitvoer Vraag landnaam kop function PlaatsLand(Plnummer: number; Land:stringvar): number Parameters Plnummer: plaatsnummer, invoer Land: de gevraagde landnaam, uitvoer s voor verbinden met de database en de personenlijst Deze functies dienen o.a. om verbinding te leggen met een familie in de database of met de huidige personenlijst. Verder kunnen de (naam van de) huidige geopende familie, de huidige persoon en het aantal families in het geopende dossier worden opgevraagd. Een aparte functie is die voor het toevoegen van een persoon aan de personenlijst. Verbind met de personenlijst kop function ConnectSelectie(AantalPers: numbervar): number Parameters AantalPers: aantal personen in de personenlijst, uitvoer Resultaat 0: de connectie is mislukt 1: de verbinding is tot stand gebracht. De personen uit de personenlijst kunnen worden opgevraagd met behulp van de functie VolgendeSelPersoon. Het aantal personen in de lijst wordt doorgegeven in AantalPers. kop Verbind met een familie function ConnectFamilie(FamNr: number; AantalPers: numbervar): number Parameters FamNr het nummer van de familie waarmee verbonden moet worden, invoer AantalPers: aantal personen in de personenlijst, uitvoer Resultaat 0: de connectie is mislukt (b.v. FamNr incorect) 1: de verbinding is tot stand gebracht. De personen uit de gevraagde kunnen worden opgevraagd met behulp van de functie VolgendeFamPersoon. Het aantal personen in 39 / 58

40 de familie wordt doorgegeven in AantalPers. kop Selecteer de volgende persoon uit personenlijst function VolgendeSelPersoon(Volgende: number): number Parameters Volgende het rangnummer van de persoon die geselecteerd moet worden, invoer Het rangnummer loopt van 1 t/m aantal personen in de personenlijst. Resultaat 0: de persoon bestaat niet (b.v. fout rangnummer) <> 0: het persoonsnummer van de gevraagde persoon. kop Selecteer de volgende persoon uit familie function VolgendeFamPersoon(Volgende: number): number Parameters Volgende het rangnummer van de persoon die geselecteerd moet worden, invoer Het rangnummer loopt van 1 t/m aantal personen in de familie. Resultaat 0: de persoon bestaat niet (b.v. fout rangnummer) <> 0: het persoonsnummer van de gevraagde persoon. kop Vraag aantal families in het geopenden dossier function AantalFamilies(AantalF: numbervar): number Parameters AantalF het aantal families in het dossier, uitvoer N.B. Wanneer er geen dossier is geopend, is het aantal families gelijk aan 0. Resultaat 0: de aanroep is mislukt 1: het aantal families is doorgegeven in AantalF kop Vraag nummer van de huidige familie function HuidigeFamilies(FamNr: numbervar): number Parameters FamNr het nummer van de huidige geopende familie, uitvoer N.B. Wanneer er geen familie is geopend, is het FamNr gelijk aan 0. Resultaat 0: de aanroep is mislukt 1: het nummer is doorgegeven in FamNr Vraag naam van een familie kop function NaamFamilie(FamNr: number; Naam: stringvar): number Parameters FamNr: het nummer van de gewenste familie, invoer Naam: de naam van de familie (incl. tussenvoegsels), uitvoer Resultaat 0: de aanroep is mislukt (b.v. het FamNr is incorrect, of er is geen familie open) 1: de naam van de familie is doorgegeven in Naam Voeg persoon toe aan de personenlijst kop function VoegToeAanSelectie(PNummer: number): number Parameters PNummer: het nummer van de toe te voegen persoon, invoer Resultaat 0: komt niet voor 40 / 58

41 1: de persoon is toegevoegd aan de lijst kop Vraag sectiegegevens function SectieGegevens(Scheidingsteken: stringvar): number Parameters Scheidingsteken het teken waarmee de sectie worden gescheiden in een veld, uitvoer Resultaat het aantal secties Vraag gegevens extra velden kop function AantalExtraVelden(ExtraPers: numbervar; ExtraRel: numbervar): number Parameters ExtraPers het aanrtal extra velden bij een persoon, uitvoer ExtraRel het aantal extra velden bij een relatie, uitvoer Resultaat altijd 1 41 / 58

42 s voor in- en uitvoer s voor in- en uitvoer Invoer kan worden gelezen van de gebruiker, d.m.v vragen door een schermpje; of door lezen uit een tekstbestand. Voor het lezen van invoer van een scherm is het niet nodig om een invoerstroom te openen. Voor het lezen van een bestand is dat wel nodig, hiervoor is de functie OpenIn beschikbaar. Deze invoerstroom moet ook weer worden gesloten d.m.v. SluitIn. Uitvoer kan worden geschreven naar de meldingenlijst in het plugin-scherm van GENEAAL. Deze uitvoerstroom heeft nummer 0, en behoeft niet te worden geopend of gesloten. Voor uitvoer naar een bestand wordt gebruik gemaakt van uitvoerstroom 1. Deze uitvoer moet wel worden geopend, d.m.v OpenUit, en gesloten d.m.v. de functie SluitUit. kop Open een bestand voor de invoerstroom function OpenIn(Filenaam: stringvar; Ext, Titel: string): number Parameters Filenaam: De naam van het te openen bestand, invoer/uitvoer Wanneer de naam de lege tekenrij bevat, wordt een standaard Windows-opendialoog getoond. Hiermee kan een bestand worden gekozen op de standaard manier. Is een bestand gekozen, dan bevat na terug keer uit de functie de parameter Filenaam de naam van het gekozen bestand (incl. de mapnaam). Ext: Titel: Wanneer Fileaam een geldige bestandsnaam bevat tijdens de aanroep, wordt geen open-dialoog gestart, maar geprobeerd om dit bestand zonder tussenkomst van de gebruiker te openen. wanneer de parameter Filenaam leeg is wordt de opendialoog gestart met de instelling zoeken naar bestanden met extentie Ext, invoer wanneer de parameter Filenaam leeg is wordt de opendialoog gestart met de titel Titel, invoer Resultaat 0: de aanroep is mislukt. 1: het bestand met naam Filenaam is geopend voor invoer. Open een bestand voor de uitvoerstroom 1 kop function OpenUit(Filenaam: stringvar; Ext, Titel: string): number Parameters Filenaam: De naam van het te openen bestand, invoer/uitvoer Wanneer de naam de lege tekenrij bevat, wordt een standaard Windows-save-dialoog getoond. Hiermee kan een bestand worden gekozen op de standaard manier. Is een bestand gekozen, dan bevat na terug keer uit de functie de parameter Filenaam de naam van het gekozen bestand (incl. de mapnaam). Ext: Titel: Wanneer Fileaam een geldige bestandsnaam bevat tijdens de aanroep, wordt geen save-dialoog gestart, maar geprobeerd om dit bestand zonder tussenkomst van de gebruiker te openen. wanneer de parameter Filenaam leeg is wordt de savedialoog gestart met de instelling zoeken naar bestanden met extentie Ext, invoer wanneer de parameter Filenaam leeg is wordt de savedialoog gestart met de titel Titel, invoer Resultaat 0: de aanroep is mislukt. 1: het bestand met naam Filenaam is geopend voor uitvoerstroom 1. kop Sluit een invoerbestand function SluitIn( ): number 42 / 58

43 Resultaat 0: komt niet voor. 1: het invoerbestand is gesloten. Opmerking wanneer de invoerstroom niet open is, wordt het programma afgebroken. Sluit een uitvoerbestand kop function SluitUit( ): number Resultaat 0: komt niet voor. 1: het uitvoerbestand is gesloten. Opmerking wanneer de uitvoerstroom niet open is, wordt het programma afgebroken. Bepaal of een bestand aanwezig is kop function BestandBestaat( Filenaam: string): number Resultaat 0: bestand bestaat niet 1: het bestand is aanwezig Vraag een tekst van de gebruiker d.m.v een scherm kop function Vraag(TitelTekst: string; Vraag: string; Antwoord stringvar ): number Parameters TitelTekst: de tekst die als titel van het scherm fungeert, invoer Vraag: Antwoord: de tekst die de vraag inhoudt, invoer de, door de gebruiker teruggegeven tekst, uitvoer Resultaat 0: de gebruiker heeft op de Annuleren-knop gedrukt 1: de vraag is beantwoord, Antwoord bevat de tekst van de gebruiker. Meldt een tekst aan de gebruiker d.m.v een scherm kop function Melding(TitelTekst: string; Tekst: string ): number Parameters TitelTekst: de tekst die als titel van het scherm fungeert, invoer Tekst: de inhoud van de melding, invoer Resultaat 0: komt niet voor 1: de melding is gegeven en gezien door de gebruiker. Vraag initiële waarden aan de gebruiker kop function Initscherm(OpbouwRes: stringlist ): number Parameters OpbouwRes: een tekenrijlijst waarin de opbouw van het vraagscherm staat. De uitvoer wordt ook in de zelfde lijst gegeven, in-, uitvoer De lijst kan een aantal regels (tekenrijen) bevatten. Er zijn twee soorten regels: 1. regel voor een checkbox. De inhoud van de regel is: CB:tekst bij de box 2. regel voor een editbox. De inhoud van de regel is: EB:opschrijft editbox Na de uitvoering van de functie bevat OpbouwRes de antwoorden van de gebruiker: 1. voor een checkboxregel bevat de regel 0 of 1 (resp. niet of wel aangevinkt) 2. voor een editbox bevat de regel het antwoord van de gebruiker. Resultaat 0: de gebruiker heeft op Annuleren gedrukt 1: de gewenste informatie staat in de lijst. kop Laat Windows een bestand openen (afhankelijk van de extensie, wordt een bijbehorend programma gestart) function OpenBestand(Filenaam: string ): number 43 / 58

44 Parameters Filenaam: de naam van het bestand dat Windows moet openen, invoer Resultaat 0: komt niet voor 1: het bestand is aan Windows doorgegeven voor openen/verwerken. Lees een tekstregel uit de invoerstroom kop function LeesTekst( Tekst: stringvar ): number Parameters Tekst: de tekstregel uit de invoerstroom, uitvoer Resultaat 0: komt niet voor. 1: het inlezen is gelukt. Opmerking wanneer de invoerstroom niet open is, of wanneer er een fout optreedt tijdens het lezen, wordt het programma afgebroken. kop Schrijf een tekst naar een uitvoerkanaal function SchrijfTekst(Kanaal: number; Tekst: string ): number Parameters Kanaal: 0: meldinglijst Plugin-scherm van GENEAAL, 1: uitvoerstroom die gekoppeld is met een uitvoerbestand, invoer Tekst: Resultaat 0: onbekend kanaal de tekst die moet worden geschreven, invoer Opm: de Tekst wordt altijd gecompleteerd met een einderegel-symbool. 1: de tekst is geschreven Opmerking wanneer er een schrijffout optreedt in de uitvoerstroom wordt het programma afgebroken. Schrijf een einderegel-symbool naar een uitvoerkanaal kop function SchrijfNR(Kanaal: number ): number Parameters Kanaal: 0: meldinglijst Plugin-scherm van GENEAAL, 1: uitvoerstroom die gekoppeld is met een uitvoerbestand, invoer Resultaat 0: onbekend kanaal 1: de nieuwe regel is geschreven Opmerking wanneer er een schrijffout optreedt in de uitvoerstroom wordt het programma afgebroken. Maak een map aan onder Windows kop function MaakMap(S: string ): number Parameters S: de naam van de te creeëren map, Resultaat 0: het maken van de map is mislukt 1: de nieuwe map is gemaakt Kopieer een bestand onder Windows kop function KopieerBestand(Van, Naar: string ): number Parameters Van: de naam van de te kopiëren bestand (incl. map), Naar: de naam van de kopie (incl. map) Resultaat 0: het kopiëren van de map is mislukt 1: het bestand is gekopieerd. 44 / 58

45 kop Hernoem een bestand onder Windows function HernoemBestand(Van, Naar: string ): number Parameters Van: de oude naam van het bestand (incl. map), Naar: de nieuwe naam van het bestand (incl. map) Resultaat 0: het hernoemen is mislukt 1: het bestand is hernoemd. 45 / 58

46 Algemene functies Algemene functies De algemene functies die de Plugin Compiler kent zijn als volgt: Zet getal om naar tekstrepresentatie kop function GetalNaarTekst( Getal, Decimalen: number): string Parameters Getal: het om te zetten getal, invoer Decimalen: het gewenste aantal decimalen achter de komma, invoer Resultaat de representatie van het getal in een tekenrij Opmerking Voorbeelden: GetalNaarTekst(384623, 0) geeft '384623' GetalNaarTekst(6,25, 3) geeft '6,250' Zet datum om naar tekstrepresentatie kop function DatumNaarTekst( Datum: string): string Parameters Datum: een datum in interne representatie, invoer Resultaat Opmerking de representatie van de datum in een tekenrij. De omzetting houdt rekening met de ingestelde datumpresentatie van GENEAAL kop Resultaat Vraag huidige datum function HuidigeDatum: string de huidige datum in interne representatie. Zet tekst om naar getal kop function TekstNaarGetal( Tekst: string): number Parameters Tekst: een tekst die een getal voorstelt, invoer Resultaat Opmerking de getalswaarde van Tekst. Wanneer de omzetting faalt, wordt het programma gestopt. Extraheer een deel uit een tekenrij kop function SubStr(S: string; Begin, Aantal: number): string Parameters S: de tekenrij waaruit het gedeelte moet worden genomen, invoer Begin: de positie in de tekenrij S waar het te extraheren deel begint, invoer Aantal: het aantal tekens dat het gewenste deel lang is, invoer Resultaat Het gewenst deel uit S Voorbeeld SubStr('Piet Janssen', 6, 3) geeft als resultaat: 'Jan' Verwijder een deel uit een tekenrij kop function VerwUitStr(S: string; Begin, Aantal: number): string Parameters S: de tekenrij waaruit het gedeelte moet worden verwijderd, invoer Begin: de positie in de tekenrij S waar het te verwijderen deel begint, invoer Aantal: het aantal tekens dat het te verwijderen deel lang is, invoer Resultaat Het overgebleven deel van S Voorbeeld VerwUitStr('Piet Janssen', 1, 5) geeft als resultaat: 'Janssen' 46 / 58

47 Voeg een tekenrij in een tekenrij in kop function VoegInStr(S, Invoeg: string; Begin: number): string Parameters S: de tekenrij waarin moet worden ingevoegd, invoer Invoeg: de tekenrij die moet worden ingevoegd, invoer Begin: de positie in S waar het invoegen begint, invoer Resultaat De nieuwe tekenrij Voorbeeld VoegInStr('Piet Binsbergen', 'van ', 6) geeft als resultaat: 'Piet van Binsbergen' Zet een tekenrij om in hoofdletters kop function HfdLetters(S: string ): string Parameters S: de string die moet worden omgezet, invoer Resultaat Voorbeeld S omgezet in hoofdletters HfdLetters('Piet Janssen') geeft als resultaat: 'PIET JANSSEN' Zet een tekenrij om in kleine letters kop function KlLetters(S: string ): string Parameters S: de string die moet worden omgezet, invoer Resultaat Voorbeeld S omgezet in kleine letters KlLetters('Piet Janssen') geeft als resultaat: 'piet janssen' Bepaal positie van een tekenrij in een tekenrij kop function Positie(S, Subs: string) : number Parameters S: de tekenrij waarin Subs moet worden gezocht, invoer Subs: de tekenrij die moet worden gezocht in S, invoer Resultaat 0: Subs komt niet voor in S <> 0: de positie in de tekenrij S waar Subs begint Voorbeeld Positie('Piet Janssen', 'Jan') geeft als resultaat: 5 Bepaal de lengte van een tekenrij kop function LengteStr(S) : number Parameters S: de tekenrij waarvan de lengte moet worden bepaald, invoer Resultaat de lengte in tekens van de tekenrij S Voorbeeld LengteStr('Piet Janssen') geeft als resultaat: 12 kop Vervang een tekenrij in een deeltekenrij door een andere function VervangInStr(S, Oud, Nieuw: string) : string Parameters S: de tekenrij waarin moet worden vervangen, invoer Resultaat Voorbeeld Oud: Nieuw: de deeltekenrij die moet worden gezocht en vervangen in S, invoer de tekenrij die de deeltekenrij Oud vervangt, invoer tekenrij S met daarin de gepleegde vervangingen N.B. Elk voorkomen van Oud wordt vervangen door Nieuw. VervangInStr('Piet Jansen', 'Jan', 'Gerrit') geeft als resultaat: 'Piet Gerritsen' Verwijder spaties aan het begin en aan het einde van een tekenrij kop function Trim(Tekst: string) : string Parameters Tekst: de tekenrij waarvan de paties moeten worden gestript, invoer Resultaat Voorbeeld de gestripte tekst Trim(' Piet Janssen ') geeft als resultaat: 'Piet Janssen' 47 / 58

48 Extraheer bestandsnaam uit een uitgebreide bestandsnaam (incl map) kop function ExtraheerBestandsnaam(Bestand: string) : string Parameters Bestand: de uitgebreide bestandsnaam, invoer Resultaat Voorbeeld Alleen de bestandsnaam ExtraheerBestandsnaam('C:\Nieuwe bestanden\voorbeeld.doc') geeft als resultaat: 'Voorbeeld.doc' Extraheer mapnaam uit een uitgebreide bestandsnaam (incl map) kop function ExtraheerMapnaam(Bestand: string) : string Parameters Bestand: de uitgebreide bestandsnaam, invoer Resultaat Voorbeeld Alleen de mapnaam ExtraheerMapnaam('C:\Nieuwe bestanden\voorbeeld.doc') geeft als resultaat: 'C:\Nieuwe bestanden\' kop Resultaat Opmerking Voorbeeld Vraag de naam van een tijdelijk bestand (incl de map, excl de extensie) function VraagTijdelijkeBestandsnaam( ) : string De bestandsnaam inclusief de mapnaam, maar exclusief de extensie Tijdelijke bestanden worden na gebruik automatisch door GENEAAL gewist. VraagTijdelijkeBestandsnaam( ) geeft als resultaat b.v.: 'C:\Documents and Settings\Gebruiker\~~~ ' Verander de extensie van een bestandsnaam kop function VeranderExtensie(Bestand, Ext: string) : string Parameters Bestand: de bestandsnaam, invoer Ext de nieuwe extensie Resultaat de gewijzigde bestandsnaam Voorbeeld VeranderExtensie('Voorbeeld.doc', '.txt') geeft als resultaat: 'Voorbeeld.txt' kop Resultaat Vraag de hoogte van het beeldscherm in pixels function SchermHoogte( ) : number de schermhoogte kop Resultaat Vraag de breedte van het beeldscherm in pixels function SchermBreedte( ) : number de schermbreedte kop Resultaat Stop de uitvoering van de plugin function Stop( ) : number de uitvoering wordt gestopt 48 / 58

49 Het gebruik van de Plugin Compiler Inhoud Overzicht van het maken van een plugin Plugintekst aanmaken en bewerken PluginTekst compileren en testen 49 / 58

50 Overzicht van het maken van een plugin Het proces van plugins maken Het proces van het maken van een plugin bestaat uit drie delen: 1. Het aanmaken van het plugin-programmatekst 2 Het aangemaakte programma moet worden gecompileerd 3. De gegenereerde code moet worden getest om te zien of de gewenste uitvoer inderdaad wordt geproduceerd door GENEAAL De eerste twee de stappen worden binnen de Plugin Compiler uitgevoerd. De laatste stap moet binnen GENEAAL worden gedaan. Bij het starten van de Plugin Compiler krijgt men het volgende scherm: In het hoofdscherm zijn vijf knoppen zichtbaar: Hiermee wordt een bestaande plugintekst (TPI-bestand) geopend. Hiermee wordt de (aangemaakte of gewijzigde) plugintekst (TPI-bestand) opgeslagen. Hiermee kan de plugintekst worden afgedrukt op de standaardprinter Met deze knop wordt een plugintekst gecompileerd. Hiermee kan worden gezocht in de tekst naar een tekst of naar een regelnummer 50 / 58

51 Met deze knop wordt de Help-informatie opgeroepen. 51 / 58

52 Plugintekst aanmaken en bewerken nieuwe plugin maken plugintekst openen plugintekst opslaan tekst of regels zoeken De Plugin Compiler kan de programmatekst aanmaken en bewerken: Een nieuwe plugin maken Er wordt direct een lege plugintekst getoond na het openen van de Plugin Compiler: Bestaande plugintekst openen Inlezen van een plugintekst wordt gestart met de knop. Er wordt naar een bestandsnaam gevraagd: 52 / 58

53 De Plugin Compiler "weet" waar de TPI-bestanden worden opgeslagen en start met de Openen-dialoog in de betreffende map: b.v. C:\Documents and Settings\<gebruiker>\Application Data\GENEAAL (voor Windows XP). Men kan natuurlijk een andere map kiezen! Pluginteksten hebben als extensie:.tpi. Na het openen verschijnt de plugintekst: 53 / 58

54 Deze tekst kan worden bewerkt, met de gebruikelijke Windows-edit-commando's en -toetsen. N.B. Zoals hierboven te zien, wordt voor de vergroting van de leesbaarheid een aantal tekstkleuren gebruikt: zwart blauwgroen rood groen blauw voor gereserveerde woorden van PIPL voor namen voor tekenrijen voor getallen voor commentaar Bewerkte of ingevoerde plugintekst opslaan Na wijziging moet de tekst worden opgeslagen m.b.v. de knop : 54 / 58

55 De bestaande bestandsnaam is al vast ingevuld, maar kan natuurlijk worden gewijzigd. De voorgestelde map is de map, die ook gebruikt is om de tekst in te lezen. Tekst of regels zoeken Met behulp van het zoekveld naast de knop gezocht. en met de knop zelf kan er naar tekst of een regelnummer worden Vul eerst de te zoeken tekst in in het zoekveld en geef ENTER. Het eerste voorkomen van de tekst zal worden gemarkeerd. Wil men naar het volgende voorkomen zoeken, druk dan op de zoekknop. Wanneer naar een regelnummer moet worden gezocht, dan gaat dat op dezelfde manier: vul het regelnummer in in het zoekveld en geef ENTER. Verder zoeken met de knop heeft in dit geval geen zin / 58

56 Plugintekst compileren en testen plugintekst compileren plugin testen Nummeringhaakjes Plugintekst compileren Het ingevoerde of bewerkte pluginprogramma moet worden gecompileerd (vertaald): eerst moet worden gecontroleerd of aan alle regels van PIPL is voldaan, en zo ja, moet het worden vertaald naar een versie die GENEAAL kan inlezen en uitvoeren. Tijdens het compileren kunnen er dus één of meer fouten worden ontdekt. De compiler werkt zodanig, dat er altijd na één foutmelding wordt gestopt met het compilatieproces. Eerst moet de fout worden hersteld, daarna kan een volgende poging worden gedaan voor het compileren. N.B. Een compilatie kan pas worden gestart, nadat de huidige tekst is opgeslagen, anders volgt: Om het compileren te starten, moet de compilatie knop worden gebruikt: Een eventuele foutmelding wordt vermeld in het rechterbovenvak: Hierbij wordt het regelnummer vermeld, en wordt de betreffende regel gemarkeerd. Na verbetering, weer opslaan kan nogmaals worden gecompileerd, totdat het programa foutloos is:. 56 / 58

HOOFDSTUK 3. Imperatief programmeren. 3.1 Stapsgewijs programmeren. 3.2 If Then Else. Module 4 Programmeren

HOOFDSTUK 3. Imperatief programmeren. 3.1 Stapsgewijs programmeren. 3.2 If Then Else. Module 4 Programmeren HOOFDSTUK 3 3.1 Stapsgewijs programmeren De programmeertalen die tot nu toe genoemd zijn, zijn imperatieve of procedurele programmeertalen. is het stapsgewijs in code omschrijven wat een programma moet

Nadere informatie

Een korte samenvatting van enkele FORTRAN opdrachten

Een korte samenvatting van enkele FORTRAN opdrachten Een korte samenvatting van enkele FORTRAN opdrachten Inhoud 1 Introductie 3 2 De structuur van een FORTRAN programma 3 3 Datatypen, variabelen en declaraties 3 4 Expressies-volgorde van uitwerking 4 5

Nadere informatie

Variabelen en statements in ActionScript

Variabelen en statements in ActionScript Ontwikkelen van Apps voor ios en Android Variabelen en statements in ActionScript 6.1 Inleiding Als we het in de informatica over variabelen hebben, bedoelen we een stukje in het geheugen van de computer

Nadere informatie

Als een PSD selecties bevat, deelt de lijn van het programma zich op met de verschillende antwoorden op het vraagstuk.

Als een PSD selecties bevat, deelt de lijn van het programma zich op met de verschillende antwoorden op het vraagstuk. HOOFDSTUK 3 3.1 Stapsgewijs programmeren In de vorige hoofdstukken zijn programmeertalen beschreven die imperatief zijn. is het stapsgewijs in code omschrijven wat een programma moet doen, net als een

Nadere informatie

Uitleg: In de bovenstaande oefening zie je in het eerste blokje een LEES en een SCHRIJF opdracht. Dit is nog lesstof uit het tweede trimester.

Uitleg: In de bovenstaande oefening zie je in het eerste blokje een LEES en een SCHRIJF opdracht. Dit is nog lesstof uit het tweede trimester. In onderstaande oefeningen zijn kleuren gebruikt. Deze dienen aleen om de structuren makkelijker terug te kunnen herkennen. Ze worden niet standaard zo gebruikt. De dunne rood/roze balken zijn ook geen

Nadere informatie

Je gaat leren programmeren in Ruby. En daarna in Ruby een spelletje maken. Websites zoals Twitch en Twitter gemaakt zijn met behulp van Ruby?

Je gaat leren programmeren in Ruby. En daarna in Ruby een spelletje maken. Websites zoals Twitch en Twitter gemaakt zijn met behulp van Ruby? 1 Je gaat leren programmeren in Ruby. En daarna in Ruby een spelletje maken. Websites zoals Twitch en Twitter gemaakt zijn met behulp van Ruby? Voordat je begint met programmeren, moet je Ruby installeren.

Nadere informatie

Lab Webdesign: Javascript 3 maart 2008

Lab Webdesign: Javascript 3 maart 2008 H5: OPERATORS In dit hoofdstuk zullen we het hebben over de operators (of ook wel: operatoren) in JavaScript waarmee allerlei rekenkundige en logische bewerkingen kunnen worden uitgevoerd. Daarbij zullen

Nadere informatie

II. ZELFGEDEFINIEERDE FUNCTIES

II. ZELFGEDEFINIEERDE FUNCTIES II. ZELFGEDEFINIEERDE FUNCTIES In Excel bestaat reeds een uitgebreide reeks van functies zoals SOM, GEMIDDELDE, AFRONDEN, NU enz. Het is de bedoeling om functies aan deze lijst toe te voegen door in Visual

Nadere informatie

Programmeren met Arduino-software

Programmeren met Arduino-software Programmeren met Arduino-software De software waarin we programmeren is Arduino IDE. Deze software is te downloaden via www.arduino.cc. De programmeertaal die hier gebruikt wordt, is gebaseerd op C en

Nadere informatie

Vakgroep CW KAHO Sint-Lieven

Vakgroep CW KAHO Sint-Lieven Vakgroep CW KAHO Sint-Lieven Objecten Programmeren voor de Sport: Een inleiding tot JAVA objecten Wetenschapsweek 20 November 2012 Tony Wauters en Tim Vermeulen tony.wauters@kahosl.be en tim.vermeulen@kahosl.be

Nadere informatie

PROS1E1 Gestructureerd programmeren in C Dd/Kf/Bd

PROS1E1 Gestructureerd programmeren in C Dd/Kf/Bd Inhoudsopgave 1 Inleiding... 1 2 Toekenning- en herhalingsopdrachten (for loop)... 2 2.1 De wet van Ohm... 3 2.2 De spaarrekening... 3 2.3 De transformator... 3 3 Keuze- en herhalingsopdrachten (if, switch,

Nadere informatie

Computervaardigheden. Universiteit Antwerpen. Computervaardigheden en Programmatie. Grafieken en Rapporten 1. Inhoud. Wat is scripting?

Computervaardigheden. Universiteit Antwerpen. Computervaardigheden en Programmatie. Grafieken en Rapporten 1. Inhoud. Wat is scripting? Inhoud Computervaardigheden Hoofdstuk 4 Scripting (Let op: dit is enkel voor studenten Biologie.) Dit hoofdstuk bekijkt heel kort de basis van scripting. - Opstellen van functies. - Conditionele code.

Nadere informatie

Vaak wil je een code schrijven, waar je verschillende acties uitvoeren voor verschillende beslissingen. Je kan daarbij keuzestructuren gebruiken.

Vaak wil je een code schrijven, waar je verschillende acties uitvoeren voor verschillende beslissingen. Je kan daarbij keuzestructuren gebruiken. PHP Les 5 : Interessante links: o http://www.dbzweb.be/moermant/ o http://www.ivobrugge.be/cursusweb/html4/formulieren.asp Vaak wil je een code schrijven, waar je verschillende acties uitvoeren voor verschillende

Nadere informatie

Lab Webdesign: Javascript 11 februari 2008

Lab Webdesign: Javascript 11 februari 2008 H2: BASISBEGRIPPEN In dit hoofdstuk zullen er enkele basisbegrippen worden behandelt PLAATSING VAN JAVASCRIPT-CODE DE SCRIPT-TAG De script-tag geeft aan dat er gebruik zal worden gemaakt van een scripttaal.

Nadere informatie

Informatie over. 5VWO DT51: JavaLogo. Casper Bezemer. Toetsweek 1 13 oktober 2016

Informatie over. 5VWO DT51: JavaLogo. Casper Bezemer. Toetsweek 1 13 oktober 2016 Informatie over 5VWO DT51: JavaLogo Casper Bezemer Toetsweek 1 13 oktober 2016 1 Informatie Voor toets DT51 wordt jou gevraagd Java(Logo) programma s te schrijven. De eerste opdracht is een Krimpfiguur,

Nadere informatie

Deel 1: Arduino kennismaking. Wat is een microcontroller, structuur van een programma, syntax,

Deel 1: Arduino kennismaking. Wat is een microcontroller, structuur van een programma, syntax, Deel 1: Arduino kennismaking Wat is een microcontroller, structuur van een programma, syntax, Wat is een microcontroller Wat is een microcontroller? Microcontroller = kleine dedicated computer. - Beperkt

Nadere informatie

Bijlage Inlezen nieuwe tarieven per verzekeraar

Bijlage Inlezen nieuwe tarieven per verzekeraar ! Bijlage inlezen nieuwe tarieven (vanaf 3.2) Bijlage Inlezen nieuwe tarieven per verzekeraar Scipio 3.303 biedt ondersteuning om gebruikers alle tarieven van de verschillende verzekeraars in één keer

Nadere informatie

Je gaat leren programmeren en een spel bouwen met de programmeertaal Python. Websites zoals YouTube en Instagram zijn gebouwd met Python.

Je gaat leren programmeren en een spel bouwen met de programmeertaal Python. Websites zoals YouTube en Instagram zijn gebouwd met Python. 1 Je gaat leren programmeren en een spel bouwen met de programmeertaal Python. Websites zoals YouTube en Instagram zijn gebouwd met Python. Voordat je leert programmeren, moet je jouw pc zo instellen dat

Nadere informatie

extra oefening algoritmiek - antwoorden

extra oefening algoritmiek - antwoorden extra oefening algoritmiek - antwoorden opgave "Formule 1" Maak een programma dat de gebruiker drie getal A, B en C in laat voeren. De gebruiker zorgt ervoor dat er positieve gehele getallen worden ingevoerd.

Nadere informatie

Modelleren en Programmeren

Modelleren en Programmeren Modelleren en Programmeren Jeroen Bransen 13 november 2015 Expressies Functies Ingebouwde functies Variabelenbereik Inleveropgave 1 Terugblik Programma is een lijst van opdrachten Terugblik Programma is

Nadere informatie

9 Meer over datatypen

9 Meer over datatypen 9 Meer over datatypen We hebben al gezien dat het gebruik van symbolische constanten de leesbaarheid van een programma kan verbeteren. Door een geschikte naam (identifier) voor een constante te definiëren,

Nadere informatie

Blog-Het gebruik van variabelen in Excel VBA

Blog-Het gebruik van variabelen in Excel VBA Blog-Het gebruik van variabelen in Excel VBA Versie : 2012.01.31.1 (Blog http://www.reinder.eu) Dank voor de leuke reacties op het vorige blog en ook dank voor de kritische noot over het nivo dat de gebruiker

Nadere informatie

Constanten. Variabelen. Expressies. Variabelen. Constanten. Voorbeeld : varid.py. een symbolische naam voor een object.

Constanten. Variabelen. Expressies. Variabelen. Constanten. Voorbeeld : varid.py. een symbolische naam voor een object. een symbolische naam voor een object. Variabelen Constanten Variabelen Expressies naam : geeft de plaats in het geheugen aan waarde : de inhoud van het object identifier : een rij van letters en/of cijfers

Nadere informatie

Pascal uitgediept Data structuren

Pascal uitgediept Data structuren Pascal uitgediept Data structuren MSX Computer & Club Magazine nummer 68-juni/juli 1994 Herman Post Scanned, ocr ed and converted to PDF by HansO, 2001 In deze aflevering wordt bekeken hoe zelf een datastructuur

Nadere informatie

Rekenen aan wortels Werkblad =

Rekenen aan wortels Werkblad = Rekenen aan wortels Werkblad 546121 = Vooraf De vragen en opdrachten in dit werkblad die vooraf gegaan worden door, moeten schriftelijk worden beantwoord. Daarbij moet altijd duidelijk zijn hoe de antwoorden

Nadere informatie

van PSD naar JavaScript

van PSD naar JavaScript 2015 van PSD naar JavaScript F. Vonk versie 2 19-9-2015 inhoudsopgave 1. inleiding... - 2-2. ontwikkelomgeving... - 3-3. programmeerconcepten... - 4 - statement... - 4 - sequentie... - 4 - variabele en

Nadere informatie

Disclaimer Het bestand dat voor u ligt, is nog in ontwikkeling. Op verzoek is deze versie digitaal gedeeld. Wij willen de lezer er dan ook op wijzen

Disclaimer Het bestand dat voor u ligt, is nog in ontwikkeling. Op verzoek is deze versie digitaal gedeeld. Wij willen de lezer er dan ook op wijzen Disclaimer Het bestand dat voor u ligt, is nog in ontwikkeling. Op verzoek is deze versie digitaal gedeeld. Wij willen de lezer er dan ook op wijzen dat er zowel typografische als inhoudelijke onvolkomenheden

Nadere informatie

Java Les 3 Theorie Herhaal structuren

Java Les 3 Theorie Herhaal structuren Java Les 3 Theorie Herhaal structuren Algemeen Een herhaal structuur een is programmeertechniek waarbij bepaalde Java instructies worden herhaald net zo lang tot een bepaalde voorwaarde is bereikt. Een

Nadere informatie

Wortels met getallen en letters. 2 Voorbeeldenen met de (vierkants)wortel (Tweedemachts wortel)

Wortels met getallen en letters. 2 Voorbeeldenen met de (vierkants)wortel (Tweedemachts wortel) 1 Inleiding Wortels met getallen en letters WISNET-HBO update sept 2009 Voorkennis voor deze les over Wortelvormen is de les over Machten. Voor de volledigheid staat aan het eind van deze les een overzicht

Nadere informatie

In de tweede regel plaatsen we in het gereserveerde stukje geheugen een getal.

In de tweede regel plaatsen we in het gereserveerde stukje geheugen een getal. 4. Array s Een array is een geïndexeerde variabele. Deze zin zal de nodig vragen oproepen, waarop enige uitleg van toepassing is. Met variabelen hebben we al kennis gemaakt. In een variabele kun je iets

Nadere informatie

De keuzestructuur. Versie DD

De keuzestructuur. Versie DD De keuzestructuur Versie DD Tot nu toe Programma in rechte lijn = sequentie of opeenvolging Nieuw Vertakking in parcours = selectie of keuzestructuur Controlestructuren Opeenvolging = sequentie Keuze =

Nadere informatie

Numerieke benadering van vierkantwortels

Numerieke benadering van vierkantwortels HP Prime Grafische Rekenmachine Numerieke benadering van vierkantwortels Doel: De waarde van een vierkantswortel met een recursieve rij benaderen, het schrijven van een klein programma. Sleutelwoorden:

Nadere informatie

VBA voor Doe het Zelvers deel 20

VBA voor Doe het Zelvers deel 20 VBA voor Doe het Zelvers deel 20 Handleiding van Auteur: leofact Augustus 2015 handleiding: VBA voor Doe het Zelvers deel 20 Vorige aflevering In het vorige deel werd besproken hoe je de structuur en vensteropbouw

Nadere informatie

Elementaire rekenvaardigheden

Elementaire rekenvaardigheden Hoofdstuk 1 Elementaire rekenvaardigheden De dingen die je niet durft te vragen, maar toch echt moet weten Je moet kunnen optellen en aftrekken om de gegevens van de patiënt nauwkeurig bij te kunnen houden.

Nadere informatie

Programmeermethoden NA. Week 5: Functies (vervolg)

Programmeermethoden NA. Week 5: Functies (vervolg) Programmeermethoden NA Week 5: Functies (vervolg) Kristian Rietveld http://liacs.leidenuniv.nl/~rietveldkfd/courses/prna/ Bij ons leer je de wereld kennen 1 Functies Vorige week bekeken we functies: def

Nadere informatie

Presentatie Aldfaer. Presentatie Aldfaer. Hoofdvenster Aldfaer. Invoeren gegevens

Presentatie Aldfaer. Presentatie Aldfaer. Hoofdvenster Aldfaer. Invoeren gegevens Presentatie Aldfaer H1 Hoofdvenster Aldfaer Controle Updates Extra Instelling Algemeen Lettergrootte Extra Instelling Algemeen Hints Extra Instelling Algemeen Instelling Hoofdvenster Extra Instelling Venster

Nadere informatie

PYTHON REEKS 1: BASICS. Mathias Polfliet

PYTHON REEKS 1: BASICS. Mathias Polfliet PYTHON REEKS 1: BASICS Mathias Polfliet mpolflie@etrovub.be EENVOUDIGE REKENMACHINE 2 soorten getallen Getallen Z -> integers (gehele getallen) Getallen R -> floating points (reële getallen) Door beperkte

Nadere informatie

OEFENINGEN PYTHON REEKS 1

OEFENINGEN PYTHON REEKS 1 Vraag 1: Expressies & Types OEFENINGEN PYTHON REEKS 1 Python maakt gebruik van enkele vaak voorkomende (data)types. Zo zijn er integers die behoren tot de gehele getallen (VB: 3), zijn er float s die behoren

Nadere informatie

OEFENINGEN PYTHON REEKS 1

OEFENINGEN PYTHON REEKS 1 Vraag 1: Expressies & Types OEFENINGEN PYTHON REEKS 1 Python maakt gebruik van enkele vaak voorkomende (data)types. Zo zijn er integers die behoren tot de gehele getallen (VB: 3), zijn er float s die behoren

Nadere informatie

Programmeermethoden NA. Week 5: Functies (vervolg)

Programmeermethoden NA. Week 5: Functies (vervolg) Programmeermethoden NA Week 5: Functies (vervolg) Kristian Rietveld http://liacs.leidenuniv.nl/~rietveldkfd/courses/prna2016/ Functies Vorige week bekeken we functies: def bereken(a, x): return a * (x

Nadere informatie

Module 3: Scratch programmeren: is het logisch of is het niet logisch?

Module 3: Scratch programmeren: is het logisch of is het niet logisch? Module 3: Scratch programmeren: is het logisch of is het niet logisch? Inhoudsopgave Module 3: Scratch programmeren: is het logisch of is het niet logisch?...1 Wat is een computerprogramma eigenlijk?...2

Nadere informatie

5. Functies. In deze module leert u:

5. Functies. In deze module leert u: 5. Functies In deze module leert u: - Wat functies zijn; - Functies uitvoeren; - De verschillende functies van Calc kennen. - Naar een ander werkblad verwijzen. U kunt eenvoudige berekeningen, zoals aftrekken,

Nadere informatie

Overzicht besproken instructies in deze korte handleiding voor www.amelanders.com

Overzicht besproken instructies in deze korte handleiding voor www.amelanders.com Overzicht besproken instructies in deze korte handleiding voor www.amelanders.com 1. Als u op deze functie (zie 1) klikt, kunt u een nieuwe persoon toevoegen aan de database. Als u het pijltje (alias aanwijzer)

Nadere informatie

OEFENINGEN PYTHON REEKS 1

OEFENINGEN PYTHON REEKS 1 OEFENINGEN PYTHON REEKS 1 Vraag 1: Python als een eenvoudige rekenmachine Python maakt gebruik van enkele vaak voorkomende (data)types. Zo zijn er integers die behoren tot de gehele getallen (VB: 3) en

Nadere informatie

Excel reader. Beginner Gemiddeld. bas@excel-programmeur.nl

Excel reader. Beginner Gemiddeld. bas@excel-programmeur.nl Excel reader Beginner Gemiddeld Auteur Bas Meijerink E-mail bas@excel-programmeur.nl Versie 01D00 Datum 01-03-2014 Inhoudsopgave Introductie... - 3 - Hoofdstuk 1 - Databewerking - 4-1. Inleiding... - 5-2.

Nadere informatie

maplev 2010/7/12 14:02 page 15 #17 Nadere detaillering van een aantal zaken van Module 1 Geen,, " ", \, save, read, protect, unprotect

maplev 2010/7/12 14:02 page 15 #17 Nadere detaillering van een aantal zaken van Module 1 Geen,,  , \, save, read, protect, unprotect maplev 2010/7/12 14:02 page 15 #17 Module 2 Het gebruik van Maple, vervolg Onderwerp Voorkennis Expressies Nadere detaillering van een aantal zaken van Module 1 Geen,, " ", \, save, read, protect, unprotect

Nadere informatie

VBA voor Doe het Zelvers Deel 7

VBA voor Doe het Zelvers Deel 7 VBA voor Doe het Zelvers Deel 7 Handleiding van Auteur: leofact Juni 2014 Vorige aflevering In de vorige aflevering hebben we een timer gecreëerd met gebruik van de OnTime methode. Er werd ook een methode

Nadere informatie

Javascript oefenblad 1

Javascript oefenblad 1 Leer de basis van Javascript. Javascript oefenblad 1 Niels van Velzen Javascript oefenblad 1 Pagina 2 Inleiding Javascript is niet altijd even makkelijk. Vooral aan het begin is het even wennen hoe de

Nadere informatie

DinZ Web ZVW. Gebruikershandleiding. Release 1.46 Copyright DinZ BV, Nederland

DinZ Web ZVW. Gebruikershandleiding. Release 1.46 Copyright DinZ BV, Nederland DinZ Web ZVW Gebruikershandleiding Release 1.46 Copyright DinZ BV, Nederland Alle rechten voorbehouden. Niets uit deze uitgave mag worden verveelvoudigd, opgeslagen in een geautomatiseerd gegevensbestand,

Nadere informatie

OPDRACHT Opdracht 2.1 Beschrijf in eigen woorden wat het bovenstaande PSD doet.

OPDRACHT Opdracht 2.1 Beschrijf in eigen woorden wat het bovenstaande PSD doet. Les C-02: Werken met Programma Structuur Diagrammen 2.0 Inleiding In deze lesbrief bekijken we een methode om een algoritme zodanig structuur te geven dat er gemakkelijk programmacode bij te schrijven

Nadere informatie

5 april _iv3_indeling_JSON.docx

5 april _iv3_indeling_JSON.docx Verplichte indeling Elk iv3-json bestand bestaat uit 3 verplichte elementen met binnen elk element een aantal verplichte elementen en/of sleutels: (alle elementen en sleutels zijn met kleine letters en

Nadere informatie

Syntax- (compile), runtime- en logische fouten Binaire operatoren

Syntax- (compile), runtime- en logische fouten Binaire operatoren Inhoud Syntax- (compile), runtime- en logische fouten Binaire operatoren Operaties op numerieke datatypen Evaluatie van expressies, bindingssterkte Assignment operaties en short-cut operatoren Controle

Nadere informatie

Lab Webdesign: Javascript 11 februari 2008

Lab Webdesign: Javascript 11 februari 2008 H3: HERHALINGSLUSSEN EN LOGICA Om de voorbeelden niet nodeloos lang te maken, zullen we in het vervolg niet altijd de SCRIPT-tags en de HTML-commentaarregels herhalen. Om de JavaScript-opdrachten --de

Nadere informatie

1 Inleiding in Functioneel Programmeren

1 Inleiding in Functioneel Programmeren 1 Inleiding in Functioneel Programmeren door Elroy Jumpertz 1.1 Inleiding Aangezien Informatica een populaire minor is voor wiskundestudenten, leek het mij nuttig om een stukje te schrijven over een onderwerp

Nadere informatie

VAN HET PROGRAMMEREN. Inleiding

VAN HET PROGRAMMEREN. Inleiding OVERZICHT VAN HET PROGRAMMEREN Inleiding Als je leert programmeren lijkt het nogal overweldigend om die eerste stappen te doorworstelen. Er zijn dan ook heel wat programmeertalen (Java, Ruby, Python, Perl,

Nadere informatie

HANDLEIDING DOIT BEHEER SYSTEEM

HANDLEIDING DOIT BEHEER SYSTEEM HANDLEIDING DOIT BEHEER SYSTEEM ALGEMENE INFORMATIE Het Doit beheer systeem is een modulair opgebouwd systeem waarin modules makkelijk kunnen worden toegevoegd of aangepast, niet iedere gebruiker zal dezelfde

Nadere informatie

UNIVERSITEIT ANTWERPEN FACULTEIT WETENSCHAPPEN DEPARTEMENT WISKUNDE-INFORMATICA OBERON CODE CONVENTIONS

UNIVERSITEIT ANTWERPEN FACULTEIT WETENSCHAPPEN DEPARTEMENT WISKUNDE-INFORMATICA OBERON CODE CONVENTIONS UNIVERSITEIT ANTWERPEN FACULTEIT WETENSCHAPPEN DEPARTEMENT WISKUNDE-INFORMATICA OBERON CODE CONVENTIONS Laatste aanpassing: 15 oktober 2003 Inhoudsopgave 1 Bestandsnamen 3 2 Organizatie Bestanden 3 3 Indentatie

Nadere informatie

Gebruikershandleiding Green Leaf Excel Tool Versie 1.1 (13 februari 2007)

Gebruikershandleiding Green Leaf Excel Tool Versie 1.1 (13 februari 2007) Gebruikershandleiding Green Leaf Excel Tool Versie 1.1 (13 februari 2007) Inhoudsopgave 1 HANDLEIDING EXCEL TOOL... 3 2 TOEGEVOEGDE MENU OPTIES... 4 2.1 KEUZEOPTIE NIEUW... 5 2.2 HET INLEZEN VAN EEN GLF

Nadere informatie

Tweede Programmeeropgave Numerieke Wiskunde 1 De golfplaat Uiterste inleverdatum : vrijdag 16 mei 2003

Tweede Programmeeropgave Numerieke Wiskunde 1 De golfplaat Uiterste inleverdatum : vrijdag 16 mei 2003 Tweede Programmeeropgave Numerieke Wiskunde 1 De golfplaat Uiterste inleverdatum : vrijdag 16 mei 2003 I Doelstelling en testcase In deze programmeeropgave zullen we een drietal numerieke integratiemethoden

Nadere informatie

Excel. Inleiding. Het meest gebruikte spreadsheet programma is Excel.

Excel. Inleiding. Het meest gebruikte spreadsheet programma is Excel. Excel Inleiding Het woord computer betekent zoiets als rekenmachine. Daarmee is is eigenlijk aangegeven wat een computer doet. Het is een ingewikkelde rekenmachine. Zelf voor tekstverwerken moet hij rekenen.

Nadere informatie

Gebruikershandleiding Green Leaf Excel (2007) Tool Versie 1.2 (21 december 2010)

Gebruikershandleiding Green Leaf Excel (2007) Tool Versie 1.2 (21 december 2010) Gebruikershandleiding Green Leaf Excel (2007) Tool Versie 1.2 (21 december 2010) Inhoudsopgave 1 HANDLEIDING EXCEL TOOL... 3 2 TOEGEVOEGDE MENU OPTIES... 4 2.1 KEUZEOPTIE NIEUW... 6 2.2 HET INLEZEN VAN

Nadere informatie

Programmeerstructuren met App Inventor

Programmeerstructuren met App Inventor Programmeerstructuren met App Inventor Kevin Krul, Universiteit Utrecht Roncalli, Bergen op Zoom Inhoud: Les 1: Introductie tot App Inventor, when statement en variabelen. Les 2: Introductie if-statement

Nadere informatie

AFO 142 Titel Aanwinsten Geschiedenis

AFO 142 Titel Aanwinsten Geschiedenis AFO 142 Titel Aanwinsten Geschiedenis 142.1 Inleiding Titel Aanwinsten Geschiedenis wordt gebruikt om toevoegingen en verwijderingen van bepaalde locaties door te geven aan een centrale catalogus instantie.

Nadere informatie

2.4.4 LibreOffice Werkblad Mac

2.4.4 LibreOffice Werkblad Mac 2.4.4 LibreOffice Werkblad Mac Deze cursus bestaat uit 4 delen. 1. Werkblad gebruiken voor berekeningen 2. Werkblad gebruiken voor het maken van lijsten 3. Werkblad gebruiken voor een (eenvoudige) boekhouding

Nadere informatie

Invoerinstructies bij het project In dienst van het Hof ( )

Invoerinstructies bij het project In dienst van het Hof ( ) Invoerinstructies bij het project In dienst van het Hof (1814-1940) Versie: 6 maart 2017 LET OP De stamboeken en registers zijn heel verschillend, de meeste zijn opgemaakt in kolommen, maar soms staat

Nadere informatie

Hoofdstuk 7: Werken met arrays

Hoofdstuk 7: Werken met arrays Programmeren in Microsoft Visual Basic 6.0, lessenserie voor het voortgezet onderwijs HAVO/VWO David Lans, Emmauscollege, Marnix Gymnasium Rotterdam, januari 2004 Hoofdstuk 7: Werken met arrays 7.0 Leerdoel

Nadere informatie

gravita PSUR-C conversie en import van relaties in PSU Relatiebeheer Algemeen

gravita PSUR-C conversie en import van relaties in PSU Relatiebeheer Algemeen gravita PSUR-C conversie en import van relaties in PSU Relatiebeheer Algemeen Het converteren van adres- en andere relatiegegevens in PSU Relatiebeheer, en wat dat betreft elke koppeling tussen verschillende

Nadere informatie

Visual Basic.NET. Visual Basic.NET. M. den Besten 0.3 VB. NET

Visual Basic.NET. Visual Basic.NET. M. den Besten 0.3 VB. NET Visual Basic.NET M. den Besten 0.3 VB. NET Inhoud Voorwoord Deel 1 Visual Basic.NET 1.1 Inleiding...13 1.2 De programmeertaal Visual Basic.NET...14 1.3 Microsoft Visual Basic 2010 Express Edition...15

Nadere informatie

BESCHRIJVING ROLSTOELEN STANDAARD

BESCHRIJVING ROLSTOELEN STANDAARD BESCHRIJVING ROLSTOELEN STANDAARD Naam afdeling of projectteam: Relatiebeheer Datum laatste wijziging: December 2010 Initialen laatste auteur: Versie: 1.0 INHOUDSOPGAVE 1 Algemeen...3 2 Bestandsopmaak...3

Nadere informatie

Een topprogrammeur in het OO programmeren is Graig Larman. Hij bedacht de volgende zin:

Een topprogrammeur in het OO programmeren is Graig Larman. Hij bedacht de volgende zin: Java Les 2 Theorie Beslissingen Algemeen Net als in het dagelijks leven worden in software programma s beslissingen genomen, naast het toekennen van waarden aan variabelen zijn beslissingen één van de

Nadere informatie

Functioneel programmeren

Functioneel programmeren Functioneel programmeren Practicumopgave 2: Mastermind Het doel van deze opgave is het implementeren van het spel Mastermind; zie http://nl.wikipedia.org/wiki/mastermind voor een uitleg. Het spel is klein

Nadere informatie

1. Inleiding. 2. Omroepcodes intypen. Page 1 of 8. http://home.kpn.nl/fpauwels/helptekst.htm

1. Inleiding. 2. Omroepcodes intypen. Page 1 of 8. http://home.kpn.nl/fpauwels/helptekst.htm Page 1 of 8 1. Inleiding Het programma OMROEPER kan stations-omroep-berichten laten horen via de luidsprekers van de PC, op drie manieren: OMROEPER kan op de PC draaien en periodiek berichten laten horen

Nadere informatie

Wiskunde klas 3. Vaardigheden. Inhoudsopgave. 1. Breuken 2. 2. Gelijksoortige termen samennemen 3. 3. Rekenen met machten 3. 4. Rekenen met wortels 4

Wiskunde klas 3. Vaardigheden. Inhoudsopgave. 1. Breuken 2. 2. Gelijksoortige termen samennemen 3. 3. Rekenen met machten 3. 4. Rekenen met wortels 4 Vaardigheden Wiskunde klas Inhoudsopgave. Breuken. Gelijksoortige termen samennemen. Rekenen met machten. Rekenen met wortels. Algebraïsche producten 6. Ontbinden in factoren 6 7. Eerstegraads vergelijkingen

Nadere informatie

Rapporten. Labels en Rapporten in Atlantis 1. Atlantis heeft twee manieren om output te genereren: 1. labels 2. rapporten (reports)

Rapporten. Labels en Rapporten in Atlantis 1. Atlantis heeft twee manieren om output te genereren: 1. labels 2. rapporten (reports) Labels en Rapporten in Atlantis 1 Atlantis heeft twee manieren om output te genereren: 1. labels 2. rapporten (reports) Rapporten Een rapport is eigenlijk altijd een tekst bestand, die vorm wordt gegeven

Nadere informatie

10 Meer over functies

10 Meer over functies 10 Meer over functies In hoofdstuk 5 hebben we functies uitgebreid bestudeerd. In dit hoofdstuk bekijken we drie andere aspecten van functies: recursieve functies dat wil zeggen, functies die zichzelf

Nadere informatie

Voorgeslacht rapport generator

Voorgeslacht rapport generator Beschrijving Voorgeslacht rapport generator versie 3.5 (16 mei 2006) auteur:berend Meijer De voorgeslacht rapport generator is een sjabloon voor gebruik met het genealogie-programma Aldfaer (www.aldfaer.nl).

Nadere informatie

DATABASEBEHEER IN EXCEL

DATABASEBEHEER IN EXCEL DATABASEBEHEER IN EXCEL 1. LIJSTEN Een lijst is een reeks van rijen met gelijksoortige gegevens waarvan de eerste rij de labels (veldnamen) bevat. Een voorbeeld: Je kunt een lijst beschouwen als een eenvoudige

Nadere informatie

Een spoedcursus python

Een spoedcursus python Een spoedcursus python Zoals je in de titel misschien al gezien hebt, geven wij een spoedcursus Python. Door deze cursus leer je alle basics, zoals het rekenen met Python en het gebruik van strings. Het

Nadere informatie

Lab Webdesign: Javascript 25 februari 2008

Lab Webdesign: Javascript 25 februari 2008 H4: FUNCTIES We zullen in dit hoofdstuk zien hoe we functies moeten maken, aanroepen, argumenten doorgeven en waarden retourneren. Ook zullen we het hebben over het begrip "recursie", en laten zien hoe

Nadere informatie

College Introductie

College Introductie College 2016-2017 Introductie Doaitse Swierstra (Jeroen Bransen) Utrecht University September 13, 2016 Waarom is FP anders? in plaats van opdrachten die na elkaar moeten worden uitgevoerd, definiëren we

Nadere informatie

Hoofdstuk 20: Wiskundige functies

Hoofdstuk 20: Wiskundige functies Hoofdstuk 20: Wiskundige functies 20.0 Introductie Er is een uitgebreid aanbod aan wiskundige functies in Excel, variërend van het simpele + teken tot de esoterische statistiek functies voor een correlatie

Nadere informatie

1.3 Rekenen met pijlen

1.3 Rekenen met pijlen 14 Getallen 1.3 Rekenen met pijlen 1.3.1 Het optellen van pijlen Jeweetnuwatdegetallenlijnisendat0nochpositiefnochnegatiefis. Wezullen nu een soort rekenen met pijlen gaan invoeren. We spreken af dat bij

Nadere informatie

Een typisch programma in C en C++ bestaat uit een aantal onderdelen:

Een typisch programma in C en C++ bestaat uit een aantal onderdelen: Eerste stappen in C. Een typisch programma in C en C++ bestaat uit een aantal onderdelen: /* Alles wat op meerdere lijnen staat zoals hier is commentaar. */ // Dit is commentaar op 1 lijn. Geldig tot einde

Nadere informatie

SQL manipulatietaal. We kunnen er data mee toevoegen, wijzigen en verwijderen uit een database.

SQL manipulatietaal. We kunnen er data mee toevoegen, wijzigen en verwijderen uit een database. SQL manipulatietaal We kunnen er data mee toevoegen, wijzigen en verwijderen uit een database. Basiscommando's: INSERT : toevoegen van gegevens DELETE : verwijderen van gegevens UPDATE : wijzigen van gegevens

Nadere informatie

Modelleren en Programmeren

Modelleren en Programmeren Modelleren en Programmeren Jeroen Bransen 11 december 2015 Ingebouwde datastructuren Meer boomstructuren Access specifiers Gebruikersinvoer Codestijl Packages SAT-solver Ingebouwde datastructuren Ingebouwde

Nadere informatie

Systeemontwikkeling, Hoofdstuk 4, Tabellen maken in MS Access 2010

Systeemontwikkeling, Hoofdstuk 4, Tabellen maken in MS Access 2010 4 Tabellen maken in MS Access In dit hoofdstuk starten we met de bouw van ons informatiesysteem met de belangrijkste bouwstenen: de tabellen. 4.1 Starten met MS Access Als je het programma Microsoft Access

Nadere informatie

Een computerprogramma is opgebouwd uit een aantal instructies die op elkaar volgen en die normaal na elkaar uitgevoerd worden.

Een computerprogramma is opgebouwd uit een aantal instructies die op elkaar volgen en die normaal na elkaar uitgevoerd worden. 2 Programmeren 2.1 Computerprogramma s Een computerprogramma is opgebouwd uit een aantal instructies die op elkaar volgen en die normaal na elkaar uitgevoerd worden. (=sequentie) Niet alle instructies

Nadere informatie

PHP. Les 4 : Variabelen

PHP. Les 4 : Variabelen PHP Les 4 : Variabelen Interessante links: o http://www.dbzweb.be/moermant/ o http://php.net/manual/en/function.echo.php o http://www.w3schools.com/php/default.asp Wat zijn variabelen? Variabelen zijn

Nadere informatie

Zelftest Inleiding Programmeren

Zelftest Inleiding Programmeren Zelftest Inleiding Programmeren Document: n0824test.fm 22/01/2013 ABIS Training & Consulting P.O. Box 220 B-3000 Leuven Belgium TRAINING & CONSULTING INLEIDING BIJ DE ZELFTEST INLEIDING PROGRAMMEREN Deze

Nadere informatie

Examen VWO - Compex. wiskunde A1

Examen VWO - Compex. wiskunde A1 wiskunde A1 Examen VWO - Compex Voorbereidend Wetenschappelijk Onderwijs Tijdvak 1 Woensdag 25 mei totale examentijd 3 uur 20 05 Vragen 14 tot en met 21 In dit deel staan de vragen waarbij de computer

Nadere informatie

2 Elementaire bewerkingen

2 Elementaire bewerkingen Hoofdstuk 2 Elementaire bewerkingen 19 2 Elementaire bewerkingen 1 BINAIRE GETALLEN In het vorige hoofdstuk heb je gezien dat rijen bits worden gebruikt om lettertekens, getallen, kleuren, geluid en video

Nadere informatie

Landelijk Hoofdluis Protocol voor het Primair Onderwijs Quick start Schoolenik.nl voor de School Coördinator Hoofdluis

Landelijk Hoofdluis Protocol voor het Primair Onderwijs Quick start Schoolenik.nl voor de School Coördinator Hoofdluis Landelijk Hoofdluis Protocol voor het Primair Onderwijs Quick start Schoolenik.nl voor de School Coördinator Hoofdluis 1.1 Inleiding Schoolenik.nl is het sociale netwerk van jouw school. In Schoolenik.nl

Nadere informatie

Inleiding tot programmeren: Javascript

Inleiding tot programmeren: Javascript Inleiding tot programmeren: Javascript Een definitie JavaScript is een scripttaal met objectgeoriënteerde mogelijkheden. Deze geïnterpreteerde programmeertaal is vooral gericht op het gebruik in webpagina

Nadere informatie

Handleiding People Inc. - Maetis link

Handleiding People Inc. - Maetis link Handleiding People Inc. - Maetis link I Handleiding Installatie en Gebruik Maetis link voor People Inc. Inhoudsopgave Hoofdstuk 1 People Inc. - Maetis link 1.1 Inleiding... 1. Werking... van de link 1.3

Nadere informatie

1 Rekenen met gehele getallen

1 Rekenen met gehele getallen 1 Inhoudsopgave 1 Rekenen met gehele getallen... 1.1 De gehele getallen... 1. Optellen... 1. Opgaven... 1. Aftrekken... 1. Opgaven... 1. Vermenigvuldigen... 1. Opgaven... 1.8 Delen... 9 1.9 Opgaven...9

Nadere informatie

Netwerkdiagram voor een project. AOA: Activities On Arrows - activiteiten op de pijlen.

Netwerkdiagram voor een project. AOA: Activities On Arrows - activiteiten op de pijlen. Netwerkdiagram voor een project. AOA: Activities On Arrows - activiteiten op de pijlen. Opmerking vooraf. Een netwerk is een structuur die is opgebouwd met pijlen en knooppunten. Bij het opstellen van

Nadere informatie

[8] De ene 1 is de andere niet

[8] De ene 1 is de andere niet [8] De ene 1 is de andere niet Volg mee via 08_Types.py In de volgende leerfiche gaan we rekenen met Python. Dat kan je in een programma doen, maar dat kan je ook gewoon vanuit het Shell-venster doen.

Nadere informatie

Normering en schaallengte

Normering en schaallengte Bron: www.citogroep.nl Welk cijfer krijg ik met mijn score? Als je weet welke score je ongeveer hebt gehaald, weet je nog niet welk cijfer je hebt. Voor het merendeel van de scores wordt het cijfer bepaald

Nadere informatie

Faculteit Economie en Bedrijfskunde

Faculteit Economie en Bedrijfskunde Faculteit Economie en Bedrijfskunde Op dit voorblad vindt u belangrijke informatie omtrent het tentamen. Voordat u met het tentamen t: lees dit voorblad! Tentamen: V&O IV: Programmeren Tentamendatum &

Nadere informatie

Update documentatie. versie 6.5. versie 6.5

Update documentatie. versie 6.5. versie 6.5 Een nieuwe versie van Intramed: nieuwe mogelijkheden, verbeteringen en oplossingen. Met deze versie voldoet Intramed ruim op tijd aan de landelijke afspraak om per 1 mei 2012 met de vernieuwde GZ-standaard

Nadere informatie