Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
Alprausch

Anmeldungsdatum: 24.10.2009 Beiträge: 47 Wohnort: Schweiz
|
Verfasst am: 24.10.2009, 21:04 Titel: Taschenrechner |
|
|
Hallo
Habe heute Abend noch einen kleinen Taschenrechner programmiert. Ist nichts grossartiges. Doch für mich war es nicht leicht. Musste ziemlich fest grübeln bis es endlich klappte.
Habe es dieses mal mit SUB's gemacht. Nicht so wie beim Währungsrechner.
Bitte gebt eure Meinungen und evtl. Tipps zu meinem Proggi ab.
Vielen Dank im voraus.
----------------------
Quelltext start:
----------------------
Code: |
DECLARE SUB Subtraktion ()
DECLARE SUB multiplikation ()
DECLARE SUB division ()
DECLARE SUB quadratwurzel ()
DECLARE SUB kreisflaeche ()
DECLARE SUB dreiecksflaeche ()
DECLARE SUB rechteck ()
DECLARE SUB fuenfeck ()
DECLARE SUB addition ()
' **************************************************************************
' * *
' * Taschenrechner V1.0 *
' * *
' * geschrieben von Reto Marty 24.10.2009 *
' **************************************************************************
CLS
PRINT "***********************"
PRINT "* Taschenrechner V1.0 *"
PRINT "***********************"
PRINT " 1 = Addition"
PRINT " 2 = Subtraktion"
PRINT " 3 = Multiplikation"
PRINT " 4 = Division"
PRINT " 5 = Quadratwurzel"
PRINT " 6 = Kreisflaeche"
PRINT " 7 = Dreiecksflaeche (Rechtwinkliges Dreieck)"
PRINT " 8 = Quadrat- / Rechtecksflaeche"
INPUT "Geben Sie die gewuenschte Nummer ein: ", eingabe
IF eingabe = 1 THEN CALL addition
IF eingabe = 2 THEN CALL Subtraktion
IF eingabe = 3 THEN CALL multiplikation
IF eingabe = 4 THEN CALL division
IF eingabe = 5 THEN CALL quadratwurzel
IF eingabe = 6 THEN CALL kreisflaeche
IF eingabe = 7 THEN CALL dreiecksflaeche
IF eingabe = 8 THEN CALL rechteck
PRINT ""
PRINT ""
PRINT TAB(60);
COLOR 1
PRINT "24.10.2009 Reto Marty"
SLEEP
SUB addition
INPUT "Geben Sie die erste Zahl (a) ein: "; a
INPUT "Geben Sie die zweite Zahl (b) ein: "; b
c = a + b
PRINT "Resultat:"; c
END SUB
SUB division
INPUT "Geben Sie die erste Zahl (a) ein: "; a
INPUT "Geben Sie die zweite Zahl (b) ein: "; b
c = a / b
PRINT "Resultat:"; c
END SUB
SUB dreiecksflaeche
INPUT "Geben Sie die erste Zahl (Kathete) ein: "; a
INPUT "Geben Sie die zweite Zahl (Hypotenuse) ein: "; b
c = (a * b) / 2
PRINT "Resultat:"; c
END SUB
SUB kreisflaeche
INPUT "Geben Sie den Radius (r) ein: "; a
c = (a ^ 2 * 3.14159) / 2
PRINT "Resultat:"; c
END SUB
SUB multiplikation
INPUT "Geben Sie die erste Zahl (a) ein: "; a
INPUT "Geben Sie die zweite Zahl (b) ein: "; b
c = a * b
PRINT "Resultat:"; c
END SUB
SUB quadratwurzel
INPUT "Geben Sie die Zahl (a) ein: "; a
c = SQR(a)
PRINT "Resultat:"; c
END SUB
SUB rechteck
INPUT "Geben Sie die erste Seitenlaenge (a) ein: "; a
INPUT "Geben Sie die zweite Seitenlaenge (b) ein: "; b
c = a * b
PRINT "Resultat:"; c
END SUB
SUB Subtraktion
INPUT "Geben Sie die erste Zahl (a) ein: "; a
INPUT "Geben Sie die zweite Zahl (b) ein: "; b
c = a - b
PRINT "Resultat:"; c
END SUB
|
----------------------
Quelltext ende:
----------------------
mfg Reto |
|
Nach oben |
|
 |
