»Kudiplo« erfüllt Schülerträume
Eine komplette Kurvendiskussion ist für Computerbesitzer eine ganz einfache Angelegenheit.
Wer hätte sich da nicht gewünscht, solche lästige Arbeit nähme ihm ein fleißiger Computer ab. Diesen Wunsch erfüllt »Kudiplo« jedenfalls für den, der einen VC 20 mit wenigstens 3 KByte Erweiterung besitzt. Für den C 64 ist »Kudiplo« leicht einzurichten. Nur die Bildschirmbefehle sind anzupassen.
Benötigt wird außerdem der VC 1520, der Printer-Plotter von Commodore der die grafische Darstellung mit einer Präzision möglich macht, die keine Wünsche offen läßt. Mit »Kudiplo« kann dann jede beliebige mathematische Funktion im frei wählbaren Bereich und Maßstab dargestellt werden. Außerdem wird auf Wunsch eine Kurvendiskussion ausgedruckt mit Nullstellen, Sprungstellen und Extrema, deren Koordinaten bis zur vierten Dezimalstelle genau berechnet werden.
Hier die besonderen Fähigkeiten des Programmes:
- Auf beiden Koordinatenachsen kann der dargestellte Bereich frei gewählt werden durch Bestimmung des jeweils untersten und obersten Wertes.
- Die zweckmäßigste Positionierung der Koordinatenachsen wird automatisch ermittelt (Normalfall: Kreuzung im Nullpunkt).
- Entsprechend dem gewählten Bereich wird die Skalierung des Achsenkreuzes berechnet und in die Grafik geschrieben.
- Die Maßeinheit beider Achsen beträgt dabei immer 10 mm, so daß Zwischenwerte leicht aus der Grafik ausgemessen und berechnet werden können.
- Der frei wählbare Darstellungsbereich macht es möglich, durch Wahl eines Teilbereiches Ausschnittvergrößerungen der Funktion in jedem beliebigen Maßstab darzustellen (!).
- In ein Achsenkreuz kann nach der ersten auch noch eine zweite und beliebig oft noch eine weitere Funktion (etwa zum Vergleich mit der ersten) geplottet werden — solange nicht mit »Paper feed« der Papiertransport betätigt wurde.
- Jede Funktion wird in anderer Farbe gezeichnet und die zugehörige Gleichung mit gleicher Farbe in die Grafik eingetragen.
- Auf Wunsch wird von der zuletzt dargestellten Funktion die Kurvendiskussion erstellt.
- Dabei werden ermittelt: Extrema, Maxima, Minima und Sattelpunkte sowie die Nullstellen unter Angabe der Steigung und die Sprungstellen mit ihren Koordinaten.
- Verarbeitet werden alle dem VC 20- (beziehungsweise C 64) geläufigen mathematischen Funktionen. Bei ihrer Eingabe ist nur auf die Einhaltung der üblichen Syntax zu achten.
- Ein besonderer Vorzug von »Kudiplo« ist schließlich, daß das Programm unzulässige Werte erkennt und unberücksichtigt läßt SQR(X) führt darum bei Werten von X < 0 ebensowenig zum Abbruch des Programms wie 1/X bei X = 0.
Die Gebrauchsanleitung für den Benutzer wird über den Bildschirm angegeben. Unlogische Eingaben werden zurückgewiesen.
Das Programm erfragt zuerst den Bereich, in welchem die Funktion dargestellt wird (Zeilen 470 bis 540). Die entsprechenden Werte werden in den Variablen XU, XO, YU und YO gespeichert. Aus diesen Werten wird die Lage des Nullpunktes auf beiden Achsen (XN und YN) und die Maßeinheit für die Skalierung der Achsen (XE und YE) berechnet. Weiter wird anschließend die darzustellende Funktion in den Zeilen 585 bis 620 erfragt.
Die folgende Routine dient dazu, die Funktion in das Programm zu übernehmen, indem sie zusammen mit ihrer Ableitung in die Programmzeilen 65 bis 80 und 205 geschrieben wird. Die Routine bedient sich dabei des bekannten Verfahrens der Eingabe über Bildschirmspeicher und Tastaturpuffer:
Die zu verändernden Zeilen werden auf den Bildschirm geschrieben, dann wird der Tastaturpuffer mit der erforderlichen Zahl von »RETURNs« gefüllt Bei dem dann folgenden Programmabbruch (Zeile 660) arbeitet der Computer die Befehle im Tastaturpuffer ab Damit bei der hiermit bewirkten Änderung des Programmes die zuvor gewählten Parameter nicht verloren gehen, werden auch diese (mit Eingabe in die Zeilen 45 und 50) gerettet. Damit diese Routine funktioniert, dürfen die Zeilennummem 45, 50, 65, 70 und 205 nicht verändert werden!!
Nachdem sich das Programm durch »GOTO 45« selbst wieder gestartet hat, werden zunächst die Parameter aus den Zeilen 45 bis 55 und aus den Zeilen 65 bis 80 die definierten Funktionen eingelesen.
Nun endlich kann der Plotter in Funktion treten. Er zeichnet die X-Achse (Zeilen 100 bis 140) und die Y-Achse (Zellen 145 bis 165) in der Größe von 400 x 400 Druckersteps (= 8 x 8 cm).
Es folgt in den Zeilen 195 bis 225 die Berechnung der Funktionswerte, beginnend mit dem niedrigsten Wert von X und mit der Schrittweite J von normalerweise 1/400 des Gesamtbereichs. Wer die Ausgabe (auf Kosten der Auflösung) beschleunigen möchte, erreicht dies durch Zuweisung eines höheren Wertes für J.
Die Zeilen 185 bis 195 bedürfen einer etwas ausführlichen Erklärung: Normalerweise würde das Auftreten unzulässiger Werte in der Funktion von X zum Abbruch des Programmes führen, so zum Beispiel wenn der Logarithmus von Werten X<0 gebildet werden oder durch X=0 dividiert werden soll. Die Verarbeitung solcher Funktionen erfordert einen Eingriff ins Betriebssystem: Der Zeiger für die Fehlerbehandlungs-Routine (Speicherplätze $0300 und $0301) wird so (mit Zeile 190) verbogen, daß er jetzt auf einen in den Kassettenpuffer gePOKEten (Zeile 185) Sprungbefehl zeigt.
Infolge dieses Eingriffs gibt nun das Betriebssystem bei Auftreten eines Fehlers nicht mehr Alarm, sondern beginnt mit der Abarbeitung der nächsten (!) Zeile. Restliche Statements in der fehlerträchtigen Zeile werden also nicht mehr beachtet.
Mit diesem Trick wird bewirkt, daß der Sprungbefehl am Ende der Zeile 205 normalerweise ausgeführt wird, bei Auftreten eines Fehlers aber die Zeilen 210 bis 215 abgearbeitet werden. Hier wird je nach Art des Fehlers die Null-Fehler-Flag FE gesetzt oder der unzulässige Wert von X in der Variablen XW festgehalten. Diese Werte sind im weiteren Programmablauf behilflich, unzulässige Werte von X zu vermeiden.
Nach Berechnung aller Werte von X und Ausdruck der entsprechenden Punkte der Funktion (X;Y) in Zeile 220 wird mit den POKE-Befehlen der Zeile 225 der Zeiger für die Fehlerausgabe wieder in den Normalzustand gebracht. Die eingegebene Funktion ist damit fertig geplottet. Das Papier wird vorgeschoben, damit das Ergebnis besichtigt werden kann (Zeile 235). Auf dem Bildschirm erscheint zugleich das Menü (Zeilen 665 bis 720). Abhängig von der Eingabe verzweigt das Programm nun entweder
1) zur Eingabe einer Funktion, die in die gleichen Koordinaten geplotten werden soll, oder
2) zur Eingabe der Parameter für ein neues Koordinatenkreuz oder
3) zur Ausgabe der Kurvendiskussion, die jeweils nur von der letzten dargestellten Funktion erstellt werden kann.
Im Rahmen der Routine für die Berechnung der Kurvendiskussion werden die Fehler-Flags XW und FE dazu verwendet, unzulässige Werte auszulassen.
Nun werden zuerst die Null- beziehungsweise Sprungstellen (Zeilen 285 bis 360) und dann die Extrema (Zeilen 365 bis 390) ermittelt. Doch nun viel Spaß beim Arbeiten mit »Kudiplo«.
(Jürgen Curdt/ev)