Logo, een vergeten taal?
waarin Janny Looyenga verder tekent

Leren van het leren.
Ladybug is - zoals de schrijver al aangeeft - geen echt Logo programma. Het is een grafisch programma, geschreven in Basic en daarna gecompileerd, maar wel gebaseerd op Logo. Net als bij Logo bestaat de basis uit primitieven en wat de computer 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 van de database van een Expert Systeem (denk aan 'Tree of Knowledge' van Acornsoft). Bij een Expert systeem gaat het aanleren d.m.v. 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 het engels. Ze kunnen in het nederlands gezet worden, maar daarvoor is het nodig de source te vertalen (zie: SuperLogo (demo), een vertaling van Comenius Logo http://www.input.sk/slogo/usage.htm#demo). Het leuke hieraan is, dat de opdrachten 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 schermen voor tekst en grafiek zijn.

Het tekenen van een vierkant in Basic en Logo, een vergelijking.

BASIC LOGO
mode 5 forward 100
move 400, 400 right 90
draw 800, 400 forward 100
draw 800, 800 right 90
draw 400, 800 forward 100
draw 400, 400 right 90
forward 100

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

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

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

De procedure in BBC Basic wordt aangeroepen door Procvierkant en die in Logo door vierkant in te tikken. De procedure vierkant kan echter korter. Allereerst door de woorden af te korten: forward = fd en right = rt, daarna - als we goed tellen zien we dat we 4x hetzelfde hebben ingetikt - door het gebruik van 'repeat'.
De procedure wordt dan aldus:

to vierkant
repeat 4 [fd 100 rt 90]
end

Andere procedures:

 
to cirkel
repeat 36 [fd 10 rt 10]
end

to driehoek
rt 30
repeat 3 [fd 120 rt 120]
end

to rechthoek
repeat 2 [fd 80 rt 90 fd 150 rt 90]
end

to ruit
left 30
repeat 2 [fd 100 rt 60 fd 100 rt 120]
right 30
end

De 8-bit Acorn Computers Electron, BBC en Master gebruiken de functietoetsen voor 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 soort handleiding. Deze is te bekijken door 'Load tutor' in te tikken en daarna 'start'. In verband met snelle computers is er een vertragingsfactor (de WAIT procedure) 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?

<wordt vervolgd>

Janny Looyenga