Hilfe zu KeyJ's Rechner

Einführung

KeyJ's Recher ist eine recht einfache Desktop-Taschenrechner-Anwendung, vergleichbar mit »echten« programmierbaren Taschenrechnern von HP, Casio, TI o.ä.

Einfache Berechnungen

Ganz einfach: Einfach eine mathematische Formel (z.B. 5*4) eingeben, ENTER drücken, und das Ergebnis wird angezeigt (hier also 20).

Ausdruckssyntax

Ausdrücke werden genau so ausgewertet wie man sie auch auf Papier schreiben würde, d.h. mit korrekter Klammerung und Operratorreihenfolge (s.u.).

Zahlen können als einfache EDV-typische Dezimalzahlen geschrieben werden, z.B. 37, 23.42 oder 1.5482E-4.
Ganzzahlige Konstanten können auch in binärer, hexadezimaler oder oktaler Schreibweise angegeben werden, wenn ihnen jeweils ein % (Prozentzeichen), $ (Dollarzeichen), oder & (kaufmännisches Und) vorangestellt wird. Beispiele: %101011 (ergibt 43 dezimal), #B0A7 (ergibt 45223), oder &775 (509).
Zusätzlich gibt es noch eine weitere vordefinierte Konstante, Pi.

Operatoren

Sortiert nach Rangfolge, von höchster nach niedrigster Priorität:
 1  ^  Potenz
 2  *  Multiplikation
 2  /  Division
 3  +  Addition
 3  -  Subtraktion
 4  =  Gleich -- ergibt 1, wenn beide Seiten gleiche Werte ergeben, sonst 0
 4  <  Kleiner als -- ergibt nur dann 1, wenn die linke Seite kleiner ist als die rechte
 4  >  Größer als -- ergibt nur dann 1, wenn die linke Seite größer ist als die rechte
 5  &  Logisches UND -- ergibt nur dann 1, wenn beide Seiten nicht Null ergeben
 5  |  Logisches ODER -- ergibt nur dann 1, wenn mindestens eine Seite nicht null ergibt
(HINWEIS: <= und >= funktionieren nicht!)

Funktionen

Zur Zeit werden folgende Funktionen von KeyJ's Rechner unterstützt:

