| Inhoudsopgave > Programmeerstructuren | documentatie |
Om aan te geven wanneer welke basisinstructie moet worden uitgevoerd, kan je gebruik maken van de volgende programmeerstructuren:
# tekst die niet door de robot gelezen wordt
alle tekst in een programma dat na het hekje, '#', staat wordt niet geinterpreteerd
als instructies. Pas op de volgende regel worden de instructies weer gelezen
door de robot. Gebruik deze mogelijkheid om een programma desgewenst te voorzien
van extra informatie.
herhaal(n){...instructies...}
herhaalt de instructies tussen accolades precies n keer.
Voorbeeld:
# een 2x2 vierkantje
herhaal(4)
{
vooruit(2)
rechts
}
herhaal{...instructies...}
blijft de instructies tussen accolades telkens herhalen.
Voorbeeld:
# blijf als maar rechtdoor gaan
# (zal uiteindelijk blijven botsen)
herhaal
{
vooruit
}
herhaalZolang(conditie){...instructies...}
herhaalt de instructies tussen accolades net zo lang totdat de conditie
niet meer opgaat. De conditie moet waarnemingsinstructie zijn (bijv.
voorIsVrij)
Voorbeeld:
# blijf rechtdoor gaan, totdat je niet verder kunt
herhaalZolang(voorIsObstakel)
{
vooruit(1)
}
doorbreekLus
zorgt ervoor dat de lus waar deze instructie in staat wordt beëindigd,
en er wordt verder gegaan met de eerste instructie na deze lus.
Voorbeeld:
# blijf rechtdoor gaan, totdat je niet verder kunt
herhaal
{
als(voorIsObstakel)
{
doorbreekLus
}
anders
{
vooruit(1)
}
}
als(conditie){...instructies...}
voert de instructies tussen accolades alleen uit als de conditie opgaat. De
conditie moet waarnemingsinstructie zijn (bijv. voorIsVrij)
Voorbeeld:
# als je links een witte stip ziet, maak hem zwart
als(linksIsWit)
{
links
vooruit(1)
verfWit
stopVerven
achteruit(1)
rechts
}
als(conditie){...instructies...}anders{...instructies...}
voert de instructies tussen het eerste paar accolades alleen uit als de
conditie opgaat, anders voert het alleen de instructies uit tussen het
tweede paar accolades. De conditie doet waarnemingsinstructie zijn
(bijv. voorIsVrij)
Voorbeeld:
# als je links een witte stip ziet, maak hem zwart,
# rij anders een stukje door;
als(linksIsWit)
{
links
vooruit(1)
verfWit
stopVerven
achteruit(1)
rechts
}
anders
{
vooruit(1)
}
als(conditie){...instructies...}
anders als {...instructies...}
is de makkelijkere notatie zonder extra accolades voor: als(conditie){...instructies...}
anders { als {...instructies...}}. Het codeblok van anders wordt
alleen uitgevoerd als zijn overeenkomende conditie het geval is. Deze constructie
is met name nuttig wanneer er meerdere verschillende gevallen moeten worden gecontroleerd
en uitgevoerd. In het voorbeeld volgt de robot een stapje een witte lijn op de
grond.
als(voorIsWit)
{
# alleen als voor is wit
vooruit(1)
}
anders als(rechtsIsWit)
{
# alleen als rechts is wit
rechts
vooruit(1)
}
anders als(linksIsWit)
{
# alleen als links is wit
links
vooruit(1)
}
anders
{
# alleen als ALLE voorgaande condities niet het geval waren
rechts
rechts
vooruit
}
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 hetzelde aantal
parameters. De argumenten arg1, arg2, . . . , argN zijn de concrete
waarden voor de parameters in de procedure definitie.
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 slehts 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)
}
einde
zorgt ervoor dat het hele programma direct stopt met de uitvoer als
deze instructie wordt bereikt.
Voorbeeld:
# stop na 5 stappen, of eerder als je rechts een baken ziet
herhaal(5)
{
vooruit(1)
als(rechtsIsBaken)
{
einde # breek het programma af
}
}
# normaal einde van het programma
| naar inhoudsopgave | naar top |