Informaticasite van het Sondervick College te Veldhoven                 © L.J.M van Haperen (bron : R.J. van der Beek)
 

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

  • De volgende tekening gaan we maken.



    Tik daarvoor de volgende opdrachten in en kijk wat er gebeurt :

    PD (+enter)
    FD 100 (+enter)
    RT 90 (+enter)
    FD 100 (+enter)
    LT 90 (+enter)
    FD 100 (+enter)
    LT 60 (+enter)
    FD 50 (+enter)
    PU (+enter)

  • Maak het scherm schoon en zorg er voor dat de turtle in de beginpositie staat door op Reset te klikken.
    Je kunt dat ook doen door CS (+enter) op de commandoregel in te tikken.
    Doe dat na elke opgave, even op Reset klikken.

  • Tik in : PU     FD 100      RT 90      FD 100      LT 90      FD 100      LT 60      FD 50      PU (+enter)
    Je kunt de opdrachten dus ook na elkaar op één regel intikken, met spaties ertussen.

  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

  • Tik het volgende in om een vierkant te maken:

    FD 100 RT 90
    FD 100 RT 90
    FD 100 RT 90
    FD 100 RT 90

  • Tik het volgende in : REPEAT 4     [ FD 100    RT 90 ]
    Dat geeft hetzelfde resultaat als de vier opdrachten in de vorige opdracht. Dat scheelt veel typwerk !



    Dus REPEAT p [ ............. ] heeft tot gevolg dat de opdracht ............ p keer herhaald wordt.

  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.
  • Verander de procedure vierkant als volgt:

    TO vierkant :z
    REPEAT 4 [ FD :z RT 90 ]
    END

    In plaats van een vast getal voor de lengte van de zijde gebruik je nu de letter z voor de lengte van de zijde, die z wordt een variabele genoemd.
    Denk er om dat je die steeds moet laten voorafgaan door een dubbele punt !
  • Tik nu in op de commandoregel: vierkant 30 (+ enter)
    Door 30 achter vierkant te typen krijgt de parameter z de waarde 30 ! (een variabele in een procedure wordt wel een parameter genoemd)
  • Probeer ook : vierkant 50 en   vierkant 20

  • Je kunt ook variabelen buiten een procedure om gebruiken.
    Als je de volgende opdracht invoert:
              make "a 10
    dan krijgt de variabele a de waarde 10 En dan kun je daarna bijvoorbeeld de opdracht
             PD FD :a RT 90 FD :a*5 RT 90 FD :a RT 90 FD :a*5
    geven.

    Als je de variabele een waarde geeft m.b.v. MAKE dan moeten er dus aanhalingstekens voor de naam van de variabele.
    En als je waarde van de variabele verder wilt gebruiken moet er een dubbele punt voor de naam van de variabele worden gezet.

  • Als je de waarde van de variabele af wilt laten drukken m.b.v. MSWlogo dan geef je de opdracht
             label :a
  • Als je een tekst af wilt laten drukken m.b.v. MSWlogo, bijvoorbeeld het woord Piet, dan geef je de opdracht
             label "Piet
  • Als je een zin af wilt laten drukken m.b.v. MSWlogo, bijvoorbeeld het woord Mijn naam is Piet, dan geef je de opdracht
             label "Mijn_naam_is_Piet
    of       label [Mijn naam is Piet]

  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")PDPenDown
vooruit(100)FD 100Forward
rechts(90)RT 90Right
links(90)LT 90Left
penUit( )PUPenUp
stap(10,20)SETXY xcor+10 ycor+20Ga 10 naar rechts en 20 omhoog
 SETXY 10 20Ga 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
  FILLInkleuren
int a = 50 MAKE "a 50a krijgt de waarde 50
  LABEL :aDruk de waarde van a af
  LABEL "HalloDruk het woord "Hallo" af
  LABEL [Hallo Ik heet Piet]Druk de zin "Hallo Ik heet Piet" af