Taschenrechner...Frage?

Übersicht BlitzBasic Beginners-Corner

Gehe zu Seite 1, 2  Weiter

Neue Antwort erstellen

 

Spike

Betreff: Taschenrechner...Frage?

BeitragMo, Feb 14, 2005 1:26
Antworten mit Zitat
Benutzer-Profile anzeigen
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

Print "Willkommen bei Win-Mathe!"

;-----Namensabfrage-------------------------------------------------

Name$ = Input$("Geben sie ihren Namen ein: ")
                                                            
Print "Hallo, " + Name$ + "!"

;-------------------------------------------------------------------

Print

;-----Tätigkeitsabfrage---------------------------------------------

.Auswahl

Print "Was wollen sie tun?"

Print

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

;-------------------------------------------------------------------

Print

;-----Tätigkeitsabfrage2---------------------------------------------

Print "Was wollen sie tun?"

Print

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

Rallimen

Sieger des 30-EUR-Wettbewerbs

BeitragMo, Feb 14, 2005 1:30
Antworten mit Zitat
Benutzer-Profile anzeigen
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

BeitragMo, Feb 14, 2005 1:40
Antworten mit Zitat
Benutzer-Profile anzeigen
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

Print "Willkommen bei Win-Mathe!"

;-----Namensabfrage-------------------------------------------------

Name$ = Input$("Geben sie ihren Namen ein: ")
                                                            
Print "Hallo, " + Name$ + "!"

;-------------------------------------------------------------------

Print

;-----Tätigkeitsabfrage---------------------------------------------

.Auswahl

Print "Was wollen sie tun?"

Print

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

;-------------------------------------------------------------------

Print

;-----Tätigkeitsabfrage2---------------------------------------------

Print "Was wollen sie tun?"

Print

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

BeitragMo, Feb 14, 2005 8:31
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi!

Versuch doch bitte ohne Goto zu arbeiten. Das ganz lässt sich auch in einer Schleife lösen.

grüße

Smily

Betreff: Functionen

BeitragMo, Feb 14, 2005 10:43
Antworten mit Zitat
Benutzer-Profile anzeigen
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

BeitragMo, Feb 14, 2005 13:55
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich glaube der macht das extra so umständlich, um was zu lernen!

Rakete
 

David

BeitragMo, Feb 14, 2005 14:10
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi!

Ja, sieht für mich auch so aus. Allerdings sollte er sich "Goto" schnellstens wieder "ablernen". Wink

grüße
 

Spike

BeitragMo, Feb 14, 2005 20:18
Antworten mit Zitat
Benutzer-Profile anzeigen
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 Laughing

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

Print "Willkommen bei Win-Mathe!"

;-----Namensabfrage-----

Name$ = Input$("Bitte geben sie ihren Namen ein: ")
                                                            
Print "Hallo, " + Name$ + "!"

;-----------------------

Print

;-----Tätigkeitsabfrage-----

.Auswahl

Print "Was wollen sie tun?"

Print

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

;---------------------------

Print

;-----Tätigkeitsabfrage2-----

Print "Was wollen sie nun tun?"

Print

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

Smily

Betreff: GOTO = BÖßE

BeitragDo, Feb 17, 2005 13:24
Antworten mit Zitat
Benutzer-Profile anzeigen
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

BeitragDo, Feb 17, 2005 14:44
Antworten mit Zitat
Benutzer-Profile anzeigen
Wie würde das ohne Goto aussehen? habe gelesen das es mit schleifen geht aber wie?
MfG Spike

Spikespine

BeitragDo, Feb 17, 2005 15:13
Antworten mit Zitat
Benutzer-Profile anzeigen
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

BeitragDo, Feb 17, 2005 19:51
Antworten mit Zitat
Benutzer-Profile anzeigen
ich raffs ima noch net Laughing
MfG Spike
 

David

BeitragFr, Feb 18, 2005 9:59
Antworten mit Zitat
Benutzer-Profile anzeigen
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! Wink

grüße

Smily

BeitragFr, Feb 18, 2005 11:37
Antworten mit Zitat
Benutzer-Profile anzeigen
Hier ist der überarbeitete Code:
Genau so ein Programm war auch mein erstes in QBasic Wink

@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

Print "Willkommen bei Win-Mathe!"

;-----Namensabfrage-----

Name$ = Input$("Bitte geben sie ihren Namen ein: ")

Repeat
Auswahl = 0     
Zahl1 = 0
Zahl2 = 0                                                       
Print "Hallo, " + Name$ + "!"

;-----------------------

Print

;-----Tätigkeitsabfrage-----


Print "Was wollen sie tun?"

Print

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

;---------------------------

Print

;-----Tätigkeitsabfrage2-----

Print "Was wollen sie nun tun?"

Print

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

BeitragFr, Feb 18, 2005 12:28
Antworten mit Zitat
Benutzer-Profile anzeigen
Smily0412 hat Folgendes geschrieben:
@Davit: Der Code ist nicht korrekt. I und I% sind verschiedene Variablen.
Echt? Very Happy
Den ganzen Doag im Bett umanandflagga und iaz daherkema und meine Hendl`n fressn...
 

David

BeitragFr, Feb 18, 2005 13:18
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi!

@Smily0412: Lüg nicht, i und i% sind die selben Variablen! Razz
Und mein Code ist korrekt, ich habs jetzt extra nochmal ausprobiert! Wink

grüße
 

Spike

BeitragFr, Feb 18, 2005 15:47
Antworten mit Zitat
Benutzer-Profile anzeigen
Smily0412 hat Folgendes geschrieben:
Hier ist der überarbeitete Code:
Genau so ein Programm war auch mein erstes in QBasic Wink

@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

Print "Willkommen bei Win-Mathe!"

;-----Namensabfrage-----

Name$ = Input$("Bitte geben sie ihren Namen ein: ")

Repeat
Auswahl = 0     
Zahl1 = 0
Zahl2 = 0                                                       
Print "Hallo, " + Name$ + "!"

;-----------------------

Print

;-----Tätigkeitsabfrage-----


Print "Was wollen sie tun?"

Print

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

;---------------------------

Print

;-----Tätigkeitsabfrage2-----

Print "Was wollen sie nun tun?"

Print

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

BeitragFr, Feb 18, 2005 15:52
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi!

Natürlich gibt er nichts aus da der Fehler, mit einer while-schleife weiter oben, vermieden wird.

grüße

Smily

Betreff: Fehler

BeitragFr, Feb 18, 2005 19:26
Antworten mit Zitat
Benutzer-Profile anzeigen
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

BeitragFr, Feb 18, 2005 19:36
Antworten mit Zitat
Benutzer-Profile anzeigen
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!!

Gehe zu Seite 1, 2  Weiter

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group