neg(a)
Der negative Wert von a.
abs(a)
Der absolute Wert von a.
sgn(a)
Das Vorzeichen von a (also -1, 0 oder +1).
not(a)
Logisches NICHT -- ergibt nur dann 1, wenn a Null ist.
round(a)
Rundet a zur nächstliegenden ganzen Zahl.
trunc(a), int(a)
Der ganzzahlige Anteil von a. (Rundet a zur nächsten ganzen Zahl in Richtung Null.)
frac(a)
Der Nachkommaanteil von a.
sqr(a)
Das Quadrat von a.
sqrt(a)
Die Quadratwurzel von a.
exp(a)
Die a-te Potenz der Konstante e.
ln(a)
Der natürliche Logarithmus von a.
lg(a)
Der dekadische Logarithmus von a.
ld(a)
Der dyadische Logarithmus von a.
deg2rad(a)
Rechnet einen Winkel von Grad in Radiant um.
rad2deg(a)
Rechnet einen Winkel von Radiant in Grad um.
random(a)
Eine Pseudozufallszahl im Intervall [0;a[.
sin(a), cos(a), tan(a), cot(a), sec(a), csc(a)
arcsin(a), arccos(a), arctan(a), arccot(a), arcsec(a), arccsc(a)
sinh(a), cosh(a), tanh(a), coth(a), sech(a), csch(a)
arcsinh(a), arccosh(a), arctanh(a), arccoth(a), arcsech(a), arccsch(a)
Trigonometrische Funktionen. HINWEIS: Alle Berechnungen werden in Radiant und nicht Grad durchgeführt! Es muß also ggf. deg2rad und rad2deg verwendet werden.
log(a,b)
Der Logarithmus von a zur Basis b.
root(a,b)
Die b-te Wurzel von a.
mod(a,b)
Der Rest der ganzzahligen (!) Division a/b.
fmod(a,b)
Der Rest der Division a/b.

Scripting

KeyJ's Rechner enthält eine sehr einfacher (aber dennoch kryptische :) Scriptsprache. Jede Zeile, die im Programmfenster eingegeben wird, wird in Wirklichkeit als einzeiliges Script ausgeführt. Am Ende der Ausführung eines Scriptes wird der letzte Wert, der einer Variable zugewiesen wurde, auf die Konsole geschrieben.

Scriptbefehle

Kommentare
Alle Zeilen, die mit #, // oder ; beginnen, werden als Kommentare interpretiert (d.h. ignoriert).
Einfache Berechnungen
Alle Zeilen, die lediglich einen mathematischen Ausdruck (z.B. x^2-4*y+z) enthalten, werden ausgewertet und das Berechnungsergebnis wird in der speziellen Variable namens Ans (»Answer«) oder _ (Unterstrich) gespeichert. Das Ergebnis von Berechnungen, die zu Fehlern führen (z.B. Division durch Null, Logarithmus einer nicht-positiven Zahl usw.) ist immer Null, aber die Programmausführung wird fortgesetzt. Mit der spezielle Variable ` (Backtick) kann geprüft werden, ob eine Operation fehlgeschlagen ist: Sie enthält den Wert 1, wenn die letzte Operation einen Fehler bewirkte, oder 0, wenn sie erfolgreich durchgeführt werden konnte.
Zuweisungen
Variable:=Ausdruck
Der Ausdruck wird ausgewertet und das Ergebnis in der angegebenen Variable gespeichert, allerdings nicht in Ans.
Gültige Variablennamen sind alle Buchstaben von a bis z, Groß-/Kleinschreibung wird ignoriert.
write|print
"Zeichenkette"
write|print Ausdruck[:Länge[:Stellen]]
write|print hex|bin|oct Ausdruck[:Länge]
Die Zeichenkette oder der Wert des Ausdrucks werden in die Konsole geschrieben. Falls eine Länge angegeben ist, wird der Wert links mit Leerzeichen aufgefüllt. Wenn die Angabe zu den Dezimalstellen vorhanden ist, werden genau soviele Stellen ausgegeben wie gewünscht.
write, im Gegensatz zu print, schreibt die Zeile nicht sofort in die Konsole, sondern schreibt sie in einen Zeilenpuffer. Somit ist es möglich, mehrere Werte in einer Zeile auszugeben.
Durch die Angaben hex|bin|oct wird der Wert als eine 32-Bit-Ganzzahl in hexadezimaler, binärer oder oktaler Notation ausgegeben.
input Variable
Läßt den Benutzer einen Wert (oder eine Formel) in die angegebene Variable eingeben.
label Marke
Definiert eine Sprungmarke. Gültige Markennamen liegen im Bereich von 0 bis 9 und a bis z (ohne Berücksichtigung von Groß-/Kleinschreibung).
goto Marke
Springt an die angegebene Marke.
if Bedingung goto Marke
Wertet die Bedingung (ein mathematischer Ausdruck) aus. Wenn das Ergebnis nicht Null ist, wird die Programmausführung an angegebenen Marke fortgesetzt.
if Bedingung
     ... Befehle ...
[else
     ... Befehle ...]
endif
Führt die Befehle, die if folgen, nur dann aus, wenn die Bedingung einen Nicht-Null-Wert ergibt. Andernfalls wird der else-Zweig ausgeführt, wenn er existiert.
skip Bedingung
     Befehl
Überspringt den folgenden Befehl, wenn die Bedingung einen Nicht-Null-Wert ergibt. Oder, alternative Definition: Der Folgebefehl wird nur dann ausgeführt, wenn die Bedingung Null ergibt.
exit
Bricht das aktuelle Script ab.