Jojo alter Rang

Anmeldungsdatum: 12.02.2005 Beiträge: 9736 Wohnort: Neben der Festplatte
|
Verfasst am: 24.10.2009, 21:08 Titel: |
|
|
Ist zwar nichts besonderes, aber wie auch beim Währungsrechner erstaunlich sauberer Code für einen Anfänger (nicht böse gemeint)!  _________________ » Die Mathematik wurde geschaffen, um Probleme zu lösen, die es nicht gäbe, wenn die Mathematik nicht erschaffen worden wäre.
 |
|
Nach oben |
|
 |
Alprausch

Anmeldungsdatum: 24.10.2009 Beiträge: 47 Wohnort: Schweiz
|
Verfasst am: 24.10.2009, 21:12 Titel: |
|
|
Das klingt doch gut.
Ich möchte mich nur nicht von Anfang an ins Volle stürzen. Sonst wird es mir noch zu viel, ich verlier den Durchblick komplett und werfe die Flinte ins Korn. Und das will ich vermeiden in dem ich mich langsam steigere.
Hat jemand eine Idee an was ich mich als nächstes wagen könnte?
Es fällt mir grad nichts schlaues ein.
mfg Reto |
|
Nach oben |
|
 |
Manuel

Anmeldungsdatum: 23.10.2004 Beiträge: 1271 Wohnort: Bayern
|
Verfasst am: 24.10.2009, 21:40 Titel: |
|
|
Ganz für den Anfang würde ich sagen: Momentan beendet sich dein Programm sofort, wenn man eine Rechenaufgabe macht. Wie wäre es, wenn du z.B. das Programm in einer Schleife laufenlässt und das Programm erst dann beendet wird, wenn der Benutzer dies auch will. Als Beispiel könntest du im "Hauptmenü" zusätzlich einen Punkt Code: | PRINT " 9 = Programm beenden" | einfügen, und das Programm darf sich nur dann beenden, wenn eben die 9 gedrückt wurde.
Das würde dir eben die Grundlagen von Schleifen beibringen, die für wiederkehrende Aufgaben nicht wegzudenken sind . _________________ DL Walk (Denkspiel) | DL Malek (Denkspiel) | DL Warrior (ASCII-Adventure) | DL Sokodos (Sokoban-Klon)
---
www.astorek.de.vu |
|
Nach oben |
|
 |
Alprausch

Anmeldungsdatum: 24.10.2009 Beiträge: 47 Wohnort: Schweiz
|
Verfasst am: 24.10.2009, 22:03 Titel: |
|
|
Das mit dem LOOP funktioniert irgendwie noch nicht so wie ich will. Muss das morgen mal anschauen. Bin jetzt zu müde nach ca 8 stunden QBasic anstarren und knobeln.
PS: Meine .exe beendet sich nicht gleich selbst. Man muss immer noch eine Taste drücken
mfg Reto |
|
Nach oben |
|
 |
funkeld gesperrt
Anmeldungsdatum: 10.10.2009 Beiträge: 179
|
Verfasst am: 24.10.2009, 23:21 Titel: |
|
|
Meine .exe beendet sich nicht gleich selbst. Man muss immer noch eine Taste drücken
Bei mir steigt es auch sofort aus
Als :
Taschenrechner V1.0
würde ich es nicht einstufen
Gruss
Zuletzt bearbeitet von funkeld am 24.10.2009, 23:30, insgesamt 3-mal bearbeitet |
|
Nach oben |
|
 |
