Eine Programmierumgebung - Cinderella Dokumentation
Description: The user's guide to the Interactive Geometry Software Cinderella

Zum Inhalt

# Eine Programmierumgebung

Die Programmiersprache CindyScript ist ein leistungsstarkes Werkzeug zum Hinzufügen aller Arten von Verbesserungen zu Cinderella-Konstruktionen. Sie ist so konzipiert, dass die Zusammenarbeit mit dem geometrischen Teil von Cinderella und den Simulationen von CindyLab so reibungslos wie möglich ist. Ihr funktionales Design ermöglicht hochwertige Programmierung, die eine schnelle Prototypisierung interaktiver Szenarien ermöglicht. Die CindyScript-Sprache nutzt die Tatsache, dass sie in einer Umgebung läuft, in der einerseits Einrichtungen für grafische Ausgabe und mausgesteuerte Eingabe (der geometrische Teil) vorhanden sind und andererseits physikalische Simulationen an die CindyLab-Simulationsengine „ausgelagert" werden können. Folglich kann sich der Benutzer auf die Programmierung des Kernproblems konzentrieren. Sehr oft sind nur wenige Codezeilen erforderlich, um das gewünschte Verhalten zu erreichen. Dies steht in starkem Kontrast zu gängigen Programmiersprachen, bei denen ein großer Teil der Programmierung in die Erstellung einer grafischen, mausgesteuerten Benutzeroberfläche fließt.

#### Beispielanwendungen

Die Möglichkeiten von CindyScript sind endlos und nur durch die Fantasie des Benutzers begrenzt (und vielleicht auch durch den Festplattenspeicher), wie bei jeder anderen Programmiersprache. Dennoch möchten wir hier einige zentrale Anwendungsbereiche der Sprache vorstellen.

##### Erweiterte Zeichnungsausgabe

Eine der Kernfunktionen von CindyScript ist die Möglichkeit, programmgesteuert grafische Ausgabe in einer geometrischen Ansicht zu erzeugen. Bei der Verwendung eines Systems für dynamische Geometrie trifft man häufig auf Situationen, in denen es wünschenswert wäre, eine geometrische Konstruktion um immer mehr Elemente zu erweitern, so dass es unzumutbar wird, dies konstruktiv zu tun. Die Programmierfunktionen von CindyScript können verwendet werden, um diese Elemente automatisch zu erstellen.

CindyScript bietet Zugriff auf geometrische Transformationen, so dass es sehr einfach ist, funktional sehr komplizierte geometrische Zeichnungen mit nur wenigen Codezeilen zu erstellen.

Ein programmierter „Pythagoras-Baum"

##### Programmgesteuerte Zeichnung

Es gibt eine spezielle Klasse von Anwendungen, die durch einen klassischen Ansatz zur dynamischen Geometrie überhaupt nicht abgedeckt werden können. Konstruktionen in dynamischer Geometrie sind von Natur aus wie unverzweigte Programme, bei denen alle Berechnungen immer durchgeführt werden. Daher ist es von Natur aus schwierig, logische Entscheidungen oder algorithmisches Verhalten in ein Programm zur dynamischen Geometrie einzubeziehen. Normalerweise werden diese Probleme gelöst, indem die Sichtbarkeitseigenschaften von geometrischen Elementen bedingt durch Schnittpunkteigenschaften gesteuert werden (sogenannte boolesche Punkte). Cinderella.2 bietet auch diese Funktionalität, aber gleichzeitig bietet CindyScript eine viel bessere und elegantere Lösung für dieses Problem.

CindyScript ist eine umfassende High-Level-Programmiersprache, in der es einfach ist, beliebiges algorithmisches Verhalten zu implementieren. Somit können auch kompliziertere Algorithmen auf allgemeiner Ebene in eine Umgebung für dynamische Geometrie einbezogen werden. Grafische Ausgabe kann leicht in solche Algorithmen einbezogen werden.

Die Delaunay- und Voronoi-Diagramme einer Punktmenge

##### Analyse mathematischer Funktionen

