Opdrachten, functies

Parent Previous Next

       Soorten opdrachten

       Functies

       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


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 (";").


Functies


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

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:



Al deze functies worden besproken in het hoofdstuk Standaardfuncties.



















Created with the Personal Edition of HelpNDoc: Generate Kindle eBooks with ease