funkeld gesperrt
Anmeldungsdatum: 10.10.2009 Beiträge: 179
|
Verfasst am: 24.10.2009, 23:23 Titel: |
|
|
Hat jemand eine Idee an was ich mich als nächstes wagen könnte?
Jahaaa...
http://forum.qbasic.at/viewtopic.php?t=6817
Kannst du das lösen?
Jojo wusste leider nicht weiter.
Suche immer noch nach einer Lösung...
Ist eine Knobelei
Gruss |
|
Nach oben |
|
 |
Jojo alter Rang

Anmeldungsdatum: 12.02.2005 Beiträge: 9736 Wohnort: Neben der Festplatte
|
Verfasst am: 25.10.2009, 01:52 Titel: |
|
|
funkeld hat Folgendes geschrieben: | Jojo wusste leider nicht weiter. |
Jaah, dazu braucht's auch jemanden, der Irrlicht wirklich benutzt, weil ich werde ganz bestimmt nicht für dich die manuals durchlesen. _________________ » Die Mathematik wurde geschaffen, um Probleme zu lösen, die es nicht gäbe, wenn die Mathematik nicht erschaffen worden wäre.
 |
|
Nach oben |
|
 |
croco97

Anmeldungsdatum: 04.11.2005 Beiträge: 260
|
Verfasst am: 25.10.2009, 09:35 Titel: |
|
|
Schau dich mal hier um. Da gibt's jede Menge - z.T. auch knifflige - Übungsaufgaben.
VG!
Croco |
|
Nach oben |
|
 |
Alprausch

Anmeldungsdatum: 24.10.2009 Beiträge: 47 Wohnort: Schweiz
|
Verfasst am: 25.10.2009, 11:41 Titel: |
|
|
@ funkeld: Warum dass sich bei der das Programm von selbst beendet kann ich nicht sagen. Bei mir geht es als .exe oder im QBasic ohne Probleme. Und danke für die Aufgabe, aber ich denke da verstehe ich im Moment nur Bahnhof. Ach ja, der Name "Taschenrechner V1.0" ist mir nur grade so in den Sinn gekommen. Will das Ganze ja nicht vermarkten. Dann ist der Name ja auch egal
@ croco97: Danke für den Link. Ich werde das einmal genauer anschauen. Habe auf den ersten Blick grade nichts gesehen.
@ all: Ich werde mich jetzt noch an die LOOP Funktion machen. Ich hoffe ich schaffe das irgendwie. Sonst hätte ich noch eine Idee mit GOTO gehabt die mir in der Nacht eingefallen ist. Ja, ich weiss, GOTO sollte man nicht benutzen. Diese Funktion soll das ganze ziemlich unübersichtlich machen.
Na ja, mal schauen wie ich es schaffe. Werde das Ergebnis dann hier posten bevor ich mein Projekt als fertig bezeichne.
mfg Reto |
|
Nach oben |
|
 |
Alprausch

