software:diy:andere:gofolio
Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
Beide Seiten der vorigen RevisionVorhergehende ÜberarbeitungNächste Überarbeitung | Vorhergehende Überarbeitung | ||
software:diy:andere:gofolio [21/01/2009 19:01] – Formatierung uxt | software:diy:andere:gofolio [Unbekanntes Datum] (aktuell) – Externe Bearbeitung (Unbekanntes Datum) 127.0.0.1 | ||
---|---|---|---|
Zeile 71: | Zeile 71: | ||
\\ | \\ | ||
+ | |||
==== 2.1 Eigenschaften ==== | ==== 2.1 Eigenschaften ==== | ||
- | Gofolio ist eine eigenständig | + | Gofolio ist eine eigenständige |
Zeile 599: | Zeile 600: | ||
r: | r: | ||
</ | </ | ||
+ | |||
+ | |||
Zeile 606: | Zeile 609: | ||
In diesem Abschnitt werden sämtliche Gofolio-Funktionen nach folgendem Schema beschrieben: | In diesem Abschnitt werden sämtliche Gofolio-Funktionen nach folgendem Schema beschrieben: | ||
\\ | \\ | ||
- | * Rückgabetyp FUNKTIONSNAME(Prametertyp, | + | * Rückgabetyp FUNKTIONSNAME(Prametertyp, |
- | Der Typ Void bedeutet hierbei, daß kein Wert zurückgegeben wird bzw., daß keine Parameter übergeben werden.\\ | + | |
\\ | \\ | ||
- | * Real ABS(Real), | + | * Real ABS(Real), |
- | gibt den Absolutbetrag des Arguments zurück.\\ | + | <code c> |
- | Z.B.: PRINT(" | + | PRINT(" |
+ | </ | ||
\\ | \\ | ||
- | * Real ACOS(Real), | + | * Real ACOS(Real), |
- | Z.B.: PRINT(" | + | <code c> |
+ | PRINT(" | ||
+ | </ | ||
\\ | \\ | ||
- | * Integer ADDR(Variable), | + | * Integer ADDR(Variable), |
- | gibt die Offset-Addresse einer Variablen (von beliebigem Typ) im Datensegment zurück.\\ | + | |
\\ | \\ | ||
- | * Integer AND(Bedingung, | + | * Integer AND(Bedingung, |
- | führt einen logischen Und-Vergleich der einzelnen Bedingungen durch.\\ | + | <code c> |
- | Gibt den Wert wahr (1) zurück, wenn alle Bedingungen wahr sind.\\ | + | IF(AND(1 >= 0, 2 = 2), PRINT(" |
- | Ist eine Bedingung falsch, so wird der Wert falsch (0) zurückgegeben.\\ | + | </ |
- | Z.B.: IF(AND(1 >= 0, 2 = 2), PRINT(" | + | |
\\ | \\ | ||
- | * Integer ANDB(Integer, | + | * Integer ANDB(Integer, |
- | liefert das Ergebnis des bitweisen Und-Vergleiches der beiden Übergabeparameter zurück. Z.B.: PRINT(" | + | <code c> |
+ | PRINT(" | ||
+ | </ | ||
\\ | \\ | ||
- | * Real ASIN(Real), | + | * Real ASIN(Real), |
- | gibt den Arcussinus (in Rad) des Arguments zurück.\\ | + | <code c> |
- | Z.B.: PRINT(" | + | PRINT(" |
+ | </ | ||
\\ | \\ | ||
- | * Real ATAN(Real), | + | * Real ATAN(Real), |
- | gibt den Arcustangens (in Rad) des Arguments zurück.\\ | + | <code c> |
- | Z.B.: PRINT(" | + | PRINT(" |
+ | </ | ||
\\ | \\ | ||
- | * Void BLOCK(Anweisung, | + | * Void BLOCK(Anweisung, |
- | faßt beliebig viele Anweisungen zu einem Block zusammen. Mit anderen Worten: es werden beliebig viele Anweisungen zu einer Anweisung zusammengefaßt. Es 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.:\\ | + | |
\\ | \\ | ||
<code c> | <code c> | ||
Zeile 668: | Zeile 673: | ||
\\ | \\ | ||
- | * Charakter CHAR(alle Typen),\\ | + | * Charakter CHAR(alle Typen),\\ wandelt den übergebenen Typ in einen Wert vom Typ Charakter.\\ |
- | wandelt den übergebenen Typ in einen Wert vom Typ Charakter.\\ | + | |
\\ | \\ | ||
- | * Void CLOSEIN(Void), | + | * Void CLOSEIN(Void), |
- | schließt die Datei, aus welcher gelesen wurde.\\ | + | |
\\ | \\ | ||
- | * Void CLOSEOUT(Void), | + | * Void CLOSEOUT(Void), |
- | schließt die Datei, in welche geschrieben wurde.\\ | + | |
\\ | \\ | ||
- | * Void CLS(Void), | + | * Void CLS(Void), |
- | löscht den Bildschirm.\\ | + | |
\\ | \\ | ||
- | * Real COS(Real), | + | * Real COS(Real), |
- | gibt den Cosinus des Argments (in Rad) zurück.\\ | + | |
\\ | \\ | ||
- | * Void DEC(Integer Varable),\\ | + | * Void DEC(Integer Varable),\\ erniedrigt (decrementiert) den Inhalt der übergebenen Integer-Variablen um 1. Diese Verfahren erfolgt wesendlich effizenter als z.B.: n:=n-1.\\ |
- | erniedrigt (decrementiert) den Inhalt der übergebenen Integer-Variablen um 1. Diese Verfahren erfolgt wesendlich effizenter als z.B.: n:=n-1.\\ | + | |
\\ | \\ | ||
- | * Void DEFBYTE(Bezeichner, | + | * Void DEFBYTE(Bezeichner, |
- | deklariert die übergebenen Bezeichner als Variablen vom Typ Byte.\\ | + | |
\\ | \\ | ||
- | * Void DEFCAHR(Bezeichner, | + | * Void DEFCAHR(Bezeichner, |
- | deklariert die übergebenen Bezeichner als Variablen vom Typ Charakter.\\ | + | |
\\ | \\ | ||
- | * Void DEFINT(Bezeichner, | + | * Void DEFINT(Bezeichner, |
- | deklariert die übergebenen Bezeichner als Variablen vom Typ Integer.\\ | + | |
\\ | \\ | ||
- | * Void DEFREAL(Bezeichner, | + | * Void DEFREAL(Bezeichner, |
- | deklariert die übergebenen Bezeichner als Variablen vom Typ Real.\\ | + | |
\\ | \\ | ||
- | * Integer DS(Void),\\ | + | * Integer DS(Void),\\ gibt die Segmentadresse des Datensegments zurück. Soll z.B. mit den Funktionen PEEK() oder POKE() auf eine Variable zugegriffen werden, so wird die Adresse des Datensegments in denen sich die Variablen befinden benötigt. Z.B.:\\ |
- | gibt die Segmentadresse des Datensegments zurück. Soll z.B. mit den Funktionen PEEK() oder POKE() auf eine Variable zugegriffen werden, so wird die Adresse des Datensegments in denen sich die Variablen befinden benötigt. Z.B.:\\ | + | |
\\ | \\ | ||
<code c> | <code c> | ||
Zeile 708: | Zeile 702: | ||
</ | </ | ||
\\ | \\ | ||
- | * Void ELSE(Anweisung, | + | * Void ELSE(Anweisung, |
- | hat die gleiche Wirkung wie die Gofolio-Funktion BLOCK(). Es erhöht aber die Lesbarkeit Ihres Programmtextes, | + | |
\\ | \\ | ||
<code c> | <code c> | ||
Zeile 721: | Zeile 714: | ||
</ | </ | ||
\\ | \\ | ||
- | * Integer EOF(Void), | + | * Integer EOF(Void), |
- | gibt 1 zurück, wenn das Ende einer Datei, aus welcher gelesen wird, erreicht ist.\\ | + | |
\\ | \\ | ||
- | * Real EXP(Real), | + | * Real EXP(Real), |
- | Berechnet die Exponentialfunktion e^x.\\ | + | |
\\ | \\ | ||
- | * Void GOTOXY(Integer, | + | * Void GOTOXY(Integer, |
- | positioniert den Textcursor entsprechend der beiden übergebenen Integer-Werte, | + | |
\\ | \\ | ||
- | * Void HALT(Void), | + | * Void HALT(Void), |
- | wird diese Funktion aufgerufen, so wird das Programm beendet.\\ | + | |
\\ | \\ | ||
- | * Void IF(Bedingung, | + | * Void IF(Bedingung, |
- | führt eine Verzweigung in Abhängigkeit der Bedingung durch. Ist die Bedingung wahr (1), so wird Anweisung1 ausgeführt. Ist die Bedingung falsch (0), so wird - wenn vorhanden - Anweisung2 ausgeführt. Ist keine Anweisung2 vorhanden, so wird der Programmlauf mit der nächsten Anweisung nach der IF()-Funktion weitergeführt.\\ | + | |
\\ | \\ | ||
- | * Byte IN(Integer), | + | * Byte IN(Integer), |
- | list ein Byte aus einer I/ | + | |
\\ | \\ | ||
- | * Void INC(Integer), | + | * Void INC(Integer), |
- | erhöht den Inhalt der übergebenen Integer-Variablen un 1. Dieses Verfahren ist wesendlich effizenter als z.B.: n:=n+1.\\ | + | |
\\ | \\ | ||
- | * Integer INT(alle Typen),\\ | + | * Integer INT(alle Typen),\\ wandelt den übergenbenen Typ in einen Wert vom Typ Integer.\\ |
- | wandelt den übergenbenen Typ in einen Wert vom Typ Integer.\\ | + | |
\\ | \\ | ||
- | * Void INTR(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):\\ | + | |
\\ | \\ | ||
<code c> | <code c> | ||
Zeile 771: | Zeile 754: | ||
* lesen der oberen 8-Bit von AX: bit: | * lesen der oberen 8-Bit von AX: bit: | ||
\\ | \\ | ||
- | * Integer KEY(Void), | + | * Integer KEY(Void), |
- | gibt den ASCII-Wert einer gedrückten Taste zurück. Wird keine Taste gedrückt, so wird 0 zurückgegeben.\\ | + | |
\\ | \\ | ||
- | * Real LN(Real),\\ | + | * Real LN(Real),\\ gibt den natürlichen Logarithmus des Arguments zurück.\\ |
- | gibt den natürlichen Logarithmus des Arguments zurück.\\ | + | |
\\ | \\ | ||
- | * Integer NOT(Bedingung), | + | * Integer NOT(Bedingung), |
- | führt eine logische Verneinung der Bedingung durch. Wenn die Bedingung wahr (1) ist, so wird falsch (0) zurückgegeben. Ist die Bedingung falsch (0) so wird wahr (1) zurückgegeben.\\ | + | |
\\ | \\ | ||
- | * Integer OPENIN(String), | + | * Integer OPENIN(String), |
- | als Argument wird ein Dateiname übergeben. Die betreffende Datei wird zum Lesen geöffnet. Sollte beim Öffnen ein Fehler auftreten (z.B. dadurch, daß die Datei nicht existiert), so wird der Wert 1 zurückgegeben. Im Falle einer fehlerfreien Öffnung der Datei wird der Wert 0 zurückgegeben.\\ | + | |
\\ | \\ | ||
- | * Integer OPENOUT(String), | + | * Integer OPENOUT(String), |
- | als Argument wird ein Dateiname übergeben. Die betreffende Datei wird zum Schreiben geöffnet. Sollte beim Öffnen ein Fehler auftreten, so wird der Wert 1 zurückgeben. Im Falle einer fehlerfreien Öffnung der Datei wird der Wert 0 zurückgegeben.\\ | + | |
\\ | \\ | ||
- | * Integer OR(Bedingung, | + | * Integer OR(Bedingung, |
- | führt einen logischen Oder-Vergleich der einzelnen Bedingungen durch. Ist mindestens eine Bedingung wahr (1), so wird wahr (1) zurückgegeben. Sind alle Bedingungen falsch (0), so wird falsch (0) zurückgegeben.\\ | + | |
\\ | \\ | ||
- | * Integer ORB(Integer, | + | * Integer ORB(Integer, |
- | liefert den bitweisen Oder-Vergleich der beiden Argumente zurück.\\ | + | |
\\ | \\ | ||
- | * Void OUT(Integer, | + | * Void OUT(Integer, |
- | schreibt ein Byte an eine I/ | + | |
\\ | \\ | ||
- | * Byte PEEK(Integer, | + | * Byte PEEK(Integer, |
- | gibt den Wert des Bytes, welches durch eine Segmentadresse (erstes Argument) und eine Offsetadresse (zweites Argument) spezifiziert ist, zurück.\\ | + | |
\\ | \\ | ||
- | * Void POKE(Integer, | + | * Void POKE(Integer, |
- | schreibt ein Byte (drittes Argument) an die mit Offset (zweites Argument) und Segment (erstes Argument) angegebene Adresse.\\ | + | |
\\ | \\ | ||
- | * Void PRINT(< | + | * Void PRINT(< |
- | 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(" | + | * < |
- | | + | * - bewirkt eine linksbündige Ausgabe; |
- | Jede Anweisung beginnt mit einem Prozentzeichen (%). Auf dieses Zeichen folgen:\\ | + | * + bewirkt, daß numerische Werte mit ihrem entsprechenden Vorzeichen ausgegeben werden. |
- | * < | + | * < |
- | * - bewirkt eine linksbündige Ausgabe; | + | * < |
- | * + bewirkt, daß numerische Werte mit ihrem entsprechenden Vorzeichen ausgegeben werden. | + | * Typ, die Angabe über den Typ des konvertierten Zeichen:\\ |
- | * < | + | |
- | * < | + | |
- | * Typ, die Angabe über den Typ des konvertierten Zeichen:\\ | + | |
\\ | \\ | ||
^ Typ ^ Ausdruck | ^ Typ ^ Ausdruck | ||
Zeile 843: | Zeile 813: | ||
</ | </ | ||
\\ | \\ | ||
- | * Real REAL(alle Typen),\\ | + | * Real REAL(alle Typen),\\ wandelt den übergebene Typ in einen Wert vom Typ Real.\\ |
- | wandelt den übergebene Typ in einen Wert vom Typ Real.\\ | + | |
\\ | \\ | ||
- | * Void RETURN(Alle Typen),\\ | + | * Void RETURN(Alle Typen),\\ beendet die Funktion, welche momentan bearbeitet wird. Die Funktion, die beendet wurde, gibt den Wert zurück, welcher RETURN() als Argument übergeben wurde. Es ist unbedingt darauf zu achten, daß der Typ des Arguments von RETURN() und der Rückgabe-Typ der Funktion übereinstimmen.\\ |
- | beendet die Funktion, welche momentan bearbeitet wird. Die Funktion, die beendet wurde, gibt den Wert zurück, welcher RETURN() als Argument übergeben wurde. Es ist unbedingt darauf zu achten, daß der Typ des Arguments von RETURN() und der Rückgabe-Typ der Funktion übereinstimmen.\\ | + | |
\\ | \\ | ||
- | * Integer RND(Void), | + | * Integer RND(Void), |
- | gibt eine Zufallszahl zwischen 0 und 30000 zurück.\\ | + | |
- | \\ | + | |
- | * Void SCAN(< | + | |
- | liest aus der Eingabeeinheit entsprechend dem in String-Const angegeben Format Daten und schreibt diese in die angegebe Variable. Wird keine Eingabeeinheit angegeben, so liest SCAN() die Daten von der Tastatur. Wird der Gofolio-Bezeichner FILE als Eingabeeinheit angegeben, so liest SCAN() aus einer zuvor mit der Gofolio-Funktion OPENIN() geöffneten Datei. Die String-Constante wird als Format-String bezeichnet. Über den Format-String wird festgelegt, nach welchem Format und Typ die Daten gelesen werden sollen. Es gilt die folgende Sytax:\\ | + | |
\\ | \\ | ||
+ | * Void SCAN(< | ||
% < | % < | ||
- | \\ | + | |
* < | * < | ||
- | |||
* < | * < | ||
\\ | \\ | ||
- | | + | Beispiele: |
- | \\ | + | |
* SCAN(" | * SCAN(" | ||
\\ | \\ | ||
Zeile 871: | Zeile 834: | ||
* Typ, legt fest nach welchen Typ die Daten eingelesen werden sollen:\\ | * Typ, legt fest nach welchen Typ die Daten eingelesen werden sollen:\\ | ||
\\ | \\ | ||
- | | + | ^ |
- | | + | | |
- | | + | | |
- | o | + | | |
- | x | + | | |
- | f | + | | |
- | s | + | | |
- | c | + | \\ |
- | | + | |
Beispiel: | Beispiel: | ||
\\ | \\ | ||
- | | + | <code c> |
- | PRINT(" | + | DEFCHAR(ch[20]); |
- | SCAN(" | + | PRINT(" |
- | PRINT(" | + | SCAN(" |
- | SCAN(" | + | PRINT(" |
- | PRINT(\nBitte Realwert eingeben: "); | + | SCAN(" |
- | SCAN(" | + | PRINT(\nBitte Realwert eingeben: "); |
- | PRINT(" | + | SCAN(" |
- | PRINT(" | + | PRINT(" |
- | PRINT(" | + | PRINT(" |
+ | PRINT(" | ||
+ | </ | ||
\\ | \\ | ||
Auch SCAN() stimmt nahezu mit der C-Funktion scanf() überein. Der Unterschied zur C-Funktion besteht bei SCAN() darin, daß nur eine Variable angegeben werden darf und der Format-String nur als Constante (d.h. zwischen Anführungszeichen) angegeben werden darf.\\ | Auch SCAN() stimmt nahezu mit der C-Funktion scanf() überein. Der Unterschied zur C-Funktion besteht bei SCAN() darin, daß nur eine Variable angegeben werden darf und der Format-String nur als Constante (d.h. zwischen Anführungszeichen) angegeben werden darf.\\ | ||
\\ | \\ | ||
- | Hinweis: | + | < |
+ | </ | ||
\\ | \\ | ||
- | * Real SIN(Real), | + | * Real SIN(Real), |
\\ | \\ | ||
- | * Void STRCPY(Integer, | + | * Void STRCPY(Integer, |
\\ | \\ | ||
+ | <code c> | ||
DEFCHAR(c1[20], | DEFCHAR(c1[20], | ||
STRCPY(ADDR(c1), | STRCPY(ADDR(c1), | ||
STRCPY(ADDR(c2), | STRCPY(ADDR(c2), | ||
PRINT(" | PRINT(" | ||
- | PRINT(" | + | PRINT(" |
+ | </ | ||
\\ | \\ | ||
- | * Real TAN(Real), | + | * Real TAN(Real), |
\\ | \\ | ||
- | * Real VAL(String), | + | * Real VAL(String), |
\\ | \\ | ||
+ | <code c> | ||
DEFCHAR(ch[10]); | DEFCHAR(ch[10]); | ||
STRCPY(ADDR(ch), | STRCPY(ADDR(ch), | ||
r: | r: | ||
r:=r-1.0; | r:=r-1.0; | ||
- | PRINT(" | + | PRINT(" |
+ | </ | ||
\\ | \\ | ||
- | * Void WHILE(Bedingung, | + | * Void WHILE(Bedingung, |
\\ | \\ | ||
Beispiel:\\ | Beispiel:\\ | ||
\\ | \\ | ||
+ | <code c> | ||
DEFINT(n); | DEFINT(n); | ||
n:=0; | n:=0; | ||
Zeile 926: | Zeile 896: | ||
PRINT(" | PRINT(" | ||
INC(n)) | INC(n)) | ||
- | ). | + | ) |
+ | </ | ||
\\ | \\ | ||
- | * Integer XORB(Integer, | + | * Integer XORB(Integer, |
\\ | \\ | ||
Zeile 993: | Zeile 964: | ||
===== 8.0 Tips ===== | ===== 8.0 Tips ===== | ||
+ | |||
==== 8.1 Maschinenprogramme unter Gofolio ==== | ==== 8.1 Maschinenprogramme unter Gofolio ==== | ||
Zeile 1003: | Zeile 975: | ||
Beispiel-Maschinenprogramm: | Beispiel-Maschinenprogramm: | ||
\\ | \\ | ||
+ | <code asm> | ||
PUSH AX | PUSH AX | ||
PUSH DX | PUSH DX | ||
Zeile 1011: | Zeile 984: | ||
POP AX | POP AX | ||
IRET | IRET | ||
+ | </ | ||
\\ | \\ | ||
Gofolio-Programm: | Gofolio-Programm: | ||
\\ | \\ | ||
+ | <code c> | ||
defchar(ch[20]); | defchar(ch[20]); | ||
defint(off, | defint(off, | ||
Zeile 1021: | Zeile 996: | ||
_dx:=off; | _dx:=off; | ||
intr(0x21); | intr(0x21); | ||
- | intr(0x63). | + | intr(0x63) |
+ | </ | ||
\\ | \\ | ||
- | Mit dem Befehl intr(0x63) wird das Maschinenprogramm gestartet.\\Der Datenaustausch zwischen Maschinen- und Hauptprogramm kann über die Registervariablen _AX, _BX, _CX usw. erfolgen.\\ | + | Mit dem Befehl intr(0x63) wird das Maschinenprogramm gestartet.\\ Der Datenaustausch zwischen Maschinen- und Hauptprogramm kann über die Registervariablen _AX, _BX, _CX usw. erfolgen.\\ |
\\ | \\ | ||
+ | |||
==== 8.2 Unterprogramme zur Stringbearbeitung ==== | ==== 8.2 Unterprogramme zur Stringbearbeitung ==== | ||
Zeile 1032: | Zeile 1009: | ||
Beispiel: | Beispiel: | ||
\\ | \\ | ||
- | < | + | < |
defchar(c[50], | defchar(c[50], | ||
Zeile 1056: | Zeile 1032: | ||
print(" | print(" | ||
print(" | print(" | ||
- | |||
</ | </ | ||
\\ | \\ |
software/diy/andere/gofolio.1232561995.txt.gz · Zuletzt geändert: 16/02/2024 17:02 (Externe Bearbeitung)