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; |
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 Functies. Voorbeeld: result Getal - 2; Beschrijving resultaatopdracht |
N.B. Elke opdracht wordt dus afgesloten door een puntkomma (";").
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.
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
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:
Al deze functies worden besproken in het hoofdstuk Standaardfuncties.
Created with the Personal Edition of HelpNDoc: Generate Kindle eBooks with ease