Anmeldungsdatum: 24.10.2009 Beiträge: 47 Wohnort: Schweiz
|
Verfasst am: 25.10.2009, 12:13 Titel: |
|
|
Habe jetzt meinen Taschenrechner so weit dass nach jeder Berechnung die Frage kommt ob man weiter rechnen möchte oder beenden.
Für mich ist es ok so. Werde daran nicht mehr weitermachen. Es funktioniert so wie ich möchte.
Ich sage aber nicht dass ich nicht irgendwann eine Weiterentwicklung vom Rechner machen werde
Nur Taschenrechner V1.0 ist so fertig.
Code: | DECLARE SUB Subtraktion ()
DECLARE SUB multiplikation ()
DECLARE SUB division ()
DECLARE SUB quadratwurzel ()
DECLARE SUB kreisflaeche ()
DECLARE SUB dreiecksflaeche ()
DECLARE SUB rechteck ()
DECLARE SUB fuenfeck ()
DECLARE SUB addition ()
' **************************************************************************
' * *
' * Taschenrechner V1.0 *
' * *
' * geschrieben von Reto Marty 25.10.2009 *
' **************************************************************************
CLS
anfang:
PRINT "***********************"
PRINT "* Taschenrechner V1.0 *"
PRINT "***********************"
PRINT " 1 = Addition"
PRINT " 2 = Subtraktion"
PRINT " 3 = Multiplikation"
PRINT " 4 = Division"
PRINT " 5 = Quadratwurzel"
PRINT " 6 = Kreisflaeche"
PRINT " 7 = Dreiecksflaeche (Rechtwinkliges Dreieck)"
PRINT " 8 = Quadrat- / Rechtecksflaeche"
PRINT " 9 = Programm beenden"
INPUT "Geben Sie die gewuenschte Nummer ein: ", eingabe
IF eingabe = 1 THEN CALL addition
IF eingabe = 2 THEN CALL Subtraktion
IF eingabe = 3 THEN CALL multiplikation
IF eingabe = 4 THEN CALL division
IF eingabe = 5 THEN CALL quadratwurzel
IF eingabe = 6 THEN CALL kreisflaeche
IF eingabe = 7 THEN CALL dreiecksflaeche
IF eingabe = 8 THEN CALL rechteck
IF eingabe = 9 THEN END
PRINT ""
PRINT " 0 = nochmal von vorne"
PRINT " 9 = Ende"
INPUT "Welche Option Wuenschen Sie?: ", eingabe
IF eingabe = 0 THEN GOTO anfang
IF eingabe = 9 THEN GOTO ende
ende:
PRINT ""
PRINT ""
PRINT TAB(60);
COLOR 1
PRINT "25.10.2009 Reto Marty"
SLEEP
SUB addition
INPUT "Geben Sie den ersten Summand ein: "; a
INPUT "Geben Sie den zweiten Summand ein: "; b
c = a + b
PRINT "Resultat:"; c
END SUB
SUB division
INPUT "Geben Sie den Dividend ein: "; a
INPUT "Geben Sie den Divisor ein: "; b
c = a / b
PRINT "Resultat:"; c
END SUB
SUB dreiecksflaeche
INPUT "Geben Sie die erste Seitenlaenge (Kathete) ein: "; a
INPUT "Geben Sie die zweite Seitenlaenge (Hypotenuse) ein: "; b
c = (a * b) / 2
PRINT "Resultat:"; c
END SUB
SUB kreisflaeche
INPUT "Geben Sie den Radius ein: "; a
c = (a ^ 2 * 3.14159) / 2
PRINT "Resultat:"; c
END SUB
SUB multiplikation
INPUT "Geben Sie den ersten Faktor ein: "; a
INPUT "Geben Sie den zweiten Faktor ein: "; b
c = a * b
PRINT "Resultat:"; c
END SUB
SUB quadratwurzel
INPUT "Geben Sie den Radikand ein: "; a
c = SQR(a)
PRINT "Resultat:"; c
END SUB
SUB rechteck
INPUT "Geben Sie die erste Seitenlaenge ein: "; a
INPUT "Geben Sie die zweite Seitenlaenge ein: "; b
c = a * b
PRINT "Resultat:"; c
END SUB
SUB Subtraktion
INPUT "Geben Sie den Minuend ein: "; a
INPUT "Geben Sie den Subtrahend ein: "; b
c = a - b
PRINT "Resultat:"; c
END SUB
|
PS: Bin immer noch auf der Suche nach einer Aufgabe die ein Anfänger auch bewältigen kann. Ein bisschen knoblen sollte schon drin sein, aber nicht so viel dass ich nicht mehr weiss wo was ist... |
|
Nach oben |
|
 |
MOD Fleißiger Referenzredakteur

