MSWLogo.
Hoofdstuk 1. De grafische mogelijkheden
1.1. De start
Met het programma MSWLogo leer je de eerste beginselen van het programmeren.
In deze cursus gebruiken we alleen de tekenmogelijkheden, maar het heeft veel meer mogelijkheden, het is een volwaardige programmeertaal.
Wil je meer mogelijkheden weten dan in deze cursus staan, gebruik dan de Help-functie.
Wij gebruiken MSWLogo, dat is Microsoft Windows Logo.
Wil je het programma MSWLogo downloaden, klik dan op LOGO DOWNLOADEN
Je krijgt dan een zip-file, die nog uitgepakt moet worden.
Je leert :
- het ontwerpen van "algoritmen"
- het gebruik van een herhalingsstructuur
- het splitsen van problemen in deelproblemen
- het gebruik van "procedures".
Als je het programma MSWLogo start dan zie je op het startscherm twee vensters onderelkaar
Op de onderste regel, de zogenaamde commandoregel, kun je opdrachten intypen.
Als je dan op Execute klikt, of op enter drukt, dan wordt de opdracht uitgevoerd: de turtle (dat is het driehoekje midden in het bovenste venster) gaat bewegen, en er ontstaat een bepaalde figuur.
Als de turtle beweegt laat hij meestal een spoor achter.
Voorbeelden van opdrachten die je kunt geven :
- FD 50 laat de turtle 50 mm. vooruit lopen (FD is de afkorting van Forward = vooruit)
- RT 90 laat de turtle 90° rechtsom draaien (RT is de afkorting van Right)
- LT 40 laat de turtle 40° linksom draaien. (LT is de afkorting van Left)
- PU FD 40 laat de turtle 40 mm. vooruit springen, zonder een spoor achter te laten.
PU is de afkorting van Pen Up, dus de pen wordt van het papier gehaald, en daardoor verschijnt er geen lijn.
- PD FD 40 laat de turtle 40 mm. vooruit lopen, er wordt wel een lijn getekend. Na een PU opdracht is een PD (dat is de afkorting van Pen Down) opdracht nodig om er voor te zorgen dat er weer een spoor wordt achtergelaten.
- CS zorgt er voor dat het scherm wordt schoon geveegd en dat de turtle in de beginpositie staat. (CS is de afkorting van Clear Screen). Het zelfde kun je bereiken door op Reset te klikken.
In hoofdstuk 4 van deze site wordt gewerkt met Javalogo.
Dat lijkt vrij veel op MSWlogo, maar MSWlogo is veel korter en direkter.
De commando's in MSWlogo zijn engelse termen.
In Javalogo heb je bijvoorbeeld het commando vooruit(100), in MSWlogo is dat forward 100 maar dat mag
worden afgekort tot FD 100
De verschillen tussen de commando's in Javalogo en MSWlogo zie je onderaan deze pagina
1.2. Stapopdrachten
In Javalogo heb je de stapopdracht (zie blz. 145 van het theorieboek).
Door de opdracht stap(10,20) wordt er een lijntje getekent dat 10 naar rechts en 20 naar boven loopt.
De x-coördinaat van het eindpunt is dus 10 + de x-coördinaat van het beginpunt.
En de y-coördinaat van het eindpunt is dus 20 + de y-coördinaat van het beginpunt.
In MSWlogo wordt het setxy xcor+10 ycor+20
(Je kunt ook de opdracht setxy 10 20 maar dan wordt er een lijn getekend van het punt waar
op dat moment de turtle is, naar het punt (10,20);
daarom xcor + 10 enz, xcor is de afkorting van x-coördinaat)
Als je verschillende van die opdrachten achter elkaar in moet typen dan hoef je niet steeds het hele verhaal
opnieuw in te typen.
Als je op een opdracht in het venster boven de opdrachtregel klikt dan verschijnt
die opdracht weer op de opdrachtregel en dan kun je daar iets aan veranderen.
1.3. Repeat
1.4. Kleuren gebruiken
Je kunt ook aangeven in welke kleur er getekend moet worden.
Als je de opdracht SETPC [255 0 0] geeft dan wordt er vanaf dat moment met rood getekend.
SETPC is de afkorting van SETPENCOLOR
De drie getallen vormen samen de RGB-kleur rood.
Je kunt ook een ruimte laten opvullen met een bepaalde kleur.
De opdracht daarvoor is FILL
Er wordt dan ingekleurd tot de rand vanuit het punt waar de turtle staat.
Je moet er wel voor zorgen dat er een gesloten figuur is, anders wordt alles gekleurd.
De opvulkleur moet je van tevoren opgeven m.b.v. de opdracht SETFC [R G B]
SETFC is de afkorting van SETFLOODCOLOR en R, G en B zijn de getallen die aangeven om welke kleur het gaat.
Verder kun je nog aangeven wat de achtergrondkleur van het scherm is met de opdracht SETSC [R G B]
SETSC is de afkorting van SETSCREENCOLOR en voor R, G en B moet je getallen tussen 0 en 255 invullen.
Ook kun je aangeven met welke dikte de lijnen getekend moeten worden. Dat kun je bepalen m.b.v. de opdracht SETPENSIZE
SETPENSIZE [1 1] is de normale dikte (dat is vrij dun)
SETPENSIZE [5 5] levert lijnen die 5 keer zo dik zijn als normaal.
- Onderstaande tekening gaan we maken.
-
Tik daarvoor de volgende opdrachten in (alleen wat rood is) :
eerst wordt de achtergrondkleur geel gemaakt
SETSC [255 255 0]
dan wordt de kleur van de pen blauw gemaakt
SETPC [0 0 255]
de figuurlijnen worden getekend
PD
REPEAT 5 [ FD 100 RT 144]
de pen gaat omhoog, en de turtle wordt naar het binnengebied gestuurd
PU
RT 18
FD 40
de opvulkleur wordt rood gemaakt
SETFC [255 0 0]
en het binnengebied wordt opgevuld met de kleur rood
FILL
FD 400
Ga goed na wat er gebeurt, het wordt in de blauwe regels uitgelegd.
1.5. Procedures
- Tik in : vierkant
- Ook rechthoek
Dan krijg je een foutmelding.
Dus het programma kent de opdracht vierkant en de opdracht rechthoek niet.
We kunnen er wel voor zorgen dat het programma die opdrachten vierkant en rechthoek wel kent.
We laten de computer ONTHOUDEN wat een vierkant is.
- Tik in : TO vierkant
Dan verschijnt er een apart venstertje waarin je een zogenaamde procedure kunt intypen.
Tik in : REPEAT 4 [ FD 40 RT 90 ] (+enter)
Tik dan in : END (+enter)
Nu kun je vierkant als opdrachtwoord gebruiken. Je noemt dat een procedure.
Wat tussen TO en END staat wordt dan uitgevoerd.
- Tik in :
REPEAT 12 [vierkant RT 30 ]
Begrijp je wat er gebeurt ?
1.6. Edit : een procedure veranderen
Je krijgt nu steeds vierkanten met zijde 40.
Als je een vierkant met zijde 30 wilt hebben dan kun je de procedure
gemakkelijk veranderen.
Klik op File, en dan op Edit ...
Dan verschijnt er een venster zoals hiernaast.
Je zet de cursor op vierkant, en dan klik je op OK.
En dan verschijnt er een venster zoals hieronder,
met daarin de procedure vierkant, en dan kun je daar veranderingen in aanbrengen.
Verander FD 40 in FD 30.
Klik dan op File, en daarna op Save and Exit.
Als je een nieuwe procedure wilt maken dan kun je er ook voor zorgen dat je direkt in het Edit-venster terecht komt.
Als je bijv. een procedure driehoek wilt maken, dan moet je edit "driehoek (+enter) intikken.
Denk om de aanhalingstekens, alleen aan het begin van de procedurenaam !
1.7. Deeltaken
Onderstaande tekening gaan we maken.
De tekening bestaat uit drie huizen, en elk huis bestaat uit een groen vierkant, een rode rechthoek en een
gele driehoek.
We maken niet direkt de hele figuur, we gaan we het probleem in stukjes hakken.
- We maken daarom eerst de procedure voor een groen vierkant.
to vierkant
pd
repeat 4 [fd 40 rt 90]
pu
pu fd 10 rt 90 fd 10
setfc [0 255 0]
fill
rt 90 fd 10 rt 90 fd 10 rt 90 pd
end
- Dan maken we de procedure voor een rode rechthoek:
to rechthoek
pd
fd 40 rt 90
fd 80 rt 90
fd 40 rt 90
fd 80 rt 90
pu
pu fd 10 rt 90 fd 10
setfc [255 0 0]
fill
rt 90 fd 10 rt 90 fd 10 rt 90 pd
end
- Dan maken we de procedure voor een gele driehoek:
to driehoek
pd
rt 30 fd 40
rt 120 fd 40
rt 120 fd 40 rt 90
pu
fd 10 rt 90 fd 10
setfc[255 255 0]
fill
rt 90 fd 10 rt 90 fd 10 rt 90 pd
end
- Vervolgens maken we de procedure voor een huis:
to huis
vierkant
fd 40
driehoek
rt 180 fd 40 lt 90 fd 40 lt 90
rechthoek
end
- En uiteindelijk maken we de totale figuur. Daar kunnen we ook een procedure van maken,
dan kun je het gemakkelijker weer veranderen.
Noem die procedure driehuizen. En voer dus in:
to driehuizen
repeat 3 [huis pu rt 90 fd 100 lt 90]
end
- En dan is het klaar. Probeer maar.
1.8. Variabelen en Parameters
Met de procedure vierkant
kun je gemakkelijk een heleboel vierkanten laten tekenen,
maar die vierkanten zijn dan allemaal even groot.
Je kunt de grootte ook variëren !
Dan moet je een variabele gebruiken,
die achter de procedurenaam staat, voorafgegaan door een dubbele punt.
1.9. De variabele REPCOUNT
- Tik in : REPEAT 8 [ vierkant repcount*10 ]
(we gaan er vanuit dat de procedure vierkant uit 1.8 is ingevoerd)
Bij een REPEAT-opdracht geeft de variabele REPCOUNT steeds aan met de hoeveelste keer de computer bezig is.
De variable REPCOUNT loopt in het voorbeeld dan van 1 tot 8
-
De eerste keer wordt vierkant 1*10 getekend.
De tweede keer wordt vierkant 2*10 getekend.
De derde keer vierkant 3*10 enz.
tot en met vierkant 8*10
- Je kunt ook met een eigengemaakte variabele werken.
Probeer het volgende maar eens:
Make "a 10
REPEAT 8 [ vierkant :a
Make "a :a+10]
Er wordt acht keer een vierkant met zijde a getekend. En de eerste keer heeft a de waarde 10.
En door de opdracht Make "a :a+10 wordt er bij de waarde van a tien opgeteld. Dus de tweede
keer heeft a de waarde 20, de derde keer 30, enz.
1.10. Procedures op schijf bewaren
Je kunt de procedures, die je tot nu toe gemaakt hebt, ook op de schijf opslaan.
Dan hoef je een volgende keer niet alles weer in te typen.
Klik dan op File, dan op Save As. Je moet een naam aan het bestand geven, en de map uitkiezen waarin het opgeslagen moet worden, en dan klik je op OK.
Dan worden alle procedures tegelijk opgeslagen. Doe dit.
Je kunt ze later weer inlezen door op File te klikken en dan op Load enz.
1.11. Overzicht van de commando's
Javalogo | MSWlogo | Dat is de afkorting van: |
penAan("zwart") | PD | PenDown |
vooruit(100) | FD 100 | Forward |
rechts(90) | RT 90 | Right |
links(90) | LT 90 | Left |
penUit( ) | PU | PenUp |
stap(10,20) | SETXY xcor+10 ycor+20 | Ga 10 naar rechts en 20 omhoog |
| SETXY 10 20 | Ga naar het punt (10,20) |
| SETHEADING TOWARDS (list xcor+10 ycor+20) | ga in de richting staan met hellingsgetal 20/10 |
| SETHEADING TOWARDS (list 1000 0) | ga in horizontale richting staan |
| SETHEADING TOWARDS (list 0 1000) | ga in vertikale richting staan |
for (i=0, i<4,i++) | REPEAT 4 [ ............. ] | herhaal de opdracht ......... 4 maal |
penAan("rood") | SETPC [255 0 0] | SetPenColor; penkleur rood |
achtergrondkleur("groen") | SETSC [0 255 0 ] | SetScreenColor; schermkleur groen |
| SETFC [0 0 255] | SetFloodColor; vulkleur blauw |
| FILL | Inkleuren |
int a = 50 | MAKE "a 50 | a krijgt de waarde 50 |
| LABEL :a | Druk de waarde van a af |
| LABEL "Hallo | Druk het woord "Hallo" af |
| LABEL [Hallo Ik heet Piet] | Druk de zin "Hallo Ik heet Piet" af |
|