Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
| Nächste Überarbeitung | Vorhergehende Überarbeitung | ||
| cpm:mumath_einstieg [2010/09/17 07:57] – angelegt volkerp | cpm:mumath_einstieg [2013/02/04 17:47] (aktuell) – [2.6 PROPERTY-FUNKTIONEN] volkerp | ||
|---|---|---|---|
| Zeile 1: | Zeile 1: | ||
| ====== MUMATH Anleitung ====== | ====== MUMATH Anleitung ====== | ||
| - | in PCNEWS Nr. 13 gab es kurze Anleitungen zu MUMATH/ | + | in PCNEWS Nr. 13 http:// | 
| ===== Kurz-Anleitung zum Arbeiten mit " | ===== Kurz-Anleitung zum Arbeiten mit " | ||
| - | < | ||
| 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 ===== | ||
| - | < | + | 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, | ||
| - | </ | ||