procedure naam(par1, par2,
..., parN){...instructies...}
definieert een nieuwe procedure met een
zelf gekozen naam. De procedure kan beschikken over een aantal
parameters die hier par1, par2, . . . , parN worden genoemd. Dit
zijn de namen van de variabelen die je wilt gebruiken in de instructies
die tussen accolades staan.
Voorbeeld:
# definieer het tekenen van een rechthoek
procedure rechthoek(breedte, hoogte)
{
verfWit
herhaal(2)
{
vooruit(hoogte)
rechts
vooruit(breedte)
rechts
}
stopVerven
}
naam(arg1, arg2, . . . , argN)
is de aanroep van de procedure met dezelfde
naam en hetzelfde aantal parameters. De argumenten arg1, arg2, . .
. , argN zijn de concrete waarden voor de parameters in de proceduredefinitie.
Voorbeeld:
vooruit(1)
rechthoek(3,2) # de aanroep gebruikt de bovenstaande definitie
vooruit(3)
rechthoek(1,4) # nog een aanroep, nu met andere argumenten
retourneer
zorgt ervoor dat de uitvoer van de huidige procedure wordt afgebroken.
De uitvoer zal worden hervat bij de eerste insructie na de procedure-aanroep.
Op deze manier is het mogelijk slechts een eerste deel van de procedure
te laten uitvoeren.
piet
# hier gaat de uitvoer verder nadat 'piet' is voltooid
links
vooruit(1)
procedure piet
{
vooruit(5)
als(voorIsObstakel)
{
# breek de uitvoer van deze procedure af
retourneer
}
vooruit(3)
}
retourneer(arg)
zorgt ervoor dat de uitvoer van de huidige procedure wordt afgebroken.
De uitvoer zal worden hervat bij de eerste insructie na de procedure-aanroep.
Op deze manier is het mogelijk slechts een eerste deel van de procedure
te laten uitvoeren.
Standaard retourneert een procedure het getal nul. Je kan een andere waarde teruggeven door hier een expressie op te geven.
Voorbeeld:
vooruit(verdubbel(3))
# verdubbel het gegeven aantal
procedure verdubbel(n)
{
retourneer(2 * n)
}
Recursie
Een procedure kan recursief worden gedefinieerd. Dat betekend dat je definieert wat er in een procedure moet gebeuren in termen van zichzelf door hem aan te roepen.
Het is eerst lastig om te begrijpen, maar je kunt er soms mooie oplossingen mee maken.
Voorbeeld:
# voer de volgende instructies uit
naarMuur()
rechts
vooruit
# ga vooruit totdat je een muur tegenkomt
procedure naarMuur()
{
# NB: er worden geen herhaal-
# lussen gebruikt.
als(voorIsObstakel)
{
# stop "naarMuur" procedure
retourneer
}
anders{
# doe een stap
vooruit
# en doe een recursieve aanroep!
naarMuur()
}
}
|