Hoofdstuk 5. Scripts

In Kig kan de gebruiker eigen typen maken met behulp van de scripttaal Python. Dit is een zeer geavanceerde functie, en ik ken slechts één ander programma voor interactieve geometrie dat ook zulke functionaliteit heeft: het GNOME-programma Dr.Geo.

Met scripts in Python kunt u in Kig uw eigen objecten definiëren vanuit bepaalde oorspronkelijke objecten. Als u bijvoorbeeld een wiskundeleraar bent en een leuke manier heeft om een interessant punt of kegelsnede te berekenen, dan kunt u heel eenvoudig in Python-code opschrijven hoe het punt wordt berekend in plaats van te stoeien met ingewikkelde constructies en macro's. Kig zal het dan voor u demonstreren.

Stel sat u niet weet van het bestaan van in Kig ingebouwde type Middenpunt, en u wilt het midden tonen tussen twee punten. U zou dan klikken op de knop   Python Script in de werkbalk, of ObjectenAndersPython Script selecteren in het menu. Daarna ziet u dan de assistent die u verder helpt.

De assistent Scriptobject

Het eerste dat u moet doen is het selecteren van de argumenten voor het scriptobject. In ons voorbeeld moeten we de twee punten selecteren waarvan we het midden willen verkrijgen. Selecteer deze twee punten in het hoofdvenster van Kig en klik op Volgende om door te gaan.

Nu krijgt u een tekstvak te zien waarin u de programmacode voor het scriptobject kunt invoeren. Er staan al wat programmaregels in van een sjabloon, met wat commentaar. Het is belangrijk dat de code die u invoert goede Python-code is. Als u al bekend bent met Python zult u opmerken dat we hier een functie definiëren met de naam calc. Daarom moet u wel weten hoe in Python functies worden gedefinieerd. Elke regel van het functieblok moet bijvoorbeeld beginnen met een tab. De eerste regel die niet begint met een tab geeft het einde van de functiedefinitie aan.

De Python-functie die we hier willen definiëren heet calc, en accepteert in ons voorbeeld twee argumenten. Deze argumenten komen overeen met de objecten die u heeft geselecteerd als argumenten in de vorige stap. Hier verschijnen er dus evenveel argumenten als u daar geselecteerd heeft. Ze heten arg1 en arg2, maar als u wilt kunt u die namen veranderen in duidelijker namen.

In deze functie kunt u alle soorten berekeningen uitvoeren die u nodig acht, waarbij u waar nodig beide argumenten kunt gebruiken. Het object dat u wenst moet het eindresultaat zijn. In ons voorbeeld is dat een Point-object (een punt dus). De argumenten zijn ook Point-objecten waarbij we de functie Point.coordinate() kunnen gebruiken om de coördinaten van de twee gegeven punten in vast te leggen.

De berekening die in ons voorbeeld moet worden gedaan is erg eenvoudig, we tellen de coördinaten van beide punten simpelweg bij elkaar op en delen het resultaat door twee. Daarna tekenen we een nieuw punt met de berekende coördinaten. De Python-code luidt als volgt:

def calc( a, b ):
    m = ( a.coordinate() + b.coordinate() ) / 2;
    return Point( m )
De code invoeren voor het midden van twee punten in de assistent Scriptobject.

Het nieuwe object zal verschijnen in het Kig-document als u op de knop Voltooien heeft geklikt. Wanneer u één van de punten verplaatst zal het zojuist gemaakte punt met de twee punten meebewegen. Op deze manier kunt u veel ingewikkelder objecten maken, en u wordt aangemoedigd om dat eens te proberen.

Het zojuist geconstrueerde scriptobject.

Alle objecten van Kig kunnen worden gebruikt in de Python-code. Zoals we zojuist zagen zijn punten van de "class" Point., waarbij u bijvoorbeeld de "method" Point.coordinate() kunt gebruiken. Evenzo kunt u alle soorten objecten maken, niet alleen objecten van de "class" Point. In Python-scripts in Kig kunt u nog veel meer "classes" en "methods" gebruiken. Een vollediger naslagwerk op dit gebied kunt u vinden op de website van Kig. Noot: class(es) en method(s) zijn termen uit de programmeertaal, in dit geval Python. Om succesvol met zo'n taal aan de gang te gaan moeten dit soort begrippen uiteraard bekend zijn of kunnen worden opgezocht, reden om die niet te vertalen.