Insbesondere bietet CindyScript erweiterte Routinen zum Zeichnen von Funktionen. Es ist daher möglich, Funktionen zu zeichnen und zu analysieren, die sich mit Ableitungen, Extrema usw. befassen. Funktionen können direkt in eine Zeichnung eingegeben werden, und die Ergebnisse können sofort angezeigt werden. Unter Nutzung dieser Funktion zusammen mit den HTML-Exportfunktionen von Cinderella ist es einfach, interaktive Arbeitsblätter zu generieren, die eine Vielzahl von Analyseoptionen für Funktionen ermöglichen. Funktionen können auch durch geometrische Abhängigkeiten der geometrischen Konstruktionen definiert werden, was das Kombinieren von Eingabe- und Analyseteilen in einem Beispiel erleichtert.

Newton-Iteration zum Auffinden einer Nullstelle einer Funktion

##### Kontrolle des Verhaltens von Konstruktionen

Ein besonders interessantes Szenario ergibt sich, wenn CindyScript die Positionen freier Elemente steuert. Die durch CindyScript gesteuerten Bewegungen haben normalerweise Vorrang vor den vom Benutzer durchgeführten. Daher können Sie die Auswirkungen der Benutzereingabe beeinflussen. Das folgende Beispiel veranschaulicht dies in einem sehr einfachen Szenario. Das untenstehende Bild zeigt Picks Theorem, das es erlaubt, die Fläche eines Dreiecks zu berechnen, indem man die ganzzahligen Punkte im Polygon und die ganzzahligen Punkte an der Grenze berechnet.

Picks Theorem gilt nur für Polygone, deren Scheitelpunktkoordinaten Paare von ganzen Zahlen sind, eine Einschränkung, die normalerweise von einem Programm zur dynamischen Geometrie nicht unterstützt wird. Durch Hinzufügen der folgenden drei Codezeilen kann man das Verhalten der drei freien Punkte jedoch ändern:

Eine Demonstration von Picks Theorem

    A.xy=round(A);
    B.xy=round(B);
    C.xy=round(C);

Obwohl die Punkte frei beweglich sind, erzwingt dieser Code, dass jeder Scheitelpunkt an den nächsten ganzzahligen Punkt springt. Alle Texte und alle grünen und gelben Punkte in diesem Beispiel werden ebenfalls mit CindyScript generiert.

#### Design und Eigenschaften

CindyScript wurde so konzipiert, dass es den Anforderungen der Programmierung mathematischer Probleme in einer Umgebung entspricht, in der sich die Eingabeparameter aufgrund der Benutzerinteraktion dynamisch ändern. Einerseits wurde dies durch eine Sprache erreicht, die sowohl über leistungsstarke Datentypen (reelle Zahlen, komplexe Zahlen, Listen, Vektoren, Matrizen usw.) als auch über leistungsstarke Operationen verfügt, die auf diesen Daten arbeiten können. Andererseits wurde es erreicht, indem die Echtzeitanforderungen für interaktive Benutzereingaben bereits beim Sprachentwurf berücksichtigt wurden.

##### Hochwertige funktionale Programmierung

