Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
Beide Seiten der vorigen Revision Vorhergehende Überarbeitung Nächste Überarbeitung | Vorhergehende Überarbeitung | ||
cpm:mumath_einstieg [2010/09/22 13:10] – volkerp | cpm:mumath_einstieg [2013/02/04 17:47] (aktuell) – [2.6 PROPERTY-FUNKTIONEN] volkerp | ||
---|---|---|---|
Zeile 5: | Zeile 5: | ||
===== Kurz-Anleitung zum Arbeiten mit " | ===== Kurz-Anleitung zum Arbeiten mit " | ||
- | <file - mumath.txt> | ||
Kurz-Anleitung zum Arbeiten mit " | Kurz-Anleitung zum Arbeiten mit " | ||
TGM_96: MUMATH.TXT, TGM_97: MUMATH.ARC | TGM_96: MUMATH.TXT, TGM_97: MUMATH.ARC | ||
- | Dr. Fridbert Widder, #326 | ||
- | Auf der PCC-TGM Diskette #1187 befinden sich das Programm | ||
- | und die vier " | ||
- | | ||
- | | ||
- | | ||
- | Um algebraische Umformungen zu machen bzw., um die vier Rechentechnik- | + | **Dr. Fridbert Widder**, #326 |
+ | |||
+ | Auf der PCC-TGM Diskette #1187 befinden sich das Programm | ||
+ | und die vier " | ||
+ | |||
+ | Um algebraische Umformungen zu machen bzw. um die vier Rechentechnik- | ||
Übungen CLES1.ALG bis CLES4.ALG zu bearbeiten, startet man am besten mit | Übungen CLES1.ALG bis CLES4.ALG zu bearbeiten, startet man am besten mit | ||
(der DOS-Eingabe): | (der DOS-Eingabe): | ||
- | MUSIMP ALGEBRA | ||
- | Nach kurzer Lade-Zeit kommt die System-Meldung und das "?", | + | **MUSIMP ALGEBRA** |
+ | |||
+ | Nach kurzer Lade-Zeit kommt die System-Meldung und das "**?**", das eine | ||
muSIMP-Eingabe erwartet. | muSIMP-Eingabe erwartet. | ||
Zeile 26: | Zeile 25: | ||
" | " | ||
nicht vergessen - sonst geschieht nichts! | nicht vergessen - sonst geschieht nichts! | ||
- | (Verlassen des Programms mit: SYSTEM();) | + | (Verlassen des Programms mit: |
Oder/und man geht der Reihe nach die " | Oder/und man geht der Reihe nach die " | ||
mit dem "ReaD Select" | mit dem "ReaD Select" | ||
- | RDS(CLES1, ALG, A); | + | |
- | gelangt man sofort " | + | **RDS(CLES1, ALG, A);** |
+ | |||
+ | gelangt man sofort " | ||
Diskette im angegebenen Laufwerk A befindet). | Diskette im angegebenen Laufwerk A befindet). | ||
Zeile 40: | Zeile 41: | ||
die man am Ende der diversen " | die man am Ende der diversen " | ||
- | (Vorher noch ein Hinweis zu den weiteren | + | (Vorher noch ein Hinweis zu den weiteren |
- | stellten | + | |
MATSOL.SYS | MATSOL.SYS | ||
Programmier-Lektionen PLES1 bis PLES5 und PLES7 und PLES8.PDS. " | Programmier-Lektionen PLES1 bis PLES5 und PLES7 und PLES8.PDS. " | ||
Zeile 50: | Zeile 50: | ||
anschließend die Texte zu den " | anschließend die Texte zu den " | ||
füge ich*) noch ein " | füge ich*) noch ein " | ||
- | die Seiten-Numerierung wurde so gewählt, daß man diese Seiten als Er- | + | die Seiten-Numerierung wurde so gewählt, daß man diese Seiten als Ergänzung |
- | gänzung | + | |
- | *) F. Widder | + | *) F. Widder\\ |
- | | + | Graz, 15. 9.1988 |
- | INHALT der Zusammenfassung der Übungs- und Demonstrations-Beispiele | + | ==== INHALT der Zusammenfassung der Übungs- und Demonstrations-Beispiele " |
- | | + | |
Seite Inhalt: | Seite Inhalt: | ||
8-3 CLES1: Übungsablauf, | 8-3 CLES1: Übungsablauf, | ||
- | | + | Formeln, Zuweisungen (von Werten an Variable) |
8-5 CLES2: Kontrollvariable RDS, ECHO, BELL, POINT, PBRCH, Funktion | 8-5 CLES2: Kontrollvariable RDS, ECHO, BELL, POINT, PBRCH, Funktion | ||
- | | + | RADIX, Faktorielle, |
8-7 CLES3: Variable (mit bzw. ohne Wertzuweisung - der ' | 8-7 CLES3: Variable (mit bzw. ohne Wertzuweisung - der ' | ||
- | | + | Funktionen EXPAND, EXPD, FCTR, DIVOUT, PQUOT, PREM, PGCD, |
- | PARFRAC, NUM, DEN, COEFF, CODIV, BASE, EXPON, CONJ, RATIONALIZE, | + | PARFRAC, NUM, DEN, COEFF, CODIV, BASE, EXPON, CONJ, RATIONALIZE, |
- | Speicherplatz-Abfrage RECLAIM(); | + | Speicherplatz-Abfrage RECLAIM(); |
8-9 CLES4: Aktuelle Werte von Variablen - EVAL, ESUB | 8-9 CLES4: Aktuelle Werte von Variablen - EVAL, ESUB | ||
- | | + | Kontrollvariable (Übersicht - FLAGS();) - NUMNUM, ... DENDEN |
8-12 Ergänzungen, | 8-12 Ergänzungen, | ||
Zeile 79: | Zeile 81: | ||
8-15 EQN.ALG: Der Gleichungs-Operator == , Umformen von Gleichungen, | 8-15 EQN.ALG: Der Gleichungs-Operator == , Umformen von Gleichungen, | ||
- | SOLVE.EQN: Lösen mit SOLVE(Glg, Var) - vgl. S. 8-21: LINEQN.MAT | + | SOLVE.EQN: Lösen mit SOLVE(Glg, Var) - vgl. S. 8-21: LINEQN.MAT |
8-16 ODE.SOL: | 8-16 ODE.SOL: | ||
+ | |||
8-17 ODENTH.ODE: " | 8-17 ODENTH.ODE: " | ||
+ | |||
8-18 ODEMORE.ODE: | 8-18 ODEMORE.ODE: | ||
8-19 ARRAY.ARI: (Spalten- und Zeilen-)Vektoren, | 8-19 ARRAY.ARI: (Spalten- und Zeilen-)Vektoren, | ||
+ | |||
8-20 MATRIX.ARR: Matrix-Operationen | 8-20 MATRIX.ARR: Matrix-Operationen | ||
+ | |||
8-21 LINEQN.MAT: Lineare Gleichungssysteme - Matrix-Inversion | 8-21 LINEQN.MAT: Lineare Gleichungssysteme - Matrix-Inversion | ||
- | ABSVAL.ALG: ABS als Präfix-Operator | + | ABSVAL.ALG: ABS als Präfix-Operator |
8-22 LOG.ALG: Logarithmus-Funktionen | 8-22 LOG.ALG: Logarithmus-Funktionen | ||
Zeile 99: | Zeile 105: | ||
8-27 INT.DIF: bestimmte und unbestimmte Integrale | 8-27 INT.DIF: bestimmte und unbestimmte Integrale | ||
- | 8-28 INTMORE.INT: | + | |
- | | + | 8-28 INTMORE.INT: |
+ | LIM.DIF: Grenzwertbestimmung | ||
8-29 SIGMA.DIF: Summationen | 8-29 SIGMA.DIF: Summationen | ||
Zeile 107: | Zeile 114: | ||
8-31 VECDIF.VEC: Vektor-Differential- und Integral-Operationen, | 8-31 VECDIF.VEC: Vektor-Differential- und Integral-Operationen, | ||
- | | + | (DIV, CURL, GRAD, ...) |
Anm.d.Red.: Den Abdruck der hier nur zusammenfassend erwähnten Übungs- und Demonstrationsbeispiele finden Sie in der Datei MUMATH.DOC. | Anm.d.Red.: Den Abdruck der hier nur zusammenfassend erwähnten Übungs- und Demonstrationsbeispiele finden Sie in der Datei MUMATH.DOC. | ||
- | </ | ||
===== PROGRAMMIEREN mit muSIMP ===== | ===== PROGRAMMIEREN mit muSIMP ===== | ||
- | <file - musimp.txt> | + | PROGRAMMIEREN mit muSIMP\\ |
- | PROGRAMMIEREN mit muSIMP | + | TGM_96: MUSIMP.TXT, TGM_97: MUSIMP.ARC\\ |
- | TGM_96: MUSIMP.TXT, TGM_97: MUSIMP.ARC | + | **Dr. Fridbert Widder**, #326 |
- | Dr. Fridbert Widder, #326 | + | |
muSIMP (und ähnliche Programm-Sprachen wie z.B. ST-MATH für den ATARI-ST) | muSIMP (und ähnliche Programm-Sprachen wie z.B. ST-MATH für den ATARI-ST) | ||
Zeile 127: | Zeile 132: | ||
- | | + | ==== 1.1 STRUKTUR der DATEN ==== |
Es gibt drei elementare Grundstrukturen: | Es gibt drei elementare Grundstrukturen: | ||
- | NAMEn | + | NAMEn\\ |
- | INTEGERs = Zahlen | + | INTEGERs = Zahlen\\ |
NODEs = Knoten | NODEs = Knoten | ||
Zeile 139: | Zeile 144: | ||
- | NAME: Ein Name besteht aus drei Zeigern - die beiden ersten Zeiger erhält | + | **NAME**: Ein Name besteht aus drei Zeigern - die beiden ersten Zeiger erhält |
- | man durch Anwendung der Funktionen FIRST bzw. REST: | + | man durch Anwendung der Funktionen FIRST bzw. REST: |
- | 1.Zeiger (FIRST--> | + | * 1.Zeiger (FIRST--> |
- | | + | |
- | 2.Zeiger (REST -->) weist auf die " | + | * 2.Zeiger (REST -->) weist auf die " |
- | | + | |
- | 3.Zeiger weist auf Funktions-Definition, | + | * 3.Zeiger weist auf Funktions-Definition, |
- | | + | |
Hinter diesen drei Zeigern steht noch die ASCII-Zeichenkette des " | Hinter diesen drei Zeigern steht noch die ASCII-Zeichenkette des " | ||
Zeile 158: | Zeile 160: | ||
- | INTEGER: ist aus verarbeitungs-technischen Gründen analog strukturiert: | + | **INTEGER**: ist aus verarbeitungs-technischen Gründen analog strukturiert: |
- | 1.Zeiger --> Wert der Zahl | + | * 1.Zeiger --> Wert der Zahl |
- | 2.Zeiger --> Vorzeichen (als " | + | |
- | - = TRUE | + | |
- | Daher also Vorzeichentest durch REST(zahl)& | + | |
- | 3.Zeiger weist auf den Speicherbereich, | + | |
- | ist. (Kein Zugriff durch den Benutzer) | + | |
Mit den " | Mit den " | ||
Zeile 171: | Zeile 170: | ||
- | NODE: Ein Knoten besteht aus ZWEI ZEIGERN, die auf die Adressen beliebiger | + | **NODE**: Ein Knoten besteht aus ZWEI ZEIGERN, die auf die Adressen beliebiger |
- | Daten-Strukturen zeigen - sowohl auf Atome, als auch wieder auf | + | Daten-Strukturen zeigen - sowohl auf Atome, als auch wieder auf |
- | Knoten, so daß beliebig komplexe Netzwerke entstehen können. | + | Knoten, so daß beliebig komplexe Netzwerke entstehen können. |
+ | Eine einfache graphische Darstellung: | ||
+ | |||
+ | < | ||
+ | Knoten-Nummer => Zahl. | ||
+ | 1.Zeiger (FIRST) => | | ||
+ | 2.Zeiger (REST) | ||
+ | </ | ||
- | Eine einfache graphische Darstellung: | ||
- | | ||
- | | ||
Einfache Beispiele: | Einfache Beispiele: | ||
+ | < | ||
+ | |||
1.---31 | 1.---31 | ||
| | | | ||
Zeile 194: | Zeile 199: | ||
| | ||
| | ||
+ | </ | ||
Die dritte Ketten-Struktur hat einen eigenen Namen - es ist eine LISTE. | Die dritte Ketten-Struktur hat einen eigenen Namen - es ist eine LISTE. | ||
Zeile 200: | Zeile 206: | ||
& Befehl. - Am besten dazu ein Beispiel probieren: | & Befehl. - Am besten dazu ein Beispiel probieren: | ||
- | | + | Falls Sie nicht ohnehin muSIMP geladen haben, dazu also |
- | MUSIMP PDS eingeben (- lädt den Progamm-Demo System-file -) | + | MUSIMP PDS eingeben (- lädt den Progamm-Demo System-file -) |
- | | + | und beispielsweise den Unterschied zwischen den |
- | | + | Ausgabe-Befehlen ; und & ausprobieren: |
? a: -5$ | ? a: -5$ | ||
? a; | ? a; | ||
? a& | ? a& | ||
- | | + | Viele weitere Übungen zu den Grund-Strukturen sind im muMATH- |
- | Paket PLES1.PDS enthalten - einzulesen mit RDS(PLES1, | + | Paket PLES1.PDS enthalten - einzulesen mit RDS(PLES1, |
In der Folge beziehe ich mich auf diese erste " | In der Folge beziehe ich mich auf diese erste " | ||
Zeile 216: | Zeile 223: | ||
erklärt - es handelt sich um die " | erklärt - es handelt sich um die " | ||
eingegeben wird: | eingegeben wird: | ||
+ | |||
Beginn mit dem (= Präfix-Operator) ' | Beginn mit dem (= Präfix-Operator) ' | ||
ein Knoten, dessen 1. bzw. 2.Zeiger auf A bzw. B weist, wird dargestellt | ein Knoten, dessen 1. bzw. 2.Zeiger auf A bzw. B weist, wird dargestellt | ||
Zeile 230: | Zeile 238: | ||
SECOND() = FIRST(REST()) | SECOND() = FIRST(REST()) | ||
THIRD() = FIRST(REST(REST())) | THIRD() = FIRST(REST(REST())) | ||
- | RREST, FFIRST, RFIRST, FFREST, RFREST, RRREST, FFFIRST, FRFIRST, RFFIRST, | + | RREST, FFIRST, RFIRST, FFREST, RFREST, RRREST, FFFIRST, FRFIRST, RFFIRST, RRFIRST. |
- | RRFIRST. | + | |
Zeile 241: | Zeile 248: | ||
muSIMP-Programmieren) eignet sich gut der | muSIMP-Programmieren) eignet sich gut der | ||
- | | + | ==== 1.2 muSIMP " |
(Wie der Name sagt, im PDS.SYS-file integriert - beschrieben in PLES1.PDS) | (Wie der Name sagt, im PDS.SYS-file integriert - beschrieben in PLES1.PDS) | ||
Zeile 249: | Zeile 257: | ||
Um eine Funktion, beispielsweise eine " | Um eine Funktion, beispielsweise eine " | ||
erzeugen, gibt man (bei geladenem PDS.SYS) ein: | erzeugen, gibt man (bei geladenem PDS.SYS) ein: | ||
+ | |||
EDIT (' | EDIT (' | ||
- der Schirminhalt verschwindet zugunsten des Editor-Displays: | - der Schirminhalt verschwindet zugunsten des Editor-Displays: | ||
- | ersten Zeile steht bereits FUNCTION (), | + | ersten Zeile steht bereits FUNCTION (), und in der 2. das abschließende ENDFUN$ |
- | und in der 2. das abschließende ENDFUN$ | + | |
- dazwischen schreibt man seine Funktion hinein, im Beispiel etwa: | - dazwischen schreibt man seine Funktion hinein, im Beispiel etwa: | ||
Zeile 274: | Zeile 283: | ||
einfügen. | einfügen. | ||
- | | + | ==== 2. GRUNDFUNKTIONEN |
Bereits bekannt sind u.a. die Zuweisungsfunktion : | Bereits bekannt sind u.a. die Zuweisungsfunktion : | ||
Zeile 280: | Zeile 289: | ||
und die Terminatoren, | und die Terminatoren, | ||
Ausgabe bewirken: | Ausgabe bewirken: | ||
- | $ keine Ausgabe am Bildschirm | + | |
- | | + | **$** keine Ausgabe am Bildschirm\\ |
- | | + | **;** Ausgabe - womöglich in mathematischer Notation\\ |
+ | **&** Listen-Ausgabe | ||
Um die Unterschiede an Beispielen zu demonstrieren, | Um die Unterschiede an Beispielen zu demonstrieren, | ||
Namen, Zahlen und Listen definiert: | Namen, Zahlen und Listen definiert: | ||
+ | < | ||
NAM1: MAX | NAM1: MAX | ||
NAM2: MORITZ | NAM2: MORITZ | ||
Zeile 299: | Zeile 310: | ||
L4: LIST(NAM1, | L4: LIST(NAM1, | ||
L5: LIST(10, | L5: LIST(10, | ||
+ | </ | ||
Dabei wurde die LISTen-Erzeugungs-Funktion LIST(ob1, | Dabei wurde die LISTen-Erzeugungs-Funktion LIST(ob1, | ||
Zeile 304: | Zeile 316: | ||
- | 2.1 Die Terminatoren ; und & | + | ==== 2.1 Die Terminatoren ; und & ==== |
bewirken bei Zahlen und Namen genau die gleiche Ausgabe - Unterschiede gibt | bewirken bei Zahlen und Namen genau die gleiche Ausgabe - Unterschiede gibt | ||
es bei Listen: | es bei Listen: | ||
- | L1& --> (1 2 3 4 5 6) | + | |
- | L1; --> 1 (2, 3, 4, 5, 6) | + | L1; --> 1 (2, 3, 4, 5, 6) |
; unterteilt eine Liste in FIRST- und (REST)-Teil, | ; unterteilt eine Liste in FIRST- und (REST)-Teil, | ||
- | | + | durch Beistriche getrennt. Ein weiterer Unterschied bei geschachtelten |
- | telten | + | |
- | L5& --> (10 11 (12 13) (14) 15) | + | |
- | L5; --> 10 (11, 12(13), 14(), 15) | + | L5; --> 10 (11, 12(13), 14(), 15) |
& zeigt Anfang und Ende jeder Ebene durch ( und ) an. | & zeigt Anfang und Ende jeder Ebene durch ( und ) an. | ||
- | ; zeigt die REST-Listen in ( ) an -- einzelne Atome, die als Liste | + | |
- | | + | ; zeigt die REST-Listen in ( ) an -- einzelne Atome, die als Liste eingegeben wurden, werden mit der leeren Liste () angezeigt. |
In jedem Falle werden Listen vor der Ausgabe ausgewertet, | In jedem Falle werden Listen vor der Ausgabe ausgewertet, | ||
- | L4; --> MAX (100, -23, 0) | + | |
- | 2.2 Selektions- und Konstruktions-Funktionen | + | ==== 2.2 Selektions- und Konstruktions-Funktionen |
wurden z.T. auch schon im 1.Abschnitt behandelt. So die SELEKTIONS- | wurden z.T. auch schon im 1.Abschnitt behandelt. So die SELEKTIONS- | ||
Zeile 336: | Zeile 348: | ||
schälen: | schälen: | ||
- | RRREST(L2)& | + | |
Von den KONSTRUKTIONS-Funktionen kennen wir LIST(ob1, ... obN) durch den | Von den KONSTRUKTIONS-Funktionen kennen wir LIST(ob1, ... obN) durch den | ||
Zeile 345: | Zeile 357: | ||
ADJOIN(ob1, | ADJOIN(ob1, | ||
- | ADJOIN(a, | + | |
- | ADJOIN(1, | + | ADJOIN(1, |
- | ADJOIN(NAM1, | + | ADJOIN(NAM1, |
Während bei Listen die REST-Zelle immer auf einen Knoten oder auf FALSE | Während bei Listen die REST-Zelle immer auf einen Knoten oder auf FALSE | ||
Zeile 354: | Zeile 366: | ||
Man beachte den Unterschied zwischen der Konstruktion eines Knotens mit | Man beachte den Unterschied zwischen der Konstruktion eines Knotens mit | ||
ADJOIN bzw. durch die direkte Konstruktion mittel " | ADJOIN bzw. durch die direkte Konstruktion mittel " | ||
- | | + | |
+ | '(a . b) & | ||
Vergleiche dazu die " | Vergleiche dazu die " | ||
Zeile 360: | Zeile 374: | ||
REVERSE(liste) dreht die Reihenfolge der Listen-Elemente um: | REVERSE(liste) dreht die Reihenfolge der Listen-Elemente um: | ||
- | REVERSE(L5)& | + | |
REVERSE(liste1, | REVERSE(liste1, | ||
- | REVERSE(L1, | + | |
Wird aber statt liste1 nur ein Atom eingegeben, dann wird nur liste2 | Wird aber statt liste1 nur ein Atom eingegeben, dann wird nur liste2 | ||
ausgegeben: | ausgegeben: | ||
- | | ||
- | aber bei | + | |
+ | aber bei | ||
+ | |||
+ | REVERSE(L1, | ||
OBLIST()& | OBLIST()& | ||
Zeile 378: | Zeile 394: | ||
- | 2.3 ARITHMETISCHE FUNKTIONEN | + | ==== 2.3 ARITHMETISCHE FUNKTIONEN |
Neben den Operatoren +, -, * gibt es auch Funktionen | Neben den Operatoren +, -, * gibt es auch Funktionen | ||
Zeile 384: | Zeile 400: | ||
Divisions-Funktionen: | Divisions-Funktionen: | ||
- | QUOTIENT(5, | + | QUOTIENT(5, |
QUOTIENT(-5, | QUOTIENT(-5, | ||
- | MOD(5, | + | MOD(5, |
MOD(-5, | MOD(-5, | ||
Zeile 395: | Zeile 411: | ||
- | | + | ==== 2.4 LOGISCHE FUNKTIONEN |
NOT(obj) gibt dann und nur dann TRUE, wenn obj auf FALSE zeigt. | NOT(obj) gibt dann und nur dann TRUE, wenn obj auf FALSE zeigt. | ||
Zeile 402: | Zeile 419: | ||
- | 2.5 MODIFIZIERUNGS-FUNKTIONEN | + | ==== 2.5 MODIFIZIERUNGS-FUNKTIONEN |
Sie greifen direkt auf Knoten zu und können diese (manchmal gefährlich!) | Sie greifen direkt auf Knoten zu und können diese (manchmal gefährlich!) | ||
Zeile 408: | Zeile 426: | ||
REPLACEF(o1, | REPLACEF(o1, | ||
- | " | + | " |
- | | + | Atoms ersetzt: gefährlich wäre z.B.: REPLACEF(1, |
- | | + | " |
- | | + | " |
REPLACER(o1, | REPLACER(o1, | ||
Zeile 418: | Zeile 436: | ||
- | | + | ==== 2.6 PROPERTY-FUNKTIONEN |
Aufbau und Verwendung von " | Aufbau und Verwendung von " | ||
Zeile 431: | Zeile 449: | ||
Beispiel: Erstellen einer Telefon-Liste " | Beispiel: Erstellen einer Telefon-Liste " | ||
- | PUT(telefon, | + | |
- | PUT(telefon, | + | PUT(telefon, |
- | PUT(telefon, | + | PUT(telefon, |
Zeile 440: | Zeile 458: | ||
Die Antwort im Beispiel: | Die Antwort im Beispiel: | ||
- | REST(telefon) ---> ((BOB . 34567) | + | REST(telefon) ---> ( (BOB . 34567) |
Die Speicherbelegung sieht kompliziert aus: | Die Speicherbelegung sieht kompliziert aus: | ||
- | NODE-Nummer | + | ^ NODE-Nummer |
- | 1 | + | | 1 | Zeiger auf node2 | Zeiger auf node3 | |
- | 2 | + | | 2 | Zeiger auf BOB | Zeiger auf 34567 | |
- | 3 | + | | 3 | Zeiger auf node4 | Zeiger auf node5 | |
- | 4 | + | | 4 | Zeiger auf MAX | Zeiger auf 23456 | |
- | 5 | + | | 5 | Zeiger auf node6 | Zeiger auf node7 | |
- | 6 | + | | 6 | Zeiger auf HANS | Zeiger auf 12345 | |
Als Eigenschaften können selbstverständlich auch Namen und sogar Listen | Als Eigenschaften können selbstverständlich auch Namen und sogar Listen | ||
Zeile 458: | Zeile 476: | ||
PUT(name, indikator, property). Sollte also " | PUT(name, indikator, property). Sollte also " | ||
bekommen haben: | bekommen haben: | ||
+ | |||
PUT(telefon, | PUT(telefon, | ||
Zeile 463: | Zeile 482: | ||
ASSOC(NAM, PLIST) prüft, ob der Indikator " | ASSOC(NAM, PLIST) prüft, ob der Indikator " | ||
- | enthalten ist; dabei muß aber die P-Liste selbst (und | + | enthalten ist; dabei muß aber die P-Liste selbst (und |
- | nicht bloß ihr Name) als zweiter Parameter übergeben | + | nicht bloß ihr Name) als zweiter Parameter übergeben |
- | werden. Im Beispiel: | + | werden. Im Beispiel: |
- | ASSOC(HANS, REST(telefon)) ---> (HANS . 12345) | + | ASSOC(HANS, REST(telefon)) ---> (HANS . 12345)\\ |
- | ASSOC(HANS, telefon) | + | ASSOC(HANS, telefon) |
ASSOC(MITZI, | ASSOC(MITZI, | ||
GET(name, indikator) | GET(name, indikator) | ||
- | unter " | + | unter " |
- | | + | Indikator zugeordnet ist; wenn keiner vorhanden: FALSE |
- | GET(telefon, | + | GET(telefon, |
GET(telefon, | GET(telefon, | ||
- | | + | ==== 2.7 " |
Wie der Name andeutet, können diese (drei) Funktionen ATOME " | Wie der Name andeutet, können diese (drei) Funktionen ATOME " | ||
- | LENGTH(objekt) - wenn objekt ein NAME ist, ---> Anzahl der Zeichen | + | LENGTH(objekt) - wenn objekt ein NAME ist, --> Anzahl der Zeichen |
- | | + | - wenn object = INTEGER ---> Anzahl der Ziffern (bezogen auf die geltende Basis) |
- | auf die geltende Basis) | + | - wenn objekt = LISTE |
- | | + | |
- | EXPLODE(atom) | + | EXPLODE(atom) |
- | spalten | + | |
Umgekehrt kann man die einzelnen Bestandteile wieder zum ATOM verschmelzen | Umgekehrt kann man die einzelnen Bestandteile wieder zum ATOM verschmelzen | ||
mit COMPRESS(liste). | mit COMPRESS(liste). | ||
- | | + | ==== 2.8 TEST-Funktionen |
Dienen zur Abfrage von (Eigenschaften von) Datenobjekten - als Ergebnis | Dienen zur Abfrage von (Eigenschaften von) Datenobjekten - als Ergebnis | ||
Zeile 500: | Zeile 518: | ||
NAME(obj) | NAME(obj) | ||
- | | + | NAME(LISTE1) ---> FALSE, |
- | NAME(' | + | NAME(' |
INTEGER(obj) | INTEGER(obj) | ||
Zeile 508: | Zeile 526: | ||
EMPTY(obj) | EMPTY(obj) | ||
- | | + | FALSE ist, wird als Ergebnis TRUE geliefert. EMPTY() ist |
- | der Funktion NOT() identisch. | + | der Funktion NOT() identisch. |
- | POSITIVE(obj) ---> TRUE, wenn " | + | POSITIVE(obj) ---> TRUE, wenn " |
- | NEGATIVE() | + | NEGATIVE() |
ZERO(o) | ZERO(o) | ||
Zeile 518: | Zeile 536: | ||
- | 2.9 VERGLEICHS-Funktionen | + | ==== 2.9 VERGLEICHS-Funktionen |
geben (wie Testfunktionen) TRUE oder FALSE als Antwort, wenn der Vergleich | geben (wie Testfunktionen) TRUE oder FALSE als Antwort, wenn der Vergleich | ||
stimmt oder nicht. | stimmt oder nicht. | ||
- | GREATER(zahl1, | + | GREATER(zahl1, |
LESSER(zahl1, | LESSER(zahl1, | ||
Zeile 531: | Zeile 549: | ||
objekt1 EQ objekt2 -- Der Infix-Operator " | objekt1 EQ objekt2 -- Der Infix-Operator " | ||
- | | + | Namen, Zahlen, Listen). Beispiele: |
- | NAM1 EQ MAX --> TRUE | + | |
- | 100 EQ ZAHL1 -> TRUE | + | 100 EQ ZAHL1 -> TRUE |
LIST(1,2,3) EQ LIST(1,2,3) ---> FALSE, weil bei der Auswertung dieser | LIST(1,2,3) EQ LIST(1,2,3) ---> FALSE, weil bei der Auswertung dieser | ||
- | | + | Funktion zwei an verschiedenen Speicherplätzen stehende - |
- | also verschiedene! - Listen erzeugt werden. Listen werden | + | also verschiedene! - Listen erzeugt werden. Listen werden |
- | nur durch folgende Zuweisung identisch gemacht: | + | nur durch folgende Zuweisung identisch gemacht: |
LISTE6: | LISTE6: | ||
LISTE1 EQ LISTE6 tatsächlich TRUE. | LISTE1 EQ LISTE6 tatsächlich TRUE. | ||
Zeile 552: | Zeile 570: | ||
ORDERP(name1, | ORDERP(name1, | ||
- | | + | steht. (Jeder neu eingeführte Name wird in die OBLIST() |
- | aufgenommen und zwar in der Reihenfolge der Einführung: | + | aufgenommen und zwar in der Reihenfolge der Einführung: |
- | früher eingeführte stehen weiter rechts in der OBLIST().) | + | früher eingeführte stehen weiter rechts in der OBLIST().) |
- | | + | ==== 2.10 ZUWEISUNGS-Funktionen |
Der Infix-Operator ":" | Der Infix-Operator ":" | ||
Zeile 565: | Zeile 582: | ||
wird dann die FIRST-Zelle des NAMEns entsprechend modifiziert. Z.B.: | wird dann die FIRST-Zelle des NAMEns entsprechend modifiziert. Z.B.: | ||
- | ? NAME2 : SUSI & | + | |
- | @: SUSI | + | @: SUSI |
Nach & und " | Nach & und " | ||
Zeile 577: | Zeile 594: | ||
Der Prefix-Operator "'" | Der Prefix-Operator "'" | ||
ihr Name, ihre Bezeichnung übernommen wird: | ihr Name, ihre Bezeichnung übernommen wird: | ||
- | NAME2 ---> SUSI | + | |
- | 'NAME2 ---> NAME2 | + | 'NAME2 ---> NAME2 |
- | 'ZAHL1 ---> ZAHL1 | + | 'ZAHL1 ---> ZAHL1 |
Der QUOTE-Operator ' verhindert also die Auswertung des Daten-Objektes, | Der QUOTE-Operator ' verhindert also die Auswertung des Daten-Objektes, | ||
dem er steht. | dem er steht. | ||
- | |||
Etwas " | Etwas " | ||
+ | < | ||
? NAME2: | ? NAME2: | ||
@: SUSI | @: SUSI | ||
Zeile 593: | Zeile 610: | ||
? SUSI& | ? SUSI& | ||
@: BLOND | @: BLOND | ||
+ | </ | ||
und jetzt: | und jetzt: | ||
+ | < | ||
? ASSIGN(NAME2,'? | ? ASSIGN(NAME2,'? | ||
@: ? | @: ? | ||
Zeile 604: | Zeile 623: | ||
? SUSI& | ? SUSI& | ||
@: ? | @: ? | ||
+ | </ | ||
Die ASSIGN-Funktion belegt nicht wie ":" | Die ASSIGN-Funktion belegt nicht wie ":" | ||
Zeile 610: | Zeile 630: | ||
PUSH(objekt, | PUSH(objekt, | ||
- | | + | als ein Stapel dient: |
+ | |||
+ | < | ||
? STAPEL& | ? STAPEL& | ||
@: STAPEL | @: STAPEL | ||
Zeile 621: | Zeile 643: | ||
? STAPEL& | ? STAPEL& | ||
@: (HEIDI, . . KARIN . STAPEL) | @: (HEIDI, . . KARIN . STAPEL) | ||
+ | </ | ||
Die " | Die " | ||
+ | < | ||
? POP(STAPEL)& | ? POP(STAPEL)& | ||
@: HEIDI | @: HEIDI | ||
Zeile 629: | Zeile 653: | ||
? STAPEL& | ? STAPEL& | ||
@: ( . . KARIN . STAPEL) | @: ( . . KARIN . STAPEL) | ||
+ | </ | ||
Eine " | Eine " | ||
" | " | ||
- | |||
- | |||
Zeile 642: | Zeile 665: | ||
- | F.Widder, Graz, 15.10.88 | + | F.Widder, Graz, 15.10.88\\ |
+ | (F.Widder, Inst.für Theoret.Physik, | ||
- | (F.Widder, Inst.für Theoret.Physik, | ||
- | </ |