Der DEFINE-Befehl des HP 49G

Notation

Die hier verwendete Notation ist in einem gesonderten Beitrag zusammengestellt.

Auf dem HP 49G ist links über der Zifferntaste [2] die Bezeichnung DEF in violetter Schrift aufgedruckt. Dies ist kein Menü, sondern dahinter verbirgt sich der Befehl DEFINE (= [leftshift][DEF] = [leftshift][2]). Dieser Befehl steht auch im Katalog [CAT] zur Verfügung.

Über [CAT] ist (ab ROM-Version 1.19-x) noch ein weiterer Befehl DEF verfügbar, der zu DEFINE identisch ist. Wenn im folgenden Text nur DEFINE genannt wird, ist damit immer auch DEF gemeint.

Beschreibung des Befehls

Wenn im Stack der algebraische Ausdruck 'name=ausdruck' steht (wobei name für den Variablennamen oder Funktionsnamen und ausdruck für den Funktionsausdruck steht), dann bewirkt der Befehl DEFINE zweierlei:

1. Steht im Stack 'name=ausdruck' allein, dann wird 'ausdruck' in die Variable mit dem Namen 'name' gespeichert. ausdruck darf dann aber nicht von Variablen abhängig sein, sondern nur Konstanten enthalten. Achtung: Hier ist die Beschreibung im Advanced User's Guide nicht eindeutig!
Beispiel 1: Bei 'A=3*ln(2)+5^ln(3)' speichert DEFINE den ausgerechneten Wert in die Variable A.
Beispiel 2: Bei 'A=2*x' führt DEFINE zu einer Fehlermeldung "Undefined Name", weil x nicht bekannt ist.
2. Steht dort 'name(name1, name2,...)=ausdruck' mit weiteren Namen als Parameter von name, dann darf ausdruck die genannten Variablen enthalten. DEFINE erzeugt ein Programm, das die in der Klammer stehenden Namen als symbolische Parameter verwendet. Das Programm wird in der Variablen 'name' gespeichert wird. Dieses Programm wird als benutzerdefinierte Funktion bezeichnet.

Flags

Zum Setzen der Flags wird das Umschaltprogramm SYMB/ZAHL zum Herunterladen angeboten (siehe auch Umschaltprogramme).
Der Aufruf schaltet die Flags -1, -2, -3, -79 und -105 entsprechend der erforderlichen Berechnungsart um und zeigt dann durch den geänderten Namen (ZAHL oder SYMB) an, welche Berechnungsart gerade aktuell ist:

Die Flags -103 (komplexe Zahlen) und -17 (Winkel im Bogenmaß) müssen vom Benutzer selbst gesetzt werden oder werden vom Programm automatisch umgestellt (mit oder ohne Bestätigung, je nach Flag -120 (silent modus).

Beispiel Pythagoras

DEFINE soll am Beispiel des bekannten Pythagoräischen Satzes verdeutlicht werden. Die Funktion soll lauten:

Benutzerdefinierte Funktion: Pythagoras

Diese benutzerdefinierte Funktion wird hier im Beispiel mit PYTH(a,b) bezeichnet. Die symbolischen Parameter a und b in der Klammer werden beim Aufruf durch die aktuellen Parameter ersetzt: Zum Beispiel lautet bei a = 3 und b = 4 der Aufruf PYTH(3,4). Das Ergebnis wird durch die rechte Seite der Gleichung bestimmt.

Zum Erstellen der Funktion wird die Formel als algebraischen Ausdruck in den Stack eingegeben (Bild_1). Vorsichtshalber speichert man diesen Ausdruck in die Variable PY, Dies wäre nicht nötig, wenn nur die durch den Befehl DEFINE erzeugte benutzerdefinierte Funktion verwendet werden soll. Der DEFINE-Befehl braucht den Ausdruck auf dem Stack, deshalb muß er durch [rightshift][PY] auf den Stack zurückkopiert werden. Bild_1
Bild_1: Formeleingabe
Nach Aufruf von DEFINE legt das Programm die Variable PYTH an und speichert das Progamm dort. DEFINE verwendet den Namen, der auf der linken Seite der Gleichung angegeben ist . Durch [rightshift][PYTH] haben wir den Inhalt wieder in den Stack geholt (siehe Bild_2). Bild_2
Bild_2: Programm von PYTH(a,b)
Wenn die Flags so gesetzt sind, daß alle Inhalte symbolisch angezeigt werden, dann erhält man die entsprechende Bildschirmanzeige.

Bild_3 zeigt den Inhalt der Variablen PY in der Stackebene 2 und das in PYTH enthaltene Programm in Stackebene 1.

Bild_3
Bild_3: Symbolische Anzeige

Anwendung der benutzerdefinierten Funktionen

ALG-Modus (Flag -95 = 1):

Der Programmaufruf im algebraischen Modus ist etwas anders als bei RPN. Er ist in Bild_4 zu sehen.

Durch Drücken von [PYTH] wird die Buchstabenfolge PYTH in die Befehlszeile gestellt. Diesen Aufruf muß durch die aktuellen Parameter in runden Klammern ergänzt werden. Das Komma als Trenner muß auch eingetippt werden, sonst erfolgt die Fehlermeldung. "Too Few Arguments". Für Dezimalzahlen wird der Punkt verwendet (Flag -51 =0).
Bei Dezimalkomma (Flag -51 =1) ist der Trenner ein Semikolon (";").
Bild_4
Bild_4: Algebraischer Modus

Für a = 3 und b = 4 lautet der vollständige Aufruf also: PYTH(3,4) (siehe Bild_4). Die erforderlichen Eingaben nach Drücken von [PYTH] sind hier rot dargestellt. Mit [ENTER] wird die Berechnung gestartet.

Programme ohne erforderliche Parameter werden im ALG-Modus einfach mit [ENTER] gestartet. Zum Beispiel wird das Umschaltprogramm ZAHL mit [ZAHL][ENTER] aufgerufen. Als Anzeige erscheint das Ergebnis NOVAL (= no Value = kein Ergebnis vorgesehen), weil nur die Flags geändert werden, aber keine Ausgabe erfolgt. Der Menüname des Umschaltprogramms ändert sich gegenüber Bild_2 auf SYMB in Bild_4.

RPN-Modus (Flag -95 = 0):

Beim RPN-Modus kann die Ausführung der benutzerdefinierten Funktionen auf zwei Arten erfolgen:

Der Funktionsaufruf kann in Apostrophe ' ' eingeschlossen und mit EVAL gestartet werden.
Z.B.: 'PYTH(3,4)' EVAL.

Wenn die Parameter in der richtigen Reihenfolge im Stack stehen, kann die Funktion auch über die zugeordnete F-Taste gestartet werden. Die Reihenfolge der Parameter wird durch die Anordnung in der DEFINE-Klammer bestimmt: Bei den Parametern steht der erste in der obersten Stackebene und die anderen stehen in den Ebenen darunter.

Für das Beispiel wird a = 3 und b = 4 gewählt, also wird 3 zuerst in den Stack eingegeben und dann 4. Nun wird [PYTH] gedrückt. Das Ergebnis steht im Stack: Die Zahl 5.

Bei anderen Eingabewerten im Stack, z. B. a = 5 und b = 6, gibt der Rechner im exakten Modus nach [PYTH] nicht eine reelle Zahl, sondern einen Wurzelausdruck (Wurzel aus 61) aus.
Nach [rightshift][->NUM] wird dann der reelle Wert 7.81024967591 angezeigt.


Zum Beginn des Beitrags
Zur Beitragsübersicht

Copyright © 2002 Otto Praxl
Alle Rechte vorbehalten!