Die hier verwendete Notation ist in einem gesonderten Beitrag zusammengestellt.
"The HP 49G is a Scientific Programmable Graphing Calculator for math, science and engineering students and professionals."
Mit diesem Text beginnt HP die Produktbeschreibung des HP 49G. Dieser Taschenrechner ist speziell für wissenschaftliche Grafikanwendungen entwickelt worden.
Die Plot-Anwendungen ermöglichen
- Gleichungen in grafischer Form auszugeben,
- ein Datenmatrix darzustellen,
- Graphen zu plotten,
- beliebige Grafiken (Bilder) auszugeben.
Die ersten drei Bereiche beschreibt das mitgelieferte Handbuch in Kapitel 4. Wie beliebige Grafiken bequem mit einigen einfachen selbstgestrickten Programmen gehandhabt werden können, wird in diesem Beitrag behandelt.
Fehlerhinweis:
Es ist zu beachten, daß die im Handbuch (Nr. F1633-90008, Ausgabe 1999) ab Seite 4-3 angegebenen Tastenfolgen für die obere Tastenreihe nicht so funktionieren, wie sie dort beschrieben sind. Bei allen Tastenfolgen, die mit [leftshift] beginnen, muß diese Taste festgehalten werden, während die nachfolgende F-Taste gedrückt wird (siehe auch [leftshift-hold] im Beitrag "Tastatur"). Ausführliche Beschreibung siehe unter Reihe-1-Befehle im Beitrag "Undokumentierte Befehle des HP 49G"
Als Grundlage dieser Beschreibung der Grafikobjekte wird das HP 48G-Benutzerhandbuch herangezogen.
Grafikobjekte enthalten die kodierten Daten von HP-"Bildern", z.B. Plots mathematischer Daten, Grafiken und Darstellungen des Stack. Wie alle Objekte des HP 49G können auch Grafikobjekte im Stack abgelegt und in Variablen gespeichert werden. Im Stack werden Grafikobjekte als
Graphic n × m
dargestellt, wobei n und m der Breite und Höhe des Bildes in Pixel entspricht. Ein Pixel ist ein Bildpunkt in der Anzeige. Der HP 49G verwendet zwei Arten der Erzeugung von Grafikobjekten:
- Plots: Grafische Darstellungen von Funktionen, Gleichungen und Datengruppen, die mit Plot-Anwendungen erstellt wurden (Beschreibung im Handbuch, Kapitel 4).
- Bilder: Hierbei handelt es sich um Grafikobjekte freier Form, die Pixel-für-Pixel mit dem Grafikeditor, mit Schnappschußbefehlen aus Bildschirminhalten oder durch Programm erzeugt worden sind.
Integrierte Grafik-"Wandtafel" PICT
Es kann immer nur ein Grafikobjekt auf einmal auf dem Bildschirm angezeigt werden. Bildschirm-Splitten (wie beim TI-89) ist hier nicht möglich. Dieses aktuelle Grafikobjekt ist immer in der reservierten Variablen PICT gespeichert. Man kann sich PICT als integrierte Grafik-"Wandtafel" vorstellen, auf der die Funktionen geplottet und die Grafiken gezeichnet werden.
Grafikobjekte (Plots, Bilder) können unter einem beliebigen gültigen Namen als Variable gespeichert werden; zum Anzeigen muß der Inhalt dieser Variablen jedoch in PICT kopiert werden. Dies ist die Grundlage der Programme, die weiter unten entwickelt werden.
Der Anzeigebildschirm besteht aus einer Flüssigkristall-Anzeige (LCD-Display) mit 131 × 64 Pixel. Jedes einzelne Pixel kann man sich als Lämpchen vorstellen, das entweder hell- oder dunkelgeschaltet ist, für fotoähnliche Bilder gibt es auch Graustufen dazwischen. Diese Aktivierung erfolgt normalerweise durch das Betriebssystem des Taschenrechners. Mit dem Befehl PVIEW wird eine Verbindung von PICT zum LCD-Display hergestellt, dann wird die Grafik angezeigt.
PICT kann auch Bilder enthalten, die größer als die LCD-Anzeige sind. Sie werden dann über die Cursortasten ge"scrollt", also unter den Anzeigefenster auf- und ab-, hin und hergeschoben, wie vom PC bekannt.
Für Schnappschüsse der LCD-Anzeige steht der Befehl LCD-> zur Verfügung. Damit der Befehl selbst nicht auf der Anzeige erscheint, wird er aus dem Katalog [CAT] heraus aufgerufen. Das auf dem Stack erscheinende Grafikobjekt Graphic 131 × 64 wird dann in eine Variable oder direkt in PICT gespeichert.
Es gibt noch jede Menge anderer Grafikbefehle. Damit können sehr anspruchsvolle Grafikanzeigen in Gestaltung und Verlauf erzeugt werden. Die genaue (englische) Funktionsbeschreibung der Grafikbefehle ist im HP 49G Advanced Users Guide Volume 1 zu finden (oder dem HP 48G Advanced User's Reference Manual, das es noch zu kaufen gibt).
Es können auch Grauton-Bilder (Schwarz-weiß-Fotos) angezeigt werden. Im HP 49G sind als Beispiele die Fotos des Entwicklerteams hinterlegt. Wie man diese Bilder anzeigt, steht in den FAQ von www.hpcalc.org . Mit dem Befehl RULES erhält man die Vornamen aller Entwickler des HP 49G.
Zum Beispiel wird ein Gruppenbild des Entwicklerteams Cyrille, Jean-Yves, Mika, Gerald und Bernard wie folgt angezeigt:
- Tastenkombination [ON]&[F4],
- das erscheinende Testmenü nicht beachten!
- Nach [SIN] erscheint das Gruppenbild,
- es kann mit den Cursortasten hin, her, auf und ab geschoben werden.
- Mit [ON] die Anzeige verlassen (= Warmstart).
Wenn anstelle von [SIN] bestimmte andere Tasten gedrückt werden (z.B. [F2], [F3], [APPS], [VAR], [HIST], [Wurzel x], [COS], [EEX]), dann erscheinen die Fotos der anderen Entwickler.
Bitte keine weiteren Tasten ausprobieren, denn die sind mit System-Tests belegt, die eventuell "ins Auge gehen" können.Wie Grautonbilder erzeugt werden können, wird hier nicht erklärt. Bei www.hpcalc.org sind Beiträge darüber zu finden.
Auf PICT kann man auch mit Pixeln "malen". Dafür steht ein Grafikeditor zur Verfügung, der über die [Cursor left]-Taste im Cursorblock aufgerufen wird. Ein vorhandenes Bild in PICT kann dadurch verändert werden. Es bleibt in PICT erhalten.
Auch Grafikobjekte auf dem Stack (Ebene 1) können editiert werden, der Aufruf erfolgt durch die [Cursor down]-Taste im Cursorblock.
Grafikobjekte in PICT können in Variablen gesichert werden. Das funktioniert in zwei Schritten:
- Man holt mit PICT RCL die Grafik in den Stack, dort erfolgt normalerweise die Anzeige Graphic 131 × 64. Der Inhalt wird normalerweise nicht gezeigt (abhängig vom Flag -83). PICT kann aber auch andere Pixel-Maße haben, dann werden diese angezeigt. Dieser Stackinhalt ist ein Grafikobjekt und ist rechnerintern mit GROB 131 64 xx... gespeichert, wobei die Kennung GROB "Grafikobjekt" bedeutet, 131 und 64 die Größe angibt und die xx... binäre Daten (meist im HEXA-Format) sind.
- Nun wählt man den Variablennamen und speichert mit STO die Grafik in diese Variable.
Umgekehrt bringt man eine gespeicherte Grafik wie folgt in PICT und zeigt sie an:
- Variableninhalt in den Stack bringen mit 'Variable' RCL oder mit [rightshift] [Variable] oder nur mit [Variable], wobei fürVariable der Name der Variablen gesetzt wird.
- Mit PICT STO den Stackinhalt in PICT speichern.
- Die Grafik auf der "Wandtafel" PICT sieht man noch nicht. Jetzt wird «{ } PVIEW» aufgerufen. Die Grafik erscheint vollflächig auf dem LCD-Display.
- Mit CANCEL (= [ON]) wird diese Anzeige beendet.
Diese Programme werden als Unterverzeichnis GRAFIK zur Verfügung gestellt. Bitte nicht editieren!
Sie laufen nur im RPN-Modus, denn der Stack steht nur im RPN-Modus zur Verfügung.Die beiden folgenden Bilder zeigen dasselbe Menü von GRAFIK mit dem Unterschied, daß der erste Menüpunkt bei [F1] nach Aktivierung den Namen wechselt, das Flag -83 ändert und damit der Stack das dort gespeicherte Grafikobjekt einmal als Zeile und das andere Mal als Bild anzeigt.
Die Menüpunkte haben folgende Bedeutung:
Programm-Name Inhalt Funktion des Programms STZEI/STBLD Umschaltung des Systemflags -83 für Stackzeile/Stackbild Umschaltprogramm mit Status-Anzeige BILD «{ } PVIEW» Anzeigen des Inhalts von PICT ST2BI «PICT STO» Stack als Bild in PICT speichern BI2ST «PICT RCL» Bild von PICT in den Stack bringen erase «ERASE» PICT löschen
Hinweis: ERASE ist ein HP-Befehl und kann deshalb nicht als Variablenname verwendet werden, deshalb werden Kleinbuchstaben verwendet
(Vorsicht beim Speichern zum PC und zurück!)NBILD «PICT NEG» erzeugt ein Negativ des aktuellen PICT-Inhalts MRZ Grafikobjekt Monatskalender für März 2000 als Bildbeispiel APR Grafikobjekt Monatskalender für April 2000 als Bildbeispiel
Wenn das Unterverzeichnis GRAFIK das aktuelle Verzeichnis ist, dann können die Programme ausprobiert werden:
Den Monatskalender März 2000 wird mit [MRZ] (ist auf der zweiten Menüseite, vorher [NXT] drücken!) in den Stack gebracht. Im Stack wird das Grafikobjekt "GRAPHIC 131 × 64" angezeigt (siehe obiges linkes Bild). Mit der Menütaste [STZEI] / [STBLD] kann man das Flag -83 umschalten. Dies bewirkt, daß bei [STZEI] die Anzeige des Grafikobjekts als Zeile "GRAPHIC 131 × 64" erscheint, bei [STBLD] sieht man zusätzlich noch den oberen Teil des Bildes im Stack (siehe obiges rechtes Bild). Man beachte bei beiden Bildern die unterschiedliche Bezeichnung des ersten Menüfeldes.
Nun wird [ST2BI] (Stack to Bild) aktiviert, damit wird der Stackinhalt in PICT gespeichert. Mit [BILD] wird der Inhalt von PICT angezeigt. Die Bildanzeige kann man mit [ON] beenden.
Hinweis:
Das Bild des (aktuellen) Monatskalenders wirkt auch als Hintergrundbild für den PC ganz gut, wenn man es als Vollbild schalten kann. Setzt man die Symbole (Icons) auf bestimmte Tage, erhält man einen einfachen grafischen Terminkalender. Das Programm für die Erzeugung des aktuellen Monatskalender ist anschließend beschrieben.
Als ausführliches Programmierbeispiel für ein Bild in PICT wird ein Unterverzeichnis KALND mitgeliefert (Bitte nicht editieren!).
Das Hauptprogramm KAL erzeugt den Monatskalender für einen beliebigen Monat innerhalb der gültigen Datumsgrenzen des HP 49G. Das Ergebnis dieses Programms wurde oben bereits verwendet.
KAL verwendet drei Unterprogramme WOT, KW und MON.
KAL = Monatskalender
KAL berechnet den Monatskalender eines bestimmten Monats tabellarisch als Bild.
Das Programm nimmt zwei Werte vom Stack,
- die Monatsnummer (1 bis 12) und
- die Jahreszahl,
z. B. 3 2000 für März 2000 (oder auch 3 0).
Hinweis: Die Bilder und Beispiele stammen aus der Erstausgabe dieses Beitrags vom März 2000.Hier wird das deutsche Datumformat verwendet, deshalb ist das Systemflag -42 gesetzt. Die Flags -2 und -3 (für numerische Ausgabe) müssen ebenfalls gesetzt sein.Wenn für die Monatsnummer eine ungültige Zahl eingegeben worden ist, so wählt das Programm als Monat automatisch 1 (= Januar).
Die Jahreszahl kann vierstellig eingegeben werden. Das Programm nimmt aber auch Jahreszahlen ohne Jahrhundert.
Achtung:
- Bei Eingabe einer Jahreszahl <50 wird automatisch 2000 addiert,
- bei Jahreszahlen > 50 und < 1583 wird 1900 addiert.
Die Jahre < 1583 "verkraftet" der Rechner nicht, deshalb werden sie hier ausgesiebt und automatisch 1900 addiert Bei Eingabe von 3 1500 wird der Kalender für März 3400 (=1500+1900) berechnet (siehe dazu das Thema "Historische Grenzen" im Beitrag "Die Zeit im HP 49G").
Das Programm erzeugt folgende Variablen, die nach erfolgreichem Programmlauf automatisch wieder gelöscht werden. Wenn das Programm vor regulärer Beendigung abgebrochen wird, dann bleiben diese Variablen im Menü stehen (und müssen dann von Hand gelöscht werden).
DAT1 Datum des Monatsersten im Dezimalformat WOT1 Wochentag des Monatsersten als Zahl, wobei 1=Mo, 2=Di ...6=Sa, 0=So gelten MONL Monatslänge des gewählten Monats mm eingegebene Monatszahl jj eingegebene Jahreszahl POS1 Position des Monatsersten in PICT
Das Programm ist ein Beispiel für die Programmierung eines Bildes. Es ist nicht optimiert. Es läuft auf dem Rechner des Autors etwa 35 Sekunden (abhängig von der Zahl der Monatstage). Man könnte es noch optimieren und "schneller" machen. Beim Bildaufbau kann man zusehen; dies wird dadurch bewirkt, daß man ziemlich am Anfang des Programms durch den Befehl PVIEW die Verbindung von PICT zur LCD-Anzeige herstellt.
Achtung: Für die Verwendung auf dem HP 48GX muß das Programm geändert werden: Es müssen die Befehle R->I entfernt werden, denn der HP 48GX kennt den Befehl R->I nicht und erzeugt automatisch Integerzahlen.
WOT = Wochentag
WOT wird von KAL verwendet. WOT erwartet das Datum im Dezimalformat und gibt den Wochentag als Nummer (1=Mo, 2=Di ...6=Sa, 0=So) auf den Stack.
KW berechnet die Nummer der Kalenderwoche, erwartet auf dem Stack das Datum im Dezimalformat und gibt die Nummer der Kalenderwoche auf den Stack zurück.
Bei der Programmierung muß das deutsche Kalendersystem berücksichtigt werden:
Der 1. Januar eines Jahres gehört zur ersten Kalenderwoche,
wenn dieser Tag auf einen Montag, Dienstag, Mittwoch oder Donnerstag fällt.Falls der 1. Januar ein Freitag, Samstag oder Sonntag ist, zählt er - und eventuell auch der 2. und 3. Januar der Woche - noch zur letzten Kalenderwoche des Vorjahres.
Beim Jahreswechsel gibt es meist eine gemeinsame Woche für die aufeinanderfolgenden Jahre.
Nur wenn der 1. Januar auf einen Montag fällt, gibt es keine gemeinsame Woche.
Auf die 52. KW folgt immer die 1. KW des folgenden Jahres Je nachdem, ob der Jahreswechsel in die 52. KW oder in die 1. KW fällt, gibt das Programm für diese gemeinsame Woche die Zahl 52 oder 1 aus. Der Monatskalender zeigt diese Zahl für die letzte Woche im Dezember und für die erste Woche im Januar des darauffolgenden Jahres an.
MON = Ausgabe der Monatsnamen
Das Programm erwartet die Nummer (1 bis 12) des Monats auf dem Stack und gibt den Namen als Zeichenkette (Text) in den Stack zurück.
Zum Beginn des Beitrags
Zur Beitragsübersicht
Copyright © 2002 Otto Praxl
Alle Rechte vorbehalten!