Appomatox Handbuch
Transcription
Appomatox Handbuch
Handbuch zu Appomatox 3 F. Schnitzer 2 Inhaltsverzeichnis 1 Appomatox 3 7 I 9 Allgemeine Übersicht 2 Was ist Appomatox? 11 3 Von der Frage zum Ergebnis 13 3.1 Beispielfragen mit Lösungen . . . . . . . . . . . . . . . . . . . . . 13 3.2 Wenn Sie ein Fehler im Programm gefunden haben . . . . . . . . 16 4 Eingabekriterien 4.1 Eingabeassistenten . . . . . . . . 4.2 Pi und die Euler’sche Zahl . . . . 4.2.1 Pi (gerundet auf die 1000. 4.2.2 Euler’sche Zahl e . . . . . . . . . . . . . Stelle) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 Anmerkungen und verwendete Abkürzungen 17 19 19 19 19 21 6 Was tun bei Problemen? 23 6.1 Fehlermeldungen (Auszug) . . . . . . . . . . . . . . . . . . . . . . 23 6.2 Problemlösungen . . . . . . . . . . . . . . . . . . . . . . . . . . . 24 7 Programmaufbau 7.1 Arbeitsfläche . 7.2 Diagramm . . . 7.3 Drucken . . . . 7.4 Optionen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27 27 29 30 31 8 Algebra 8.1 ggT / kgV . . . . . . . . . . . . . . . . . 8.2 Komplexe Zahlen . . . . . . . . . . . . . 8.3 Ramanujan . . . . . . . . . . . . . . . . 8.4 Perfekte Zahlen . . . . . . . . . . . . . . 8.5 Primfaktorzerlegung . . . . . . . . . . . 8.6 Primzahlen und pythagoräische Trippel 8.7 Statistik . . . . . . . . . . . . . . . . . . 8.8 Wahrscheinlichkeitsberechnung . . . . . 8.8.1 Binomialkoeffizient . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35 35 35 35 35 35 36 36 36 36 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 . . . . . . . . . . . . . . . . INHALTSVERZEICHNIS 4 8.8.2 Binomialverteilung 8.8.3 Fakultät . . . . . . 8.8.4 Permutationen . . 8.8.5 Varianz . . . . . . 8.8.6 Zufallsgenerator . 8.9 Summen und Potenzen . . 8.10 Zahlensystemumwandlung 8.11 Ausgleichskurve . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36 36 36 36 37 37 37 37 9 Analysis 9.1 Ableitung . . . . . . . . . . . . . . 9.2 Bogenlänge . . . . . . . . . . . . . 9.3 Integrale . . . . . . . . . . . . . . . 9.4 Lösung linearer Gleichungssysteme 9.5 Kurvendiskussion . . . . . . . . . . 9.6 Rotation um x-Achse . . . . . . . . 9.7 Schnitt zweier Kurven . . . . . . . 9.8 Tangenten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39 39 39 39 39 40 40 41 41 10 Geometrie 10.1 analytische Geometrie . . . . . . . . . . . . . . . 10.1.1 Drehung und Vergrößerung zum Ursprung 10.1.2 Dreiecke . . . . . . . . . . . . . . . . . . . 10.1.3 Strecken . . . . . . . . . . . . . . . . . . . 10.1.4 Vierecke . . . . . . . . . . . . . . . . . . . 10.2 Planimetrie . . . . . . . . . . . . . . . . . . . . . 10.2.1 Kreis . . . . . . . . . . . . . . . . . . . . . 10.2.2 Kreisteile . . . . . . . . . . . . . . . . . . 10.2.3 Kreisring . . . . . . . . . . . . . . . . . . 10.2.4 Parallelogramm . . . . . . . . . . . . . . . 10.2.5 regelm. n-Eck . . . . . . . . . . . . . . . . 10.2.6 Trapez . . . . . . . . . . . . . . . . . . . . 10.3 Stereometrie . . . . . . . . . . . . . . . . . . . . . 10.4 Trigonometrie . . . . . . . . . . . . . . . . . . . . 10.4.1 ebene Trigonometrie . . . . . . . . . . . . 10.4.2 sphärische Trigonometrie . . . . . . . . . 10.5 Bézier-Kurven . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43 43 43 43 43 43 43 43 44 44 44 44 44 44 44 44 45 45 . . . . . . 47 47 47 47 47 47 47 11 Matrizen 11.1 Vektoren . . . . . . . . . . . . . . . . . . . . . 11.1.1 Betrag . . . . . . . . . . . . . . . . . . 11.1.2 Kreuzprodukt (Vektorprodukt) . . . . 11.1.3 Normalisieren . . . . . . . . . . . . . . 11.1.4 Punktprodukt (inneres Skalarprodukt) 11.1.5 Skalarprodukt . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . INHALTSVERZEICHNIS 5 12 Zusatz und Sonstiges 12.1 Formeleditor . . . . . . . . . . 12.2 Internet-Update . . . . . . . . . 12.3 Plugins . . . . . . . . . . . . . 12.4 Rechner . . . . . . . . . . . . . 12.5 Umrechnung . . . . . . . . . . . 12.6 Zinseszins . . . . . . . . . . . . 12.7 Diagramm: Element hinzufügen II . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Plugin Entwicklerhandbuch 13 Appomatox Plugin-Entwicklung 13.1 Erste Schritte . . . . . . . . . . 13.1.1 Grundlagen . . . . . . . 13.1.2 Schleifen . . . . . . . . . 13.1.3 Bedingung . . . . . . . . 13.1.4 Mit Text arbeiten . . . 13.2 Plugin-Assistent . . . . . . . . 13.3 Snipplets . . . . . . . . . . . . 13.4 Benennung von Variablen . . . 49 49 50 50 50 51 51 51 55 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57 57 57 59 60 60 63 67 68 14 Plugin-Editor 14.1 Fehlersuche mit dem Plugin-Editor 14.2 Fehlermeldungen . . . . . . . . . . 14.2.1 Laufzeitfehler . . . . . . . . 14.2.2 Compilerfehler . . . . . . . 14.2.3 Hinweise . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69 70 70 70 72 74 15 Basistypen 15.1 Boolean . . . . . . . . . . 15.2 Extended . . . . . . . . . 15.3 Integer, longint und word 15.4 Char . . . . . . . . . . . . 15.5 String . . . . . . . . . . . 15.6 Array . . . . . . . . . . . 15.7 Record . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75 75 75 75 76 76 76 77 16 Allgemeine Funktionen und Prozeduren 16.1 Verarbeitung von Strings . . . . . . . . . 16.2 Verarbeitung von Zahlen . . . . . . . . . . 16.3 Umwandlung zwischen Zahlen und Strings 16.4 Verarbeitung von Arrays . . . . . . . . . . 16.5 Verarbeitug von Zeit . . . . . . . . . . . . 16.6 Sonstige . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79 79 81 82 82 83 85 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 Komponenten 87 17.1 Visuelle Komponenten . . . . . . . . . . . . . . . . . . . . . . . . 87 17.2 Nicht-visuelle Komponenten . . . . . . . . . . . . . . . . . . . . . 93 17.3 Typen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98 INHALTSVERZEICHNIS 6 18 Appomatox-spezifische Funktionen 18.1 Mathematische Funktionen . . . . 18.2 Zugriff auf das Diagramm . . . . . 18.3 Ein-/Ausgabe . . . . . . . . . . . . 18.4 Hilfsfunktionen . . . . . . . . . . . 18.5 Bezeichner . . . . . . . . . . . . . . 19 Styleguide III Referenz Formeleditor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103 103 106 109 109 111 119 121 20 Referenz Formeleditor 123 20.1 Symbole . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124 20.2 Funktionen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 129 20.3 Griechische Buchstaben . . . . . . . . . . . . . . . . . . . . . . . 133 IV Anhänge 135 A Immerwährender Kalender 137 B Abkürzungen der Zahlenfolgen 139 Kapitel 1 Appomatox 3 Allgemeines: c 1998-2003 by F. Schnitzer Copyright für Appomatox: c by C. Huber, D. Schreiber Copyright für Grafiken (u.a.): c 1999 by D. Schreiber Copyright für Musik: Programmidee und Verwirklichung: F. Schnitzer Betatests (bis 2002): D. Schreiber Programmiert unter Zuhilfenahme von: • AdAims DiffExpress • Carlo Kok’s Innerfuse Pascalscript • Dr. J. Debords Mathematical Library • ExprDraw & ExprMake von [email protected] • Murt Software’s GmPrintSuite • Renate Schaafs Express-Parser und TMathImage • SynEdit Alle Rechte vorbehalten. Das Programm wurde mit größter Sorgfalt erstellt, jedoch wird keinerlei Haftung für Schäden übernommen, die Appomatox evtl. 7 8 KAPITEL 1. APPOMATOX 3 verursachen könnte. Desweiteren wird keine Gewähr auf die Richtigkeit der Ergebnisse, die Appomatox liefert, übernommen. Es kann davon ausgegangen werden, dass alle Produktnamen, die in dieser Anleitung vorkommen, markenrechtlich geschützt sind. Um den Umgang mit Appomatox zu erleichtern, sind zu vielen Programmelementen Tooltips (gelber Kasten) verfügbar, wenn Sie mit der Maus für ca. 2 Sekunden darauf stehenbleiben. Teil I Allgemeine Übersicht 9 Kapitel 2 Was ist Appomatox? Appomatox ist ein Mathematikprogramm, das nahezu alle Rechenarten beherrscht, die bis zur gymnasialen Oberstufe der Klasse 12 verlangt werden. Angefangen bei der einfachen Körperberechnung nach Eingabe der Kantenlänge bis zur Kurvendiskussion, Stochastik (Wahrscheinlichkeitsrechnung) und Integralberechnung werden alle Ergebnisse in Sekundenschnelle berechnet. Bei der Entwicklung wurde vor allem der einfachen Bedienbarkeit große Beachtung geschenkt, so dass nach der Suche der gewünschten Funktion in einem übersichtlichen Menü nur noch die Grundwerte eingegeben werden und auf Berechnen gedrückt werden muss. Eine langwierige und oft auch motivationsraubende Einarbeitungszeit wie bei vielen anderen professionellen Mathematikprogrammen entfällt somit. 11 12 KAPITEL 2. WAS IST APPOMATOX? Kapitel 3 Von der Frage zum Ergebnis 1. Suchen Sie die gewünschte Funktion im Menü. 2. Geben Sie in die leeren Kästchen die jeweils gegebenen Werte ein. Alle roten Kästchen müssen ausgefüllt sein. Die grünen Kästchen müssen nicht zwingend ausgefüllt sein, um ein Ergebnis zu erhalten. 3. Drücken Sie auf den Berechnen-Knopf (bzw. wahlweise die Enter-Taste). 4. Ergebnisse werden im Ergebnisfenster angezeigt. 5. Geben Sie weitere Werte ein oder schließen Sie das Fenster mit Schließen (oder wahlweise mit der ESC-Taste). 3.1 Beispielfragen mit Lösungen (Wenn nicht anders angegeben, wird in diesen Beispielen von kartesischen Koordinaten und von Winkeln in Grad ausgegangen.) Befindet sich das Dreieck ABC über der Funktion axn ? 1. Rufen Sie die Funktion Dreiecke unter Geometrie/analyt. Geometrie auf. 2. Geben Sie dort die Koordinaten des Dreiecks ein. 3. Drücken Sie auf Berechnen und anschließend auf Schaubild. 4. Schließen Sie das Dreieck-Menü, nicht aber das Diagramm-Fenster; die Zeichnung des Dreiecks bleibt somit erhalten. 5. Rufen Sie unter Algebra/Analysis die Ableitungsfunktion auf. 6. Geben Sie hier die Funktion ein. 7. Drücken Sie wiederum auf Berechnen und anschließend auf Schaubild. 8. Im Diagramm-Fenster können Sie nun (nach eventuellen Hineinzoomen) die Antwort auf die Frage ablesen. 13 14 KAPITEL 3. VON DER FRAGE ZUM ERGEBNIS Wie weit ist Berlin (52◦ n.B., 13◦ ö.L.) von Tokio (36◦ n.B., 140◦ ö.L.) entfernt? 1. Rufen Sie die Funktion sphärische Trigonometrie auf. 2. Geben Sie als Punkt A die Koordinaten von Berlin ein, als Punkt B entsprechend Tokio (falls die Punkte westliche Breite bzw. westliche Länge sind, müssen Sie als Vorzeichen ein Minus setzen). 3. Geben Sie den Erdradius ein (3670). 4. Betätigen Sie den Berechnen-Knopf. (Achtung: Es muss die Berechnung in DEG (Gradmaß) eingestellt sein!) Wie rechnet man Polarkoordinaten in kartesische Koordinaten um? 1. Setzen Sie unter Optionen die Polarkoordinateneingabe als Standard. 2. Rufen Sie die Funktion Strecke auf. 3. Geben Sie als Punkt A die gesuchten Koordinaten ein. 4. Als Punkt B geben Sie jeweils 0 (oder weitere gesuchte Koordinaten) ein. 5. Drücken Sie auf Berechnen. 6. Lesen Sie im Ergebnisfenster unter PPunkt A“ die (kartesischen) Koordinaten ab. In welchem Punkt schneiden sich die Geraden f1 (x) = 2x+5 und f2 (x) = 9x − 3? 1. Rufen Sie die Funktion Analysis/Schnitt zweier Kurven auf. 2. Geben Sie die Gerade f1 unter f(x) ein. 3. Geben Sie die Gerade f2 unter g(x) ein. 4. Klicken Sie auf Berechnen. 5. Im Ergebnisfenster können Sie nun ablesen, dass die beiden Geraden den Punkt (Schnittpunkt) S(1, 143|7, 286) gemeinsam haben. Ein idealer Würfel wird fünfmal geworfen. Wie groß ist die Wahrscheinlichkeit für genau 2 Sechsen? 1. Gegeben ist n=5 (Würfe), k=2 (2 Sechsen), p=1/6 (0,16666) (Wahrscheinlichkeit für eine Sechs). 2. Geben Sie diese Werte in der Funktion Binomialverteilung ein. 3. Drücken Sie Berechnen. 3.1. BEISPIELFRAGEN MIT LÖSUNGEN 15 Wie druckt man alle Primzahlen im Bereich von 1 bis 1000 aus? 1. Rufen Sie das Fenster Primzahlen auf (Algebra/Primzahlen und pyt. Trippel ). 2. Geben Sie in im Bereich von 1 ein und in bis 1000. 3. Betätigen Sie den Knopf Primzahlen. 4. Schließen Sie das Fenster. 5. Wechseln Sie zu den Ergebnissen. 6. Klicken Sie hier auf Drucken. Wie kann ich verschiedene Geldbeträge in Fremdwährungen umgerechnet als Tabelle ausdrucken? 1. Rufen Sie die Funktion Zusatz /Umrechnung auf. 2. Gehen Sie auf Währungen. 3. Geben Sie z.B. 10“ in das Eingabefeld ein (ohne Anführungsstriche). ” 4. Wählen Sie in der linken Liste D-Mark aus und in der rechten Liste Euro und Lire. 5. Drücken Sie auf Berechnen. 6. Geben Sie in das Eingabefeld 20“ ein, drücken Sie auf Berechnen. ” 7. Geben Sie in das Eingabefeld 50“ ein, drücken Sie auf Berechnen. ” 8. Wiederholen Sie die Schritte 6.) und 7.) so oft wie gewünscht und geben Sie jedesmal andere Werte ein. 9. Wechseln Sie zum Ergebnisfenster. 10. Drücken Sie auf Drucken. 11. Sie erhalten auf dem Ausdruck eine Liste mit der Anfangswährung (in diesem Fall D-Mark) sowie jeweils die Umrechnung in Euro und Lire. Wie kann ich die relative und absolute Wahrscheinlichkeit für Elemente aus einer Liste berechnen? 1. Rufen Sie Algebra/Statistik auf. 2. Geben Sie unter Eingabe Ihre Liste ein. 3. Drücken Sie auf Berechnen. 4. Die relative und absolute Häufigkeit entspricht in diesem Fall der relativen und absoluten Wahrscheinlichkeit. KAPITEL 3. VON DER FRAGE ZUM ERGEBNIS 16 Am unteren Fensterrand wird immer ein grünes Rechteck mit einem OK-Knopf (Assistent) angezeigt. Wie kann ich das abstellen? 1. Klicken Sie auf Optionen. 2. Klicken Sie auf Allgemein. 3. Entfernen Sie das Kreuz vor Assistent anzeigen, indem Sie darauf klicken. 4. Beim nächsten Mal, wenn Sie Appomatox starten, wird der Assistent nicht mehr angezeigt. 3.2 Wenn Sie ein Fehler im Programm gefunden haben Appomatox besteht aus über 110.000 Zeilen Quelltext. In jeder einzelnen Zeile könnte ein Fehler stecken. Für einen Menschen (Appomatox ist z.Zt. ein EinMann-Projekt) ist es einfach unmöglich, jeden denkbaren Fehler zu entdecken und zu beheben. Bitte scheuen Sie sich deshalb nicht, und melden Sie einen Fehler, wenn Sie einen entdeckt haben (sollten). Schreiben Sie entweder direkt eine E-Mail an mich ([email protected]) oder verwenden Sie den Eingabedialog unter Hilfe/Fehler melden....Bitte beschreiben Sie den Fehler so genau wie möglich und geben Sie die nötigen Schritte an, um den Fehler zu wiederholen. Haben Sie bitte auch Verständnis, wenn der Fehler nicht gleich am nächsten Tag behoben ist. Sobald ich aber Zeit habe, werde ich den Fehlern zu Leibe rücken. Keine E-Mail und keine Meldung geht verloren. Das Dialogfeld Fehler melden verschickt außerdem Informationen zur Hardund Software (Appomatox- und Windows-Version, RAM, CPU-Takt und die Fenster, welche Sie in Appomatox zuletzt geöffnet hatten) Ihres Computers. Nach dem Klick auf Abschicken öffnet sich Ihr E-Mail-Programm. Sie können dann genauestens kontrollieren, WAS verschickt wird und bei Bedarf Informationen löschen. Kapitel 4 Eingabekriterien • Es müssen Zahlen im Positionssystem q=10 (übliches 10er-System) eingegeben werden. • Die wissenschaftliche Zahlenschreibweise (z.B. 3,4*10^5 , d.h. 3,4 mal 10 hoch 5) ist erlaubt. • Wenn in Felder, die nur ganze Zahlen zulassen, eine Kommazahl eingegeben wird, so wird diese korrekt auf eine ganze Zahl gerundet. Vektoren und Matrizen können Sie mittels Eingabeassistenten (siehe Kapitel 4.1 auf Seite 19) eingeben. Alternativ können Sie Vektoren in folgender Schreibweise eingeben: Trennen Sie die Zeilen des Vektors mit einem Strichpunkt und klammern Sie diesen Term ein. Beispiele: 2, 3 • geben Sie folgendermaßen ein: (2,3;4,5) 4, 5 2, 3 • 4, 5 geben Sie folgendermaßen ein: (2,3;4,5;7,8) 7, 8 Es ist noch möglich, Rechenoperationen und Funktionen einzugeben, z.B.: • 3+5“ entspricht dann einer Eingabe von 7“ ” ” • sin(3)“ entspricht dann einer Eingabe von dem Wert Sinus von 3“. ” ” Außerdem können Sie Konstanten benutzen, welche im Optionen-Menü angegeben wurden. Die Kreiszahl Pi ist bereits standardmäßig vordefiniert, um die Euler’sche Zahl e zu erreichen, benutzen Sie bitte die Funktion exp(x). Eine Wurzel erreichen Sie neben sqrt(x) auch, indem Sie x^(0,5) eingeben, wobei x der zu radierende Wert ist. Um negative Zahlen darzustellen, müssen Sie Klammern setzen, z.B.: 2^(-2) statt 2^-2. Folgende Zeichen sind erlaubt: 17 KAPITEL 4. EINGABEKRITERIEN 18 0-9 , + * / mod (Zahlen) Komma, bzw. das in der Systemsteuerung eingestellte Dezimaltrennzeichen Addition Subtraktion Multiplikation Division Modulo (bzw. Rest bei Division, z.B. 7mod3=1 (7/3=2 Rest 1) ˆ (...) Potenz (hoch) Klammern exp(...) ln(..), log(...), ld(...) Exponential (e hoch) natürlicher Logarithmus, 10er Logarithmus, 2er Logarithmus Wurzel trigonomtrische Funkionen sqrt(...) sin(...), cos(...), tan(...), asin(...), acos(...), atan(...) sinh(...), cosh(...), tanh(...), arsinh(...), arcosh(...), artanh(...) abs(...) trunc(...) ceil(...), floor(...) sgn(...) rnd(...) x Pi trigonometrische Funktionen (Hyperbel) Absolutwert Nachkommastelen abschneiden Vorgänger, Nachfolger der Zahl Signum (für x kleiner 0: -1; für x=0: 0; für x größer 0: 1) Liefert eine Zufallszahl im Bereich zwischen 0 und der Zahl in Klammer Variable bei den Kurvendiskussionen 3,1415... Statt den drei Punkten ( ...“) schreiben Sie den gewünschten Term. ” Es gibt außerdem noch die Möglichkeit, Funktionen einzugeben, die jedoch nicht in Zusammenhang mit Variablen (z.B. x ) verwendet werden dürfen: ggT(...;...) kgV(...;...) größter gemeinsamer Teiler kleinstes gemeinsames Vielfaches Tastaturbelegung: Im Programm sind bestimmte Funktionen mit einem Tastendruck erreichbar: F1 ESC Enter Hilfe aufrufen Schließt das Fenster Berechnen 4.1. EINGABEASSISTENTEN 4.1 19 Eingabeassistenten Appomatox stellt Ihnen diverse Assistenten zur Verfügung, um die Eingabe zu vereinfachen. Klicken Sie jeweils auf das Assistentensymbol neben dem Eingabefeld, um ihn aufzurufen. Pipette. Wenn in einem Eingabefeld Koordinaten verlangt werden, können Sie mit diesem Assistent eine Koordinate aus dem Diagramm greifen. Klicken Sie dazu zuerst auf das Assistent-Symbol und dann in das Diagramm. Rechner. Dieser Assistent wandelt die Darstellungsformen Komplexer Zahlen untereinander um. Stift. Dieser Assistent erlaubt es Ihnen, Vektoren oder Matrizen auf einfache Weise einzugeben. Die Schaltfläche Schreiben schreibt die eingegebene Matrix/Vektor direkt in die Ergebnisausgabe. 4.2 4.2.1 Pi und die Euler’sche Zahl Pi (gerundet auf die 1000. Stelle) 3,14159265358979323846264338327950288419716939937510582097494459 2307816406286208998628034825342117067982148086513282306647093844 6095505822317253594081284811174502841027019385211055596446229489 5493038196442881097566593344612847564823378678316527120190914564 8566923459099207118856806516745194252854340959627985918823367099 2537085222180992260610203512298858741629348689969254359759624501 6832393533553518958527824247580680078502481394402283881106920871 6087268200209345720189686369316583758098221627804455422443873631 0551529920496341582556052053120211498236094105939115928417045405 9954772885655742682626925733132503846231220916371031894801194242 0558886250096137216524583613964673822832849535333975958329022677 9418162968167737618541879490468096290608719531536768829488813130 7168096117428255223625251333953006402282478948639832100317465189 1694369279502585139805382507188845356223535043232204643938233054 6243856214810852383769717133197158721033723844806221439090739290 39958541935685951950182332059035953869389 4.2.2 Euler’sche Zahl e 2,718 281 828 459 045 235 360 287 ... Appomatox benützt genügend genau gerundete Werte. 20 KAPITEL 4. EINGABEKRITERIEN Kapitel 5 Anmerkungen und verwendete Abkürzungen • Mit der Tab“-Taste kann schnell durch die Eingabefelder gesprungen wer” den. • Nicht oder falsch ausgefüllte Eingabefelder erscheinen rot (oder eine andere Farbe, je nach Einstellung unter Optionen). • Eingabefelder, die nicht zwangsweise ausgefüllt werden müssen, erscheinen violett (oder eine andere eingestellte Farbe). • Es wird kein Unterschied zwischen den Begriffen Schaubild“ und Dia” ” gramm“ angenommen. Verwendete Abkürzungen: • FE: Flächeneinheit/en • RE: Raumeinheit/en • un.: unendlich • x^y : x hoch y 21 22 KAPITEL 5. ANMERKUNGEN UND VERWENDETE ABKÜRZUNGEN Kapitel 6 Was tun bei Problemen? 6.1 Fehlermeldungen (Auszug) Bei schwerwiegenden Fehlern fragt Appomatox nach, ob es einen Fehlerbericht senden soll. Wenn Sie dies bejahen, wird ihr E-Mail-Programm geöffnet. Je nachdem wie Sie dieses eingestellt haben, müssen Sie das Senden nochmals bestätigen. Appomatox sendet keine Informationen über den Inhalt Ihrer Festplatte. Im Problembericht befinden sich lediglich der Text der Fehlermeldung, die Version Ihres Windows’, die Version von Appomatox, die Größe ihres RAMs, sowie die geöffneten Fenster. Wir beabsichtigen nicht persönliche Daten zu ermitteln. Es kann aber vorkommen, dass der Fehlerbericht personenspezifische Informationen enthält, wie z.B. die Absender-E-Mail-Adresse. Diese Informationen könnte zum Feststellen Ihrer Identität verwendet werden. Die ermittelten Daten werden ausschließlich zur Problembehebung verwendet, sie werden anonymisiert in einer Datenbank gespeichert. Der von Ihnen eingegegebe Wert liegt über dem Maximum. Verwenden Sie kleinere Zahlen Die letzte Eingabe war keine Funktion (Kurve)! Sie haben versucht, eine Wertetabelle zu erstellen. Jedoch war das letzte eingegebene Element keine Kurve. Rufen Sie zuerst Kurvendiskussion auf und geben nochmals ihre gewünschte Funktion ein. Drücken Sie auf Schaubild und wiederholen Sie die Wertetabellenerstellung. Eingabefehler an Stelle x. Bei der Eingabe haben Sie ein nicht erlaubtes Zeichen an der x-ten Position von links benutzt. Korrigieren Sie Ihre Eingabe. 23 KAPITEL 6. WAS TUN BEI PROBLEMEN? 24 Fakultät ist nicht definiert. Meldet die Fakultätsfunktion, wenn kein Ergebnis zustande kommen kann. Verwenden Sie andere Zahlen! Fehler in der DLL-Datei; The dynamic link-library could not be found. Dieser Fehler kann mehrere Ursachen haben: 1. Die DLL-Datei fehlt. Stellen Sie sicher, dass sie sich im selben Verzeichnis wie die Programmdatei befindet. 2. Appomatox ist abgestürzt und Sie haben es zum zweiten Mal aufgerufen. Starten Sie Ihren Computer neu und versuchen Sie es erneut (nur in den Windows-Versionen 95-ME). 3. Sie haben unter Windows 2000 nicht alle Service-Packs installiert. Instanzen“ zu hoch! Setze auf 15. ” Sie haben unter Trigonometrie/Instanzen einen Wert über 15 eingegeben. Dies ist auf jeden Fall zu hoch. Um den Rechenaufwand im Rahmen zu halten, wurde der Wert auf 15 zurückgesetzt. Sollte widererwarten der Wert 15 zu klein sein, so betätigen Sie Berechnen mehrmals. n=0: Nicht definiert. Meldet Binomialkoeffizientsfunktion, wenn Sie n=0 angegeben haben. Verwenden Sie für n Werte größer als 0! Zu große Zahlen. Meldet die Potenzfunktion, wenn zu große Zwischen- oder Endergebnisse auftreten. Verwenden Sie kleinere Ausgangswerte! Zu kleine Zahl. Meldet Primfaktorzerlegung, wenn x kleiner als 3. Verwenden Sie eine größere Zahl! 6.2 Problemlösungen Folgend nun einige bekannte Probleme und deren einfachste Lösung(en): Unter ebene Trigonometrie werden nicht alle Werte berechnet. Sobald aber Berechnen ein weiteres Mal gedrückt wird, wird alles berechnet. Erhöhen Sie den Wert Instanzen geringfügig (auf 6-10 Zähler). Diese Lösung gilt auch bei anderen Funktionen der Geometrie! 6.2. PROBLEMLÖSUNGEN 25 Warum ergibt 2+3=6? Überprüfen Sie die unter Optionen angegebenen Konstanten. Durch Definitionen wie 2=3“ sind solche Ergebnisse leicht nachvollziehbar (auch wenn dies ” natürlich nicht der Zweck von Konstanten ist). Die Rechenzeit der letzten aufgerufenen Funktion wird immer mit n/a“ angegeben. ” Dies bedeutet, dass Ihr Computer kein Hochpräzisionszeitgeber besitzt. Es erscheint nach dem Programmstart kein Menü, bzw. man sieht keinen Text. Es fehlt vermutlich die entsprechende ASD-Datei (Appomatox Sprach-Datei). Stellen Sie sicher, dass sie sich im Appomatox-Verzeichnis befindet und in der Registrierungsdatei (HKCU\Software\Appomatox\) der korrekte Pfad hinter Language= eingetragen ist, bzw. löschen Sie einfach diesen Eintrag; Appomatox sucht bei einem Neustart dann nach dieser Datei. Alternativ könnte es auch daran liegen, dass die ASD-Datei bereits von einem anderen Programm geöffnet ist. Schließen Sie in diesem Fall das betreffende Programm. Bei Funktionen der analytischen Geometrie werden unerwartete Ergebnisse ausgegeben. Prüfen Sie die Reihenfolge der eingegebenen Punkte. Bei Winkelberechnungen erscheint eine Fehlermeldung oder absurde Ergebnisse werden ausgegeben. Prüfen Sie, ob das richtige Winkelmaß (DEG oder RAD) eingestellt ist. Für die meisten Winkelberechnungen wird das Gradmaß (DEG) benötigt. Im Diagramm werden bei gewissen Kurven an der linken und rechten Seite senkrechte Striche angezeigt. Leider ist zu diesem (seltenen) Problem noch keine Lösung bekannt. Das Öffnen eines Fensters dauert nach einigen Wochen ungewöhnlich lange. Löschen Sie die Shortcuts in den Addin-Leiste durch einen Klick auf Alle löschen. Das Diagramm ist auf dem Ausdruck sehr grobkörnig und gepixelt“. ” Unter Optionen können Sie die Auflösung für den Druck und das Speichern bestimmen. Wählen Sie unter Diagramm speichern und drucken das Feld fein. Das Diagramm wird beim nächsten Ausdruck präziser sein. 26 KAPITEL 6. WAS TUN BEI PROBLEMEN? Es werden nicht alle Schnittpunkte oder Nullstellen angezeigt. Vergewissern Sie sich, dass die Überprüfung auch in dem Intervall stattfindet, in dem sie die Schnittstellen vermuten. Sie können die Intervallgrenzen unter Optionen einstellen. Standardmäßig prüft Appomatox nur von x=-10 bis x=+10. Warum ergibt sin(0,5) in Bogenmaß nicht genau 0? Computer haben immer das Problem, dass sie ein Ergebnis nur endlich genau berechnen können. Ergebnisse, die Appomatox liefert, sind aber mindestens bis zur 8. Nachkommastelle gültig. Kapitel 7 Programmaufbau 7.1 Arbeitsfläche Die Funktionen des Programmes können Sie von der Menüleiste aus aufrufen. Addin-Leiste Hier erhalten Sie eine Übersicht über alle installierten Plugins sowie die zuletzt gebrauchten Funktionen. Bei den zuletzt gebrauchten Funktionen werden Funktionen, die Sie häufiger aufrufen, weiter oben in der Liste angezeigt. Diagrammfenster siehe Kapitel 7.2 auf Seite 29 27 28 KAPITEL 7. PROGRAMMAUFBAU Ergebnisse Hier werden die Ergebnisse der einzelnen Berechnungen ausgegeben. Mit einem Klick auf die entsprechenden Buttons können Sie die Ergebnisse speichern, aus einer bereits gespeicherten Datei laden oder sie ausdrucken. Manche Ergebnisse sind Aktive Ergebnisse“, d.h. sobald Sie mit der Maus darüberfahren, verwan” delt sich die Maus in eine Hand und Sie können mit der rechten Maustaste weitere Optionen zu diesem Ergebnis auswählen. Falls beispielsweise eine Funktion f(x) in der Ergebnisausgabe steht, können Sie diese ins Diagramm eintragen lassen. Bei komplexen Zahlen steht eine Umwandlung in eine andere Form zur Wahl. Aktive Ergebnisse, welche Optionen für das Diagramm zulassen, sind all die Ergebnisse, welche mit f(x), f’(x), f”(x), f”’(x), fn(x) und g(x) beginnen. Weiterhin gibt es Optionen für Komplexe Zahlen. Diese Ergebnisse beginnen mit z1 oder z2 und beinhalten ein +i*“. ” Um Ergebnisse in anderen Programmen weiter zu verarbeiten (bsp. für eine wissenschaftliche Ausarbeitung), können Sie in der grafischen Ausgabe die Ergebnisse mittels Drag’n’Drop (Klicken und Ziehen) in andere Programme ziehen. (Sofern die anderen Programme Drag’n’Drop unterstützen.) Mausleiste Hier können Sie mit einem Klick Appomatox beenden, das Optionen-Menü, den Taschenrechner und Formeleditor aufrufen, oder Hilfe erhalten. Falls Sie einen kleinen Bildschirm benutzen, oder die Mausleiste ihnen aus anderen Gründen den Platz wegnimmt“, können Sie unter Optionen die Mausleiste auch deakti” vieren. Statusleiste Am unteren Bildrand des Hauptbildschirms befindet sich eine Statusleiste. Sie gibt die wichtige Einstellungen wieder. Von links nach rechts: Die Farbe der ersten drei Kästchen sind jeweils die Farben für ein ausgefülltes, ein leeres und nicht zwingend auszufüllendes Eingabefeld. Folgend: DEG/RAD, also die Winkeleinheit, die Appomatox benutzt. Folgend: Die benötigte Rechenzeit für die letzte Funktion. Diese Zeit ist z.B. für Vergleichtests relevant. Daneben finden Sie den Pfad zur Appomatox-Sprachdatei und ganz rechts finden Sie Informationen zum Status Ihren Computers, darunter auch den (realen) Prozessortakt, sowie die Windows- und Appomatox-Version. 7.2. DIAGRAMM 7.2 29 Diagramm Bei Funktionen der Analytischen Geometrie und der Analysis ist es möglich, sich das Schaubild der berechneten Figur oder Kurve anzeigen zu lassen. Betätigen Sie dazu die Schaltfläche Schaubild ; es ist verfügbar, sobald ein Ergebnis berechnet wurde. Appomatox öffnet daraufhin das Diagramm-Fenster. Bitte beachten Sie bei der Analysis, dass das Zeichnen sehr komplexer Funktionen (über 30 Ziffern und Stellen) lange dauern kann und/oder die Anzeige ruckelt. Sie können das Schaubild auch speichern. Es gibt zwei Arten der Speicherung: 1. Als Beschreibungsdatei (ADD Appomatox Diagramm-Datei), die nach dem Laden wieder als gewöhnliches Diagramm bearbeitet werden kann. 2. als Bitmap-Datei. Bitmap-Dateien können in Appomatox nicht wieder geladen werden, dafür aber von alles gängigen Bildbearbeitungs- und Textverarbeitungsprogrammen importiert werden. Die Koordinate, an der sich die Maus im Schaubild befindet, wird angezeigt. Sie können das Diagramm entweder vergrößern, indem Sie unter zeichen von und zeichnen bis ein entsprechend kleineres Intervall wählen oder Sie können erst auf die Lupe klicken und dann mit der linken Maustaste auf die Stellen, die vergrößert werden soll. Die Lupe vergrößert 4fach. Ein Klick mit der rechten Maustaste verkleinert den Ausschnitt. Wertetabelle und Scharen Für Kurven können Sie sich auch eine Wertetabelle ausgeben lassen. Wählen Sie in der entsprechenden Box die Kurve aus und geben Sie dann den Startpunkt und den Endpunkt ein oder wählen Sie die Punkte ganz einfach mit der Pipette. Nach einem Klick auf Berechnen wird die Wertetabelle im Ergebnisse-Fenster ausgegeben. Falls es sich bei der ausgewählten Funktion um eine Kurvenschar mit Parameter t handelt, können Sie unter Kurvenscharen einen entsprechenden Wert für t eintragen und auf Übernehmen klicken. Inhalt Hier können fortgeschrittene PC-Anwender alle Diagrammelemente ansehen und deren Eigenschaften ändern. Das Element, das Sie hier aktivieren, wird KAPITEL 7. PROGRAMMAUFBAU 30 auch in der Werteliste als aktiv gesetzt. Anmerkung: Als Art werden folgende Werte akzeptiert: 1 : Funktion 2 : Punkte, deren Anzahl unter Menge festgelegt wird 4 : Eine Bezier-Kurve, deren Anzahl an Stützpunkten ebenfalls unter Menge festgelegt wird Unter www.appomatox.de.nr finden Sie im Developer-Bereich ein Dokument mit der genauen Definition der Elemente. Achtung: • Die Diagramme werden physikalisch gezeichnet, d.h. Definitionslücken werden übersprungen bzw. überzeichnet. • Asymptotisch verlaufende Kurven werden im Grenzbereich zur Definitionslücke nur mit begrenzter Genauigkeit gezeichnet. Funktionen: Klicken Sie erst auf diese Schaltfläche. Sie können dann, sobald Sie auf das Diagramm klicken, den Ausschnitt vergrößern. Klicken Sie erst auf diese Schaltfläche. Sie können dann, sobald Sie in das Diagramm klicken und die Maus ziehen, das Diagramm verschieben. Klicken Sie auf diese Schaltfläche, um das Diagramm bildschirmfüllend (Vollbildmodus) anzuzeigen. Durch einen weiteren Klick auf diese Schaltfläche, oder durch Drücken der Tasten ESC oder Alt können Sie den Vollbildmodus wieder verlassen. Damit z.B. bei einer Präsentation auch die Leute ganz hinten“ ” etwas sehen, können Sie unter Optionen die Strichdicke mit Pinselstärke beim Diagramm verändern. 7.3 Drucken Sie können die Ergebnisliste und das Diagramm ausdrucken. Klicken Sie dazu einfach auf Drucken Er erscheint eine Druckvoransicht, wie Sie sie aus fast jeder anderen Windows-Anwendung kennen. Klicken Sie in der Druckvoransicht wiederrum auf Drucken, wird das Dokument direkt zum Drucker geschickt. Wenn Sie auf Seite einrichten klicken, finden Sie die Option Multipage. Sie können auswählen, ob mehrere Druckseiten auf eine Seite Papier gedruckt werden soll. Bei einer sehr langen Ergebnisliste kann diese Option helfen, sehr viel Papier zu sparen und die Umwelt zu schonen. Die Optionen Multipage wirkt sich erst im eigentlichen Druck aus, die Vorschau ändert sich nicht. Kopf- und Fußzeilen Das Fenster Kopf- und Fußzeilen stellt ein Feld zur Eingabe von Kopfzeilentext, der oben auf der Seite angezeigt wird, oder von Fußzeilentext, der unten auf der Seite angezeigt wird, bereit. Um bestimmte Informationen als Teil der Kopfoder Fußzeile zu drucken, schließen Sie die folgenden Zeichen als Teil des Textes mit ein. Geben Sie ein: - um dies zu drucken: {DATE} - gegenwärtiges Datum {TIME} - Zeitpunkt des Ausdruckes 7.4. OPTIONEN 31 {PAGE} - Seitenzahl {NUMPAGES} - Gesamtseitenzahl 7.4 Optionen In diesem Menü können Sie Eigenschaften von Appomatox bestimmen. Allgemein Ergebnisse auf ... Stellen runden Alle Ergebnisse werden auf die angegebene Anzahl von Stellen gerundet. Dies gilt nur, wenn Ergebnisse in Bruchdarstellung deaktiviert wurde. Grafiken im WMF-Format kopieren Legt fest, ob (grafische) Formeln, die Sie in die Zwischenablage kopieren, im WMF- oder BMP-Format abgelegt werden sollen. Pfad für Plugins Geben Sie hier das Verzeichnis an, in denen Appomatox nach Plugin-Dateien suchen soll. Ist kein Pfad eingetragen, so wird immer im aktuellen Verzeichnis gesucht. Sprache / Language Hier können Sie einstellen, in welcher Sprache Meldungen und Fragen ausgeben werden sollen. Damit eine Sprache ausgewählt werden kann, muss die entsprechende ASD-Datei (Appomatox-Sprach-Datei) vorhanden sein. 32 KAPITEL 7. PROGRAMMAUFBAU Polarkoordinaten Klicken Sie das entsprechende Kästchen an und Appomatox interpretiert die eingegebenen Koordinaten in der analytischen Geometrie als Polarkoordinaten. Der x-Wert entspricht dann der Länge, der y-Wert dem Winkel in Grad. Geben Sie nach dem Gradwert kein ◦“ ein! Kartesische Koordinaten können Sie ” allerdings nach Aktivierung de Polarkoordinateninterpretation nicht mehr verwenden. DEG Wenn dieses Kästchen aktiviert ist, berechnet Appomatox Winkelfunktionen wie den Sinus, Cosinus, Tangens, sowie den Arcus in Grad, bei deaktiviertem Kästchen in Bogenmaß (RAD) Diagramm automatisch mitdrucken Wenn Sie in Funktionsfenstern, in denen es eine Schaubild-Funktion gibt, den Schalter Drucken betätigen, wird das Schaubild automatisch mitgedruckt, falls diese Option aktiviert wurde. Ergebnisse in Bruchdarstellung Wenn aktiviert, werden Ergebnisse als Bruchzahlen, kombiniert mit Wurzelausdrücken und Pi ausgegeben. Z.B. 2/3*Pi statt 2,094395. lange Zahlen zulassen Appomatox kann normalerweise maximal 9-stellige Zahlen berechnen. Bei der Primzahlberechnung sind aber oft höherstellige Zahlen zu berechnen. Wenn Sie dies vorhaben, aktivieren Sie dieses Kästchen. Die Berechnung der Primzahlen dauert dann aber länger, die Anzahl der Stellen ist aber unbegrenzt. Dies gilt nur für Primzahlen, Primfaktorzerlegung, sowie pyt. Trippel. Assistent anzeigen Wenn aktiviert, wird an einigen Stellen ein Assistent eingeblendet, der Ihnen weitere Tipps zu den Funktionen zeigt. So z.B. bei allen Funktionen der Matrizen- und Vektorrechnung. aktive Ergebnisse verwenden Aktiviert die Funktion, sich zu bestimmten Ergebnistypen wie z.B. f(x) weitere Optionen anzeigen zu lassen. Dies ist sehr rechenintensiv und es kann auf langsamen Computern zu Verzögerungen führen. Analysis Konstanten Hier können sie Konstanten, wie z.B. die Euler’sche Zahl E definieren. Sie können diese Konstanten dann in fast allen Eingabefeldern benutzen. Um ei- 7.4. OPTIONEN 33 ne Konstante hinzuzufügen, drücken Sie die Einfg-Taste. Bitte achten Sie darauf, dass alle Konstanten in Großbuchstaben eingetragen sind. Sie brauchen die Konstante für die Kreiszahl Pi nicht definieren, da diese bereits verdefiniert ist. Die Euler’sche Zahl erhalten Sie durch die Funktion exp(). Verwenden Sie als konstanten Wert keinesfalls ein reserviertes Wort wie bsw. sin“ oder exp“. ” ” Konstanten werden gegenüber Allem als vorrangig behandelt und würden diese Funktionen löschen. Präzision Geben Sie hier ein, auf wie viele Stellen hinter dem Komma genau die Ergebnisse der analytischen Geometrie berechnet werden sollen. 1000 entspricht einer maximalen Genauigkeit von 1/1000, bzw. 0,001. Bedenken Sie jedoch, dass eine größere Genauigkeit eine erheblich längere Berechnungszeit benötigt. Nullstellen bestimmen im Bereich Stellen Sie hier ein, in welchem Bereich die Nullstellen bestimmt werden sollen. Wenn Sie z.B. 100 eingeben, wird im Intervall [-100..100] nach Nullstellen gesucht. Umrechnung Diagramm speichern und drucken Das Diagramm kann in unterschiedlichen Qualitätsstufen gespeichert und gedruckt werden. Wählen Sie Wie auf Bildschirm, damit das Diagramm in der selben Auflösung wie auf dem Bildschirm gespeichert und gedruckt wird. Fein ist die höchste Qualitätsstufe. Umrechnung Hier können Sie die Kurse der Währungen eintragen. Klicken Sie dazu zuerst die Währung an, deren Kurs Sie eingeben wollen, dann geben Sie den Kurs in D-Mark in das Eingabefeld ein und klicken schließlich auf ändern. Wollen Sie nur den gespeicherten Kurs ansehen, um ihn zu überprüfen, so klicken Sie nur auf die gewünschte Währung. Der Kurs wird dann im Eingabefeld angezeigt. Farben für ausgefüllte, unausgefüllte und nicht zwingend auszufüllende Eingabefelder Um die Farben der Eingabefelder zu ändern, klicken Sie auf einen der Buttons. Es erscheint ein Farbauswahl-Fenster. Hier können Sie die gewünschte Farbe wählen. Bestätigen Sie schließlich mit OK. Darstellung Farben für Diagramm Hier können Sie bestimmen, welche Farben das Koordinatenkreuz und das Nullkreuz des Diagramms bekommen sollen. 34 KAPITEL 7. PROGRAMMAUFBAU Kurzhinweise anzeigen, wo möglich Hier können Sie die Kurzhinweise abschalten, die gewöhnlich erscheinen, wenn Sie längere Zeit mit der Maus auf einem Feld stehen bleiben. Diese Funktion ist vor allem dann nützlich, wenn Sie eine andere Sprache als Deutsch eingestellt haben. Kurzhinweise werden nicht übersetzt! Mausleiste anzeigen Blendet die Mausleiste ein oder aus, so dass ggf. für andere Fenster mehr Platz zur Verfügung steht. Pinselstärke beim Diagramm Legt fest, wie breit Linien im Diagramm gezeichnet werden sollen. Für eine Präsentation im Vollbildmodus ist diese Option sehr nützlich. Schriftart für Ergebnisausgabe Legt fest, in welcher Schriftart die Ergebnisse ausgegeben werden sollen. Kapitel 8 Algebra 8.1 ggT / kgV Berechnung des größten gemeinsamen Teilers und des kleinsten gemeinsamen Vielfachen zweier Zahlen n und k. n;k seien ganze Zahlen 8.2 Komplexe Zahlen Führt Berechnungen mit Komplexen Zahlen durch. Die imaginäre Zahl ist dabei i. (i^2=-1) Geben Sie den Realteil und den Imaginärteil getrennt in die entsprechenden Felder ein (kartesische Form). Um Komplexe Zahlen in den Polarformen einzugeben, rufen Sie bitte den Eingabeassistenten auf. 8.3 Ramanujan Berechnet die Anzahl der Möglichkeiten p(n), eine natürliche Zahl n als Summe von natürlichen Zahlen darzustellen. Der Rechenweg ist für große n (größer 20) jedoch zu komplex, um in kurzer Zeit eine genaue Lösung zu berechnen. Der indische Mathematiker Srinivasa Ramanusan (daher der Name) entwickelte eine Formel, welche das Ergebnis annähert. 8.4 Perfekte Zahlen Eine natürliche Zahl n heißt perfekt, wenn n als Summe aller natürlichen Zahlen i (1 < i ≤ n2 ) , durch die n ohne Rest teilbar ist, dargestellt werden kann. Die Zahl 28 ist beispielsweise eine perfekte Zahl. Es ist 28 = 1+2+4+7+14 und 1, 2, 4, 7 und 14 genau alle Zahlen, durch die 28 ohne Rest teilbar ist. 8.5 Primfaktorzerlegung Zerlegt die angegebene Zahl in seine Primfaktoren, d.h. in seine kleinstmöglichen Teiler. Falls Sie unter Optionen nicht der Verwendung von langen Zahlen 35 KAPITEL 8. ALGEBRA 36 (langsame Berechnung) zugestimmt haben, sind die Werte von x auf den Bereich bis 2.147.483.647 beschränkt. 8.6 Primzahlen und pythagoräische Trippel Berechnet alle Primzahlen und pythagoräische Trippel ( a2 + b2 = c2 , a;b;c seien natürliche Zahlen) in einem Bereich 0 bis 2.147.483.647. Beachten Sie bitte, dass die Berechnung von größeren Zahlen lange Zeit dauern kann (0..200000 auf einem 200MHz Pentium über 8 Stunden). 8.7 Statistik Ermittelt die Summe und den Mittelwert der eingegebenen Zahlen. Geben Sie pro Zeile eine Zahl in die Liste ein. Sie können die Zahlen auch aus der Zwischenablage laden, betätigen Sie dazu die rechte Maustaste und klicken Sie im Kontextmenü auf einfügen. Beachten Sie, dass die Zwischenablage ein Format besitzt, welches den Eingabekriterien entspricht: Pro Zeile eine Zahl. Sie können die Daten auch als Diagramm anzeigen lassen. Die Daten entsprechen dem yWert, der x-Wert entspricht dem Index der Zahl. 8.8 8.8.1 Wahrscheinlichkeitsberechnung Binomialkoeffizient n . Darauffolgend wird die Fakultät k (x!) jeweils von n und k berechnet. Um Überlauffehler zu vermeiden, müssen n und k kleiner 100 sein. Außerdem wird die Fakultät bei Werten über 32! nicht berechnet. n;k seien ganze Zahlen. Berechnung des Binomialkoeffizienten 8.8.2 Binomialverteilung Berechnet die Binomialverteilung Bn; p(X = k), B(X ≤ k) , sowie B(X ≥ k) nach Eingabe von n, k und p. Außerdem wird die Standardabweichung und die Varianz ermittelt. n;k seien ganze Zahlen, p sei eine reelle Zahl. 8.8.3 Fakultät Siehe 8.8.1 Binomialkoeffizient 8.8.4 Permutationen Berechnet die Permutation dreier ganzer Zahlen, n, p, q. 8.8.5 Varianz Berechnet die Varianz nach Eingabe von der Wahrscheinlichkeit p und der Häufigkeit n. Außerdem wird die Standardabweichung ermittelt. n sei eine ganze Zahl, p sei eine reelle Zahl. 8.9. SUMMEN UND POTENZEN 8.8.6 37 Zufallsgenerator Ermittelt eine Reihe von Zufallszahlen im Bereich von 0 bis zur eingegebenen Zahl Zufallszahlen bis:. Falls hier 1 eingegeben wurde, werden Zufallszahlen mit drei Stellen hinter dem Komma berechnet. Anzahl gibt an, wieviele Zufallszahlen im genannten Bereich ausgegeben werden sollen. 8.9 Summen und Potenzen Berechnet die Summe bzw. die Potenz mithilfe des Summen bzw. Potenzzeichens. Als Laufvariable wird x erwartet. 8.10 Zahlensystemumwandlung Wandelt die eingegebene Zahl x in das Positionssystem mit der Basis q (größer 1) um. Um eine Zahl eines Systems in ein anderes System zu konvertieren, geben Sie in das von Klammern umrandete Feld die gewünschte Zahl ein; in das tiefgestellte Feld das Basissystem dieser Zahl. In q= geben Sie das erfragte System ein. Als Zahlenreihe für Systeme q größer 10 gilt: 0;1;2;3;4;5;6;7;8;9;A;B;C;D;E;F;G;H;I;...;Z. x sei kleiner 2.147.483.647 8.11 Ausgleichskurve Sie können hier mehrere Punkte (Stichproben) eingeben, welche mehr oder weniger auf einer Kurve liegen. Wenn Sie z.B. der Meinung sind, alle eingegebenen Punkte liegen um eine (linearen) Gerade, so wählen Sie anschließend das Regressionsmodell linear ; sollten die Punkte um eine quadratische Kurve liegen, so wählen Sie als Regressionsmodell Polynom (Grad 2). Appomatox berechnet, nach Klick auf Berechnen, die Kurve, die am besten durch die Punkte angenähert wird. Die Funktionsgleichung wird im Ergebnisfenster ausgegeben. Sie können die Kurve auch als Schaubild anzeigen lassen. Das Diagrammfenster wird geöffnet und Sie können die Kurve ggf. drucken. Sie müssen mindestens drei Punkte eingeben, damit eine Ausgleichskurve (auch Regressionskurve genannt) berechnet werden kann. 38 KAPITEL 8. ALGEBRA Kapitel 9 Analysis 9.1 Ableitung Berechnet nach Eingabe einer Funktion f(x) deren n-te Ableitung. 9.2 Bogenlänge Berechnet nach Eingabe einer Funktion f(x) die Bogenlänge (Länge des Kurvenabschnitts) im Intervall (x1;x2). Das Ergebnis ist lediglich angenähert (approximiert). 9.3 Integrale Berechnet die Fläche zwischen der x-Achse und einer einzugebenden Funktion zwischen den Stellen x1=a und x2=b. Beachten Sie bitte, dass das Integral näherungsweise mit der Simpson-Regel (bei 1000 Teilstreifen) berechnet wird; die Genauigkeit ist nicht bis auf die letzte Kommastelle gegeben. Desweiteren wird der Flächeninhalt gemäß der Kepler’schen Faßregel berechnet. 9.4 Lösung linearer Gleichungssysteme Berechnet die reellen Lösungen eines linearen Gleichungssystemes, sofern dieses trivial lösbar ist. Die Eingabe erfolgt mittels Koeffizientenmatrix und Lösungsvektor. Beispiel: Es soll die Lösung des folgenden Gleichungssystems gefunden werden. Geben Sie als Anzahl der Gleichungen 3 ein. Klicken Sie auf Eingabe der Koeffizientenmatrix. Geben Sie nun Folgendes ein (die x-e werden dazugedacht“): ” 39 KAPITEL 9. ANALYSIS 40 Klicken Sie auf OK. Klicken Sie auf Eingabe der absoluten Glieder. Geben Sie wie folgt die Werte rechts“ des Gleichheitszeichens ein: ” Klicken Sie schließlich wieder auf OK und dann auf Berechnen. Die Lösung (x1=1; x2=0; x3=5) wird in der Ergebnisausgabe angezeigt. 9.5 Kurvendiskussion Nach Eingabe einer Funktion wird diese auf die 1., 2. und 3. Ableitung, Symmetrie, Nullstellen, Extremstellen und Wendestellen untersucht. Die Nullstellen werden lediglich in dem Bereich gesucht und mit der Genauigkeit, die Sie unter Optionen angegeben haben. D.h. im Bereich x1-x2=1/Genauigkeit kann höchstens eine Nullstelle gefunden werden. Als Variable darf ausschließlich x vorkommen. Die Ableitungen bestimmter, sehr komplexer Funktionen können leider nicht berechnet werden. 9.6 Rotation um x-Achse Nach Eingabe zweier Grenzwerte x1 und x2, sowie einer Funktion f(x) wird das Volumen und die Mantelfläche des Rotationskörpers bestimmt, der die Kurve f(x), rotierend um die x-Achse, repräsentiert. (Werte approximiert) 9.7. SCHNITT ZWEIER KURVEN 9.7 41 Schnitt zweier Kurven Berechnet die Schnittpunkte zweier Funktionen in dem Bereich, den Sie unter Optionen angegeben haben. 9.8 Tangenten Nach Eingabe einer Funktion f(x) und der Berührstelle x wird eine Tangente zu f(x) an der Stelle x gelegt. Es wird die Tangentengleichung ausgegeben, sowie die Stellen, an denen weitere Schnitt- oder Berührpunkte von f(x) mit der Tangente liegen. 42 KAPITEL 9. ANALYSIS Kapitel 10 Geometrie 10.1 analytische Geometrie 10.1.1 Drehung und Vergrößerung zum Ursprung Sie können drei Punkte eines Dreiecks eingeben. Dieses Dreieck wird daraufhin gedreht oder vergrößert (bzw. verkleinert). Wenn Sie ein Vieleck drehen möchten, rufen Sie die Funktion mehrmals auf und geben dann jeweils die noch fehlenden Punkte ein. Sollte die Anzahl der Ecken des Vielecks nicht durch 3 teilbar sein, geben Sie den Nullpunkt als ergänzende(n) Punkt(e) ein. 10.1.2 Dreiecke Diese Funktion berechnet eine Vielzahl von Größen nach Eingabe der drei Eckkoordinaten. 10.1.3 Strecken Diese Funktion berechnet die Länge, die Mitte und die Steigung von Strecken im Koordinatensystem. Nach Eingabe der ersten Gerade ist es noch möglich, eine zweite Gerade anzugeben. Geben Sie die Werte für die 2. Gerade in dieselben Kästchen wie für die 1. Gerade ein. Drücken Sie anschließend auf den Knopf 2. Gerade. Es werden daraufhin die Werte der zweiten Gerade und der Schnittwinkel und Schnittpunkt (falls schneidend) beider Geraden berechnet. 10.1.4 Vierecke Diese Funktion berechnet eine Vielzahl von Größen nach Eingabe der vier Eckkoordinaten. 10.2 Planimetrie 10.2.1 Kreis Berechnet nach Eingabe von Ausgangswerten viele Größen in einem Kreis. 43 KAPITEL 10. GEOMETRIE 44 10.2.2 Kreisteile Berechnet nach Angabe des Radius’ und tlw. weiteren Angaben die Fläche und Länge von Kreisbogen, Kreisausschnitt, Kreisabschnitt und Kreisdreieck. 10.2.3 Kreisring Berechnet nach Angabe von Ausgangswerten viele Größen in einem Kreisring. 10.2.4 Parallelogramm Berechnet nach Eingabe von Ausgangswerten viele Größen in einem Parallelogramm. Der Winkel α ist der Winkel in einer Ecke des Parallelogramms. Wünschen Sie ein Quadrat oder ein Rechteck zu berechnen, so müssen Sie α =90◦ setzen. 10.2.5 regelm. n-Eck Berechnet nach Eingabe von Ausgangswerten viele Größen in einem regelmäßigen n-Eck. 10.2.6 Trapez Berechnet nach Eingabe von Ausgangswerten viele Größen in einem Trapez. Wünschen Sie ein Quadrat oder ein Rechteck zu berechnen, so müssen die Längen a und b und m gleich lang sein. 10.3 Stereometrie Sie können zwischen den verschiedensten Körpern (von Würfel - Kugelkeil, insges. 16 Körper) auswählen. Sie werden meist um die Länge der Kanten gebeten. Ausgegeben werden dann u.a. Volumen, Oberfläche, Mantelfläche... Um zu verdeutlichen, welche Werte eingesetzt werden sollen, wird bei einigen Funktionen eine Skizze der erwarteten Figur angezeigt. Achtung: Minuszahlen sind aus logischen Gründen nicht zulässig! 10.4 Trigonometrie 10.4.1 ebene Trigonometrie Berechnet nach Eingabe von Ausgangswerten nach Möglichkeit die restlichen Werte. Das Eingabefeld Instanzen braucht gewöhnlich nicht verändert werden, sollten Sie jedoch feststellen, dass nicht alle möglichen Werte errechnet werden, sollten Sie diesen Wert leicht erhöhen. Beachten Sie aber, dass die Rechenzeit dann länger dauert! Um korrekte Ergebnisse zu erhalten, sind korrekte Ausgangswerte Pflicht. Appomatox überprüft die Ausgangswerte nicht. Es empfiehlt sich, bei rechtwinkligen Dreiecken immer Gamma als rechten Winkel zu wählen, andernfalls können gewisse Werte nicht berechnet werden. 10.5. BÉZIER-KURVEN 10.4.2 45 sphärische Trigonometrie Berechnet die Entfernung zweier Punkte auf einer Kugel. Einzugeben sind die geographische Länge und Breite oder alternativ der Mittelpunktswinkel (jeweils ohne abschließendes ◦“). Außerdem ist der Radius anzugeben. ” 10.5 Bézier-Kurven Bézier-Kurven werden von Punkten im Raum bestimmt. Somit können beispielsweise auch kreisförmige Kurven dargestellt werden. Die Kurve wird bestimmt durch vier Stützpunkte. Sie können die Koordinaten dieser Stützpunkte entweder manuell (Manuelle Bearbeitung) in die dafür vorgesehen Kästchen eintragen, oder mittels Drag’n’Drop. Für Drag’n’Drop klicken Sie zunächst auf einen Punkte (unter Punkt ... setzen) und anschließend in die Vorschau. Sobald alle vier Stützpunkte gewählt wurden, erfolgt eine Anzeige. Sie können die Kurve korrigieren, indem Sie wieder auf den zu korrigierenden Punkt klicken (unter Punkt ... setzen) und wieder in die Vorschau klicken (und evtl. die Maus ziehen und gedrückt halten). 46 KAPITEL 10. GEOMETRIE Kapitel 11 Matrizen 11.1 Vektoren 11.1.1 Betrag Berechnet den Betrag bzw. Länge eines angegebenen Vektors. Der Vektor kann sowohl zwei- als auch dreidimensional sein. 11.1.2 Kreuzprodukt (Vektorprodukt) Berechnet das Kreuzprodukt, auch Vektorprodukt genannt, zwischen zwei dreidimensionalen Vektoren. Der Betrag des Vektorproduktes ist gleich dem Flächeninhalt des von den Vektoren aufgespannten Parallelogramms. 11.1.3 Normalisieren Normalisiert einen Vektor, d.h. verkürzt einen Vektor auf die Länge 1. Der Vektor kann sowohl zwei- als auch dreidimensional sein. 11.1.4 Punktprodukt (inneres Skalarprodukt) Berechnet das Punktprodukt, auch inneres Skalarprodukt genannt, zwischen zwei Vektoren. Die Vektoren können sowohl zwei- als auch dreidimensional sein. Mit dem Punktprodukt lässt sich der Winkel zwischen den Vektoren berechnen. 11.1.5 Skalarprodukt Berechnet das Produkt zwischen einem Skalar (eindimensionale Zahl) und einem Vektor. Der Vektor kann sowohl zwei- als auch dreidimensional sein. 47 48 KAPITEL 11. MATRIZEN Kapitel 12 Zusatz und Sonstiges 12.1 Formeleditor Mit dem Formeleditor können Sie Formeln in Appomatox-üblicher Schreibweise angeben. Die Formel wird dann - sofern fehlerfrei eingegeben - so dargestellt, wie Sie sie auf Papier zeichnen würden. Sie können das Resultat in einer Bitmap- oder WMF-Datei abspeichern, in die Zwischenablage kopieren oder per Drag’n’Drop (Ziehen mit der Maus) in jede andere Drag’n’Drop-fähige Anwendung (wie beispielsweise MS Word) ziehen. Statt auf den Knopf Speichern zu klicken, können Sie den Speichern unter... Dialog auch mit der Tastenkombination Strg+S aufrufen. Sofern in Optionen Grafiken als WMF kopieren“ aktiviert ist, ist das Ko” pieren über die Zwischenablage meist qualitativ besser als Drag’n’Drop. In das Eingabefeld Text können Sie jeden beliebigen Text (auch gar keinen) eintragen, er wird so wie er dasteht, in die Formel gesetzt. In das Eingabefeld Formel können Sie dann die Formel (incl. Befehlen, siehe Referenz, Kapitel 20 auf Seite 123. ) eintragen, sie wird ausgewertet und angezeigt, wie auf dem Papier. Wenn Sie zwei Befehle miteinander verknüpfen, müssen Sie ein & dazwischen setzen. Andernfalls wäre dies ein Syntaxfehler. Falls in der Formel Syntaxfehler auftreten, bleibt das Feld mit der ausgewerteten Formel weiss. Im Allgemeinen sind die Befehle case-sensitiv, d.h. beachten Sie die Groß-/Kleinschreibung. 49 KAPITEL 12. ZUSATZ UND SONSTIGES 50 Vermeiden Sie Leerzeichen, diese verursachen meist einen Syntaxfehler. Eine Befehlsreferenz finden Sie in Kapitel 20 auf Seite 123. 12.2 Internet-Update Wenn Sie diesen Menüpunkt auswählen, sucht Appomatox automatisch nach einer aktualisierten Version im Internet. Es werden dabei von Appomatox keine persönlichen Daten über das Internet übermittelt. 12.3 Plugins In Appomatox können auch von Drittherstellern und selbst erstellte Eingabeund Berechnungsfenster (sogenannte Plugins) benutzt werden. Plugins stellen eine sinnvolle Schnittstelle dar, wenn Sie wiederkehrende mathematische Aufgaben zu erfüllen haben, die Appomatox in seiner Grundausstattung nicht abdeckt. Kopieren Sie die Plugins (Dateiendung .ifps3) in das Verzeichnis, das Sie unter Optionen (Standardmäßig Appomatox\Plugins\) eingestellt haben. Die Plugins werden dann in der Addins-Leiste angezeigt. Mit einem einfachen Klick darauf werden Sie gestartet. Um eigene Plugins zu erstellen, steht Ihnen der Plugin-Assistent zur Verfügung. Die Befehle beruhen auf Innerfuse PascalScript, eine Scriptsprache, die sich stark an Borland’s Delphi bzw. Object Pascal anlehnt. Lesen Sie zu diesem Thema auch das Plugin-Entwicklerhandbuch im 2. Teil (Kapitel 13 auf Seite 57). 12.4 Rechner Für reelle Zahlen: Beim Rechner können Sie wie bei einem Taschenrechner Gleichungen eingeben, in denen auch die Variable x vorkommen darf. Appomatox kann die Ergebnisse mit voller Genauigkeit berechnen, oder das Ergebnis alternativ in Bruchdarstellung ausgeben. Beispiel für Ergebnisausgabe als Bruchdarstellung: sin(2/3*Pi)=1/2*sqrt(3) Beispiel für Ergebnisausgabe mit Komma: sin(2/3*Pi)=0,0365459503130565 Sie können unter Optionen auswählen, ob Appomatox die Bruchdarstellung generell verwenden soll. Falls nicht, werden die Ergebnisse wie gewohnt, als Kommazahlen ausgegeben. Selbstverständlich können Sie in Appomatox’ Eingabefelder jederzeit auch Bruchzahlen eingeben. Mit den Knöpfen laden und speichern können Sie eingegebene Terme in eine Datei speichern. Sie können sich somit quasi Ihre eigene Formelsammlung zusammenstellen. Für ganze Zahlen: Alternativ gibt es einen Rechner für ganze Zahlen. Er verfügt über eine enorm hohe Genauigkeit von 2^63 Stellen (intern), d.h. sie könnten praktisch eine Zahl mit über 64 Millionen Stellen eingeben! Jedoch berechnet er keine Nachkommastellen. 12.5. UMRECHNUNG 51 Die besondere Genauigkeit macht Berechnungen leider sehr langsam. Besonders Multiplikationen und Divisionen von sehr großen Zahlen dauern etwas ” länger“. 12.5 Umrechnung Nach Eingabe der Ursprungseinheit und der Zieleinheit, sowie der Menge aus der Ursprungseinheit, wird die Menge in die Zieleinheit umgerechnet. Die Ursprungseinheit ist dabei diejenige Einheit, die umgerechnet werden soll, die Zieleinheit diejenige, in die umgerechnet werden soll. Außerdem ist es möglich, mehrere Zieleinheiten auszuwählen. Bei der Währungsumrechnung gelten dabei die Kurse vom 13. September 2002. Sie können die Kurse aber auch im OptionenMenü aktualisieren. 12.6 Zinseszins Berechnung des Zinseszins nach Eingabe des Kapitals, Zinssatzes in Prozent und der Laufzeit. Einfache Zinsrechnung kann durch Eingabe einer Laufzeit von 1 Jahr erreicht werden. Die Zinsen werden jährlich fällig. Anstatt Jahre können Sie sich auch eine beliebige Einheit denken“, beachten Sie dann aber, dass Sie ” im Ergebnis Jahre wieder durch Ihre gedachte Einheit ersetzen müssen. Es wird davon ausgegangen, dass ein Jahr 365,25 Tagen und ein Monat 30 Tagen entspricht. 12.7 Diagramm: Element hinzufügen Mit dem Dialog Element hinzufügen im Diagramm-Fenster können Sie unabhängig von irgendwelchen Berechnungen Kurven, Linien und sogar Beschriftungen und grafische Elemente in das Diagramm einfügen. Mit den Funktionen, die Sie hier finden, können Sie beeindruckende wissenschaftliche Dokumente erzeugen. Allgemeine Vorgehensweise: KAPITEL 12. ZUSATZ UND SONSTIGES 52 1. Wählen Sie unter den Reitern das Element, welches Sie dem Diagramm hinzufügen möchten. 2. Treffen Sie unter den Auswahlmöglichkeiten Ihre individuelle Einstellung. 3. Klicken Sie auf Hinzufügen 4. Nach 1-3 Sekunden wird Element im Diagramm angezeigt. Achsenbeschriftung Hier können Sie die Beschriftung der Achsen ändern. Beispielsweise bei einem physikalischen, bei dem die Geschwindigkeit im Diagramm abgetragen werden soll, können Sie als Achsenbeschriftung s[m] und t[min] angeben. Die Funktionsgleichung muss aber dennoch x als Parameter enthalten. Wahlweise können Sie die Achsenbeschriftung auch komplett abschalten. Beschriftung Geben Sie einen Text an und eine Koordinate. Die Beschriftung wird an genau der Koordinate im Diagramm gezeichnet. Der Nullpunkt beim Text ist immer die linke obere Ecke. Funktion Sie können hier eine beliebige Kurve eingeben. Sie können individuell eine Farbe auswählen und die Strichart bestimmen. Integralfläche Visualisiert eine Fläche zwischen einer Kurve und der x-Achse, in einem einzugebenden Intervall. Punkte Sie die Koordinaten mehrerer Punkte eingeben. Diese Punkte werden dann mittels eines kleinen Kreises in das Diagramm eingetragen. So können beispielsweise die Extrempunkte einer Kurve oder die Eckpunkte einer Figur visualisiert werden. Scharen Bietet die Möglichkeit eine Kurvenschar ins Diagramm einzuzeichnen. Der Scharparameter für die Kurve ist t. Geben Sie in von das kleinste t ein, in bis das größte t, sowie in Schrittweite die Schrittgröße, mit der das t erhöht werden soll. Stellen Zeichnet einen senkrechten oder waagrechten Strich zwischen der x-Achse und einem Punkt. 12.7. DIAGRAMM: ELEMENT HINZUFÜGEN 53 Vektoren Zeichnet einen (Vektor-)Pfeil ins Diagramm ein. Es sind die Koordinaten des linken Endes und des rechtes Endes anzugeben. Die zweite Koordinate ist die Spitze des Pfeils. Winkel Zeichnet einen Winkel ins Diagramm ein. Zuerst die Koordinate des Mittelpunktes eintragen und danach, im Gegenuhrzeigersinn die Koordinaten zweier Punkte, zwischen denen der Winkel liegt. Der Radius des Winkelbogens ist die kürzeste Entfernung zwischen dem Mittelpunkt und einem der beiden anderen Punkten. Sie können weiterhin eine Beschriftung für den Winkel eintragen. Soll es sich um einen rechten Winkel handeln (dicker Punkt), so können Sie auf die Schaltfläche rechts neben dem Beschriftungsfeld klicken. 54 KAPITEL 12. ZUSATZ UND SONSTIGES Teil II Plugin Entwicklerhandbuch 55 Kapitel 13 Appomatox Plugin-Entwicklung Die Plugin-Schnittstelle basiert auf Carlo Kok’s Innerfuse Pascalscript (www.carlo-kok.com). Appomatox ist in der Sprache (Object) Pascal programmierbar. Der Plugin-Assistent nimmt Ihnen viele, zum Teil auch sehr komplizierte Programmieraufgaben ab. Im Folgenden finden Sie ein kurzes Tutorial über das Programmieren in Pascal. Sofern Sie bereits über zumindest geringe Programmierkenntnisse verfügen, müsste das Wissen, welches Sie beim Durcharbeiten durch das Tutorial erhalten, genügen, um einfache Plugins selbst zu erstellen. Um professionelle Plugins zu erstellen, führt aber kein Weg an einem Lehrbuch über die Pascal/Delphi-Programmierung vorbei. Schauen Sie sich doch auch mal den Quellcode der mitgelieferten Plugins Berechnung von Pi, Ramanujan und Perfekte Zahlen an. 13.1 Erste Schritte 13.1.1 Grundlagen Pascal-Programme sind immer wie folgt aufgebaut: (Zwei Schrägstriche leiten einen Kommentar ein, d.h. alles nach zwei Schrägstrichen wird vom Computer ignoriert. Zwischen Groß- und Kleinschreibung wird nicht unterschieden. Mehrere Leerzeichen werden ignoriert.) program Erstesplugin; //Der Name des Plugins begin writeln(’Hallo Welt’); //Nun fängts an! //Auf dem Bildschirm wird der Text //"Hallo Welt" ausgegeben //fertig! end. Wenn Sie die obigen Zeilen im Appomatox-Plugin-Editor eintippen und auf Ausführen klicken, erscheint im Ergebnisfenster der Text Hallo Welt“. ” Für mathematische Anwendungen kann man auch - wie in der Mathematik üblich - Variablen anlegen und dieser eine Zahl (oder auch Text) zuweisen. Um 57 58 KAPITEL 13. APPOMATOX PLUGIN-ENTWICKLUNG eine Variable, beispielsweise mit dem Namen x anzulegen, müssen Sie zuerst dem Computer mitteilen, wie die Variable heißen soll. Fügen Sie deshalb vor begin die Zeile var x: integer; ein. Das Wörtchen var steht für Variable“. integer ” steht für den Typ der Variablen. Vorläufig nehmen Sie einfach zur Kenntnis, dass x vom Typ Integer“ ist (eine Zahl mit Komma müsste mit var x: extended; ” deklariert werden). Mit dieser Variablen können Sie mit ganzen Zahlen rechnen. Jede Programmzeile muss mit einem Strichpunkt beendet werden. Um der Variablen eine Zahl zuzuweisen, benutzen Sie die Zeichen :=. Den Wert der Variablen kann wieder mit writeln (engl. write line - Zeile schreiben) in die Ergebnisliste geschrieben werden. Allerdings müssen Sie dabei dem Computer wieder mitteilen, dass das x eine Zahl ist. Dies geschieht mit inttostr(..) (Integer-To-String - was ein String ist, klären wir später). Um dies zu verdeutlichen, machen wir gleich mal wieder ein Beispiel: program TestPlugin; var x : integer; begin x:=5; writeln( intToStr( x )); end. //Der Variablen den Wert 5 zuweisen //"5" in die Ergebnisse schreiben Mit Variablen können Sie auch rechnen. Beispiel: program TestPlugin; var x : integer; begin x:=5; writeln( intToStr( x ) ); x:=x+3; writeln( intToStr( x ) ); end. //Der Variablen den Wert 5 zuweisen //"5" in die Ergebnisse schreiben //x = x+3; //"8" Zweites Beispiel: program TestPlugin; var x : integer; y : integer; //erste Variable x //zweite Variable y begin x:=5; y:=3; x:=x+y; //x = x+3; writeln( intToStr( x ) ); writeln( intToStr( x+y ) ); writeln( intToStr( x-y ) ); //"8" //"8" //"2" 13.1. ERSTE SCHRITTE 59 writeln( intToStr( x*y ) ); writeln( intToStr( x/y ) ); end. 13.1.2 //"15" //"1" Schleifen Sich wiederholende Anweisungen kann man in Schleifen zusammenfassen. Als einleitendes Beispiel wollen wir die Summe aller Zahlen von 1 bis 5 berechnen. program TestPlugin; var x : integer; i : integer; begin x:=0; for i:=1 to 5 do begin x:=x+i; end; writeln( intToStr(x) ); end. //i um eins erhöhen bis i=10 //x den aktuellen Wert von i addieren //Summe von 1 bis 10 schreiben Die for-Schleife weist einer Variable anfangs einen Wert zu (i:=1) und führt dann die Anweisungen aus, die zwischen begin...end eingeschlossen sind (x:=x+i;). Nach Ende dieser Anweisung wird die Variable um eins erhöht und wieder die Anweisung durchlaufen, die Variable erhöht, Anweisung durchlauben, usw. - solange bis die Variable die angegebene Obergrenze (hier 5; to = engl. bis) erreicht. In einer ausführlichen Schreibweise macht das obige Programm genau dasselbe wie: program TestPlugin; var x : integer; i : integer; begin x:=0; i:=1; x:=x+i; i:=i+1; x:=x+i; i:=i+1; x:=x+i; i:=i+1; x:=x+i; i:=i+1; //x:=0+1 //2 //x:=1+2 //3 //x:=3+3 //4 //x:=6+4 //5 - letzter Durchlauf, // da i nun die Obergrenze erreicht hat x:=x+i; //x:=10+5 KAPITEL 13. APPOMATOX PLUGIN-ENTWICKLUNG 60 writeln( intToStr(x) ); end. //Summe von 1 bis 10 schreiben Um die Ausgabe zu verbessern, können Sie wie folgt den Ergebnissen Text hinzufügen (aus Platzgründen wird nur die vorletzte Zeile des obigen Programms wiederholt). Bei Text-Ausgaben hängt das + einen Text an einen anderen an: writeln(’Summe von 1 bis 10: ’+intToStr(x)); 13.1.3 Bedingung Sie können Fallunterscheidungen treffen, indem Sie eine Bedingung mit if einleiten. Bsp.: program TestPlugin; var x : integer; begin x:=5; //Der Variablen den Wert 5 zuweisen if x=5 then //wenn x=5, dann begin writeln(’Die Variable hat den Wert 5’); end else //andernfalls... begin writeln(’Die Variable hat irgend einen anderen Wert.’); end; end. Das obige Programm macht natürlich nur wenig Sinn, denn der Variablen wurde ja zuvor gerade der Wert 5 zugewiesen. Wenn man Benutzereingaben zulässt, sind Bedingungen aber mehr als nützlich. Um Benutzereingaben zu erhalten, benutzen Sie den Appomatox-Plugin-Assistent. Er vereinfacht den doch recht komplizierten Prozess erheblich. Siehe Kapitel 13.2 auf Seite 63. 13.1.4 Mit Text arbeiten Ein Computer kann intern nur mit Zahlen arbeiten. Deshalb wird auch ein einzelnes Zeichen als eine Zahl gespeichert. Welches Zeichen welcher Zahl entspricht, wird aus folgender Tabelle entnommen (genannt ASCII-Tabelle): Zahl Zeichen | Zahl Zeichen | Zahl Zeichen | Zahl Zeichen --------------|---------------|---------------|----------------32 [leer] | 63 ? | 94 ^ | 125 } 33 ! | 64 @ | 95 _ | 126 ~ 34 " | 65 A | 96 ‘ | 127 | 35 # | 66 B | 97 a | 36 $ | 67 C | 98 b | 37 % | 68 D | 99 c | 38 & | 69 E | 100 d | 13.1. ERSTE SCHRITTE 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 ’ ( ) * + , . / 0 1 2 3 4 5 6 7 8 9 : ; < = > | | | | | | | | | | | | | | | | | | | | | | | | 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 61 F G H I J K L M N O P Q R S T U V W X Y Z [ \ ] | | | | | | | | | | | | | | | | | | | | | | | | 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 e f g h i j k l m n o p q r s t u v w x y z { | | | | | | | | | | | | | | | | | | | | | | | | | Die Zeichen 0-31 sind nur für interne Zwecke. Die Zeichen 127 255 können sich je nach Computer typ unterscheiden Um zu entscheiden, ob eine Variable nun einen Buchstaben oder eben als Zahl enthält, müssen Sie eine Variable als char deklarieren: var c: char;. Um die Position eines Buchstabens innerhalb obiger Tabelle zu erfahren, benutzen Sie die Funktion Ord(...). Andersherum, also den Buchstaben an einer beliebigen Position ermitteln Sie mit Chr(...). Folgendes Beispiel nutzt aus, dass das Alphabet in der Tabelle geschlossen hintereinander steht. Es verschiebt ein Buchstaben um 10 Positionen nach vorne. program CharTest; var c : char; i : integer; begin c:=’A’; i:=Ord(c); i:=i+10; c:=Chr(i); writeln( c ); end. //Position von ’A’ in der Tabelle, also 65 //10 vorrücken //Suchen, welches Zeichen an Position 75 ist //"K" //Für Fortgeschrittene, hier das selbe Programm in Kurzform: program CharTest2; var c: char; KAPITEL 13. APPOMATOX PLUGIN-ENTWICKLUNG 62 begin c:=Chr(Ord(’A’)+10); writeln(c); end. Um dem Computer klar zu machen, dass man jetzt der Variablen einen Buchstaben und keine andere Variable (statt A hätte man auch i benutzen können, was der Name einer anderen Variablen gewesen wäre) zuzuweisen, muss man den Buchstaben in Gänsefüsschen (Apostroph) setzen. Einen gewöhnlichen Text, also mehrere Buchstaben aneinander gereiht, nennt man eine Zeichenkette, oder englisch: String. Ebenso, nämlich String, heißt auch die entsprechende Variable, mit der man mehrere aneinander gereihte Buchstaben speichern kann. Mit dem Rechenzeichen + kann man zwei Strings aneinander hängen. Die anderen Rechenzeichen geben natürlich keinen Sinn und sind in Zusammenhang mit Strings auch nicht erlaubt. program StringTest; var a b x y : : : : string; string; integer; integer; //Text-Variablen a und b begin a:=’Hallo’; b:=’Welt!’; writeln( a+ ’ ’ +b); a:=’1’; b:=’2’; writeln( a+b ); //Leerzeichen einfügen und Text //und Text "Hallo Welt!" ausgeben //b an a anhängen //"12" x:= strToInt(a); y:= strToInt(b); //Strings in Zahlen umwandeln writeln( intToStr( x+y ) ); //"3" end. Zum Abschluss noch ein Beispiel für Fortgeschrittene, welches einen Text auf einfache Weise verschlüsselt. Jeder einzelne Buchstabe wird um fünf Stellen weiter verschoben. Das verschlüsselte a sei also ein e, das verschlüsselte b ein f usw.. Die Funktion length(s:string) liefert die Anzahl der Zeichen eines Strings in einer Zahl-Variablen. Die Funktion StrGet(var s: string; i:integer) liefert das i-te Zeichen von links im String zurück. program verschluesseln; var s i a c : : : : string; integer; string; char; //zu verschlüsselnder Text //verschlüsselter Text //ein einzelnes Zeichen im String 13.2. PLUGIN-ASSISTENT 63 begin s:= ’Der zu verschlüsselnde Text.’; //oder alternativ: readln(s); //jedes einzelne Zeichen im String abklappern for i:=1 to length(s) do begin c := StrGet(s,i); //das i-te Zeichen von links a := a+ (Chr(Ord(c)+5)); //*1* c um 5 Stellen verschieben end; writeln(’Der verschlüsselte Text:’); writeln(a); end. Um ein Plugin zu schreiben, welches einen verschlüsselten Text wieder entschlüsselt, müssen Sie die in der *1* markierte Zeile das Zeichen um 5 Stellen nach links verschieben: a:=a+ (Chr(Ord(c)-5)); 13.2 Plugin-Assistent Mit dem Plugin-Assistenten können Sie komfortable Eingabefenster erstellen, wie Sie sie aus Appomatox kennen. Rufen Sie ihn auf, indem Sie auf Programm/Neues Plugin erstellen... klicken. Wählen Sie eines der Layouts aus. Es gibt Layout mit einem, zwei und drei Eingabefelder, sowie eines mit einem großes Textfeld. Klicken Sie auf Weiter. Sie werden nach dem Namen des Plugins gefragt, sowie nach der Beschriftung der Eingabefelder. Bitte vergeben Sie nur kurze Beschriftungen. Die Beschriftungen werden später zugleich die Namen für die entsprechenden Variablen sein. Wenn Sie wieder auf Weiter klicken, werden Sie gefragt, was passieren soll, wenn der Benutzer im fertigen Fenster auf Berechnen klickt. Es wurden automatisch Variablen erstellt. Sie tragen denselben Namen wie die Beschriftung des jeweiligen Eingabefeldes (evtl. ohne Sonderzeichen und Leerzeichen). Haben Sie z.B. das Eingabefeld mit x beschriftet, so können steht in dem String x.text der vom Benutzer eingegebene Text. In dem Integer ix wird auch automatisch die aus dem String umgewandelte Zahl gespeichert (es handelt sich schließlich um ein Mathematikprogramm, und die Verarbeitung von Zahlen wird wahrscheinlich zumeist vorkommen). Wenn Sie wieder auf Weiter klicken, werden Sie gefragt, in welcher Datei das Plugin gespeichert werden soll. Vergeben Sie einen aussagekräftigen Namen, unter diesem wird das Plugin später auch gestartet. Sollten Sie mit den Namen der Variablen nicht einverstanden sind, können Sie sie, wenn Sie wieder auf Quelltext im Editor öffnen klicken, diese ändern oder ggf. das Plugin komplett überarbeiten. 64 KAPITEL 13. APPOMATOX PLUGIN-ENTWICKLUNG Vom Assistenten erzeugter Quelltext Dieses Kapitel beschreibt den Quellcode, den der Plugin-Assistent für Sie erstellt (Layout: Ein Eingabefeld). Dieses Kapitel ist für fortgeschrittene Anwender gedacht, Einsteiger möchte ich an ein Lehrbuch für Delphi und Object Pascal verweisen, und bitten, die folgenden Erklärungen wenigstens überfliegen. program TestPlugin; var Form btnBerechnen, btnHelp btnSchliessen : TForm; : TButton; : TButton; lblx : TLabel; x : TEdit; Bevel1, Bevel2 : TBevel; Es werden Variablen deklariert. Der Variablentyp TForm ist das eigentliche Fenster. Auf dieses werden später Knöpfe und Eingabefelder draufgeklebt“. ” TButton ist ein Knopf, auf den man mit der Maus klicken kann. Es gibt drei Knöpfe: Berechnen (btnBerechnen), Hilfe (btnHelp), Schließen (btnSchliessen). Ein TLabel ist ein einfacher Text, der angezeigt wird. Er dient als Beschriftung. TEdit ist ein Eingabefeld. Die beiden TBevel’s dienen nur der Optik. Sie sind Linien, die ganz oben im Fenster, sowie um die drei Buttons gezeichnet werden. procedure btnSchliessenClick(sender: TObject); begin form.close; end; Diese Prozedur (in sich geschlossener Programmabschnitt) wird aufgerufen, wenn der Benutzer auf den btnSchliessen klickt. Der Befehl form.close veranlasst das Fenster, zu schliessen und setzt form.visible auf false. procedure btnBerechnenClick(sender: TObject); var ix : integer; begin if x.text = ’’ then exit; ix := strtoint(x.text); //Eingabe der Variablen zuweisen //TODO: eigenen Code einfügen writeln(inttostr(ix)); //Variable im Ergebnisfenster ausgeben end; Hier steht der direkt kopierte Quellcode, nach dem der Assistent in Was soll bei Klick auf Berechnen geschehen? gefragt hat. procedure xchange(sender: TObject); begin if x.text <> ’’ then x.color:=ApGetColor(1) else x.color:=ApGetColor(0); end; 13.2. PLUGIN-ASSISTENT 65 Appomatox Eingabefelder ändern ihre Farbe, sobald der Benutzer einen Wert eingibt. Dies geschieht in dieser Prozedur. Sie wird immer dann aufgerufen, wenn sich der Inhalt eines Eingabefeldes ändert. Die Funktion ApGetColor(...) liefert die in Optionen eingestellte Farbe für ausgefüllte oder nicht-ausgefüllte Eingabefelder. Begin Form := TForm.Create(self); Form.Width := 361; Form.Height := 220; Form.BorderStyle := bsToolWindow; Form.Caption := ’TestPlugin’; Form.Position := poScreenCenter; form.formstyle:=fsStayOnTop; Das Fenster wird erzeugt. in width und height wird die Breite und Höhe des Fensters bestimmt. borderstyle bestimmt die Rahmendicke des Fensters. caption ist der Fenstertitel. poScreenCenter gibt an, dass das Fenster beim Öffnen immer in der Mitte des Bildschirms platziert werden soll. fsStayOnTop legt fest, dass das Fenster nicht hinter dem Appomatox Hauptfenster versteckt werden kann. btnBerechne:=TButton.create(form); btnBerechnen.parent:=Form; btnBerechnen.caption:=’Berechnen’; btnBerechnen.top:=120; btnBerechnen.left:=24; btnBerechnen.width:=97; btnBerechnen.height:=25; btnBerechnen.default:=true; btnBerechnen.onclick:=@btnBerechnenClick; btnHelp:=TButton.create(form); btnHelp.parent:=Form; btnHelp.caption:=’Hilfe’; btnHelp.top:=120; btnHelp.left:=232; btnHelp.width:=97; btnHelp.height:=25; btnHelp.default:=false; btnHelp.enabled:=false; btnSchliessen:=TButton.create(form); btnSchliessen.parent:=Form; btnSchliessen.caption:=’Schließen’; btnSchliessen.top:=149; btnSchliessen.left:=232; btnSchliessen.width:=97; btnSchliessen.height:=25; btnSchliessen.cancel:=true; btnSchliessen.onclick:=@btnSchliessenClick; 66 KAPITEL 13. APPOMATOX PLUGIN-ENTWICKLUNG Die drei Buttons (Knöpfe) werden erstellt. parent weist auf das eigentliche Fenster. Denn es ist das Elter(nteil) des Buttons und der Knopf soll darauf gezeichnet werden. caption,top,left,width,height gibt wieder die Beschriftung, sowie die Größe (in Pixel) des Buttons, an. Falls cancel, default true sind, reicht es, wenn der Benutzer auf Enter (default:=true) bzw. ESC (cancel:=true) drückt, ob die mit dem Knopf verbundene Aktion auszulösen. onclick gibt den Namen der Prozedur an, welche ausgeführt werden soll, wenn der Benutzer auf den Knopf klickt (bzw. auf Enter oder ESC drückt). lblx:=TLabel.create(form); lblx.Top := 22; lblx.Left := 16; lblx.Height := 13; lblx.Width := 81; lblx.Caption := ’x’; lblx.Parent := Form; x:=TEdit.create(form); x.top:=18; x.left:=104; x.height:=21; x.width:=233; x.Parent := Form; x.color:=apgetcolor(0); x.onchange:=@xChange; Das TLabel ist die Beschriftung für das Eingabefeld TEdit. Left und Top wurden so gewählt, dass die Beschriftung und Eingabefeld direkt nebeneinander liegen. onchange, gibt den Namen der Prozedur an, welche ausgeführt wird, wenn das Eingabefeld geändert (d.h. wenn Text eingegeben) wird. bevel1:=TBevel.create(form); bevel1.parent:=form; bevel1.align:=alTop; bevel1.style:=bsLowered; bevel1.shape:=bsTopLine; bevel2:=TBevel.create(form); bevel2.parent:=form; bevel2.shape:=bsBox; bevel2.style:=bsRaised; bevel2.top:=112; bevel2.left:=8; bevel2.width:=337; bevel2.height:=73; Die beiden TBevels dienen der Optik. align=alTop gibt an, dass es automatisch vergrößert und verkleinert wird, wenn das Fenster vergrößert oder verkleinert wird. bsBox und bsTopLine geben die Form des Bevels an. TopLine ist eine einfache Linie, Box ein viereckiger Kasten. bsRaised, bsLowered bestimmen, ob das Bevel so gezeichnet werden soll, als wäre eine Vertiefung bzw. Erhöhung im Fenster. 13.3. SNIPPLETS 67 form.visible:=true; x.setfocus; while form.visible do begin Application.HandleMessage; end; Die Form wird durch form.visible:=true; auf den Bildschirm gezeichnet und das Eingabefeld x erhält daraufhin durch x.setfocus; standardmäßig den Eingabecursor. Danach startet eine Endlosschleife“, die solange alle Benutzerein” gaben an die entsprechenden Komponenten weiterleitet, bis form.visible durch onClose, also durch Klick auf Schließen auf false gesetzt wird. btnBerechnen.free; btnHelp.free; btnSchliessen.free; form.free; End. Zuletzt werden alle erzeugten Komponenten wieder befreit“, d.h. aus dem ” Speicher entfernt. TBevels sind die einzigen Komponenten, die nicht mit free gelöscht werden dürfen. Sie werden automatisch entfernt. 13.3 Snipplets Snipplets werden wie normale Plugins verwaltet. Sie helfen dem Benutzer bei der Eingabe immer gleicher Werte. Man könnte sie auch als Makros bezeichnen. Eine (zugegebenermaßen eher dürftige) Referenz über alle Eigenschaften der Komponenten finden Sie in Kapitel 17 auf Seite 87 . Die Referenz wird in zukünftigen Versionen noch überarbeitet und erweitert. Der Aufbau: program SampleSnipplet; begin ApOpenWindow(’FGGTKGV’); //ruft das Appomatox-Fenster ggT/kgV-Berechnung auf ApWriteEditValue(’FGGTKGV’, ’x1’, ’5’); //schreibt 5 in das Eingabefeld "x=" ApWriteEditValue(’FGGTKGV’, ’y1’, ’8’); //schreibt 8 in das Eingabefeld "y=" end. Wenn Sie das Plugin starten, wird das Fenster für die ggT/kgV-Berechung geöffnet und die beiden Werte in die entsprechenden Felder geschrieben. Der Benutzer muss somit nur noch auf Berechnen klicken und das Ergebnis ablesen. Die entsprechenden Parameter für die Funktionen stehen in Kapitel 18.5 auf Seite 111 KAPITEL 13. APPOMATOX PLUGIN-ENTWICKLUNG 68 13.4 Benennung von Variablen Sie sind in der Namensgebung für Variablen ziemlich frei, wie überall gelten aber auch hier einige Vorschriften: • Variablennamen dürfen nicht mit einer Zahl beginnen. • Variablennamen dürfen keine Satzzeichen oder Umlaute (ä,ö,ü,ß) enthalten. • Variablennamen müssen eindeutig sein, d.h. es dürfen keine zwei unterschiedlichen Variablen denselben Namen tragen. • Variablennamen dürfen nicht den Namen eines Schlüsselwortes tragen. Schlüsselwörter sind Anweisungen für den Compiler, wie beispielsweise begin, end, for, to, do, while, repeat, until, if, then, else, case, of, try, finally, except, ... Kapitel 14 Plugin-Editor Mit dem Plugin-Editor können Sie auf bequeme Weise Ihre Plugins erstellen. Sie können ihn aufrufen, indem Sie entweder auf Programme/Plugin-Editor klicken, oder indem Sie im Plugin-Assistenten auf Quelltext im Editor öffnen klicken. Der Editor ist in vier Bereiche aufgeteilt: Ganz oben finden Sie die Menüleiste und eine Mausleiste. In den großen Bereich in der Mitte können Sie den Quelltext eingeben. Rechts davon ist ein Fenster mit Debug-Informationen (siehe Kapitel 14.1 auf der nächsten Seite Fehlersuche mit dem Plugin-Editor) und ganz unten finden Sie unter Meldungen eine Liste mit Meldungen, welche erzeugt werden, wenn das Plugin compiliert und ausgeführt (gestartet) wird, sowie unter Ausgabe eine Kopie der Appomatox-Ergebnisausgabe. Diese dient zur schnellen Kontrolle ohne langes Hin- und Her-Schalten zwischen den Fenstern. Alle Meldungen sind (noch) auf Englisch. Fehlermeldung oder Hinweise beginnen immer mit [Error] bzw. [Hint], gefolgt von der Zeile und Spalte, in denen der Fehler auftrat. Sie können mit der Maus darauf doppelklicken, damit der Cursor automatisch zur angemahnten Stelle im Quelltext springt. 69 KAPITEL 14. PLUGIN-EDITOR 70 14.1 Fehlersuche mit dem Plugin-Editor Manchmal kommt es vor, dass manche Fehler einfach unauffindbar sind. Der Plugin-Editor bietet zur Behebung solcher Fehler einen Debugger. Mit ihm können Sie, während das Plugin läuft, untersuchen, welche Werte gerade in Variablen sind und wie die Verzweigungen innerhalb des Quelltextes sind. 1. Wenn Sie eine Vermutung haben, in welcher Zeile der Fehler auftritt, so können Sie in diese Zeile einen Haltepunkt (Taste F5) setzen. Andernfalls setzen Sie den Haltepunkt einfach an den Programmanfang. Das Plugin wird an dieser Stelle dann mit der Ausführung unterbrechen. Es ist auch möglich, mehrere Haltepunkte zu setzen. Die Zeilen, in denen ein Haltepunkt liegt, sind rot hinterlegt. 2. Starten Sie das Plugin wie gewohnt mit Klick auf Start. Geben Sie ggf. Daten ein, welche den Fehler auslösen. Das Plugin hält an, sobald es in der Quelltextzeile angekommen ist, in welcher Sie den Haltepunkt gesetzt haben. In der Liste mit Debug-Informationen im Plugin-Editor erscheinen nun alle verfügbaren Variablen mit ihren Werten. 3. Drücken Sie die Tasten F8 (Gesamte Routine) bzw. F7 (Einzelschritt, bei verschachtelten Funktionsaufrufen) um die nächste Quelltextzeile auszuführen. Die Zeile, welche als nächstes ausgeführt wird, ist blau hinterlegt. Die Debug-Informationen werden ständig aktualisiert. 4. Sobald Sie den Fehler gefunden haben, klicken Sie wieder Start. Das Plugin wird nun wieder wie gewohnt ohne Unterbrechung (sofern es kein weiterer Haltepunkt gibt) abgearbeitet. Achtung: Komplexe Datentypen wie records, classes und arrays können nicht ausgewertet werden. 14.2 Fehlermeldungen 14.2.1 Laufzeitfehler Laufzeitfehler sind Fehler, welche erst auftreten, während das Plugin läuft. Could not call proc Invalid array Konnte Procedure nicht aufrufen. Meldet setArrayLength, wenn Sie kein Array als Parameter angegeben haben. Out of String range Cannot Import x Kann x nicht importieren. Melden strGet und strSet, wenn Sie einen Index im String angegeben haben, der hinter dem letzten Zeichen Invalid Type liegt. Verwenden Sie einen kleineren Index! Ungültiger Typ. 14.2. FEHLERMELDUNGEN 71 Internal error Unexpected End Of File Fehler in Appomatox. Unerwartetes Dateiende. Möglicherweise fehlt ein END.. Invalid Header Ungültiger Kopf. divide by Zero Division durch 0. Eine Zahl darf nicht durch 0 geteilt werden. Invalid Opcode Ungültiger Opcode. Math error Fehler in einer Mathematikfunktion. Invalid Opcode Parameter Ungültige Opcode-Parameter. Could not call proc Konnte Prozedur nicht ausführen. no Main Proc Out of Record Fields Range Keine Hauptfunktion. Jedes Plugin Bereichsüberschreitung bei einem Remuss mit einem BEGIN anfangen, welcord. ches in keiner Unterprozedur liegt. Null Pointer Exception Out of Global Vars range Zuviele globale Variablen. Es wurde versucht, auf einen NullZeiger zuzugreifen. Null-Zeiger zeigen auf keinen gültigen Speicherbereich. Out of Proc Range Null variant error Außerhalb des ProzedurengültigkeitsEs wurde versucht, auf einen nichtbereichs. gefüllten Variant zuzugreifen. Out Of Range Out Of Memory Außerhalb des Gültigkeitsbereichs. Dies kann vorkommen, wenn ein Array nicht genügend groß mittels SetArrayLength(...) dimensioniert wurde und auf einen Index überhalb der oberen Grenze zugegriffen wird. Nicht genügend freier Arbeitsspeicher. Sofern dieser Fehler beim Start des Plugins auftritt, so schließen Sie ein oder mehrere Anwendungen, um Speicher freizugeben. Tritt der Fehler erst auf, nachdem das Plugin schon einige Zeit arbeitet, so handelt es sich evtl. um ein Speicherloch, d.h. sie reservieOut Of Stack Range ren in einer Schleife Speicher und geAußerhalb des Stack-Gültigkeitsbe- ben ihn nicht mehr frei. reichs. Exception: x Type Mismatch Es ist eine Ausnahme aufgetreten. Unbekannter Typ. Sie haben mögli- Sie können Ausnahmen mit try... cherweise einen Tippfehler in einer Va- except... finally... end; auffanriablendefinition. gen KAPITEL 14. PLUGIN-EDITOR 72 Interface not supported Unknown error Schnittstelle wird nicht unterstützt. Unbekannter Fehler. 14.2.2 Compilerfehler Compiler sind Fehler, welche bereits erkannt werden, bevor das Plugin ausgeführt wird. Das Plugin kann nicht gestartet werden, bevor alle Compilerfehler behoben sind. Es handelt sich dabei meistens um Flüchtigkeitsfehler, z.B. Tippfehler oder es wurde einfach vergessen, vor der Benutzung einer Variable, diese zu deklarieren. Unknown identifier x ’BEGIN’ expected Unbekannter Bezeichner. Möglicher- BEGIN erwartet. Ein Block wurde weise liegt ein Tippfehler vor. zwar mit END geschlossen, aber nicht mit BEGIN eingeleitet. Identifier expected period (’.’) expected Bezeichner erwartet. Die angegebene Quelltextzeile ist nicht vollständig. Punkt erwartet. Es kann nur auf die Unterelemente des Records zugegriffen werden. Comment error Fehler im Kommentar. Der Kommentar wurde möglicherweise nicht geschlossen Duplicate identifier x Ein Variablenname wurde mehrmals vergeben. String error Fehler im String. colon (’:’) expected Doppelpunkt erwartet. Char error Fehler in einem char. Unknown type x Syntax error Unbekannter Typ. Möglicherweise liegt ein Tippfehler vor. Syntaxfehler. Die Schlüsselwörter sind in der angegebenen Reihenfolge nicht Close round expected zulässig. Schließende runde Klammer erwartet. Unexpected end of file Type mismatch Unerwartetes Dateiende. MöglicherUnbekannter Typ. Möglicherweise liegt weise fehlt ein END.. ein Tippfehler vor. Semicolon (”;”) expected Strichpunkt erwartet. Wurden alle Zeilen mit einem Strichpunkt beendet? Internal error (x) Es gibt einen Fehler in Appomatox. 14.2. FEHLERMELDUNGEN Assignment expected 73 ’END’ expected Zuweisung erwartet. Zuweisungen an END erwartet. eine Variable erfolgen imer mit :=. ’THEN’ expected Label x not set Ein Sprungziel (LABEL) wurde zwar THEN erwartet. Nach einem IF muss mit GOTO angesprungen aber ist immer ein THEN erfolgen. nicht definiert. ’DO’ expected DO erwartet. Not in a loop Nicht in einer Schleife. No result Invalid jump Kein Rückgabewert. Eine Funktion muss immer einen Wert zurückgeben. Ungültiger SPrung. Benutzen Sie statt FUNCTION -¿ PRECEDURE. Open Block (’[’) expected Öffnende runde Klammer erwartet. Öffnende eckige Klammer erwartet. Auf ein Array wird mit x[y] zugegriffen comma (’,’) expected Write-only property open round (’(’)expected Komma erwartet. Sie können die Eigenschaft zwar schreiben aber nicht lesen. ’TO’ expected TO erwartet. Read-only property is (’=’) expected Sie können die Eigenschaft zwar schreiben aber nicht lesen. Ist gleich (=) erwartet. Class type expected ’OF’ expected Klassentyp erwartet. OF erwartet. Close block(”]”) expected Divide by Zero Division durch 0. Eine Zahl kann nicht Schließende eckige Klammer erwartet. durch 0 geteilt werden. Auf ein Array wird mit x[y] zugegriffen Variable Expected Math Error Variable erwartet. Fehler in einer Mathematikfunktion. String Expected Unsatisfied Forward x String erwartet. Ungenügender Verweis. KAPITEL 14. PLUGIN-EDITOR 74 Forward Parameter Mismatch Unknown error Fehler im Parameter des Verweises. Unbekannter Fehler. 14.2.3 Hinweise Hinweise sind keine Fehler im eigentlichen Sinne. Sie werden ausgegeben, wenn der Code unschön“ ist, oder Speicher verschwendet wird. ” Variable x never used Function x never used Die Variable x wurde zwar deklariert, Die Funktion x wurde zwar deklariert, es wird aber nie darauf zugegriffen. Die sie wird aber nie aufgerufen. Die FunkVariable kann entfernt werden. tion kann entfernt werden. Kapitel 15 Basistypen ACHTUNG: Die Beispiele in diesem Kapitel sind auf das Wesentlich verkürzt. program, begin und end werden weggelassen. 15.1 Boolean Variablen vom Typ Boolean speichern ein Bit. Einen wahr/falsch-Wert (bzw. true und false) oder 1 und 0. Bsp.: var b: boolean; b:=true; b:=false; if (b=true) then begin end else begin end 15.2 Extended Extended ist eine Gleitkommazahl, also eine Zahl mit Komma. Die Nachkommastellen werden mit einem Punkt von den Ganzzahl abgetrennt. Der Bereich von extended umfasst 3.6 x 10^-4951 .. 1.1 x 10^4932 mit 19-20 signifikaten Stellen Bsp.: var f : extended; f:= 1.513; 15.3 Integer, longint und word Integer, Longint und word sind ganzzahlige Typen, also Zahlen ohne Komma. Der Bereich von integer umfasst -32768..+32767 75 KAPITEL 15. BASISTYPEN 76 Der Bereich von longint umfasst -2147483648..2147483647 Der Bereich von word umfasst 0..65536 Bsp.: var i : integer; i := 15000; 15.4 Char Ein Char (engl. Character - Buchstabe) ist ein einzelnes Zeichen. Es wird intern als eine Zahl gespeichert. Bsp.: var c: char; c:=’A’; 15.5 String Ein String ist eine Folge von Zeichen. Also Buchstaben, Wörter oder ganze Sätze. Sie wird mit Apostrophen eingeklammert. Bsp.: var s : string; s:=’Dies ist ein Test’; 15.6 Array Arrays sind an sich kein echter Basistyp. Von einem (beliebigen) Basistyp werden mehrere Instanzen nacheinander im Speicher abgelegt. Man kann mit einem Index darauf zugreifen. Die Nummerierung der Indizes startet bei 0. Bsp.: var v : array of extended; e : extended; begin setArrayLength(v,5); v[0] := 1.123; v[1] := 2.345; v[2] := 3.456; v[3] := 4.567; v[4] := 5.678; e:= v[3]; setArrayLength(v,6); v[5] := 6.789; end. //das Array soll 5 Elemente aufnehmen //Array vergrößern, jetzt auf 7 Elemente 15.7. RECORD 15.7 77 Record Records fassen mehrere Basistypen zu einem neuen Typ zusammen. Auf die Unterelemente kann man mit einem Punkt zugreifen. Bsp.: var v : record a : integer; b : string; end; begin v.a := 4; v.b := ’Vier’; end. 78 KAPITEL 15. BASISTYPEN Kapitel 16 Allgemeine Funktionen und Prozeduren 16.1 Verarbeitung von Strings Chr function Chr(i: integer) : char; Gibt das Zeichen zurück, welches dem Ordinalwert (ASCII-Wert) i entspricht. (Inverse Funktion zu Ord(...)). Da die ASCII-Tabelle nur 256 Zeichen enthält, darf i nicht größer als 255 sein. Die Zeichen 0-31 und 127-255 können zu unerwarteten Ergebnissen führen und sollten deshalb nicht benutzt werden. Copy function copy(s: string; ifrom, icount: Longint): string; Gibt einen Teilstring des Strings s zurück. Start des Teilstrings ist der in ifrom angegebene Index. icount gibt die zurückzugebende Anzahl an Zeichen an. Delete procedure delete(var s: string; ifrom, icount: Longint): string;} Löscht die Anzahl icount an Zeichen aus dem String s. ifrom gibt an, an welcher Position mit dem Löschen begonnen werden soll. Insert procedure insert(s:string; var s2:string; ipos:Longint):string; Setzt den String s2 an der Stelle ipos in den String s ein. Length Function Length(s : String) : Longint; Gibt die Länge des Strings s zurück. 79 80 KAPITEL 16. ALLGEMEINE FUNKTIONEN UND PROZEDUREN Lowercase, AnsiLowerCase Function Lowercase(s : string) : string; Function AnsiLowerCase(s : string) : string; LowerCase Wandelt den gesamten String s in Kleinbuchstaben um. AnsiLowerCase berücksichtigt dabei auch europäische Sonderzeichen. Ord function Ord(c: char) : integer; Gibt den Ordinalwert (ASCII-Position) des Zeichens c zurück. (Inverse Funktion zu Chr(...)) Pos function pos(substr, s: string): Longint; Sucht den Teilstring substr im String s. Es gibt die Position des Zeichens zurück, an welchem der Teilstring in s beginnt. Falls substr nicht gefunden wird, wird -1 zurückgegeben. SetLength procedure SetLength(var S: String; L: Longint); Setzt den String s auf die die Länge L. StrGet Function StrGet(var S : String; I : Integer) : Char; Gibt das Zeichen an der Stelle i des Strings s zurück. StringOfChar Function StringOfChar(c : char;I : longInt) : string; Wiederholt das Zeichen c i-mal. StrSet procedure StrSet(c : Char; I : Integer; var s : String); Schreibt das Zeichen c an die Stelle i in den String s. Trim Function Trim(s : string) : string; Entfernt führende und abschließende Leerzeichen aus dem String s. 16.2. VERARBEITUNG VON ZAHLEN 81 Trunc Function Trunc(e : Extended) : Longint; Schneidet die Nachkommastrellen des Wertes e ab. Uppercase, AnsiUpperCase Function Uppercase(s : string) : string; Function AnsiUpperCase(s : string) : string; Uppercase Wandelt den gesamten String s in Großbuchstaben um. AnsiUpperCase berücksichtigt dabei auch europäische Sonderzeichen. 16.2 Verarbeitung von Zahlen Abs Function Abs(e : Extended) : Extended; Liefert den Absolutwert des Wertes e zurück. Cos Function Cos(e : Extended) : Extended; Gibt den Cosinus des Wertes e zurück. Int Function Int(e : Extended) : Longint; Wandelt den Wert e ohne zu runden in eine Ganzzahl um. Pi Function Pi : Extended; Liefert die Kreiszahl Pi zurück. Round Function Round(e : Extended) : Longint; Rundet kaufmännisch korrekt den Wert e auf eine Ganzzahl. Sin Function Sin(e : Extended) : Extended; Gibt den Sinus des Wertes e zurück. 82 KAPITEL 16. ALLGEMEINE FUNKTIONEN UND PROZEDUREN Sqrt Function Sqrt(e : Extended) : Extended; Zieht die Wurzel (radiert) des Wertes e. 16.3 Umwandlung zwischen Zahlen und Strings FloatToStr function floatToStr(e: extended): string; Wandelt die Gleitkomazahl e in einen String um. IntToStr function intToStr(i: Longint): string; Wandelt den Ganzzahlwert i in einen String um. StrToFloat function StrToFloat(s: string): Extended; Wandelt den String s in eine Gleitkommazahl um StrToInt function strToInt(s: string): Longint; Wandelt den String s in einen ganzzahligen Wert um. StrTointDef function strToIntDef(s: string; def: Longint): Longint; Wandelt den String s in einen ganzzahligen Wert um. Falls es sich um s nicht um keine gültige Ganzzahl handelt, wird def zurückgegeben. 16.4 Verarbeitung von Arrays GetArrayLength function getArrayLength(var v: array): Integer; Gibt die Länge des Arrays v zurück. SetArrayLength procedure setArrayLength(var v: array; i: Integer); Setzt den Array v auf die Länge i. Bevor Sie einen Array einsetzen, müssen Sie unbedingt mit dieser Funktion seine Länge festlegen. 16.5. VERARBEITUG VON ZEIT 16.5 83 Verarbeitug von Zeit Date function Date: TDateTime; Liefert das aktuelle Datum. DateTimeToUnix function DateTimeToUnix(D: TDateTime): Int64; Wandelt ein Datum in das für Unix übliche Format um. Der Rückgabewert ist dabei die anzahl der verstrichen Millisekunden seit dem 1.1.1970. DateToStr function DateToStr(D: TDateTime): string; Konvertiert ein Datum in einen String. DayOfWeek function DayOfWeek(const DateTime: TDateTime): Word; Liefert den Wochentag zum angegebenen Datum zurück: 1: Sonntag 2: Montag 3: Dienstag 4: Mittwoch 5: Donnerstag 6: Freitag 7: Samstag DecodeDate procedure DecodeDate(const DateTime: TDateTime; var Year, Month, Day: Word); Wandelt das gepackte TDateTime-Format in Jahr, Monat, Tag um. DecodeTime procedure DecodeTime(const DateTime: TDateTime; var Hour, Min, Sec, MSec: Word); Wandelt das gepackte TDateTime-Format in Stunde, Minute, Sekunde, Millisekunde um. 84 KAPITEL 16. ALLGEMEINE FUNKTIONEN UND PROZEDUREN EncodeDate, TryEncodeDate function EncodeDate(Year, Month, Day: Word): TDateTime; function TryEncodeDate(Year, Month, Day: Word; out Date: TDateTime): Boolean; EncodeDate packt Jahr, Monat, Tag in ein TDateTime-Typ. TryEncodeDate prüft zusätzlich, ob die Grenzen überschritten werden und liefert false, falls das Datum nicht konvertiert werden konnte. EncodeTime function EncodeTime(Hour, Min, Sec, MSec: Word): TDateTime; function TryEncodeTime(Hour, Min, Sec, MSec: Word; out Time: TDateTime): Boolean; EncodeTime packt Stunde, Minute, Sekunde, Millisekunde in ein TDateTimeTyp. TryEncodeTime prüft zusätzlich, ob die Grenzen überschritten werden und liefert false, falls die Zeit nicht konvertiert werden konnte. FormatDateTime function FormatDateTime(const fmt: string; D: TDateTime): string; Now function Now: TDateTime; Liefert das aktuelle Datum und Zeit. StrToDate function StrToDate(const s: string): TDateTime; Konvertiert einen String in ein TDateTime-Typ. Der String muss der Formatierung entsprechen, welche in der Systemsteuerung gewählt wurde. Time function Time: TDateTime; Liefert die aktuelle Zeit. UnixToDateTime function UnixToDateTime(U: Int64): TDateTime; Konvertiert eine Unix-Zeit (Millisekunden seit 1.1.1970) in ein TDateTime-Typ. 16.6. SONSTIGE 16.6 Sonstige sizeof function SizeOf(c: const): Longint; Liefert die Größe in der angegebenen Variablen in Bytes zurück. 85 86 KAPITEL 16. ALLGEMEINE FUNKTIONEN UND PROZEDUREN Kapitel 17 Komponenten 17.1 Visuelle Komponenten TBevel (TGraphicControl) Eigenschaften: SHAPE TBEVELSHAPE STYLE TBEVELSTYLE PARENTSHOWHINT Boolean MODALRESULT LONGINT DRAGCURSOR Longint DRAGMODE TDragMode PARENTFONT Boolean PARENTSHOWHINT Boolean POPUPMENU TPopupMenu Achtung: Löschen Sie TBevel Ereignisse: NICHT mit free aus dem Speicher. ONCLICK TNotifyEvent ONDRAGDROP TDragDropEvent ONDRAGOVER TDragOverEvent TBitBtn (TButton) ONENDDRAG TEndDragEvent Eigenschaften: ONENTER TNotifyEvent GLYPH TBITMAP ONEXIT TNotifyEvent KIND TBITBTNKIND ONKEYDOWN TKeyEvent LAYOUT TBUTTONLAYOUT ONKEYPRESS TKeyPressEvent MARGIN INTEGER ONKEYUP TKeyEvent NUMGLYPHS BYTE ONMOUSEDOWN TMouseEvent PARENTSHOWHINT Boolean ONMOUSEMOVE TMouseMoveEvent STYLE TBUTTONSTYLE ONMOUSEUP TMouseEvent SPACING INTEGER ONSTARTDRAG TStartDragEvent Ereignisse: ONENTER TNotifyEvent ONEXIT TNotifyEvent TButton (TButtonControl) Eigenschaften: CANCEL BOOLEAN CAPTION String DEFAULT BOOLEAN FONT TFont TCheckBox Checkbox) (TCustom- Eigenschaften: ALIGNMENT TAlignment ALLOWGRAYED Boolean CAPTION String CHECKED Boolean COLOR Longint FONT TFont 87 KAPITEL 17. KOMPONENTEN 88 CTL3D Boolean DRAGCURSOR Longint DRAGMODE TDragMode PARENTCOLOR Boolean PARENTCTL3D Boolean PARENTFONT Boolean PARENTSHOWHINT Boolean POPUPMENU TPopupMenu STATE TCheckBoxState Ereignisse: ONCLICK TNotifyEvent ONDRAGDROP TDragDropEvent ONDRAGOVER TDragOverEvent ONENDDRAG TEndDragEvent ONENTER TNotifyEvent ONEXIT TNotifyEvent ONKEYDOWN TKeyEvent ONKEYPRESS TKeyPressEvent ONKEYUP TKeyEvent ONMOUSEDOWN TMouseEvent ONMOUSEMOVE TMouseMoveEvent ONMOUSEUP TMouseEvent ONSTARTDRAG TStartDragEvent TComboBox ComboBox) (TCustom- Eigenschaften: STYLE TComboBoxStyle COLOR Longint DROPDOWNCOUNT Integer FONT TFont MAXLENGTH Integer SORTED Boolean TEXT string CTL3D Boolean DRAGMODE TDragMode DRAGCURSOR Longint ITEMHEIGHT Integer PARENTCOLOR Boolean PARENTCTL3D Boolean PARENTFONT Boolean PARENTSHOWHINT Boolean POPUPMENU TPopupMenu Ereignisse: ONCHANGE TNotifyEvent ONCLICK TNotifyEvent ONDBLCLICK TNotifyEvent ONKEYDOWN TKeyEvent ONKEYPRESS TKeyPressEvent ONKEYUP TKeyEvent ONDRAGDROP TDragDropEvent ONDRAGOVER TDragOverEvent ONDRAWITEM TDrawItemEvent ONDROPDOWN TNotifyEvent ONENDDRAG TEndDragEvent ONENTER TNotifyEvent ONEXIT TNotifyEvent ONMEASUREITEM TMeasureItemEvent ONSTARTDRAG TStartDragEvent TEdit (TCustomEdit) Eigenschaften: AUTOSELECT Boolean AUTOSIZE Boolean BORDERSTYLE BorderStyle COLOR Longint FONT TFont HIDESELECTION Boolean MAXLENGTH Integer PASSWORDCHAR Char READONLY Boolean TEXT string CHARCASE TEditCharCase CTL3D Boolean DRAGCURSOR Longint DRAGMODE TDragMode OEMCONVERT Boolean PARENTCOLOR Boolean PARENTCTL3D Boolean PARENTFONT Boolean PARENTSHOWHINT Boolean POPUPMENU TPopupMenu Ereignisse: ONCHANGE TNotifyEvent ONCLICK TNotifyEvent ONDBLCLICK TNotifyEvent ONKEYDOWN TKeyEvent ONKEYPRESS TKeyPressEvent ONKEYUP TKeyEvent ONDRAGDROP TDragDropEvent ONDRAGOVER TDragOverEvent ONENDDRAG TEndDragEvent ONENTER TNotifyEvent ONEXIT TNotifyEvent ONMOUSEDOWN TMouseEvent 17.1. VISUELLE KOMPONENTEN ONMOUSEMOVE TMouseMoveEvent ONMOUSEUP TMouseEvent ONSTARTDRAG TStartDragEvent TForm (TScrollingWinControl) Eigenschaften: ACTIVE BOOLEAN read-only ACTIVECONTROL TWINCONTROL BORDERICONS Longint BORDERSTYLE TFORMBORDERSTYLE CAPTION STRING AUTOSCROLL BOOLEAN COLOR TCOLOR FONT TFONT FORMSTYLE TFORMSTYLE KEYPREVIEW BOOLEAN POSITION TPOSITION ACTIVEMDICHILD TFORM read-only ACTIVEOLECONTROL TWINCONTROL CANVAS TCANVAS read-only CLIENTHANDLE HWND read-only DROPTARGET BOOLEAN MODALRESULT Longint MDICHILDCOUNT INTEGER read-only MDICHILDREN[i:INTEGER]: TFORM read-only OLEFORMOBJECT TOLEFORMOBJECT TILEMODE TTILEMODE ICON TICON MENU TMAINMENU OBJECTMENUITEM TMENUITEM PIXELSPERINCH INTEGER PRINTSCALE TPRINTSCALE SCALED BOOLEAN WINDOWSTATE TWINDOWSTATE WINDOWMENU TMENUITEM CTL3D BOOLEAN POPUPMENU TPOPUPMENU Methoden: constructor CREATENEW(AOWNER: TCOMPONENT; Dummy: Longint) procedure CLOSE procedure HIDE procedure SHOW function SHOWMODAL:INTEGER procedure RELEASE procedure ARRANGEICONS 89 procedure CASCADE function CLOSEQUERY:BOOLEAN procedure DEFOCUSCONTROL( CONTROL:TWINCONTROL; REMOVING:BOOLEAN) procedure FOCUSCONTROL(CONTROL: TWINCONTROL) function GETFORMIMAGE:TBITMAP procedure NEXT procedure PREVIOUS procedure PRINT procedure SENDCANCELMODE (SENDER: TCONTROL) function SETFOCUSEDCONTROL (CONTROL:TWINCONTROL):BOOLEAN procedure TILE Ereignisse: ONDRAGDROP TDRAGDROPEVENT ONDRAGOVER TDRAGOVEREVENT ONMOUSEDOWN TMOUSEEVENT ONMOUSEMOVE TMOUSEMOVEEVENT ONMOUSEUP TMOUSEEVENT ONPAINT TNOTIFYEVENT ONACTIVATE TNOTIFYEVENT ONCLICK TNOTIFYEVENT ONDBLCLICK TNOTIFYEVENT ONCLOSE TCLOSEEVENT ONCLOSEQUERY TCLOSEQUERYEVENT ONCREATE TNOTIFYEVENT ONDESTROY TNOTIFYEVENT ONDEACTIVATE TNOTIFYEVENT ONHIDE TNOTIFYEVENT ONKEYDOWN TKEYEVENT ONKEYPRESS TKEYPRESSEVENT ONKEYUP TKEYEVENT ONRESIZE TNOTIFYEVENT ONSHOW TNOTIFYEVENT TGroupBox GroupBox) Eigenschaften: CAPTION String COLOR Longint FONT TFont CTL3D Boolean DRAGCURSOR Longint DRAGMODE TDragMode (TCustom- 90 PARENTCOLOR Boolean PARENTCTL3D Boolean PARENTFONT Boolean PARENTSHOWHINT Boolean POPUPMENU TPopupMenu Ereignisse: ONCLICK TNotifyEvent ONDBLCLICK TNotifyEvent ONDRAGDROP TDragDropEvent ONDRAGOVER TDragOverEvent ONENDDRAG TEndDragEvent ONENTER TNotifyEvent ONEXIT TNotifyEvent ONMOUSEDOWN TMouseEvent ONMOUSEMOVE TMouseMoveEvent ONMOUSEUP TMouseEvent ONSTARTDRAG TStartDragEvent THeader (TCustomControl) Eigenschaften: SECTIONWIDTH[integer] INTEGER ALLOWRESIZE BOOLEAN BORDERSTYLE TBORDERSTYLE FONT TFont SECTIONS TSTRINGS PARENTFONT Boolean PARENTSHOWHINT Boolean POPUPMENU TPopupMenu Ereignisse: ONSIZING TSECTIONEVENT ONSIZED TSECTIONEVENT TImage (TGraphicControl) Eigenschaften: CANVAS TCANVAS read-only AUTOSIZE BOOLEAN CENTER BOOLEAN PICTURE TPICTURE STRETCH BOOLEAN RAGCURSOR Longint DRAGMODE TDragMode PARENTSHOWHINT Boolean POPUPMENU TPopupMenu Ereignisse: ONCLICK TNotifyEvent KAPITEL 17. KOMPONENTEN ONDBLCLICK TNotifyEvent ONDRAGDROP TDragDropEvent ONDRAGOVER TDragOverEvent ONENDDRAG TEndDragEvent ONMOUSEDOWN TMouseEvent ONMOUSEMOVE TMouseMoveEvent ONMOUSEUP TMouseEvent ONSTARTDRAG TStartDragEvent TLabel (TCustomLabel) Eigenschaften: ALIGNMENT TAlignment AUTOSIZE Boolean CAPTION String COLOR Longint FOCUSCONTROL TWinControl FONT TFont WORDWRAP Boolean DRAGCURSOR Longint DRAGMODE TDragMode PARENTCOLOR Boolean PARENTFONT Boolean PARENTSHOWHINT Boolean POPUPMENU TPopupMenu SHOWACCELCHAR Boolean TRANSPARENT Boolean Ereignisse: ONCLICK TNotifyEvent ONDBLCLICK TNotifyEvent ONDRAGDROP TDragDropEvent ONDRAGOVER TDragOverEvent ONENDDRAG TEndDragEvent ONMOUSEDOWN TMouseEvent ONMOUSEMOVE TMouseMoveEvent ONMOUSEUP TMouseEvent ONSTARTDRAG TStartDragEvent TListBox Box) (TCustomList- Eigenschaften: BORDERSTYLE TBorderStyle COLOR Longint FONT TFont MULTISELECT Boolean SORTED Boolean STYLE TListBoxStyle COLUMNS Integer 17.1. VISUELLE KOMPONENTEN CTL3D Boolean DRAGCURSOR Longint DRAGMODE TDragMode EXTENDEDSELECT Boolean INTEGRALHEIGHT Boolean ITEMHEIGHT Integer PARENTCOLOR Boolean PARENTCTL3D Boolean PARENTFONT Boolean PARENTSHOWHINT Boolean POPUPMENU TPopupMenu TABWIDTH Integer Ereignisse: ONCLICK TNotifyEvent ONDBLCLICK TNotifyEvent ONKEYDOWN TKeyEvent ONKEYPRESS TKeyPressEvent ONKEYUP TKeyEvent ONDRAGDROP TDragDropEvent ONDRAGOVER TDragOverEvent ONDRAWITEM TDrawItemEvent ONENDDRAG TEndDragEvent ONENTER TNotifyEvent ONEXIT TNotifyEvent ONMEASUREITEM TMeasureItemEvent ONMOUSEDOWN TMouseEvent ONMOUSEMOVE TMouseMoveEvent ONMOUSEUP TMouseEvent ONSTARTDRAG TStartDragEvent TMemo (TCustomMemo) Eigenschaften: ALIGNMENT TAlignment BORDERSTYLE BorderStyle COLOR Longint FONT TFont HIDESELECTION Boolean MAXLENGTH Integer READONLY Boolean SCROLLBARS TScrollStyle WANTRETURNS Boolean WANTTABS Boolean WORDWRAP Boolean CTL3D Boolean DRAGCURSOR Longint DRAGMODE TDragMode OEMCONVERT Boolean PARENTCOLOR Boolean 91 PARENTCTL3D Boolean PARENTFONT Boolean PARENTSHOWHINT Boolean POPUPMENU TPopupMenu Ereignisse: ONCHANGE TNotifyEvent ONCLICK TNotifyEvent ONDBLCLICK TNotifyEvent ONKEYDOWN TKeyEvent ONKEYPRESS TKeyPressEvent ONKEYUP TKeyEvent ONDRAGDROP TDragDropEvent ONDRAGOVER TDragOverEvent ONENDDRAG TEndDragEvent ONENTER TNotifyEvent ONEXIT TNotifyEvent ONMOUSEDOWN TMouseEvent ONMOUSEMOVE TMouseMoveEvent ONMOUSEUP TMouseEvent ONSTARTDRAG TStartDragEvent TNotebook (TCustomControl) Eigenschaften: ACTIVEPAGE STRING COLOR Longint FONT TFont PAGEINDEX INTEGER PAGES TSTRINGS CTL3D Boolean DRAGCURSOR Longint DRAGMODE TDragMode PARENTCOLOR Boolean PARENTCTL3D Boolean PARENTFONT Boolean PARENTSHOWHINT Boolean POPUPMENU TPopupMenu Ereignisse: ONCLICK TNotifyEvent ONDBLCLICK TNotifyEvent ONPAGECHANGED TNOTIFYEVENT ONDRAGDROP TDragDropEvent ONDRAGOVER TDragOverEvent ONENDDRAG TEndDragEvent ONENTER TNotifyEvent ONEXIT TNotifyEvent ONMOUSEDOWN TMouseEvent KAPITEL 17. KOMPONENTEN 92 ONMOUSEMOVE TMouseMoveEvent ONMOUSEUP TMouseEvent ONSTARTDRAG TStartDragEvent TPaintBox trol) (TGraphicCon- Eigenschaften: CANVAS TCanvas read-only COLOR Longint FONT TFont RAGCURSOR Longint DRAGMODE TDragMode PARENTCOLOR Boolean PARENTFONT Boolean PARENTSHOWHINT Boolean POPUPMENU TPopupMenu Ereignisse: ONCLICK TNotifyEvent ONDBLCLICK TNotifyEvent ONPAINT TNOTIFYEVENT ONDRAGDROP TDragDropEvent ONDRAGOVER TDragOverEvent ONENDDRAG TEndDragEvent ONMOUSEDOWN TMouseEvent ONMOUSEMOVE TMouseMoveEvent ONMOUSEUP TMouseEvent ONSTARTDRAG TStartDragEvent TPanel (TCustomPanel) Eigenschaften: ALIGNMENT TAlignment BEVELINNER TPanelBevel BEVELOUTER TPanelBevel BEVELWIDTH TBevelWidth BORDERWIDTH TBorderWidth BORDERSTYLE TBorderStyle CAPTION String COLOR Longint FONT TFont DRAGCURSOR Longint DRAGMODE TDragMode CTL3D Boolean LOCKED Boolean PARENTCOLOR Boolean PARENTCTL3D Boolean PARENTFONT Boolean PARENTSHOWHINT Boolean POPUPMENU TPopupMenu Ereignisse: ONCLICK TNotifyEvent ONDBLCLICK TNotifyEvent ONDRAGDROP TDragDropEvent ONDRAGOVER TDragOverEvent ONENDDRAG TEndDragEvent ONENTER TNotifyEvent ONEXIT TNotifyEvent ONMOUSEDOWN TMouseEvent ONMOUSEMOVE TMouseMoveEvent ONMOUSEUP TMouseEvent ONRESIZE TNotifyEvent ONSTARTDRAG TStartDragEvent TRadioButton Control) (TButton- Eigenschaften: ALIGNMENT TALIGNMENT CAPTION String CHECKED BOOLEAN COLOR Longint FONT TFont CTL3D Boolean DRAGCURSOR Longint DRAGMODE TDragMode PARENTCOLOR Boolean PARENTCTL3D Boolean PARENTFONT Boolean PARENTSHOWHINT Boolean POPUPMENU TPopupMenu Ereignisse: ONCLICK TNotifyEvent ONDBLCLICK TNotifyEvent ONDRAGDROP TDragDropEvent ONDRAGOVER TDragOverEvent ONENDDRAG TEndDragEvent ONENTER TNotifyEvent ONEXIT TNotifyEvent ONKEYDOWN TKeyEvent ONKEYPRESS TKeyPressEvent ONKEYUP TKeyEvent ONMOUSEDOWN TMouseEvent ONMOUSEMOVE TMouseMoveEvent ONMOUSEUP TMouseEvent ONSTARTDRAG TStartDragEvent 17.2. NICHT-VISUELLE KOMPONENTEN 93 TRadioGroup (TCustomRa- TSpeedButton dioGroup) Control) Eigenschaften: CAPTION String COLOR Longint COLUMNS Integer FONT TFont ITEMINDEX Integer ITEMS TStrings CTL3D Boolean DRAGCURSOR Longint DRAGMODE TDragMode PARENTCOLOR Boolean PARENTCTL3D Boolean PARENTFONT Boolean PARENTSHOWHINT Boolean POPUPMENU TPopupMenu Ereignisse: ONCLICK TNotifyEvent ONDRAGDROP TDragDropEvent ONDRAGOVER TDragOverEvent ONENDDRAG TEndDragEvent ONENTER TNotifyEvent ONEXIT TNotifyEvent ONSTARTDRAG TStartDragEvent TShape (TGraphicControl) Eigenschaften: BRUSH TBRUSH PEN TPEN SHAPE TSHAPETYPE DRAGCURSOR Longint DRAGMODE TDragMode PARENTSHOWHINT Boolean (TGraphic- Eigenschaften: ALLOWALLUP BOOLEAN GROUPINDEX INTEGER DOWN BOOLEAN CAPTION String FONT TFont GLYPH TBITMAP LAYOUT TBUTTONLAYOUT MARGIN INTEGER NUMGLYPHS BYTE PARENTFONT Boolean PARENTSHOWHINT Boolean SPACING INTEGER Ereignisse: ONCLICK TNotifyEvent ONDBLCLICK TNotifyEvent ONMOUSEDOWN TMouseEvent ONMOUSEMOVE TMouseMoveEvent ONMOUSEUP TMouseEvent TTimer (TComponent) Eigenschaften: ENABLED BOOLEAN INTERVAL CARDINAL Ereignisse: ONTIMER TNOTIFYEVENT 17.2 Nicht-visuelle Komponenten Methoden: procedure STYLECHANGED (SENDER:TOBJECT)) TApplication nent) Ereignisse: ONDRAGDROP TDragDropEvent ONDRAGOVER TDragOverEvent ONENDDRAG TEndDragEvent ONMOUSEDOWN TMouseEvent ONMOUSEMOVE TMouseMoveEvent ONMOUSEUP TMouseEvent ONSTARTDRAG TStartDragEvent Eigenschaften: ACTIVE BOOLEAN read-only EXENAME STRING read-only HANDLE HWND HINT STRING MAINFORM TFORM read-only SHOWHINT BOOLEAN SHOWMAINFORM BOOLEAN TERMINATED BOOLEAN read-only (TCompo- 94 TITLE STRING UPDATEFORMATSETTINGS BOOLEAN DIALOGHANDLE HWND HELPFILE STRING HINTCOLOR TCOLOR HINTPAUSE INTEGER HINTSHORTPAUSE INTEGER HINTHIDEPAUSE INTEGER ICON TICON Methoden: procedure BRINGTOFRONT function MESSAGEBOX(TEXT, CAPTION:PCHAR;FLAGS:WORD) :INTEGER procedure MINIMIZE procedure PROCESSMESSAGES procedure RESTORE procedure TERMINATE procedure CONTROLDESTROYED (CONTROL:TCONTROL) procedure CANCELHINT procedure CREATEHANDLE procedure HANDLEEXCEPTION (SENDER:TOBJECT) procedure HANDLEMESSAGE function HELPCOMMAND(COMMAND: INTEGER;DATA:LONGINT):BOOLEAN function HELPCONTEXT(CONTEXT: THELPCONTEXT):BOOLEAN function HELPJUMP(JUMPID :STRING):BOOLEAN procedure HIDEHINT procedure HINTMOUSEMESSAGE (CONTROL:TCONTROL; var MESSAGE:TMESSAGE) procedure HOOKMAINWINDOW (HOOK: TWINDOWHOOK) procedure INITIALIZE procedure NORMALIZETOPMOSTS procedure RESTORETOPMOSTS procedure RUN procedure SHOWEXCEPTION (E:EXCEPTION) procedure UNHOOKMAINWINDOW (HOOK:TWINDOWHOOK) Ereignisse: ONACTIVATE TNOTIFYEVENT ONDEACTIVATE TNOTIFYEVENT KAPITEL 17. KOMPONENTEN ONIDLE TIDLEEVENT ONHINT TNOTIFYEVENT ONMINIMIZE TNOTIFYEVENT ONRESTORE TNOTIFYEVENT ONHELP THELPEVENT TBrush (TGraphicsObject) Eigenschaften: COLOR TCOLOR STYLE TBRUSHSTYLE Methoden: constructor CREATE TButtonControl (TWinControl) keine neuen Eigenschaften, Methoden oder Ereignisse TCanvas (TPersistent) Eigenschaften: Handle Integer Pixels Integer Integer Integer Brush TBrush read-only CopyMode Byte Font TFont read-only Pen TPen read-only Methoden: procedure Arc(X1, Y1, X2, Y2, X3, Y3, X4, Y4: Integer) procedure Chord(X1, Y1, X2, Y2, X3, Y3, X4, Y4: Integer) procedure Draw(X, Y: Integer; Graphic: TGraphic) procedure Ellipse(X1, Y1, X2, Y2: Integer) procedure FloodFill(X,Y: Integer; Color:TColor; FillStyle:Byte) procedure LineTo(X, Y: Integer) procedure MoveTo(X, Y: Integer) procedure Pie(X1, Y1, X2, Y2, X3, Y3, X4, Y4: Integer) procedure Rectangle(X1, Y1, X2, Y2: Integer) procedure Refresh 17.2. NICHT-VISUELLE KOMPONENTEN procedure RoundRect(X1, Y1, X2, Y2, X3, Y3: Integer) function TextHeight(Text: string): Integer procedure TextOut(X,Y:Integer; Text: string) function TextWidth (Text: string): Integer TComponent (TPersistent) Eigenschaften: Owner TComponent COMPONENTS:INTEGER TCOMPONENT INTEGER read-only COMPONENTCOUNT INTEGER read-only COMPONENTINDEX INTEGER COMPONENTSTATE Byte read-only DESIGNINFO LONGINT NAME STRING TAG LONGINT Methoden: function FindComponent (AName: string): TComponent; constructor Create(AOwner: TComponent); virtual; procedure DESTROYCOMPONENTS procedure DESTROYING procedure FREENOTIFICATION (ACOMPONENT:TCOMPONENT) procedure INSERTCOMPONENT (ACOMPONENT:TCOMPONENT) procedure REMOVECOMPONENT (ACOMPONENT:TCOMPONENT) TControl (TComponent) Eigenschaften: Left Integer Top Integer Width Integer Height Integer Hint String Align TAlign ClientHeight Longint ClientWidth Longint ShowHint Boolean Visible Boolean 95 ENABLED BOOLEAN HINT STRING CURSOR TCURSOR HasParent Boolean read-only Methoden: constructor Create (AOwner: TComponent); procedure BringToFront; procedure Hide; procedure Invalidate;virtual; procedure refresh; procedure Repaint;virtual; procedure SendToBack; procedure Show; procedure Update; procedure SetBounds(x,y,w,h: Integer);virtual; function Dragging: Boolean; procedure BEGINDRAG(IMMEDIATE: BOOLEAN) function CLIENTTOSCREEN(POINT: TPOINT):TPOINT procedure ENDDRAG(DROP:BOOLEAN) function GETTEXTBUF(BUFFER: PCHAR;BUFSIZE:INTEGER) :INTEGER function GETTEXTLEN:INTEGER function PERFORM(MSG:CARDINAL; WPARAM,LPARAM:LONGINT):LONGINT function SCREENTOCLIENT(POINT: TPOINT):TPOINT procedure SETTEXTBUF (BUFFER:PCHAR) TCustomCheckBox (TButtonControl) keine neue Eigenschaften TCustomComboBox (TWinControl) Eigenschaften: DROPPEDDOWN BOOLEAN ITEMS TSTRINGS ITEMINDEX INTEGER CANVAS TCANVAS read-only SELLENGTH INTEGER SELSTART INTEGER KAPITEL 17. KOMPONENTEN 96 SELTEXT STRING EXISTING:BOOLEAN):INTEGER function ITEMRECT(INDEX: INTEGER):TRECT Methoden: procedure CLEAR procedure SELECTALL TCustomEdit trol) TCustomMemo mEdit) (TCusto- (TWinCon- Eigenschaften: LINES TSTRINGS Eigenschaften: MODIFIED BOOLEAN SELLENGTH INTEGER SELSTART INTEGER SELTEXT STRING TEXT string TCustomPanel Control) (TCustom- keine eigenen Eigenschaften, Methoden oder Ereignisse. Methoden: procedure CLEAR procedure CLEARSELECTION procedure SELECTALL procedure COPYTOCLIPBOARD procedure CUTTOCLIPBOARD procedure PASTEFROMCLIPBOARD function GETSELTEXTBUF(BUFFER: PCHAR;BUFSIZE:INTEGER) :INTEGER procedure SETSELTEXTBUF (BUFFER:PCHAR) TCustomLabel (TGraphicsControl) Eigenschaften: CANVAS TCANVAS TCustomRadioGroup (TCustomGroupBox) keine eigenen Eigenschaften, Methoden oder Ereignisse. TFont (TGraphicsObject) Eigenschaften: Handle Integer read-only PixelsPerInch Integer Color Integer Height Integer Name string Pitch Byte Size Integer Handle Integer PixelsPerInch Integer Methoden: TCustomListBox Control) (TWin- constructor Create; Eigenschaften: ITEMS TSTRINGS ITEMINDEX INTEGER SELCOUNT INTEGER read-only SELECTED[integer] BOOLEAN CANVAS TCANVAS read-only TOPINDEX INTEGER Methoden: procedure CLEAR function ITEMATPOS(POS:TPOINT; Schriftattribute: clDefault Standard fsBold fett fsItalic kursiv fsUnderline unterstrichen fsStrikeout durchgestrichen TGraphicsObject (TPersistent) Ereignisse: ONCHANGE TNOTIFYEVENT 17.2. NICHT-VISUELLE KOMPONENTEN TObject (kein Vorfahr) Methoden: constructor Create procedure Free TPage (TCustomControl) Eigenschaften: CAPTION String 97 ONDRAGOVER TDragOverEvent ONENDDRAG TEndDragEvent ONENTER TNotifyEvent ONEXIT TNotifyEvent ONKEYDOWN TKeyEvent ONKEYPRESS TKeyPressEvent ONKEYUP TKeyEvent ONSCROLL TSCROLLEVENT ONSTARTDRAG TStartDragEvent TPen (TGraphicsObject) TScrollingWindow Control) (TWin- Eigenschaften: COLOR TCOLOR MODE TPENMODE STYLE TPENSTYLE WIDTH INTEGER Eigenschaften: HORZSCROLLBAR TCONTROLSCROLLBAR VERTSCROLLBAR TCONTROLSCROLLBAR Methoden: constructor CREATE Methoden: procedure SCROLLINVIEW(ACONTROL :TCONTROL) TPersistent (TObject) TStringList (TStrings) Methoden: procedure Assign(Source: TPersistent) Eigenschaften: DUPLICATES TDUPLICATES SORTED BOOLEAN TScrollBar (TWinControl) Methoden: function FIND(S:STRING; var INDEX:INTEGER):BOOLEAN; procedure SORT; Eigenschaften: KIND TSCROLLBARKIND MAX INTEGER MIN INTEGER POSITION INTEGER CTL3D Boolean DRAGCURSOR Longint DRAGMODE TDragMode LARGECHANGE TSCROLLBARINC PARENTCTL3D Boolean PARENTSHOWHINT Boolean POPUPMENU TPopupMenu SMALLCHANGE TSCROLLBARINC Methoden: procedure SETPARAMS(APOSITION, AMIN,AMAX:INTEGER) Ereignisse: ONCHANGE TNOTIFYEVENT ONDRAGDROP TDragDropEvent Ereignisse: ONCHANGE TNOTIFYEVENT ONCHANGING TNOTIFYEVENT TStrings (TPersistent) Eigenschaften: Names String Integer Values String String Count Integer read-only Text String CommaText String Strings String Integer Methoden: function Add(S:string):Integer procedure Append(S: string) procedure AddStrings 98 (Strings: TStrings) procedure Clear procedure Delete (Index: Integer) function IndexOf (const S: string): Integer procedure Insert(Index: Integer; S: string) procedure LoadFromFile (FileName: string) procedure SaveToFile (FileName: string) procedure BeginUpdate procedure EndUpdate function Equals(Strings: TStrings): Boolean procedure Exchange(Index1, Index2: Integer) function IndexOfName(Name: string): Intege) procedure LoadFromStream (Stream: TStream) procedure Move(CurIndex, NewIndex: Integer) procedure SaveToStream (Stream: TStream) procedure SetText(Text: PChar) function ADDOBJECT(S:STRING; AOBJECT:TOBJECT):INTEGER procedure APPEND(S:STRING) function GETTEXT:PCHAR function INDEXOFOBJECT(AOBJECT: TOBJECT):INTEGER procedure INSERTOBJECT(INDEX: INTEGER;S:STRING; AOBJECT:TOBJECT) KAPITEL 17. KOMPONENTEN Methoden: function HandleAllocated: Boolean; procedure HandleNeeded; procedure EnableAlign; procedure RemoveControl (AControl: TControl); procedure InsertControl (AControl: TControl); procedure Realign; procedure ScaleBy(M, D: Integer); procedure ScrollBy(DeltaX, DeltaY: Integer); procedure SetFocus; virtual; function CANFOCUS:BOOLEAN function CONTAINSCONTROL (CONTROL:TCONTROL):BOOLEAN procedure DISABLEALIGN function FOCUSED:BOOLEAN procedure PAINTTO(DC:Longint; X,Y:INTEGER) procedure UPDATECONTROLSTATE 17.3 Typen TAlign alNone, alTop, alBottom, alLeft, alRight, alClient TAlignment taLeftJustify, taRightJustify, taCenter TBevelShape TWinControl (TControl) Eigenschaften: Handle Longint Showing Boolean read-only TabOrder Integer TabStop Boolean BRUSH TBRUSH read-only CONTROLS TCONTROL INTEGER read-only CONTROLCOUNT INTEGER read-only HELPCONTEXT LONGINT bsBox, bsFrame, bsTopLine, bsBottomLine, bsLeftLine, bsRightLine TBevelStyle bsLowered, bsRaised TBitBtnKind bkCustom, bkOK, bkCancel, bkHelp, bkYes, bkNo, bkClose, bkAbort, bkRetry, bkIgnore, bkAll 17.3. TYPEN 99 TBorderStyle TColor siehe Kapitel 17.3 auf der nächsten Seite (TFormBorderStyle). integer TBorderWidth Longint TBrushStyle bsSolid, bsClear, bsHorizontal, bsVertical, bsFDiagonal, bsBDiagonal, bsCross, bsDiagCross TButtonLayout blGlyphLeft, blGlyphRight, phTop, blGlyphBottom blGly- TButtonState bsUp, bsDisabled, bsDown, bsExclusive TButtonStyle bsAutoDetect, bsWin31, bsNew TCheckBoxState cbUnchecked, cbChecked, cbGrayed TCloseAction caNone, caHide, caFree, caMinimize TCloseEvent Vordefinierte Werte: clScrollBar Farbe für Scrollbars clBackground Hintergrundfarbe clActiveCaption Farbe für aktives Fenster clInactiveCaption Farbe für inaktives Fenster clMenu Farbe für Menüs clWindow Farbe für ein Fenster clWindowFrame Farbe für Fensterrahmen clMenuText Farbe für Menüeinträge clWindowText Farbe für Fensterbeschriftungen clCaptionText Farbe für die Titelzeile clActiveBorder Farbe für ein aktives Fenster clInactiveBorder Farbe für ein inaktives Fenster clAppWorkSpace Farbe für den Arbeitsbereich clHighlight clHighlightText clBtnFace Farbe für ein Knopf clBtnShadow Farbe für den Schatten eines Knopfes clGrayText Farbe für deaktivierten Text clBtnText Farbe für die Knopfbeschriftung clInactiveCaptionText Farbe für Beschriftung einer inaktiven Titelzeile clBtnHighlight cl3DDkShadow cl3DLight clInfoText Farbe für einen Popup-Text clInfoBk Farbe für ein Popup-Fenster clBlack schwarz clMaroon dunkelrot clGreen grün clOlive oliv clNavy dunkelblau TCloseQueryEvent clPurple purpur procedure(Sender: TObject; var Can- clTeal dunkelcyan Close: Boolean) clGray grau procedure(Sender: TObject; var Action: TCloseAction) 100 clSilver hellgrau clRed rot clLime hellgrün clYellow gelb clBlue blau clFuchsia türkis clAqua cyan clLtGray hellgrau clDkGray dunkelgrau clWhite weiss KAPITEL 17. KOMPONENTEN TEditCharCase ecNormal, ecUpperCase, ecLowerCase TEndDragEvent procedure(Sender, Target: TObject; X, Y: Integer) TFontPitch fpDefault, fpVariable, fpFixed TComboBoxStyle TFormBorderStyle csDropDown, csSimple, csDropDownList, csOwnerDrawFixed, bsNone, bsSingle, bsSizeable, bsDialog, bsToolWindow, bsSizeToolWin csOwnerDrawVariable TDragDropEvent TFormStyle procedure(Sender, Source: TObject;X, Y: Integer) fsNormal, fsMDIChild, fsMDIForm, fsStayOnTop TDragKind dkDrag, dkDock TDragMode dmManual, dmAutomatic TGetStrProc procedure(const S: string) THelpEvent function (Command: Word; Data: Longint; var CallHelp: Boolean): Boolean; TDragOverEvent TIdleEvent procedure(Sender, Source: TObject; X, Y: Integer; State: TDragState; var procedure (Sender: TObject; var Done: Boolean) Accept: Boolean) TDragState TKeyEvent procedure(Sender: TObject; var Key: dsDragEnter, dsDragLeave, dsDragWord; Shift: Byte); Move TDrawItemEvent procedure(Control: TWinControl; Index: Integer; Rect: TRect; State: Byte) TKeyPressEvent procedure(Sender: TObject; var Key: Char); TListBoxStyle TDuplicates dupIgnore, dupAccept, dupError lbStandard, lbOwnerDrawFixed, lbOwnerDrawVariable 17.3. TYPEN 101 TMeasureItemEvent TPosition procedure(Control: TWinControl; Index: Integer; var Height: Integer) poDesigned, poDefault, poDefaultPosOnly, poDefaultSizeOnly, poScreenCenter TMouseButton TPrintScale mbLeft, mbRight, mbMiddle poNone, poProportional, poPrintToFit TMouseEvent procedure(Sender: TObject; Button: Byte; Shift: Byte; X, Y: Integer); TScrollBarKind sbHorizontal, sbVertical TMouseMoveEvent procedure(Sender: TObject; Byte; X, Y: Integer); TNotifyEvent Shift: TScrollCode scLineUp, scLineDown, scPageUp, scPageDown, scPosition, scTrack, scTop, scBottom, scEndScroll procedure(Sender: TObject); TScrollEvent TOperation procedure(Sender: TObject; ScrollCode: TScrollCode;var ScrollPos: Integer) opInsert, opRemove TPenelBevel TScrollStyle bvNone, bvLowered, bvRaised ssNone, ssHorizontal, ssVertical, ssBoth TPenMode TSectionEvent pmBlack, pmWhite, pmNop, pmNot, procedure(Sender: TObject; ASection, pmCopy, pmNotCopy, pmMergePen- AWidth: Integer) Not, pmMaskPenNot, pmMergeNotPen, pmMaskNotPen, pmMerge, pmTShapeType NotMerge, pmMask, pmNotMask, pmstRectangle, stSquare, stRoundRect, Xor, pmNotXor stRoundSquare, stEllipse, stCircle TPenStyle TWindowState psSolid, psDash, psDot, psDashDot, psDashDotDot, psClear, psInsideFra- wsNormal, wsMinimized, wsMaximime zed 102 KAPITEL 17. KOMPONENTEN Kapitel 18 Appomatox-spezifische Funktionen Appomatox bietet zusätzlich, über den eigentlichen Sprachumfang der Sprache Object Pascal hinausgehende, Funktionen an, die insbesondere das Programmieren von mathematischen Anwendungen vereinfachen und die Integration in Appomatox gewährleisten. 18.1 Mathematische Funktionen ApAcos function ApAcos(x:extended) : extended); Berechnet den Arcus-Cosinus. Es wird dabei berücksichtigt, ob der Benutzer unter Optionen Winkel in Grad- oder Bogenmaß gewählt hat. ApArcosh function ApArcosh(x:extended):extended); Berechnet den Area-Cosinus. ApArsinh function ApArsinh(x:extended):extended); ApArtanh function ApArtanh(x:extended):extended); Berechnet den Area-Tangens. 103 104 KAPITEL 18. APPOMATOX-SPEZIFISCHE FUNKTIONEN ApAsin function ApAsin(x:extended) : extended); Berechnet den Arcus-Sinus. Es wird dabei berücksichtigt, ob der Benutzer unter Optionen Winkel in Grad- oder Bogenmaß gewählt hat. ApAtan function ApAtan(m:extended) : extended); Berechnet den Arcus-Tangens. Es wird dabei berücksichtigt, ob der Benutzer unter Optionen Winkel in Grad- oder Bogenmaß gewählt hat. ApCos function ApCos(m:extended) : extended); Berechnet den Cosinus. Es wird dabei berücksichtigt, ob der Benutzer unter Optionen Winkel in Grad- oder Bogenmaß gewählt hat. ApCosh function ApCosh(x:extended):extended); Berechnet den Cosinus-Hyperbolicus. ApExp function ApExp(X: extended): extended); Berechnet die Potenz zur Euler’schen Zahl e. ApFakult function ApFakult(x:integer) : extended); Berechnet die Fakultät von x. ApIsge function ApIsge(x:extended) : Boolean); Prüft, ob x eine gerade Zahl ist (d.h. ohne Rest durch 2 teilbar ist). Liefert true zurück, falls x gerade ist. ApIstPrim function ApIstPrim(j:longint) : Boolean); Prüft, ob j eine Primzahl ist. Fall j eine Primzahl ist, so wird true zurückgegeben. 18.1. MATHEMATISCHE FUNKTIONEN 105 ApSin function ApSin(m:extended) : extended); Berechnet den Sinus. Es wird dabei berücksichtigt, ob der Benutzer unter Optionen Winkel in Grad- oder Bogenmaß gewählt hat. ApSinh function ApSinh(x:extended):extended); Berechnet den Sinus-Hyperbolicus. ApTan function ApTan(m:extended) : extended); Berechnet den Tangens. Es wird dabei berücksichtigt, ob der Benutzer unter Optionen Winkel in Grad- oder Bogenmaß gewählt hat. ApTanh function ApTanh(x:extended):extended); Berechnet den Tangens-Hyperbolicus. basisSystemKonvertieren function bsyskonv(zahl:shortString; quellsys, zielsys:integer; periodenzeichen:char) : shortstring; basissyskonv konvertiert eine Zahl zahl im Basissystem quellsys in das ZielBasissystem zielsys. Ist die resultierende Zahl periodisch, wird als Periodenzeichen periodenzeichen verwendet. var s: string; s:=bsyskonv(’0,1’,10,2,’_’); //s=0,0_0011 getFnkErg function getfnkerg(fnk: string; x:extended) : extended; GetFnkerg gibt den Funktionswert der in fnk übergebenen Funktion zurück und setzt für den Parameter x den entsprechenden Wert ein. var s : string; e : extended; s:=mitmal(’(1-4x)(x+5xx)’); //--> e=(1-4*x)*(x+5*x*x) e:=getfnkerg(s,3); //-->e=(-528) 106 KAPITEL 18. APPOMATOX-SPEZIFISCHE FUNKTIONEN GetIntegral function GetIntegral(fnk:string; a,b:extended): extended; GetIntegral gibt das Integral der Funktion fnk von a über b zurück. ggT function ggT(x,y:integer) : integer; Liefert den größten gemeinsamen Teiler von x und y zurück. var i: integer; i:=ggT(12,16)); //--> i=4 hoch function hoch(x,y:extended;z:byte) : extended); Berechnet die Potenz x hoch y. Wenn für z 0 übergeben wird, erscheint auch bei einem eventuellen Überlauf (zu große Zahlen) keine Fehlermeldung. kgV function kgV(x,y:integer) : integer; Liefert das kleinste gemeinsame Vielfache von x und y zurück. var i: integer; i:=kgV(3,4); //-->i=12 mitmal function mitmal(s: string) : string; Passt einen vom Benutzer falsch“ eingegebenen Funktionsstring in einen von ” Appomatox auswertbaren Funktionsstring am. Sie sollten diese Funktion vor jedem Aufruf von getFnkerg oder getIntegral anwenden var s: string; s:=mitmal(’(1-4x)(x+5xx)’); //--> s=(1-4*x)*(x+5*x*x) writeln( r2s( getfnkerg(s,3) )); //-528 18.2 Zugriff auf das Diagramm Die Prozeduren zum Zeichnen in das Diagramm folgen immer dem selben Muster: digIn.. Diagramm-Eingabe-.... Der Parameter name steht immer für den angezeigten Namen unter Inhalt, und der Parameter col für die Farbe. x/yKoordinaten werden immer getrennt als zwei extended-Variablen (x1,y1) übergeben. 18.2. ZUGRIFF AUF DAS DIAGRAMM 107 digInBez procedure diginbez(x1,y1,x2,y2,x3,y3,x4,y4:extended); Fügt eine Bézierkurve in das Diagramm ein. Es sind die vier Stützpunkte der Kurve anzugeben. Die Farbe ist immer schwarz. digInGrf procedure digInGrf(funk:string; col:TColor; t:extended); Zeichnet eine Kurve funk in das Diagramm mit der Farbe col ein. t ist dabei der Scharparameter. Handelt es sich bei der Kurve nicht um eine Kurvenschar, so übergeben Sie für t 0. Bsp.: digingrf(’x^2+2*x+3’, clRed, 0); digInGrfEx procedure digInGrfEx(funk:string; col:TColor; art:integer); Zeichnet wie diginGrf eine Kurve in das Diagramm ein. Mit art kann zusätzlich noch die Linienart bestimmt werden. digInIntegral procedure digInIntegral(name,fnk:string; x1,x2:extended; col:TColor); Fügt eine Integralfläche in das Diagramm ein. Die Fläche wird unter der Kurve fnk gezeichnet, zwischen den Grenzen x1,x2. digInPnk procedure digInPnk(x1,y1,x2,y2:extended; col:TColor); Fügt zwei Punkte in das Diagramm ein. digInStellen procedure digInStellen(name:string;x,y:extended;vertikal:boolean; col:TColor); Fügt ein Linie von einer der Achsen bis zum übergebenen Punkt x,y in das Diagramm ein. Es ist zu wählen, ob dieser Strich vertikal (true) oder horizontal (false) gezeichnet werden soll. 108 KAPITEL 18. APPOMATOX-SPEZIFISCHE FUNKTIONEN digInText procedure digInText(name:string; x,y: extended; col:TColor; fontname:string; size,charset:integer; bold, italic,underline, strikeout:boolean); Fügt eine Beschriftung an der Position x,y in das Diagramm ein. Als Fontname ist der Name einer installierten Schriftart zu wählen. In charset kann man, für internationale Anwendungen, den Zeichensatz wählen (üblicherweise 1). size bestimmt die Schriftgröße in Punkten. bold, italic, underline, strikeout bestimmt, ob die Beschriftung fettgedruckt, kursiv, unterstrichen oder durchgestrichen gezeichnet werden soll. Mögliche Werte für charset: 0 ANSI Zeichen 1 Die Schriftart wird nur durch den Namen und Größe bestimmt. Falls die Schriftart nicht installiert ist, wird sie durch eine Standardschriftart ersetzt. Standard-Symbole 2 Macintosh Zeichen 77 128 Japanische Shift-JIS Zeichen 129 Koreanische Zeichen (Wansung). Koreanische Zeichen (Johab) 130 134 Vereinfachte chinesische Zeichen 136 Traditionelle chinesische Zeichen (Taiwanesisch) Griechische Zeichen 161 162 Türkische Zeichen 163 Vietnamesische Zeichen Hebräische Zeichen 177 178 Arabische Zeichen 186 Baltische Zeichen 204 Kyrillische Zeichen Thai Zeichen 222 238 Fügt diakritische Zeichen für osteuropäische Zeichen ein Hängt von der eingestellten Codepage ab 255 Bsp.: digInText(’Test’, 1,1, clRed , ’Arial’, 12, 1, false, false, false, false); digInVektor procedure digInVektor(name:string; x1,y2,x2,y2:extended; col:TColor); Fügt einen Vektor von x1,y1 nach x2,y2 in das Diagramm ein. digInWinkel procedure digInWinkel(name:string; mx,my,x1,y1,x2,y2:extended; col:TColor); 18.3. EIN-/AUSGABE 109 Fügt eine Winkelbeschriftung (beschriftetetr Kreisbogen) in das Diagramm ein. mx,my ist die Mittelpunktskoordinate des Winkels, x1,y1,x2,y2 sind die Grenzen des Kreisbogens. 18.3 Ein-/Ausgabe readln procedure readln(var s: string); Eine sehr spartanische Funktion, die es dem Benutzer erlaubt, Text direkt einzugeben. Der vom Benutzer eingegebene String wird in die übergebene Variable s geschrieben. var s: string; readln(s); writeln(s); Writeln procedure Writeln(s: string); Schreibt den String s in die Ergebnisliste. Writeln2 procedure Writeln2(s1,s2: string; t:string); Schreibt den String s1 fett gedruckt in die (nicht-grafische) Ergebnisliste. s2 wird in normaler Schriftstärke in die (nicht-grafische) Ergebnisliste geschrieben. Der String t wird entsprechend den Regeln für den Formeleditor in die grafische Ergebnisliste geschrieben. Sind Syntaxfehler in t, so erfolgt keine Ausgabe in die grafische Ergebnisliste. 18.4 Hilfsfunktionen ApGetColor function ApGetColor(art: integer): TColor; Gibt eine der drei Farben für Eingabefelder zurück. Mögliche Rückgabewerte für art : 0 Farbe für unausgefülltes Feld (standardm. rot) Farbe für ausgefülltes Feld (standardm. weiss) 1 2 Farbe für nicht zwingend auszufüllendes Feld (standardm. grün) ApOpenWindow procedure ApOpenWindow(wnd: string); Öffnet das durch wnd definierte Appomatox-Fenster. Bitte entnehmen Sie die möglichen Werte für wnd Kapitel 18.5 auf Seite 111. 110 KAPITEL 18. APPOMATOX-SPEZIFISCHE FUNKTIONEN ApStoppuhrStarten procedure ApStoppuhrStarten; Startet die interne Appomatox Stoppuhr. Nach Aufruf von ApStoppuhrStopp wird die Zeitdifferenz zwischen diesen beiden Aufrufen berechnet und in der Appomatox-Statuszeile angezeigt. ApStoppuhrStopp procedure ApStoppuhrStopp; Stoppt die interne Appomatox Stoppuhr. Rufen Sie diese Prozedur immer nach ApStoppuhrStarten auf. Es wird die Zeitdifferenz zwischen den Aufrufen von ApStoppuhrStarten und ApStoppuhrStopp berechnet und in der AppomatoxStatuszeile angezeigt; Bsp.: var i: integer; begin ApStoppuhrStarten; for i:=1 to 10000 do begin //mach was end; ApStoppuhrStopp; end; ApWriteEditValue procedure ApWriteEditValue(Form, Edit, value: string); Schreibt einen bestimmten Wert (value) in die TEdit-Komponente Edit des Fensters form. Beachten Sie, dass das Fenster geöffnet sein muss, bevor Sie einen Wert in dessen Komponenten schreiben können. Bitte entnehmen Sie die möglichen Werte für form und edit Kapitel 18.5 auf der nächsten Seite. gt function gt(id: string) : string; Die Appomatox-Sprach-Dateien (deutsch.asd) sind wie folgt aufgebaut: m001=Programm m002=Optionen m003=Datei suchen Der Befehl gt(...) sucht in der Sprachdatei nach einer Id (z.B. m001) und liefert den dazugehörigen Ausdruck zurück. Bsp.: writeln(gt(’m001’)); btnSchliessen.caption:=gt(’s004’); //Programm //Schließen 18.5. BEZEICHNER 111 r2s function r2s(e: extended) : string; Die Funktion rr2s wandelt die in e übergebene Zahl in einen String um. Sie berücksichtigt dabei die Einstellungen, die der Benutzer unter Optionen getroffen hat. Z.B. wird die Zahl ggf. in einen Bruch verwandelt oder je nach Einstellung gerundet. str2real function str2real(s: string) : extended; Die Funktion str2real wandelt den in s übergebenen String in eine Gleitkommazahl um. Es wird dabei die von Appomatox unterstützte Syntax berücksichtigt. Ganze Zahlen können über mittels round(...) eingelesen werden. Bsp1.: var i: integer; i := round(str2real(’30*5+1’); Bsp2.: var e: extended; e:=str2real(’3/4*Pi+abs(-2)’); 18.5 Bezeichner (Falls der Fehler unbekanntes Fenster erscheint, haben Sie einen Bezeichner falsch eingegeben.) FABLEIT Ableitung fnk Funktion f(x) abl n= FBERNOUL n p k Binomialverteilung n= p= k= FBEZIER x1 y1 x2 y2 x3 y3 x4 y4 Bézier-Kurven x1= y1= x2= y2= x3= y3= x4= y4= FBINOMIAL x1 x2 Binomialkoeffizient n= k= KAPITEL 18. APPOMATOX-SPEZIFISCHE FUNKTIONEN 112 FBOGENLANGE a Edx1 Edx2 Bogenlänge einer ebenen Kurve Funktion x1 x2 FDODEKAEDER x1 Dodekaeder Kantenlänge FDREHUNG Drehung und Vergrößerung (analyt. Geometrie) x1= y1= x2= y2= x3= y3= Drehwinkel bzw. Vergrößerungsfaktor x1 y1 x2 y2 x3 y3 faktor FDREIECKE x1 y1 x2 y2 x3 y3 Dreiecke (analyt. Geometrie) x1= y1= x2= y2= x3= y3= FFORMELEDIT x1 y1 Formeleditor Beschreibung Formel FGGTKGV x1 y1 ggT / kgV x= y= FIKOSAEDER x1 Ikosaeder Kantenlänge FINTEGRAL fnk aEdit bEdit Integralrechnung Funktion x1 x2 FKREIS x1 x2 x3 Kreiskegelstumpf oberer Radius unterer Radius Höhe FKREIS2 r d u ag Kreis Radius Durchmesser Umfang Fläche A FKREISKEGEL x1 y1 Kreiskegel 18.5. BEZEICHNER 113 FKREISRING r rg ag z d Kreisring Radius R A Mittelradius zeta Ringbreite d FKREISRINGSEKTOR rg y ag r zw l d Kreisringsektor R Schwerpunkt Fläche r Zwischenradius phi l d FKREISSEGMENT (entsprechend) Kreissegment FKREISSEKTOR (entsprechend) Kreissektor FKREISTEILE x1 y1 Kreisteile FKUGEL x1 Kugel FKUGELABSCHNITT x1 y1 Kugelabschnitt FKUGELAUSSCHNITT x1 y1 Kugelausschnitt FKUGELKEIL x1 y1 Kugelkeil FKUGELSCH x1 x2 x3 x4 Kugelschicht FKURVEN2 fnk Kurvendiskussion Funktion FLINGLEICH a1 b1 lineare Gleichungen KAPITEL 18. APPOMATOX-SPEZIFISCHE FUNKTIONEN 114 FLXADDITION x1 y1 x2 y2 Addition (komplex) Realteil z1 Imaginärteil z1 Realteil z2 Imaginärteil z2 FLXDIVISION x1 y1 x2 y2 Division (komplex) FLXMULTIPLIKATION x1 y1 x2 y2 Multiplikation (komplex) FMATRIXMULT Matrizen-Multiplikation FNECK a uk aw Ag Instanzen n u ik zw regelmäßiges n-Eck FOKTAEDER x1 Oktaeder Kantenlänge FOPTION Optionen FPARALLELO a d1 h aw Ag Instanzen b d2 u Parallelogramm FPERMUTATION n p k Permutation FPRIM x y Primzahlen 18.5. BEZEICHNER 115 FPRIMFAK x Primfaktorzerlegung FPYRAMIDE x1 y1 z1 Pyramide FPYRAMSTUMPF x1 y1 z1 Pyramidenstumpf FQUADER x1 y1 z1 Quader FRANDOM x1 y1 Zufallszahlen FRECHNER fnk xEdit Rechner FREGEL x1 regelmäßige Körper FREGRESSION memo1 Ausgleichskurven Punkte FROTATION fnk edx1 edx2 Rotation um die x-Achse Funktion x1 x2 FSCHKURVEN a b Schnitt zweier Funktionen FSPTRIG x1 x2 y1 y2 KR MW sphärische Trigonometrie FSTATISTIK (keine automatisierten Eingaben möglich) Statistik FSTRECKEN x1 y1 x2 y2 Strecken (analyt. Geometrie) 116 KAPITEL 18. APPOMATOX-SPEZIFISCHE FUNKTIONEN FSUMMEN fak aEdit bEdit fnk fak2 aedit2 bedit2 fnk2 Summen und Potenzen Faktor von bis über Faktor (Potenz) von (Potenz) bis (Potenz) über (Potenz) FTANGENTEN fnk edx1 Tangente Funktion x FTETRAEDER x1 Tetraeder Kantenlänge FTRAPEZ (entsprechend) Trapez FTRIGONO (entsprechend) Trigonometrie FUMRECH (keine automatisierten Eingaben möglich) Umrechnung FVARIANZ n p Varianz FVBETRAG x1 Vektorbetrag Vektor x FVNORMAL x1 Normalisieren Vektor x FVKREUZ x1 y1 Kreuzprodukt (Vektorprod.) Vektor x Vektor y FVPUNKT x1 y1 Punktprodukt (in. Skalarprod.) Vektor x Vektor y FVIERECKE x1 y1 x2 y2 x3 Vierecke (analyt. Geometrie) FVSKALAR x1 edtSkalar Skalarprodukt Vektor x skalarer Faktor FZAHLSYS x1 y1 Zahlensystemumrechnung 18.5. BEZEICHNER 117 FZINSEN x1 y1 z1 Zinseszinsrechnung FZYLIND x1 y1 z1 Zylinder 118 KAPITEL 18. APPOMATOX-SPEZIFISCHE FUNKTIONEN Kapitel 19 Styleguide Um eine gewisse Einheitlichkeit unter den Plugins zu gewährleisten, empfehle ich folgende Bemaßung: Alle Maße in Pixel. Alle Forms sollten als BorderStyte bsToolWindow“ und ” als FormStyle fsStayOnTop“ tragen: ” var form : TForm; form.borderStyle := bsToolWindow; form.formStyle := fsStayOnTop; 119 120 KAPITEL 19. STYLEGUIDE Teil III Referenz Formeleditor 121 Kapitel 20 Referenz Formeleditor Der Appomatox-Formeleditor ermöglicht es, Formeln so auf dem Bildschirm darzustellen, wie sie auf dem Papier stehen. Desweiteren ist es möglich, die Formeln per Drag’n’Drop (d.h. durch Ziehen mit der Maus) oder durch Speichern auch in jede andere Textverarbeitung, wie beispielsweise MS Word, einzufügen. Umfangreichere Formelzeichen wie das Integralzeichen ( ) lassen sich jedoch nicht direkt mit der Tastatur setzen, es sind dazu Befehle“ nötig: Rufen ” Sie zuerst in Appomatox den Formeleditor auf und geben Sie dann in die Zeile Formel die Befehle ein, die hier in dieser Referenz in Schreibmaschinenschrift gedruckt sind . Durch Aneinanderreihung von mehreren Befehlen erhalten sie auch die kompliziertesten Formeln auf den Bildschirm. Die Zeichen wie Sie hier in der Referenz gedruckt sind, können aus satztechnischen Gründen geringfügig von den Zeichen abweichen, die Appomatox erzeugt. Der Appomatox-Formeleditor basiert auf den Freeware-Komponenten ExprDraw/ExprMake eines russischen Autors ([email protected]). Im Allgemeinen sind die Befehle case-sensitiv, d.h. beachten Sie die GroßKleinschreibung und verwenden Sie nur Leerzeichen, wo diese erlaubt sind. 123 KAPITEL 20. REFERENZ FORMELEDITOR 124 20.1 Symbole • y=[1+1/[1+1/x]] y = 1 + [1+1 1 ] !( ) Erzwingt das Setzen von Klammern. • !(x+1)*!(y-2) (x + 1)(y − 2) x {} • !(x+1)/!(x-1) • {x+1}*{y-2} {x + 1}{y − 2} • a+!(b+c)=d*.!(e*.f) a + (b + c) = d · (e · f ) • {x+1}/{x-1} (x+1) (x−1) • a*!(b+c)<>d+!(e*f) a(b + c) = d + (ef ) • a+{b+c}=d*.{e*.f} a + {b + c} = d · {e · f } • y=!(1+1/!(1+1/x)) y = 1 + (1+1 1 ) x • a*{b+c}<>d+{e*f} a{b + c} = d + {ef } () • y={1+1/{1+1/x}} Erzeugt nur Klammern, wenn diese notwendig sind. • (x+1)*(y-2) (x + 1)(y − 2) • (x+1)/(x-1) x+1 x−1 || • a+(b+c)=d*.(e*.f) a + (b + c) = d · e · f • |x+1|*|y-2| |x + 1||y − 2| • a*(b+c)<>d+(e*f) a(b + c) = d + ef • |x+1|/|x-1| • y=(1+1/(1+1/x)) y = 1 + 1+1 1 • a+|b+c|=d*.|e*.f| a + |b + c| = d · |e · f | |x+1| |x−1| x • a*|b+c|<>d+|e*f| a|b + c| = d + |ef | [] • [x+1]*[y-2] [x + 1][y − 2] • y=|1+1/|1+1/x|| y = 1 + |1+1 1 | x • [x+1]/[x-1] [x+1] [x−1] • a+[b+c]=d*.[e*.f] a + [b + c] = d · [e · f ] • a*[b+c]<>d+[e*f] a[b + c] = d + [ef ] ! Fakultät. Siehe auch 20.1 • C_n^k=n!/k!/(n-k)! n! Cnk = k!(n−k)! 20.1. SYMBOLE 125 • 5**x 5x • a-b a−b • y**2 y2 # • 2**a**3 2a3 Setzt die Zahl in wissenschaftlicher Schreibweise als 10er Potenz. • sin(x)**cos(x) sin x cos x • 0.03*x 0, 03x • #0.03*x 3 · 10−2 x *. • 5*.x 5·x & • y*.2 y·2 Verbindet zwei Befehle miteinander. • 2*.a*.3 2·a·3 • y=x & space(7) & z=q y=x z=q • sin(x)*.cos(x) sin x · cos x * Das einfache Malzeichen wertet die Formel aus und fasst, sofern möglich, mehrere Faktoren zusammen. Wenn Sie das automatische Zusammenfassen nicht möchten, verwenden Sie das doppelte Malzeichen ( 20.1). Das Malzeichen wird nicht gedruckt. Um ein gedrucktes Malzeichen zu erhalten, verwenden Sie das Zeichen *. ( 20.1). *+ • 5*+x 5×x • y*+2 y×2 • 2*+a*+3 2×a×3 • 5*x 5x • sin(x)*+cos(x) sin x × cos x • y*2 2y • 2*a*3 6a • sin(x)*cos(x) sin x · cos x , • a0,a1,a2, a3 a 0 , a1 , a2 , a3 / ** • a/b Das Malzeichen wird nicht gedruckt. Um ein gedrucktes Malzeichen zu erhalten, verwenden Sie *. ( 20.1). • (x+1)/(x-1)*(x+2)/(x//y)*4 a b 4(x+1)(x+2) (x−1)x/y KAPITEL 20. REFERENZ FORMELEDITOR 126 • (1/2)*x 1 2x ∼ • a~b a∼b • (3/4)*((x+1)/(x-1)) 3 x+1 4 x−1 ∼∼ // • a~~b a≈b • a//b a/b • x//(2*y) x/2y -+ • a-+b a∓b /+ • a/+b a÷b + • a+b a+b ˆ • a^b ab +- • Ind(x,a)^2,x_a^2 x2a , x2a • Ind(x^2,a),x^2_a (x2 )a , x2a • a+-b a±b < • a<b a<b (tiefstellen) • a_b ab • a_x_0 ax 0 • Ind(a,Ind(x,0)) ax 0 <∼ • a<~b ab << (Vektor) • _a a • a<<b ab <> ‘ • a<>b a = b (Apostroph rückwärts, [Shift]+[´]) • f(x)‘ f (x) • f(x)‘‘‘ f (x) = • a=b a=b 20.1. SYMBOLE =∼ 127 Comma • a=~b a b == • a==b a≡b • x&Comma&y x, y const • Int(x*Diff(x))=x^2/2+const 2 xdx = x2 + const > • a>b a> -> • a->b a→b Empty Manche Funktionen sind nur in verbindung mit anderen Zeichen (Argumente) erlaubt. Mit den Zeichen Empty und Nil können sie solche Funktionen auch ohne ARgumente benutzen. • Empty^2 >∼ 2 • a>~b ab >= Inf Zeichen für unendlich. • a>=b a≥b • lim(x->0,1/x)=+-Inf lim x1 = ±∞ x→0 >> • a>>b a b ... • f(x1,x2,...,x_n)=0 f (x1 , x2 , . . . , xn ) = 0 Minus Das einfache Minus-Zeichen (-) kann nicht mit anderen Steuerzeichen und Befehlen kombiniert werden. • a_Minus a- Angle • Angle**A ∠A Asterix • Summa(a_n*a_n^Asterix,n)=0 an a∗n = 0 n Nabla • Nabla*f=PDiffRF(f,x)* _e_x+PDiffRF(f,y)*_e_y +PDiffRF(f,z)*_e_z 128 KAPITEL 20. REFERENZ FORMELEDITOR Nil Manche Funktionen sind nur in Verbindung mit anderen Zeichen (Argumente) erlaubt. Mit den Zeichen Empty und Nil können sie solche Funktionen auch ohne Argumente benutzen. • lim(nil,f(x))=0 lim f (x) = 0 Parallel • _a & Parallel & _b a b • H_Parallel H Perpendicular • _a & Perpendicular & _b a⊥b • v_Perpendicular H⊥ Plank Das Planck’sche Wirkungsquantum. • Plank=h/2/pi h = 2π 20.2. FUNKTIONEN 20.2 129 Funktionen Abs Diff • Abs(x^2)=Abs(x)^2 |x2 | = |x|2 • Diff(x) dx • Diff(x,n) dxn Angle • Angle(ABC) ∠ABC DiffN • DiffN(x) dx At • At(DiffRF(f,x),x=0)=1 df =1 dx • DiffN(x,n) dn x x=0 Brackets • Brackets((],0&comma&1) (0, 1] DiffR • DiffR(x) d dx • DiffR(x,n) dn dxn Cap • Cap(x) x̂ Case • |x|=Case(-x,x<0,0,x=0,x,x>0) DiffRF • DiffRF(f,x) df dx • DiffRF(f(x),x,n) n d f (x) dxn Fact • Fact(n) n! Circ • Circ(_E*Diff(_l),L) l Ed L • Fact(k+1) (k + 1)! Func • Func(PDiffRF(f,x,3),x) Comma Fügt ein Komma mit darauffolgendem Abstand ein. Sie können den Abstand durch die Zahl in Klammern bestimmen (in Pixel). • x & comma(15) & y x, y Ind • Ind(a,n) an KAPITEL 20. REFERENZ FORMELEDITOR 130 Int • F(x)=Int(f(x)*Diff(x)) F (x) = f (x)dx • Phi=Int(_H*Diff(_S),S) S Φ = Hd S • Int(x,0,1)=1 1 x=1 0 IntM • IntM(3,f(x,y,z)* Diff(x)*Diff(y)*Diff(z),V) f (x, y, z)dxdydz • Matrix(2,3,x,y,x-y,x+y,z,z+y) x y x−y x+y z z+y • !(Matrix(2,2,1,2,-3,4)) 1 2 −3 4 • [_a,_b]=|Matrix(3,3, _e_x,_e_y,_e_z, x_a,y_a,z_a, x_b,y_b,z_b)| [a, b] = V • IntM(0,f(x1,...,x_n) *DiffN(x,n)) ··· f (x1 , ..., xn )dn x ex xa xb ey ya yb ez za zb Num • Num(0.00123456) 1, 235 · 10−3 Lim • Lim(StandC(x->0,x>0),f(x))=1 • num(0.00123456,6) 1, 23456 · 10−3 • Num(0.00123456,4,4,3) 0, 0012 Line • Line(x) x • Line(x^2) x2 Log • log(a,x+1)=ln(x+1)/ln(a) Matrix Sie können eine beliebig große Matrix erzeugen. Die Anzahl der Spalten und Zeilen müssen sie als erstes in den Klammern schreiben. Danach folgen zeilenweise die einzelnen Elemente • Num(0.00123456,4,6,3) 0, 001235 PDiff • PDiff(x) ∂x • PDiff(x,n) ∂xn PDiffN • PDiffN(f(x,y),3)/PDiff(x) /PDiff(y,2) 20.2. FUNKTIONEN PDiffR • PDiffR(x) • PDiffR(x,n) 131 Space Fügt einen Abstand ein. Die Zahl in Klammer bestimmt in Pixeln die Größe des Abstandes. • y=x & space(7) & z=q y=x z=q Sqr PDiffRF • PDiffRF(f,x) • Sqr(a+b)=Sqr(a)+2*a*b+Sqr(b) (a + b)2 = a2 + 2ab + b2 Sqrt • Sqrt(x^2+y^2) x2 + y 2 • PDiffRF(f(x,y),x,n) StandC Zentriert den Text in Klammern. Die Zeilen sind mit Komma zu trennen. Points • Points(y,2)=y*Points(x) ÿ = y ẋ Pow • Pow(x+2,2//3) (x + 2)2/3 Prod • Prod(a_i) ai • Prod(a_i,i<>j) ai i=j • Prod{a_i,i=0,0) n ai i=0 Root • Root(3,x-1) √ 3 x−1 • StandC(0<=i<n,i<>j) 0≤i<n i = j StandL Setzt Text linksbündig. Die Zeilen sind mit Komma zu trennen. • StandL(0<=i<n,i<>j) 0≤i<n i = j StandR Setzt den Text rechtsbündig. Die Zeilen sind mit Komma zu trennen. • StandR(0<=i<n,i<>j) 0≤i<n i = j String Fügt einen beliebigen Text ein. • String(Faktor 1 + Faktor 2) Faktor 1 + Faktor 2 • String("Text(in Klammern)") Text (in Klammern) KAPITEL 20. REFERENZ FORMELEDITOR 132 Strokes • Strokes(f(x)) f (x) • Strokes(y,3) y Summa • Summa(a_i) ai • Summa(a_i,i<>j) ai nur ausgegeben, wenn der WindowsStandardzeichensatz dieses Zeichen unterstützt. • Symbol(198)=1 Æ= 1 System Setzt ein Gleichungssystem. • System(x+y=5,x*y=6) x+y =5 xy = 6 i=j • Summa{a_i,i=0,0) n ai i=0 Tilde • Tilde(x) x̃ Symbol Gibt das n-te Zeichen des UnicodeZeichensatzes aus. Siehe auch www.unicode.org. Das Zeichen wird Vect • Vect(a) a 20.3. GRIECHISCHE BUCHSTABEN 20.3 133 Griechische Buchstaben Alpha Gamma • Alpha A • Gamma Γ • alpha α • gamma γ Beta Iota • Beta B • Iota I • beta β • iota ι Chi Kappa • Chi X • Kappa K • chi χ • kappa κ Delta Lambda • Delta ∆ • Lambda Λ • delta δ • lambda λ Epsilon Mu • Epsilon E • Mu M • epsilon • mu µ Eta Nu • Eta H • Nu N • eta η • nu ν 134 Omega KAPITEL 20. REFERENZ FORMELEDITOR Sigma • Omega Ω • Sigma Σ • omega ω • sigma σ Omicron Tau • Omicron O • Tau T • omicron o • tau τ Phi Theta • Phi Φ • Theta Θ • phi φ • theta θ Pi Upsilon • Pi Π • Upsilon Υ • pi π • upsilon υ Psi Xi • Psi Ψ • Xi Ξ • psi ψ • xi ξ Rho Zeta • Rho P • Zeta Z • rho ρ • zeta ζ Teil IV Anhänge 135 Anhang A Immerwährender Kalender A: JAHRE 1801-1900 01 29 57 85 02 30 58 86 03 31 59 87 04 32 60 88 05 33 61 89 06 34 62 90 07 35 63 91 08 36 64 92 09 37 65 93 10 38 66 94 11 39 67 95 12 40 68 96 13 41 69 97 14 42 70 98 15 43 71 99 16 44 72 -17 45 73 -18 46 74 -19 47 75 -20 48 76 -21 49 77 00 22 50 78 -23 51 79 -24 52 80 -25 53 81 -26 54 82 -27 55 83 -28 56 84 -C: Mo Di Mi 1901-2000 -- 25 53 81 -- 26 54 82 -- 27 55 83 -- 28 56 84 01 29 57 85 02 30 58 86 03 31 59 87 04 32 60 88 05 33 61 89 06 34 62 90 07 35 63 91 08 36 64 92 09 37 65 93 10 38 66 94 11 39 67 95 12 40 68 96 13 41 69 97 14 42 70 98 15 43 71 99 16 44 72 00 17 45 73 -18 46 74 -19 47 75 -20 48 76 -21 49 77 -22 50 78 -23 51 79 -24 52 80 -- 2001-2104 -- 09 37 65 -- 10 38 66 -- 11 39 67 -- 12 40 68 -- 13 41 69 -- 14 42 70 -- 15 43 71 -- 16 44 72 -- 17 45 73 -- 18 46 74 -- 19 47 75 -- 20 48 76 -- 21 49 77 -- 22 50 78 -- 23 51 79 -- 24 52 80 -- 25 53 81 -- 26 54 82 -- 27 55 83 -- 28 56 84 01 29 57 85 02 30 58 86 03 31 59 87 04 32 60 88 05 33 61 89 06 34 62 90 07 35 63 91 08 36 64 92 TAGE -- 02 09 16 23 30 37 -- 03 10 17 24 31 --- 04 11 18 25 32 -137 93 94 95 96 97 98 99 00 ----------------01 02 03 04 2105-2202 05 33 61 89 06 34 62 90 07 35 63 91 08 36 64 92 09 37 65 93 10 38 66 94 11 39 67 95 12 40 68 96 13 41 69 97 14 42 70 98 15 43 71 99 16 44 72 -17 45 73 -18 46 74 -19 47 75 -20 48 76 -21 49 77 00 22 50 78 01 23 51 79 02 24 52 80 -25 53 81 -26 54 82 -27 55 83 -28 56 84 -29 57 85 -30 58 86 -31 59 87 -32 60 88 -- | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | B: MONATE JFMAMJJASOND 400351362402 511462403513 622503514624 034025036146 255136140250 366240251361 400351362402 512503514624 033614625035 144025036146 255136140250 360351362402 511462403513 622503514624 033614625035 145136140250 366240251361 400351362402 511462403513 623614625035 144025036146 255136140250 366240251361 401462403513 622503514624 033614625035 144025036146 256240251361 ANHANG A. IMMERWÄHRENDER KALENDER 138 Do Fr Sa So ---01 05 06 07 08 12 13 14 15 19 20 21 22 26 27 28 29 33 34 35 36 ----- Erklärung: An welchem Tag war der 11.12.1946? Suchen Sie die verlangte Jahreszahl unter A. Ziehen Sie von dort einen geraden Strich zu dem Monat unter B. Addieren Sie die dort gefundene Zahl mit der Tageszahl des Datums (11). Die Summe dieser Addition (0 + 11) ist 11; suchen Sie nun unter C, dann ist Mittwoch der Tag. Anhang B Abkürzungen der Zahlenfolgen Y Z E P T G M k h da d c m µ n p f a z y Yotta Zetta Exa Peta Tera Giga Mega Kilo Hekto Deka Dezi Zenti Milli Mikro Nano Piko Femto Atto Zepta Yocto 10e24 10e21 10e18 10e15 10e12 10e9 10e6 10e3 10e2 10e1 10e-1 10e-2 10e-3 10e-6 10e-9 10e-12 10e-15 10e-18 10e-21 10e-24 1.000.000.000.000.000.000.000.000 1.000.000.000.000.000.000.000 1.000.000.000.000.000.000 1.000.000.000.000.000 1.000.000.000.000 1.000.000.000 1.000.000 1.000 100 10 0,1 0,01 0,001 0,000.001 0,000.000.001 0,000.000.000.001 0,000.000.000.000.001 0,000.000.000.000.000.001 0,000.000.000.000.000.000.001 0,000.000.000.000.000.000.000.001 139 (Quadrillion) (Trilliarde) (Trillion) (Billiarde) (Billion) (Milliarde) (Million) (Tausend) (Hundert) (Zehn) (Zehntel) (Hundertstel) (Tausendstel) (Millionstel) (Milliardstel) (Billionstel) (Billiardstel) (Trillionstel) (Trilliardstel) (Quadrillionstel) ANHANG B. ABKÜRZUNGEN DER ZAHLENFOLGEN 140 Eins Zehn Hundert Tausend Million Milliarde Billion Billiarde Trillion Trilliarde Quadrillion Quadrilliarde Pentillion Pentilliarde Sextillion Sextilliarde Septillion Septilliarde Oktillion Oktilliarde 10e0 10e1 10e2 10e3 10e6 10e9 10e11 10e15 10e18 10e21 10e24 10e27 10e30 10e33 10e36 10e39 10e42 10e45 10e48 10e51 nach DIN 1301-1