Anmeldungsdatum: 10.09.2007 Beiträge: 1003
|
Verfasst am: 25.10.2009, 14:48 Titel: |
|
|
Code: | DO
PRINT "***********************"
PRINT "* Taschenrechner V1.0 *"
PRINT "***********************"
[...]
PRINT " 0 = nochmal von vorne"
PRINT " 9 = Ende"
INPUT "Welche Option Wuenschen Sie?: ", eingabe
LOOP WHILE eingabe = 0
|
So könnte man das ohne GOTO machen  |
|
Nach oben |
|
 |
nemored

Anmeldungsdatum: 22.02.2007 Beiträge: 4702 Wohnort: ~/
|
Verfasst am: 25.10.2009, 15:27 Titel: |
|
|
Warum überhaupt " 0: nochmal von vorn"? Ich würde sowieso wieder von vorn anfangen, weil ich da ja (nochmal) das Beenden als Auswahlmöglichkeit habe.
Zitat: | Warum dass sich bei der das Programm von selbst beendet kann ich nicht sagen. |
Vielleicht lässt sich das Problem mit einem GETKEY statt eines SLEEP am Ende lösen. Sollte zwar eigentlich nicht das Problem sein, ist es aber manchmal. _________________ Deine Chance beträgt 1:1000. Also musst du folgendes tun: Vergiss die 1000 und konzentriere dich auf die 1. |
|
Nach oben |
|
 |
ytwinky

Anmeldungsdatum: 28.05.2005 Beiträge: 2624 Wohnort: Machteburch
|
Verfasst am: 28.10.2009, 10:31 Titel: |
|
|
MOD hat Folgendes geschrieben: |
So könnte man das ohne GOTO machen  |
Das kann ich nicht unkommentiert lassen
@MOD: gut gemacht..
Gruß
ytwinky _________________
v1ctor hat Folgendes geschrieben: | Yeah, i like INPUT$(n) as much as PRINT USING.. | ..also ungefähr so, wie ich GOTO.. |
|
Nach oben |
|
 |
nemored

Anmeldungsdatum: 22.02.2007 Beiträge: 4702 Wohnort: ~/
|
Verfasst am: 28.10.2009, 22:35 Titel: |
|
|
GOTO hat auch seine Vorteile. Zum Beispiel kann man dadurch auch mal wieder was von totgeglaubten Mitglieder lesen.  _________________ Deine Chance beträgt 1:1000. Also musst du folgendes tun: Vergiss die 1000 und konzentriere dich auf die 1. |
|
Nach oben |
|
 |
OdinX

Anmeldungsdatum: 29.07.2005 Beiträge: 253 Wohnort: SG Schweiz
|
Verfasst am: 06.01.2010, 13:38 Titel: |
|
|
Ja ja, die guten alten GOTOs...
Ich weiss jetzt nicht, ob es am Code-Feld im Forum liegt, aber du solltest deinen Code einrücken, um die Übersichtlichkeit zu verbessern.
Code: | SUB addition
INPUT "Geben Sie die erste Zahl (a) ein: "; a
INPUT "Geben Sie die zweite Zahl (b) ein: "; b
c = a + b
PRINT "Resultat:"; c
END SUB |
nur so alt Tipp. |
|
Nach oben |
|
 |
k4rsten

Anmeldungsdatum: 01.01.2010 Beiträge: 18 Wohnort: Dortmund
|
Verfasst am: 06.01.2010, 14:21 Titel: |
|
|
Code: | Hat jemand eine Idee an was ich mich als nächstes wagen könnte? |
Eine History-Funktion, die die vorangegangen Rechnungen anzeigt, sofern man mit dem Ergebnis weitergerechnet hat. Das könntest du gut mit einem Array lösen.
//Edit: Funktion ist hierbei als Feature zu sehen, nicht als definierte Funktion. _________________ you cannot kill what you did not create |
|
Nach oben |
|
 |
|