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.
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 |
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. |
description |
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. |
main, endmain |
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 |
namen en andere woorden |
rood |
tekenrij |
groen |
getallen |
blauw |
commentaar |
PIPL heeft een aantal ingebouwde opdrachten. Deze kunnen worden gebruikt, zonder dat ze behoeven te worden 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
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;
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: 1234. 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: 10 + 25/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
Created with the Personal Edition of HelpNDoc: Free Qt Help documentation generator