Logo, een vergeten taal? III                    Door Janny Looyenga

Leren van het leren.
Ladybug is - zoals de schrijver al aangeeft - geen echt Logo programma. Het iseen grafisch programma, geschreven in Basic en daarna gecompileerd, maar welgebaseerd op Logo. Net als bij Logo bestaat de basis uit primitieven en wat decomputer nog niet kent, kan hem aangeleerd worden. Dit aanleren gaat dmv procedures (vergelijkbaar met de procedures in BBC BASIC).
De opbouw van een Logo database is zo'n beetje te vergelijken met de opbouw vande database van een Expert Systeem (denk aan 'Tree of Knowledge' van Acornsoft). Bij een Expert systeem gaat het aanleren dmv vraagstelling (zgn ja/nee vragen) vanuit de vaste basis van (meestal) twee gegevens:

DIEREN  
(met de opdracht list krijg je de dieren te zien die ik al ken)

Denk je aan een dier? list
Dieren die ik al ken zijn:
vis         vogel
Denk je aan een dier? j
Zwemt het? n
Is het een vogel? n
Het dier waaraan je dacht was een ? kat
Tik eens een vraag in die een kat onderscheidt van een vogel:
? heeft het een staart
Voor een kat zou het antwoord zijn? j
Denk je aan een dier? list
Dieren die ik al ken zijn:
vis         vogel         kat
Denk je aan een dier?

Bij een Logo database staan de primitieven vast. Dit zijn woorden in een taal, te gebruiken voor opdrachten en bewerkingen. Deze commando's zijn altijd in hetengels. Ze kunnen in het nederlands gezet worden, maar daarvoor is het nodig desource te vertalen (zie: SuperLogo (demo), een vertaling van Comenius Logo - http://www.input.sk/slogo/usage.htm#demo ). Het leuke hieraan is, dat deopdrachten zowel in het nederlands als in het engels werken.De primitieven van LadyBug zijn op te vragen door 'Load help' en daarna 'help'in te tikken. Het verschenen menu geeft keus uit 8 helpschermen.Zoals al gezegd lijkt Logo op BBC BASIC, maar er zijn ook verschillen. In Logo is er 1 scherm voor tekst en grafiek, waarbij in BBC Basic aparte schermenvoor tekst en grafiek zijn.

Het tekenen van een vierkant in Basic en Logo, een vergelijking.
BASICLOGO
mode 5forward 100
move 400, 400right 90
draw 800, 400 vierkant1.gifforward 100 vierkant.gif
draw 800, 800right 90
draw 400, 800forward 100
draw 400, 400right 90
forward 100

Er wordt onmiddellijk getekend, daar we ons in de directe mode bevinden. Hetkan ook anders...

In beide gevallen kunnen we gebruik maken van de ingebouwde editor. In Basic tebeginnen met 'auto', in Logo met edit "<procedurenaam> of to <naam van deprocedure>, elke opdracht op een nieuwe regel en de laatste regel eindigend opend (een procedure is in feite een klein programmaatje, iedere procedure hoortdan ook een eigen naam te krijgen). Een return geeft vierkant defined. Hetvierkant is gedefinieerd, die kent hij nu. Tenminste, als je niet vergeet deprocedure te bewaren: save <naam> of gebruik F9.

10 Defprocvierkant to vierkant
20 mode 5 forward 100
30 move 400, 400right 90
40 draw 800, 400forward 100
50 draw 800, 800right 90
60 draw 400, 800forward 100
70 draw 400, 400right 90
80 Endprocforward 100
end

De procedure in BBC Basic wordt aangeroepen door Procvierkant en die in Logodoor vierkant in te tikken.

De procedure vierkant kan echter korter.
Allereerst door de woorden af tekorten: forward = fd en right = rt, daarna - als we goed tellen zien we dat we4x hetzelfde hebben ingetikt - door het gebruik van 'repeat'.

De procedure wordt dan aldus:
to vierkantvierkant.gif
repeat 4 [fd 100 rt 90]
end

Andere procedures:
to cirkelcirkel.gif
repeat 36 [fd 10 rt 10]
end
to driehoekdriehoek.gif
rt 30
repeat 3 [fd 120 rt 120]
end
to rechthoekrechthoek.gif
repeat 2 [fd 80 rt 90 fd 150 rt 90]
end
to ruitruit.gif
left 30
repeat 2 [fd 100 rt 60 fd 100 rt 120]
right 30
end

De 8Bit Acorn Computers Electron, BBC en Master gebruiken de functietoetsenvoor de diverse Logo commando's (helaas niet in de emulatoren). Ook in Logo is zo'n programmaatje te maken:

to functietoetsen
make "toets readchar
if :toets = 1 [fd 10]
if :toets = 2 [bk 10]
if :toets = 3 [rt 15]
if :toets = 4 [lt 15]
if :toets = 5 [cs]
if :toets = 6 [penup]
if :toets = 7 [pendown]
if :toets = 8 [cirkel]
if :toets = 9 [vierkant]
if :toets = 0 [driehoek]
functietoetsen
end

Deze listing werkt in Ladybug (vermits de procedures bekend zijn); bij andere Logo dialecten moeten er misschien quotes voor de cijfers worden geplaatst. In de meest volledige versie van LadyBug Logo zit een demo, eigenlijk een soorthandleiding. Deze is te bekijken door 'Load tutor' in te tikken en daarna 'start'.In verband met snelle computers is er een vertragingsfactor (de WAITprocedure) in gezet die u kunt invullen achter de vraag: Enter a number.Na het zien van de demo kunt u vast al snel antwoord geven op de vraag:

Hoe is deze ster gemaakt?
ster.gif

(wordt vervolgd) Janny Looyenga

P.S. Voor geinteresserden heeft Janny op haar website: http://www.nostalgia8.nl/logo.htm dieren en ladybug als zip-files ter download geplaatst. H.