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 ]