wenn ich so meinen Taschenrechner und Deine Vorstellungen angucke, dann brauchst Du folgende Tasten:
10 Stck für die Ziffern 0 bis 9,
1 für das Komma,
4 für die Rechenoperationen (Wurzel lassen wir erstmal weg),
1 für den Vorzeichenwechsel ("+/-")
1 für Reset /Clear ("C", löscht alles),
1 für Clear Eingabe ("CE", löscht nur die Eingabe) und
1 für "Lösche letztes Zeichen" ("CL" löscht nur das zuletzt eingebene Zeichen).
macht insgesamt 19. Es ist wichtig, das vorher festzulegen, weil es die Bedienung des Teils festlegt. Du wirst bald merken: Die Bedienerführung verursacht nachher im Programm mehr als doppelt soviel Aufwand, wie das eigentliche Rechnen.
Weil die Rechenoperationen (bis auf den Vorzeichenwechsel) immer zwei Zahlen mit einander verknüpfen, brauchst Du dafür zwei Speicher. Es ist praktisch, es so wie Du zu machen, und die beiden Zahlen als Strings zu speichern. Daneben brauchst Du auch einen Speicher für die Rechenoperation und einen Kommazähler. Die Rechenoperation kannst Du als ASCII-Zeichen oder als Nummer (0 = "+", 1 = "-" usw.) speichern. Der Kommazähler braucht nur von 0 bis 1 zu gehen. Er wird gebraucht, um zu merken, wenn der Bediener mehr als ein Komma pro Zahl eingeben will.
Wie man einen Zahlen-String in eine real-Variable umwandelt, habe ich in der angehängten .pdf-Datei aufgeschrieben. Wie immer: Es geht auch anders, aber damit kannst Du mal anfangen. Es ist praktisch, diesen Teil in eine Subroutine zu verpacken.
Wenn das Umwandeln klappt, musst Du Dich als nächstes um die Bedienerführung kümmern. Dabei geht's darum, auf jeden möglichen Tastendruck des Bedieners eine passende Reaktion einzubauen.
@Furtion,
gerade an der sauberen Programmierung der Benutzerführung beim Taschenrechner kann man viel über Ablaufsteuerungen lernen. Vor allem, dass man auf alles eine Reaktion vorgesehen haben muss, weil man das Verhalten eines Bedieners nie voraussehen kann. Insofern ist es doch nützlich, den Milliarden Taschenrechnern noch einen dazuzufügen .
Lesezeichen