|  |  | Enkele voorbeelden |

## Enkele voorbeelden

Scheme is als dusdanig een taal op hoog niveau. Wanneer we een figuur definiëren, kunnen we bijgevolg van zijn kracht gebruikmaken om dit of dat deel van de figuur op recursieve wijze te definiëren, of om bepaalde objecten op toevallige wijze op de figuur te plaatsen zodat de figuur er telkens lichtjes anders uitziet wanneer men ze opnieuw opent. De DSF zijn kortom bevrijd uit het kader van de grafische interface en winnen aan kracht dankzij Scheme. Een DSF is dus een bestand dat met een tekst-editor wordt aangemaakt en dat in DR. GEO wordt geopend met de opdracht `Bestand->Evalueren`.

Laat ons een eenvoudig voorbeeld van de DSF bestuderen :

    (nieuwe-figuur "Mijn figuur")

Dit is de kleinste DSF die we konden definiëren. Wanneer we het bestand laden in DR. GEO, wordt er louter een nieuwe, lege figuur gecreërd onder de naam "Mijn figuur". Hadden we verschillende commando's in de lijn van `(nieuwe-figuur Mijn figuur)` ingebracht, dan zouden er evenveel nieuwe figuren gecreëerd zijn.

Laat ons een tweede voorbeeld bekijken :

    (nieuwe-figuur "Mijn figuur")
    (weze Punt "A" willekeurig 1.2 -2)

Deze DSF definiëert een figuur met een willekeurig punt A met coördinaten (1,2 ; -2). De syntaxis is kennelijk relatief aangenaam, te meer omdat zij in de moedertaal gesteld is. Laat ons dieper ingaan op de tweede regel. De syntaxis is immers dezelfde voor alle commando's die objecten definiëren. Een dergelijk commando kan als volgt worden opgesplitst :

1. We beginnen steeds met het sleutelwoord `weze`, dat aangeeft dat we een nieuw object in het leven willen roepen.
2. Onmiddellijk daarop volgt de categorie van het object, `Punt` in dit geval `Punt`.
3. Vervolgens volgt de naam van het object, A, die we steeds tussen aanhalingstekens plaatsen. Zelfs als we geen naam willen geven aan het object, moet men een lege naam geven.
4. Daarna geven we het type object aan - het type punt in ons voorbeeld - hier `willekeurig`. Het punt A is dus een willekeurig punt.
5. Na het type object volgt een lijst met specifieke argumenten. Die lijst bestaat in ons voorbeeld uit twee getallen, de coördinaten van het willekeurige punt A.

Laat ons verder gaan met een derde voorbeeld :

     (define (driehoek p1 p2 p3)
       (Lijnstuk "" uiteinden p1 p2)
       (Lijnstuk "" uiteinden p2 p3)
       (Lijnstuk "" uiteinden p1 p3))

    (define (toeval)
      (- 8 (* 16 (random:uniform))))

    (nieuwe-figuur "Mijn figuur")

    (weze Punt "A" willekeurig (toeval) 0)
    (weze Punt "B" willekeurig 5 0)
    (weze Punt "C" willekeurig (toeval) 5)

    (driehoek A B C)

Dit voorbeeld is bijzonder interessant omdat het drie belangrijke zaken demonstreert :

1. Het gebruik van constructies op hoog niveau. We definiëren een functie `driehoek` die aan de hand van drie gegeven punten, een driehoek door die punten construeert. Deze manier van handelen is vergelijkbaar met de macro-constructies, maar we hebben een veel grotere vrijheid van beweging.
2. De definitie van bijkomende functies. Hier hebben we de functie `toeval` gecreëerd, die ons een decimaal getal bezorgt dat tussen -8 en 8 ligt. We gebruiken de functie om bepaalde punten van onze figuur op toevallige wijze te positioneren. Op die manier zal een figuur lichtjes anders zijn telkens zij geopend wordt.
3. Het gebruik van het sleutelwoord `weze` is eigenlijk niet verplicht. Enkel als we een verwijzing (een naam) van een object willen bewaren, maken we er gebruik van. Bij de functie `driehoek` kozen we er bij voorbeeld voor om de lijnstukken geen namen te geven. De punten A, B en C daarentegen kregen verwijzingen met dezelfde naam.

Merk op dat als we geen naam geven bij het definiëren van de lijnstukken, DR. GEO zelf een standaardnaam toekent aan de hand van de uiteinden. De drie lijnstukken zullen dus in ons geval de namen [AB], [BC] en [AC] dragen.

Laat ons dit gedeelte met een laatste voorbeeld beëindigen :

    (weze Punt "A" willekeurig 1 0)
    (weze Punt "B" willekeurig 5 0)
    (weze Rechte "r1" 2punten A B)

    (zend A kleur geel)
    (zend A vorm rond)
    (zend A grootte groot)
    (zend B verbergen)
    (zend d1 dikte streepje)

De drie eerste commando's creëren twee punten en een rechte. Hier belangt ons vooral de reeks `geef`-commando's aan. Met dit commando kunnen we communiceren met een object waarvan we een symbool hebben opgeslagen. In ons geval hebben we de symbolen `A`, `B` en `r1`. We zenden telkens een boodschap aan een object. In het eerste argument geven we aan met welk object we communiceren en in het tweede argument de boodschap die we willen meegeven. Het derde en de volgende argumenten hangen af van de aard van de boodschap in het tweede argument. Met de zin `(zend A kleur geel)` stuur je het punt A de boodschap kleur met als parameter `geel`. De andere `geef`-commando's zijn zo gemakkelijk te begrijpen. Ze zullen uitgelegd worden in het volgende gedeelte.

Wij hebben onze kleine begeleide wandeling doorheen de Dr. Geo Scheme Figuren afgerond. In wat volgt, zullen wij alle beschikbare commando's om DSF'en te definiëren uit de doeken doen.

|  |  | Enkele voorbeelden |