|
gcalc V.06 - GAWK Stack-Rechner für Linux usw.
Das Kopieren des Programms für die persönliche Benutzung ist
erlaubt!
Autor: Tjabo Kloppenburg, Siegen.
Achtung!
Ich übernehme keinerlei Garantie für die einwandfreie Funktionsweise
des Programms.
Jegliche Benutzug geschieht auf eigene Gefahr!
Letzte Änderung: 5. Juli 1999
Dies ist der Downloadlink...
Das isses:
gcalc ist ein Interaktives "Taschenrechner"-Programm für das
Terminalfenster.
Um Rechnungen durchzuführen legt man zuerst die beteiligten Zahlenwerte
auf den Stack, um sie dann mit einem Operator wie z.B. +, -, / ,* usw.
zu verrechnen.
Bei Programmende werden alle Registerinhalte abgesichert.
Das kann gcalc:
-
Vielfältige Rechenfunktionen: +,-,/,*, x hoch y, x-te Wurzel
aus y, 1/x, x², Wurzel(x), Konstanten (PI,e,g), sin,cos,tan (deg),
arcsin (testweise), bald auch weitere Arcus-Funktionen.
-
Stacktiefe: 20 Speicherzellen, 10 sichtbar.
-
10 Zusatzspeicher: Mit den Kommandos "s1", "s2".."s10" wird der
Inhalt der Speicherstelle 1 des Stacks in den entsprechenden Zusatzspeicher
kopiert. Das Auslesen (das Legen auf den Stack) erfolgt mit den Kommandos
"m1", "m2".."m10".
-
Bezeichner für Zusatzspeicher: z.B. mit "l6 Gesamtzahl"
(kleines L) setzt man für den Zusatzspeicher Nr. 6 den Beschreibungstext
auf "Gesamtzahl".
-
Direkt ansprechbare Stack-Speicherzellen: mit "a1" bis "a10" legt
man den Inhalt der Stack-Speicherzelle erneut auf den Stack.
-
Grundlegende Stackaktionen: drop (d), clear (c), clear all (ca).
-
Findbare Hilfe im Programm: "?(enter)", "h(enter)", "hilfe(enter"
und "help(enter)". In der zweiten Bildschirmzeile steht immer, wie
man die Hilfe findet... :-)
-
Register-Sicherung: Bei Programmende werden alle Register- und Bezeichnerwerte
in einer Datei im Homeverzeichnis (~/.gcalcsave) gesichert. Diese werden
bei Neustart wiederhergestellt.
-
Kommastellen beständig: Bei gcalc verschwinden Nachkommastellen
im Gegensatz zu bc nicht, wenn man das nicht will. Will man es doch,
kann man die Nach/Vorkommastellen mittels int und frac abschnibbeln.
"Screenshot" aus dem Terminalfenster:
-- gcalc V.05: GAWK - Stack
- Rechner (1999 by Tjabo Kloppenburg) --
(Hilfe: "?", "h", "hilfe", "help")
a10 :
m10/r10 =
Berechnungen für Zeitrafferaufnahmen
a9 :
m9 /r9 =
a8 :
m8 /r8 =
a7 : 8
m7 /r7 = 8
Ereignisdauer / Stunden
a6 : 3600
m6 /r6 = 28800
Ereignisdauer / sek
a5 : 28800
m5 /r5 = 30
Dauer des Films / sek
a4 : 8
m4 /r4 = 16
Bilder / sek
a3 : 60
m3 /r3 = 480
Zahl benötigter Bilder
a2 : 60
m2 /r2 =
a1 : 28800
m1 /r1 =
Bildabstand / sek
Eingabe> m3
In diesem Beispiel versuche ich auszurechnen, alle wieviel Sekunden
ich ein Bild machen muss, um einen 8 Stunden dauernden Vorgang in einen
30 Sekunden langen Film zu bannen, bei einer Filmabspulung von 16 Bildern
pro Sekunde.
In der linken Spalte sieht man die 10 Zellen des Stacks, in der Mitte
die 10 Zusatzspeicher, und rechts die Label der Zusatzspeicher.
Eben habe ich mit "m6(enter)" die Ereignisdauer in Sekunden auf den
Stack gezaubert, um nun mit "m3(enter)" und "/(enter)" den Aufnahmeabstand
zu berechnen.
Da die 28800 ([sek]) noch auf dem Stack liegen, hätte ich sie
auch mit "a4(enter)" nochmal in die Stackposition #1 zaubern können
(vor "m6" lag die Zahl noch an Position a4).
Um z.B. die Zahl der benötigten Bilder zu berechnen, würde
ich eintippen (ohne die "-Zeichen):
"m5(enter)"
"m4(enter)"
"*(enter)"
Das Speichern des Ergebnisses nach m3 erfolgt so:
"s3(enter)"
Das Label bei m1 habe ich so erzeugt (kleines L):
"l1 Bildabstand / sek(enter)"
Nach dem Beenden von gcalc mit "x(enter)" werden alle Register- und
Labelinhalte gespeichert. Beim nächsten Start sind sie wieder da.
Will man nicht nur den Stack löschen, sondern auch alle Zusatzspeicher
und Label, so kann man das mit "ca(enter)" tun.
Einfache Installation:
Da gcalc ein GAWK-Programm ist, muss ein gawk-Interpreter installiert
sein. Sollte das Shellkommando which gawk ein anderes Ergebnis bringen
als "/usr/bin/gawk", so muss die erste Zeile von gawk entsprechend angepasst,
oder gawk installiert werden.
Damit gcalc erreichbar ist, muss es in irgendein Verzeichnis
des PATH kopiert werden, z.B. nach /usr/local/bin/gcalc. Damit man
es auch findet, wenn man einen Taschenrechner sucht, sollte man weitere
Links wie rechner und calc anlegen... :-)
Bei mir funktioniert gcalc in folgender Systemumgebung:
-
Linux Suse 6.1 demo(tm) auf AMD(tm) K5-100 mit 48MB RAM
-
GNU bash, version 2.02.1(1)
-
GNU Awk 3.0.3
Bei abweichenden Shells usw. kann es natürlich Probleme geben. z.B.
ruft gcalc das system-Kommando "clear" auf, um den Bildschirm zu
löschen, und "touch", um sicherzustellen, dass die Sicherungsdatei
(~/.calcsave) existiert. Sollte ein derartiges Problem auftauchen - Schicksal.
Verbesserungen/Kontakt:
Sendet Verbesserungsvorschläge und Bugreports bitte per EMail an mich
(tjabo@unix-ag.org)
!
Planungen für zukünftige Versionen (Codespenden gesucht):
-
Umkehrfunktionen für sin, cos und tan. Codespenden sind hier sehr
willkommen! Das Problem ist, die Umkehrfunktionen für sin usw. in
"Deg" zu programmieren, während sich die mangelhafte Unterstützung
von GAWK auf die "rad"-Funktionen beschränkt.
Ich habe eben mal eine arcsin-Funktion ("asin(enter)") eingebaut, die auf
einer sinus-Tabelle beruht. Die Genauigkeit ist bei guter Geschwindigkeit passabel.
-
Ich denke über eine Programmierbarkeit nach. So ein kleiner BASIC-Interpreter
wäre eine feine Sache. Ein kleiner Interpreter in Form eines gesonderten
Projekts existiert bei mir schon. Wäre es sinnvoll, sowas in den gcalc
zu integrieren?
-
Einheitenbehaftete Zahlen? Das Teilen von "[ ]" durch "[sek]" ergäbe
"[1/sek]". Sinnvoll? Feedback?
-
Braucht man eine Undo-Funktion?
-
Soll der Stack tiefer sein?
Download:
Das Programm in seiner neusten Version findet sich hier.
Dies
ist nochmal ein Lesezeichen-Link!
Das Copyright für diese Seite sowie das Rechner-Programm liegen
bei mir, also Tjabo Kloppenburg. Das Programm darf unentgeltlich frei kopiert
werden. Die Zurverfügungstellung des Programms auf Webseiten mit kommerziellen
Inhalten bedarf des papierschriftlichen Einverständnisses des Autors.
Das Kopieren für die persönliche Benutzung ist natürlich
erlaubt!
|