Taschenrechner...Frage?
Übersicht

SpikeBetreff: Taschenrechner...Frage? |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Hi,
ich progge grad einen Taschenrechner, so hier zuert mal der code: Code: [AUSKLAPPEN] AppTitle "Win-Mathe" Graphics 300, 300, 32, 2 Print "***********************" Print "Win-Mathe - Version 1.0" Print "***********************" Print "Willkommen bei Win-Mathe!" ;-----Namensabfrage------------------------------------------------- Name$ = Input$("Geben sie ihren Namen ein: ") Print "Hallo, " + Name$ + "!" ;------------------------------------------------------------------- ;-----Tätigkeitsabfrage--------------------------------------------- .Auswahl Print "Was wollen sie tun?" Print "1 - Addieren" Print "2 - Subtrahieren" Print "3 - Multiplizieren" Print "4 - Dividieren" .Auswahl2 Auswahl$ = Input$("Eingabe: ") Select Auswahl$ Case 1 Print "Welche zwei Zahlen wollen sie addieren? Global Zahl1$ = Input$() Global Zahl2$ = Input$() Print "Das Ergebnis lautet " + Addieren(Zahl1$, Zahl2$) + "!" Case 2 Print "Welche zwei Zahlen wollen sie subtrahieren? Global Zahl1$ = Input$() Global Zahl2$ = Input$() Print "Das Ergebnis lautet " + Subtrahieren(Zahl1$, Zahl2$) + "!" Case 3 Print "Welche zwei Zahlen wollen sie multiplizieren? Global Zahl1$ = Input$() Global Zahl2$ = Input$() Print "Das Ergebnis lautet " + Multiplizieren(Zahl1$, Zahl2$) + "!" Case 4 Print "Welche zwei Zahlen wollen sie dividieren? Global Zahl1$ = Input$() Global Zahl2$ = Input$() Print "Das Ergebnis lautet " + Dividieren(Zahl1$, Zahl2$) + "!" Default Print "Diese Auswahl gibt es nicht!" Goto Auswahl2 End Select ;------------------------------------------------------------------- ;-----Tätigkeitsabfrage2--------------------------------------------- Print "Was wollen sie tun?" Print "weiter - Noch etwas tun" Print "exit - Beenden" Auswahl2$ = Input$() If LOWER$(Auswahl2$) = "weiter" Then Goto Auswahl ElseIf LOWER$(Auswahl2$) = "exit" Then exit EndIf ;-----Funktionen---------------------------------------------------- ;Addieren Function Addieren(Zahl1$, Zahl2$) Return Zahl1 + Zahl2 End Function ;Subtrahieren Function Subtrahieren(Zahl1$, Zahl2$) Return Zahl1 - Zahl2 End Function ;Multiplizieren Function Multiplizieren(Zahl1$, Zahl2$) Return Zahl1 * Zahl2 End Function ;Dividieren Function Dividieren(Zahl1$, Zahl2$) Return Zahl1 / Zahl2 End Function ;------------------------------------------------------------------- Wen ich es jetzt Teste kommt: 'Global' can only appear in main program Warum kommt das? |
||
MfG Spike |
![]() |
RallimenSieger des 30-EUR-Wettbewerbs |
![]() Antworten mit Zitat ![]() |
---|---|---|
Am Anfang
Code: [AUSKLAPPEN] Global Zahl1$ ,Zahl2$
die anderen die innerhalb der select case stehen, wegmachen, da man nur einmal eine var als Global deklarieren darf und das nicht innerhalb von Schleifen usw. Diese brauchen dann nicht in den Functionen übergeben werden! Abgesehen davon kannst du mit Stringvariablen nicht rechnen! Wenn dann ... Code: [AUSKLAPPEN] a%= Zahl1$
b%= Zahl2$ Summe = a+b return b Code: [AUSKLAPPEN] If LOWER$(Auswahl2$) = "weiter" Then
Goto Auswahl ElseIf LOWER$(Auswahl2$) = "exit" Then exit ;<<<<<<<<<<<<<<<<< da sollte wohl End stehen EndIf Aber so wie der Code aussieht brauchst du gar keine Globalen Variablen ! Wenn alle Variablen local sind, kannst du beim übergeben der StringVariablen diese gleich als Integer automatisch konvertiern, das ist die einfachste Möglichkeit Beispiel : Code: [AUSKLAPPEN] Print Add(Zahl1$,Zahl2$)
function Add(a%,b%) return a+b end function |
||
[BB2D | BB3D | BB+]
|
- Zuletzt bearbeitet von Rallimen am Mo, Feb 14, 2005 1:46, insgesamt einmal bearbeitet
Spike |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Ok jetzt gehts danke
Code: [AUSKLAPPEN] AppTitle "Win-Mathe" Graphics 500, 500, 32, 2 Global Zahl1 ,Zahl2 Print "***********************" Print "Win-Mathe - Version 1.0" Print "***********************" Print "Willkommen bei Win-Mathe!" ;-----Namensabfrage------------------------------------------------- Name$ = Input$("Geben sie ihren Namen ein: ") Print "Hallo, " + Name$ + "!" ;------------------------------------------------------------------- ;-----Tätigkeitsabfrage--------------------------------------------- .Auswahl Print "Was wollen sie tun?" Print "1 - Addieren" Print "2 - Subtrahieren" Print "3 - Multiplizieren" Print "4 - Dividieren" .Auswahl2 Auswahl$ = Input$("Eingabe: ") Select Auswahl$ Case 1 Print "Welche zwei Zahlen wollen sie addieren?" Zahl1 = Input$() Zahl2 = Input$() Print "Das Ergebnis lautet " + Addieren(Zahl1, Zahl2) + "! (Taste drücken)" WaitKey Case 2 Print "Welche zwei Zahlen wollen sie subtrahieren?" Zahl1 = Input$() Zahl2 = Input$() Print "Das Ergebnis lautet " + Subtrahieren(Zahl1, Zahl2) + "! (Taste drücken)" WaitKey Case 3 Print "Welche zwei Zahlen wollen sie multiplizieren?" Zahl1 = Input$() Zahl2 = Input$() Print "Das Ergebnis lautet " + Multiplizieren(Zahl1, Zahl2) + "! (Taste drücken)" WaitKey Case 4 Print "Welche zwei Zahlen wollen sie dividieren?" Zahl1 = Input$() Zahl2 = Input$() Print "Das Ergebnis lautet " + Dividieren(Zahl1, Zahl2) + "! (Taste drücken)" WaitKey Default Print "Diese Auswahl gibt es nicht!" Goto Auswahl2 End Select ;------------------------------------------------------------------- ;-----Tätigkeitsabfrage2--------------------------------------------- Print "Was wollen sie tun?" Print "weiter - Noch etwas tun" Print "exit - Beenden" Auswahl2$ = Input$() If LOWER$(Auswahl2$) = "weiter" Then Goto Auswahl ElseIf LOWER$(Auswahl2$) = "exit" Then End EndIf ;-----Funktionen---------------------------------------------------- ;Addieren Function Addieren(Zahl1, Zahl2) Return Zahl1 + Zahl2 End Function ;Subtrahieren Function Subtrahieren(Zahl1, Zahl2) Return Zahl1 - Zahl2 End Function ;Multiplizieren Function Multiplizieren(Zahl1, Zahl2) Return Zahl1 * Zahl2 End Function ;Dividieren Function Dividieren(Zahl1, Zahl2) Return Zahl1 / Zahl2 End Function ;------------------------------------------------------------------- |
||
MfG Spike |
David |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Hi!
Versuch doch bitte ohne Goto zu arbeiten. Das ganz lässt sich auch in einer Schleife lösen. grüße |
||
![]() |
SmilyBetreff: Functionen |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ich würde auch die FUnktionen Wegmachen, das ist hier doch nicht notwendig.
Statt Addieren(Zahl1,Zahl2) würde ich gleich Zahl1 + Zahl2 eingeben. |
||
![]() |
Rakete |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ich glaube der macht das extra so umständlich, um was zu lernen!
Rakete |
||
David |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Hi!
Ja, sieht für mich auch so aus. Allerdings sollte er sich "Goto" schnellstens wieder "ablernen". ![]() grüße |
||
Spike |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Aber mit Goto is es doch am leichtesten oder?es ist gar net so böse wie alle sagen ^^
Ich habe die Funktionen weggemacht da ich erst jetzt bemerkt habe das die gar net braucht, man kann sie ja gleich hinschreiben ![]() Hier der überarbeitete Code: Code: [AUSKLAPPEN] ; ********************** ; *Win-Mathe - Ver. 1.0* ; ********************** ; 2005 Copyright by Spike AppTitle "Win-Mathe" Graphics 500, 500, 32, 2 Global Zahl1 ,Zahl2 Print "********************" Print "Win-Mathe - Ver. 1.0" Print "********************" Print "Willkommen bei Win-Mathe!" ;-----Namensabfrage----- Name$ = Input$("Bitte geben sie ihren Namen ein: ") Print "Hallo, " + Name$ + "!" ;----------------------- ;-----Tätigkeitsabfrage----- .Auswahl Print "Was wollen sie tun?" Print "1 - Addieren" Print "2 - Subtrahieren" Print "3 - Multiplizieren" Print "4 - Dividieren" .Auswahl2 Auswahl = Input("Bitte wählen: ") Select Auswahl Case 1 Print "Welche zwei Zahlen wollen sie addieren?" Zahl1 = Input("Erste Zahl: ") Zahl2 = Input("Zweite Zahl: ") Print "Ihr Ergebnis lautet " + (Zahl1 + Zahl2) + "! (Taste drücken)" WaitKey Case 2 Print "Welche zwei Zahlen wollen sie subtrahieren?" Zahl1 = Input("Erste Zahl: ") Zahl2 = Input("Zweite Zahl: ") Print "Ihr Ergebnis lautet " + (Zahl1 - Zahl2) + "! (Taste drücken)" WaitKey Case 3 Print "Welche zwei Zahlen wollen sie multiplizieren?" Zahl1 = Input("Erste Zahl: ") Zahl2 = Input("Zweite Zahl: ") Print "Ihr Ergebnis lautet " + (Zahl1 * Zahl2) + "! (Taste drücken)" WaitKey Case 4 Print "Welche zwei Zahlen wollen sie dividieren?" Zahl1 = Input("Erste Zahl: ") Zahl2 = Input("Zweite Zahl: ") Print "Ihr Ergebnis lautet " + (Zahl1 / Zahl2) + "! (Taste drücken)" WaitKey Default Print "Diese Auswahl gibt es nicht!" Goto Auswahl2 End Select ;--------------------------- ;-----Tätigkeitsabfrage2----- Print "Was wollen sie nun tun?" Print "1 - Noch etwas berechnen" Print "2 - Win-Mathe beenden" .Auswahl3 Auswahl2 = Input("Bitte wählen: ") Select Auswahl2 Case 1 Goto Auswahl Case 2 End Default Print "Diese Auswahl gibt es nicht!" Goto Auswahl3 End Select ;---------------------------- |
||
MfG Spike |
![]() |
SmilyBetreff: GOTO = BÖßE |
![]() Antworten mit Zitat ![]() |
---|---|---|
In solchen kleinen Programmen kann das mit goto ja einfach aussehen. aber in Größeren Prgrammen würde ich sowas nicht zur angewohnheit werden lassen. Mit goto kann man Total durcheinander kommen.
Das führt dann zum Berüchtigten Spaghetticode. Merke: Goto ist böße |
||
Spike |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Wie würde das ohne Goto aussehen? habe gelesen das es mit schleifen geht aber wie? | ||
MfG Spike |
![]() |
Spikespine |
![]() Antworten mit Zitat ![]() |
---|---|---|
Mit Repeat/Until
Anstatt ständig wieder mit Goto nach oben zur Marke zu hüpfen setzt du dort einfach Repeat (oder While je nach bedarf), und schreibst unten wo das Goto steht Code: [AUSKLAPPEN] Until Auswahl2 = 2
(bin zu faul den code umzuschreiben) |
||
Spike |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
ich raffs ima noch net ![]() |
||
MfG Spike |
David |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Hi!
Code: [AUSKLAPPEN] i% = 10 .start i% = i% - 1 if ( i > 0 ) then goto start Code: [AUSKLAPPEN] i% = 10 repeat i% = i% - 1 until i = 0 Code: [AUSKLAPPEN] i% = 10 while i > 0 i% = i% - 1 wend Hoffe es ist alles korrekt, ist noch so früh! ![]() grüße |
||
![]() |
Smily |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hier ist der überarbeitete Code:
Genau so ein Programm war auch mein erstes in QBasic ![]() @Davit: Der Code ist nicht korrekt. I und I% sind verschiedene Variablen. Code: [AUSKLAPPEN] ; **********************
; *Win-Mathe - Ver. 1.0* ; ********************** ; 2005 Copyright by Spike AppTitle "Win-Mathe" Graphics 500, 500, 32, 2 Locate 1,1 Print "********************" Print "Win-Mathe - Ver. 1.0" Print "********************" Print "Willkommen bei Win-Mathe!" ;-----Namensabfrage----- Name$ = Input$("Bitte geben sie ihren Namen ein: ") Repeat Auswahl = 0 Zahl1 = 0 Zahl2 = 0 Print "Hallo, " + Name$ + "!" ;----------------------- ;-----Tätigkeitsabfrage----- Print "Was wollen sie tun?" Print "1 - Addieren" Print "2 - Subtrahieren" Print "3 - Multiplizieren" Print "4 - Dividieren" While Auswahl < 1 Or Auswahl > 4 Auswahl = Input("Bitte wählen: ") Wend Select Auswahl Case 1 Print "Welche zwei Zahlen wollen sie addieren?" Zahl1 = Input("Erste Zahl: ") Zahl2 = Input("Zweite Zahl: ") Print "Ihr Ergebnis lautet " + (Zahl1 + Zahl2) + "! (Taste drücken)" WaitKey Case 2 Print "Welche zwei Zahlen wollen sie subtrahieren?" Zahl1 = Input("Erste Zahl: ") Zahl2 = Input("Zweite Zahl: ") Print "Ihr Ergebnis lautet " + (Zahl1 - Zahl2) + "! (Taste drücken)" WaitKey Case 3 Print "Welche zwei Zahlen wollen sie multiplizieren?" Zahl1 = Input("Erste Zahl: ") Zahl2 = Input("Zweite Zahl: ") Print "Ihr Ergebnis lautet " + (Zahl1 * Zahl2) + "! (Taste drücken)" WaitKey Case 4 Print "Welche zwei Zahlen wollen sie dividieren?" Zahl1 = Input("Erste Zahl: ") Zahl2 = Input("Zweite Zahl: ") Print "Ihr Ergebnis lautet " + (Zahl1 / Zahl2) + "! (Taste drücken)" WaitKey Default Print "Diese Auswahl gibt es nicht!" End Select ;--------------------------- ;-----Tätigkeitsabfrage2----- Print "Was wollen sie nun tun?" Print "1 - Noch etwas berechnen" Print "2 - Win-Mathe beenden" Auswahl = 0 While Auswahl < 1 Or Auswahl >2 Auswahl = Input("Bitte wählen: ") Wend If auswahl = 2 Then End Forever ;---------------------------- |
||
![]() |
Hubsi |
![]() Antworten mit Zitat ![]() |
---|---|---|
Smily0412 hat Folgendes geschrieben: @Davit: Der Code ist nicht korrekt. I und I% sind verschiedene Variablen. Echt? ![]() |
||
Den ganzen Doag im Bett umanandflagga und iaz daherkema und meine Hendl`n fressn... |
David |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Hi!
@Smily0412: Lüg nicht, i und i% sind die selben Variablen! ![]() Und mein Code ist korrekt, ich habs jetzt extra nochmal ausprobiert! ![]() grüße |
||
Spike |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Smily0412 hat Folgendes geschrieben: Hier ist der überarbeitete Code:
Genau so ein Programm war auch mein erstes in QBasic ![]() @Davit: Der Code ist nicht korrekt. I und I% sind verschiedene Variablen. Code: [AUSKLAPPEN] ; **********************
; *Win-Mathe - Ver. 1.0* ; ********************** ; 2005 Copyright by Spike AppTitle "Win-Mathe" Graphics 500, 500, 32, 2 Locate 1,1 Print "********************" Print "Win-Mathe - Ver. 1.0" Print "********************" Print "Willkommen bei Win-Mathe!" ;-----Namensabfrage----- Name$ = Input$("Bitte geben sie ihren Namen ein: ") Repeat Auswahl = 0 Zahl1 = 0 Zahl2 = 0 Print "Hallo, " + Name$ + "!" ;----------------------- ;-----Tätigkeitsabfrage----- Print "Was wollen sie tun?" Print "1 - Addieren" Print "2 - Subtrahieren" Print "3 - Multiplizieren" Print "4 - Dividieren" While Auswahl < 1 Or Auswahl > 4 Auswahl = Input("Bitte wählen: ") Wend Select Auswahl Case 1 Print "Welche zwei Zahlen wollen sie addieren?" Zahl1 = Input("Erste Zahl: ") Zahl2 = Input("Zweite Zahl: ") Print "Ihr Ergebnis lautet " + (Zahl1 + Zahl2) + "! (Taste drücken)" WaitKey Case 2 Print "Welche zwei Zahlen wollen sie subtrahieren?" Zahl1 = Input("Erste Zahl: ") Zahl2 = Input("Zweite Zahl: ") Print "Ihr Ergebnis lautet " + (Zahl1 - Zahl2) + "! (Taste drücken)" WaitKey Case 3 Print "Welche zwei Zahlen wollen sie multiplizieren?" Zahl1 = Input("Erste Zahl: ") Zahl2 = Input("Zweite Zahl: ") Print "Ihr Ergebnis lautet " + (Zahl1 * Zahl2) + "! (Taste drücken)" WaitKey Case 4 Print "Welche zwei Zahlen wollen sie dividieren?" Zahl1 = Input("Erste Zahl: ") Zahl2 = Input("Zweite Zahl: ") Print "Ihr Ergebnis lautet " + (Zahl1 / Zahl2) + "! (Taste drücken)" WaitKey Default Print "Diese Auswahl gibt es nicht!" End Select ;--------------------------- ;-----Tätigkeitsabfrage2----- Print "Was wollen sie nun tun?" Print "1 - Noch etwas berechnen" Print "2 - Win-Mathe beenden" Auswahl = 0 While Auswahl < 1 Or Auswahl >2 Auswahl = Input("Bitte wählen: ") Wend If auswahl = 2 Then End Forever ;---------------------------- schön und gut aber ich hatte es ja so falls es eine ungültige eingabe gibt soll er "Ungültige Eingabe!" rausgeben! macht er aba net hehe |
||
MfG Spike |
David |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Hi!
Natürlich gibt er nichts aus da der Fehler, mit einer while-schleife weiter oben, vermieden wird. grüße |
||
![]() |
SmilyBetreff: Fehler |
![]() Antworten mit Zitat ![]() |
---|---|---|
Mach die Fehlerausgabe unter dem Inputbefehl.
die While-wend Schleife wird zwichendrinne abgebrochen, wenn die Eingabe stimm. wenn nicht, wird der nächste befehl ausgeführt. Das ist dann der Printbefehl mit dem Fehler. Nochmal wegen den I und I%: Von QBasic kenne ich das zumindest so, das Verschiedene Variablentypen mit gleichem Namen als verschiedene Variablen gesehen werden. Also ist z.B. X$ eine andere Variable als X. Ist das bei Blitzbasic nicht so? Was bedeutet eigentlich % ? |
||
![]() |
Artemis |
![]() Antworten mit Zitat ![]() |
---|---|---|
Nein in BB ist das nicht so!!
Du musst nur beim ersten Mal wo du die Variable benutzt den Typ angeben, danach nicht mehr. Deshalb geht das nicht!! % heißt Integer!! |
||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group