CindyScript ist eine funktionale Sprache. Das bedeutet, dass alle Operationen als die Anwendung von Funktionen auf Daten ausgedrückt werden. Funktionale Programmierung kann anfangs etwas Zeit benötigen, um sich daran zu gewöhnen, bietet aber eine sehr hohe Ausdruckskraft, so dass es möglich ist, komplexe Situationen mit nur wenigen Codezeilen zu beschreiben. Beispielsweise berechnen und drucken die folgenden drei Codezeilen eine Liste der Primzahlen, die kleiner als 100 sind:

    divisors(x):=select(1..x,mod(x,#)==0);
    primes(n):=select(1..n,length(divisors(#))==2);
    print(primes(100));

Die erste Zeile definiert eine Funktion, die eine Liste aller Teiler einer Zahl `x` zurückgibt. Die zweite Zeile bietet eine Funktion, die eine Liste aller Zahlen kleiner als `n` zurückgibt, die genau zwei Teiler haben. Dies sind genau die Primzahlen kleiner als `n`. Die Ausgabe des Algorithmus ist folgende Zeile:

`[2,3,5,7,11,13,17,19,23,29,31,37,41,43,47,53,59,61,67,71,73,79,83,89,97]`

Die Nutzung dieser hochstufigen Programmierfunktionen zusammen mit grafischen Ein- und Ausgaben bietet Möglichkeiten, die in den meisten anderen Programmierumgebungen nicht verfügbar sind. Das untenstehende Bild zeigt eine iterativ definierte pflanzenähnliche Struktur, die in CindyScript programmiert wurde. Der Code zur Erzeugung dieser Pflanze wird daneben gezeigt. Er nutzt im Wesentlichen nur elementare Zeichenfunktionen, erweiterte geometrische Transformationen und funktionale Programmierung, um die gesamte Zeichnung zu erstellen.

Lineare Regression durch Gauß-Approximation

##### Echtzeitberechnungen

CindyScript-Code kann sogar für die kleinste Bewegung einer geometrischen Konfiguration ausgewertet werden. Auf diese Weise ist es möglich, eine Echtzeitinteraktion mit geometrischen Zeichnungen zu erreichen. Ein Benutzer wählt einen Punkt aus, bewegt ihn, und kann dann direkt die sich ändernden Rechenergebnisse beobachten. Obwohl CindyScript eine interpretierte Sprache ist, ist sie noch schnell genug, um für die meisten Standard-Situationen einen flüssigen Zeichnungseindruck zu erzeugen. Die Möglichkeit, dynamisch Programme auszuführen, die unmittelbar auf Benutzereingaben reagieren, eröffnet eine Vielzahl von Anwendungen und interaktiven Szenarien. Hier reichen die Anwendungen von Erklärungen auf Grundschul- und Gymnasialniveau über Universitätskurse bis hin zu Untersuchungen in anspruchsvoller mathematischer Forschung. Das untenstehende Beispiel zeigt einen Schnappschuss einer Illustration der linearen Regression mit der Methode der kleinsten Quadrate. Das Bild wird dynamisch aktualisiert, wenn Punkte bewegt oder hinzugefügt werden.

##### Exakte Zeitmessung

CindyScript bietet verschiedene Möglichkeiten, Programme sowohl mit der Echtzeit als auch mit der Zeit einer Physik-Simulation zu synchronisieren. Auf diese Weise können Sie leicht Simulationen erstellen, die Zeitverhalten beinhalten. Dies kann sehr nützlich bei der Programmierung von interaktiven Spielen oder Edutainment-Szenarien sein, bei denen beispielsweise die Aufgabe zur Lösung einer Übung an Zeitbeschränkungen gebunden ist. Die Möglichkeit, CindyScript mit der Zeitgebung von Physik-Simulationen zu synchronisieren, kann in zwei Richtungen genutzt werden. Auf diese Weise können Sie diese Technik verwenden, um eine Physik-Simulation mit der Echtzeit zu synchronisieren. Alternativ ist es möglich, Programmierzeit und Berechnungszeit zu koppeln, was es ermöglicht, eine Simulation synchron mit einer Berechnung zu verlangsamen oder zu beschleunigen.

Lineare Regression durch Gauß-Approximation

##### Fortgeschrittenes Plotten

Eine Codezeile von CindyScript reicht für einfache Funktionsgraphen aus. Zum Beispiel wird `plot(sin(x))` sofort dazu führen, dass der Graph der Sinusfunktion in der Ansicht geplottet wird. Cinderella bietet jedoch auch mehrere Möglichkeiten und Verbesserungen, die die direkte Anzeige von Maxima, Minima und Wendepunkten ermöglichen. Mit diesen Funktionen ist es einfach, eine visuell aussagekräftige Analyse von Funktionen durchzuführen. Es ist auch möglich, zweidimensionale Funktionsgraphen zu generieren, die Farbwerte für verschiedene Funktionswerte verwenden. Es ist daher möglich, Bilder von zweidimensionalen Daten ganz einfach zu erstellen. Das untenstehende Bild zeigt die Dichteverteilung der Funktion `sin(dist(x-A)*dist(x-B))` für zwei Punkte A und B.

Eine Echtzeit-Uhr
Cassinische Ovale als Wellen

Diese Seite wurde automatisch mit KI (Claude) übersetzt und wartet noch auf Überprüfung. → Alle KI-übersetzten Seiten