Frage deutsch
~~~~~~~~~~~~~~
Wie programmiere ich einen Taschenrechner?
Question English
~~~~~~~~~~~~~~
How to write a pocket calculator in QB?
Antwort 1
~~~~~~~~~
[ von Aduin ( aduin*d-i-e-clan.com ) und Thomas Antoni 13.9.02 - 21.1.04 ]
Im einfachsten Falle kannst Du einen Taschenrechner wie folgt
realisieren:
'**********************************
' TARECH2.BAS = Taschenrechner
' ===========
' (c) Aduin u. T. Antoni 2002
'**********************************
CLS
PRINT "Waehle die Rechenoperation:"
PRINT " * Multiplikation"
PRINT " / Division"
PRINT " - Subtraktion"
PRINT " + Addition"
INPUT "Operation = ", op$
INPUT "Erster Operand: x = ", x
INPUT "Zweiter Operand: y = ", y
PRINT "Ergebnis: x"; op$; "y =";
SELECT CASE op$
CASE "+": PRINT x + y
CASE "-": PRINT x - y
CASE "*": PRINT x * y
CASE "/": PRINT x / y
CASE ELSE: PRINT " Falsche Operation"
END SELECT
Das obige Programm steht im Verzeichnis Progs\ zur Verfügung sowie online
unter www.antonis.de/faq/progs/tarech2.bas .
Mit einer besseren Bedienerführung gewürzt und einer Wiederholfunktion
versehen sieht das Ganze so aus:
'**************************************************
' TARECH.BAS = Taschenrechner
' ==========
' Einfacher Taschenrechner fuer
' die 4 Grundrechenarten
' (c) Thomas Antoni, 21.1.2004
'**************************************************
DO
anfang:
CLS
PRINT "Waehle die Rechenoperation:"
PRINT " + Addition"
PRINT " - Subtraktion"
PRINT " * Multiplikation"
PRINT " + Division"
PRINT "Esc Beenden"
LOCATE , 2, 1 'in Spalte 2 blinkender Cursor
op$ = INPUT$(1) '1 Zeich.v.Tastatur lesen
PRINT op$
IF op$ = CHR$(27) THEN END 'Beenden mit esc
LOCATE , 1
INPUT "Erster Operand: x = ", x
INPUT "Zweiter Operand: y = ", y
PRINT "Ergebnis: x"; op$; "y = ";
SELECT CASE op$
CASE "+": PRINT x + y
CASE "-": PRINT x - y
CASE "*": PRINT x * y
CASE "/": PRINT x / y
CASE ELSE: PRINT " Falsche Operation"
END SELECT
PRINT "... neue Berechnung mit beliebiger Taste";
PRINT "... Beenden mit Esc"
t$ = INPUT$(1)
IF t$ = CHR$(27) THEN END
LOOP
Das obige Programm steht im Verzeichnis Progs\ zur Verfügung sowie online
unter www.antonis.de/faq/progs/tarech.bas .
Antwort 2
~~~~~~~~~
[ von Thomas Antoni, 19.1.2004 ]
Einen recht ansprechenden kleinen Taschenrechner für die vier
Grundrechenarten kann man in QBasic schon in wenigen Zeilen programmieren, wie
mein folgendes Programmbeispiel zeigt:
'*******************************************************
' RECHNER.BAS = Taschenrechner in QBasic
' ===========
' Einfacher Taschenrechner fuer die vier
' Grundrechenarten
'
' (c) Thomas Antoni, 19.1.2004
'*******************************************************
CLS
DO
PRINT "Gib die 1. Zahl ein:";
LOCATE , 50
INPUT "a = ", a#
DO
PRINT "Gib die Operation ein (+, -, *, /):";
LOCATE , 54, 1 'Blinkenden Cursor in Spalte 54 anzeig.
r$ = INPUT$(1) 'Ein Textzeichen von d. Tastatur lesen
IF r$ = CHR$(27) THEN END 'Abbruch mit Esc
LOOP UNTIL r$ = "+" OR r$ = "-" OR r$ = "*" OR r$ = "/"
LOCATE , 54: PRINT r$
PRINT "Gib die 2. Zahl ein:";
LOCATE , 50
INPUT "b = ", b#
LOCATE , 48
SELECT CASE r$
CASE "+": PRINT "a+b ="; a# + b#
CASE "-": PRINT "a-b ="; a# - b#
CASE "*": PRINT "a*b ="; a# * b#
CASE "/": PRINT "a/b ="; a# / b#
END SELECT
PRINT "... wiederholen mit beliebiger Taste";
PRINT ", beenden mit Esc"
PRINT
DO: t$ = INKEY$: LOOP WHILE t$ = ""
IF t$ = CHR$(27) THEN END
LOOP
Das obige Programm steht im Verzeichnis Progs\ zur Verfügung sowie online
unter www.antonis.de/faq/progs/rechner.bas .
Dieses Programm kannst Du als Grundgerüst verwenden und den Taschenrechner
durch beliebig viele zusätzliche mathematische Funktionen sowie Grafik und
Mausbedienung erweitern.
Hierzu habe ich mir im Laufe der Zeit die unten stehende Wunschliste notiert,
Wer mail mir den super-trooper-Taschenrechner, der einige der genannten
Funktionserweiterungen enthält?
• Mathematische Funktionen (-x, 1/x, sin,
arcsin, cos, arccos, tan, arctan, cot,
arccot, sinh, arcsinh, cosh, arccosh, tanh, arctanh, ln, lg, e^x, x^y,
Quadratwurzel, Kubikwurzel)
• Mathematische und physikalische
Konstanten per Knopfdruck abrufbar machen
(Pi, e, g usw.)
• Winkeldarstellung einstellbar machen :
Grad (0...360°), Neugrad (0...400°),
Bogenmaß (0...2*Pi)
• Winkeldarstellung ineinander umrechenbar
machen
• Mindestens 8 Konstantenspeicher vorsehen
(mit M-Clear, M+, M- Funktion und
ständiger Anzeige der Speicherinhalte)
• Klammer funktuon {(...)] in 8
Ebenen
• Zahlenbereich über das DOUBLE-Format von
QB hinaus erweitern, z.B. bis 10^5000
statt 10^308 (geht z.B. mit dem EXT-Datentyp von
PowerBasic)
• Umschaltung kaufmännischer /
wissenschaftlicher Rechner
• Umschaltung Festpunkt (Nachkommstellen
einstellbar) und Gleitpunkt
• Bei Festpunkt eine Umschaltung
wissenschaftlich / kaufmännische Rundung
vorsehen
• Mehrzeilige Anzeige (mit
"Papierstreifen" wie ein druckender Rechner zur
nachträglichen Kontrolle)
• Mausbedienung und Tasturbedienung
gleichzeitig möglich
• Zahlenbasis einstellbar machen (dezimal,
Oktal, Hexadezimal, binär). Die
Umschaltung der Zhalenbasis mus auch während des Rechenlaufes möglich
sein
• Bei Binärdarstellung negative Zahlen auf
Wunsch im Einer- oder im
Zweierkomplement darstellbar machen.
• Logikfunktionen für Hex-, Oktal- und
Binärzahlen (NOT, AND, OR, XOR)
• Auf Wunsch normale mathematische
Eingabereihenfolge aktivierbar (wie bei den
modernen Casio-Taschenrechnern, mit Editierfunktion). Dazu braucht man
einen
"Formula Solver" oder "Formula Parser", der eine Formel als String
entgegennehmen kann,diesen analysiert und die Berechnung richtig
ausführt.
• Funktionsplotter
• Lösung linearer
Gleichungssysteme
• Zufallsgenerator mit einstellbarem
Wertebereich
• Statistikfunktionen (Mittelwert,
quadratischer Mittelwert,
Standardabweichung usw.)
• Stochastikfunktionen (n!, (n aus m),
Bernoulliwahrscheinlichkeiten usw.)
• Umrechnung physikal. Größen (z.B. PS
<-> hp, Inch <-> cm)
• Hilfe-Funktion mit
Formelsammlung
• Prozentrechnung
• Löschtaste nur für Eingabe und für
"Clear All"
• Zinseszinsrechnung
• Umrechnung karthesische <->
Polarkoordinaten
• Rechner für komplexe Zahlen
(Grundrechenarten)
• Log-File (Alle Berechnungen und
Anzeigewerte in Datei abspeichern)
• Für die Abarbeitung umfangreicher
mathematischer Formelausdrücke kann die
Verwendung eines Formula Parsers oder Formula Solvers hilfeich sein
(siehe den FAQ-Eintrag "Wie
berechne ich das Ergebnis eines
eingegebenen Formelausdrucks?" )
[ The QBasic-MonsterFAQ --- Start Page: www.antonis.de/faq ]