Beide Seiten der vorigen RevisionVorhergehende ÜberarbeitungNächste Überarbeitung | Vorhergehende Überarbeitung |
software:diy:andere:gofolio [21/01/2009 20:01] – Formatierung uxt | software:diy:andere:gofolio [Unbekanntes Datum] (aktuell) – Externe Bearbeitung (Unbekanntes Datum) 127.0.0.1 |
---|
\\ | \\ |
| |
| |
| |
==== 2.1 Eigenschaften ==== | ==== 2.1 Eigenschaften ==== |
| |
Gofolio ist eine eigenständig Programmiersprache. Die Syntax wurde an die Form der Funktionen von Tabellenkalkulations-Arbeitsblättern angelehnt. D.h. alle Befehle und Kontrollstrukturen werden in Form von Funktionen ausgedrückt. Gofolio unterstützt strukturierte Programmierung mit der Möglichkeit zur Definition eigener Funktionen (welche auch rekursiv verwendet werden können), der Bildung von Blöcken sowie der Anwendung von Kontrollstrukturen wie IF.... ELSE ....-Entscheidungen und WHILE-Schleifen. Es stehen die folgenden Datentypen zur Verfügung:\\ | Gofolio ist eine eigenständige Programmiersprache. Die Syntax wurde an die Form der Funktionen von Tabellenkalkulations-Arbeitsblättern angelehnt. D.h. alle Befehle und Kontrollstrukturen werden in Form von Funktionen ausgedrückt. Gofolio unterstützt strukturierte Programmierung mit der Möglichkeit zur Definition eigener Funktionen (welche auch rekursiv verwendet werden können), der Bildung von Blöcken sowie der Anwendung von Kontrollstrukturen wie IF.... ELSE ....-Entscheidungen und WHILE-Schleifen. Es stehen die folgenden Datentypen zur Verfügung:\\ |
| |
| |
r:=REAL(ch). | r:=REAL(ch). |
</code> | </code> |
| |
| |
| |
| |
| |
* Rückgabetyp FUNKTIONSNAME(Prametertyp, Parametertyp, ....).\\ Der Typ Void bedeutet hierbei, daß kein Wert zurückgegeben wird bzw., daß keine Parameter übergeben werden.\\ | * Rückgabetyp FUNKTIONSNAME(Prametertyp, Parametertyp, ....).\\ Der Typ Void bedeutet hierbei, daß kein Wert zurückgegeben wird bzw., daß keine Parameter übergeben werden.\\ |
\\ | \\ |
* Real ABS(Real),\\ gibt den Absolutbetrag des Arguments zurück.\\ Z.B.: PRINT("%f\n",ABS(-1.23)).\\ | * Real ABS(Real),\\ gibt den Absolutbetrag des Arguments zurück. Z.B.: |
| <code c> |
| PRINT("%f\n",ABS(-1.23)) |
| </code> |
\\ | \\ |
* Real ACOS(Real),\\ gibt den Arcuscosinus (in Rad) des Arguments zurück.\\ Z.B.: PRINT("%f\n,ACOS(3.14)).\\ | * Real ACOS(Real),\\ gibt den Arcuscosinus (in Rad) des Arguments zurück. Z.B.: |
| <code c> |
| PRINT("%f\n,ACOS(3.14)) |
| </code> |
\\ | \\ |
* Integer ADDR(Variable),\\ gibt die Offset-Addresse einer Variablen (von beliebigem Typ) im Datensegment zurück.\\ | * Integer ADDR(Variable),\\ gibt die Offset-Addresse einer Variablen (von beliebigem Typ) im Datensegment zurück.\\ |
\\ | \\ |
* Integer AND(Bedingung, <Bedingung>, <Bedingung>, ....),\\ führt einen logischen Und-Vergleich der einzelnen Bedingungen durch. Gibt den Wert wahr (1) zurück, wenn alle Bedingungen wahr sind.\\ Ist eine Bedingung falsch, so wird der Wert falsch (0) zurückgegeben.\\ | * Integer AND(Bedingung, <Bedingung>, <Bedingung>, ....),\\ führt einen logischen Und-Vergleich der einzelnen Bedingungen durch. Gibt den Wert wahr (1) zurück, wenn alle Bedingungen wahr sind. Ist eine Bedingung falsch, so wird der Wert falsch (0) zurückgegeben. Z.B.:\\ |
Z.B.:\\ | |
<code c> | <code c> |
IF(AND(1 >= 0, 2 = 2), PRINT("wahr"), PRINT("falsch")) | IF(AND(1 >= 0, 2 = 2), PRINT("wahr"), PRINT("falsch")) |
</code>.\\ | </code> |
\\ | \\ |
* Integer ANDB(Integer, Integer),\\ liefert das Ergebnis des bitweisen Und-Vergleiches der beiden Übergabeparameter zurück. Z.B.: PRINT("%i\n",ANDB(2,18)).\\ | * Integer ANDB(Integer, Integer),\\ liefert das Ergebnis des bitweisen Und-Vergleiches der beiden Übergabeparameter zurück. Z.B.: |
| <code c> |
| PRINT("%i\n",ANDB(2,18)) |
| </code> |
\\ | \\ |
* Real ASIN(Real),\\ gibt den Arcussinus (in Rad) des Arguments zurück.\\ | * Real ASIN(Real),\\ gibt den Arcussinus (in Rad) des Arguments zurück. Z.B.: |
Z.B.: PRINT("%f\n",ASIN(1.552)).\\ | <code c> |
| PRINT("%f\n",ASIN(1.552)) |
| </code> |
\\ | \\ |
* Real ATAN(Real),\\ gibt den Arcustangens (in Rad) des Arguments zurück.\\ | * Real ATAN(Real),\\ gibt den Arcustangens (in Rad) des Arguments zurück. Z.B.: |
Z.B.: PRINT("%f\n",ATAN(1.23)).\\ | <code c> |
| PRINT("%f\n",ATAN(1.23)) |
| </code> |
\\ | \\ |
* Void BLOCK(Anweisung, <Anweisung>, <Anweisung>, ....),\\ faßt beliebig viele Anweisungen zu einem Block zusammen. Mit anderen Worten: es werden beliebig viele Anweisungen zu einer Anweisung zusammengefaßt. Es ist zu beachten, daß ausserhalb eines Blockes die einzelnen Anweisungen durch Strichpunkte (Semikolon) voneinander getrennt werden.\\ Innerhalb eines Blockes werden die Anweisungen dagegen durch Kommata getrennt. Z.B.:\\ | * Void BLOCK(Anweisung, <Anweisung>, <Anweisung>, ....),\\ faßt beliebig viele Anweisungen zu einem Block zusammen. Mit anderen Worten: es werden beliebig viele Anweisungen zu einer Anweisung zusammengefaßt. Es ist zu beachten, daß ausserhalb eines Blockes die einzelnen Anweisungen durch Strichpunkte (Semikolon) voneinander getrennt werden.\\ Innerhalb eines Blockes werden die Anweisungen dagegen durch Kommata getrennt. Z.B.:\\ |
* Integer INT(alle Typen),\\ wandelt den übergenbenen Typ in einen Wert vom Typ Integer.\\ | * Integer INT(alle Typen),\\ wandelt den übergenbenen Typ in einen Wert vom Typ Integer.\\ |
\\ | \\ |
* Void INTR(Integer),\\ führt einen allgemeinen 8086-Software-Interrupt aus. Als Argument wird die Nummer des Interrupt-Vektors übergeben. Die Prozessorregister können hierbei über die folgenden in Gofolio vordefinierten Variablen beschrieben und gelesen werden:\\ _AX, _BX, _CX, _DX, _SI, _DI, _FL.\\Das folgende Programm-Beispiel ermittelt über den Interrupt 0x21 und dessen Funktion 0x2a den Monat (1 bis 12) sowie den Tag des Monats (1 bis 31):\\ | * Void INTR(Integer),\\ führt einen allgemeinen 8086-Software-Interrupt aus. Als Argument wird die Nummer des Interrupt-Vektors übergeben. Die Prozessorregister können hierbei über die folgenden in Gofolio vordefinierten Variablen beschrieben und gelesen werden:\\ _AX, _BX, _CX, _DX, _SI, _DI, _FL.\\ Das folgende Programm-Beispiel ermittelt über den Interrupt 0x21 und dessen Funktion 0x2a den Monat (1 bis 12) sowie den Tag des Monats (1 bis 31):\\ |
\\ | \\ |
<code c> | <code c> |
* Void POKE(Integer, Interger, Byte),\\ schreibt ein Byte (drittes Argument) an die mit Offset (zweites Argument) und Segment (erstes Argument) angegebene Adresse.\\ | * Void POKE(Integer, Interger, Byte),\\ schreibt ein Byte (drittes Argument) an die mit Offset (zweites Argument) und Segment (erstes Argument) angegebene Adresse.\\ |
\\ | \\ |
* Void PRINT(<Ausgabeeinheit>, String-Const, <Ausdruck>),\\ gibt zur Ausgabeinheit entsprechend dem in der String-Const angegebenen Format das Ergebnis des Ausdrucks aus. Wird keine Ausgabeeinheit angegeben, so erfolgt die Ausgabe auf dem Bildschirm. Wird der Gofolio-Bezeichner FILE als Ausgabeeinheit angegeben, so erfolgt die Ausgabe in eine zuvor mit der Gofolio-Funktion OPENOUT() geöffneten Datei.\\ Wird der Gofolio-Bezeichner LPT als Ausgabeeinheit angegeben, so erfolgt die Ausgabe an den Drucker (parallele Schnittstelle). Die String-Constante wird auch als Format-String bezeichnet. Er kann normale Zeichen enthalten, die direkt ausgegeben werden. Z.B.: PRINT("Hallo Welt").\\ Die String-Constante kann Konvertierungsanweisungen enthalten, die die Auswertung des als weiteres Argument vorhanden Ausdrucks bestimmen. Die Kovertierungsanweisungen haben die folgende Syntax:\\ | * Void PRINT(<Ausgabeeinheit>, String-Const, <Ausdruck>),\\ gibt zur Ausgabeinheit entsprechend dem in der String-Const angegebenen Format das Ergebnis des Ausdrucks aus. Wird keine Ausgabeeinheit angegeben, so erfolgt die Ausgabe auf dem Bildschirm. Wird der Gofolio-Bezeichner FILE als Ausgabeeinheit angegeben, so erfolgt die Ausgabe in eine zuvor mit der Gofolio-Funktion OPENOUT() geöffneten Datei.\\ Wird der Gofolio-Bezeichner LPT als Ausgabeeinheit angegeben, so erfolgt die Ausgabe an den Drucker (parallele Schnittstelle). Die String-Constante wird auch als Format-String bezeichnet. Er kann normale Zeichen enthalten, die direkt ausgegeben werden. Z.B.: PRINT("Hallo Welt").\\ Die String-Constante kann Konvertierungsanweisungen enthalten, die die Auswertung des als weiteres Argument vorhanden Ausdrucks bestimmen. Die Kovertierungsanweisungen haben die folgende Syntax:\\ % <Flags> <Breite> <.Präzision> Typ.\\ Jede Anweisung beginnt mit einem Prozentzeichen (%). Auf dieses Zeichen folgen:\\ |
% <Flags> <Breite> <.Präzision> Typ. | |
Jede Anweisung beginnt mit einem Prozentzeichen (%). Auf dieses Zeichen folgen:\\ | |
* <Flags>, eine optionale Zeichenfolge, über die die Ausgabe bezüglich Vorzeichen, Dezimalpunkte, führende und folgende Nullen, rechts-/links-bündig festgelegt wird:\\ | * <Flags>, eine optionale Zeichenfolge, über die die Ausgabe bezüglich Vorzeichen, Dezimalpunkte, führende und folgende Nullen, rechts-/links-bündig festgelegt wird:\\ |
* - bewirkt eine linksbündige Ausgabe; | * - bewirkt eine linksbündige Ausgabe; |