End If? Wo ist der Unterschied?

Übersicht BlitzBasic Allgemein

Neue Antwort erstellen

 

Mansoor

Betreff: End If? Wo ist der Unterschied?

BeitragMi, Dez 24, 2003 16:09
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi Leute, Wink !!!
Ich habe jetzt eine Frage. Was ist der Unterschied zwischen den beiden Cods? Ich bin auf Seite 39 Punkt 3.1.3 End If von dem Buch jetzt lerne ich Spiele Prorgammieren mit Blitz Basic.

Code: [AUSKLAPPEN]
Graphics 640,480
Print "Willkommen beim Eisautomaten"
Print "Bitte wählen Sie ihr Eis aus:"
Print "1 - Erdbeere"
Print "2 - Vanille"
Eis = Input ("Drücken Sie eine Taste um das Eis zu bekommen:")
If Eis = 1 Then Print "Hier ist Ihr Erdbeere Eis!!!"
Erdbeere = Erdbeere - 1

If Eis = 2 Then Print "Hier ist Ihr Vanille Eis"
Vanille = Vanille - 1
   


und wenn man so macht...

Code: [AUSKLAPPEN]
Graphics 640,480
Print "Willkommen beim Eisautomaten"
Print "Bitte wählen Sie ihr Eis aus:"
Print "1 - Erdbeere"
Print "2 - Vanille"
Eis = Input ("Drücken Sie eine Taste um das Eis zu bekommen:")
If Eis = 1 Then
Print "Hier ist Ihr Erdbeere Eis!!!"
Erdbeere = Erdbeere - 1
EndIf
If Eis = 2 Then
Print "Hier ist Ihr Vanille Eis"
Vanille = Vanille - 1
EndIf   


Beide Cods Funktionieren und es kommt das gleiche Ergebnis raus? Und wozu ist jetzt das End If ?

Danke Wink !!!
 

IonPainter

BeitragMi, Dez 24, 2003 16:12
Antworten mit Zitat
Benutzer-Profile anzeigen
wenn am mehrere zeilen in nen if block qwuetschen will dann muss der block ja auch abgeschlossen werden. mit end if. wenn du anweisung direkt hinter then packst hängt blitz ein unsichtbares end if dran Wink
 

stepuh

BeitragMi, Dez 24, 2003 16:14
Antworten mit Zitat
Benutzer-Profile anzeigen
das funktioniert aber nur, wenn nur eine anwendung in der bedingung ausgeführt werden soll!
wenns mehrere sein sollen bracht man End If
EDIT: Verdammt IonPainter is mir zuvorgekommen Very Happy
 

CodeMaster

BeitragMi, Dez 24, 2003 16:26
Antworten mit Zitat
Benutzer-Profile anzeigen
Hmm, also ein If ohne EndIf ist einzeilig, nicht einbefehlig Wink
Sprich alles was in der If-Zeile steht wird nur dann ausgeführt, wenn die Bedingung erfüllt ist.
Dies ist ein Text, der an jeden Beitrag von dir angehängt werden kann. Es besteht eine Limit von 500 Buchstaben.

Zuletzt bearbeitet von CodeMaster am Mo Apr 01, Parse error: syntax error, unexpected ';' in htdocs\viewtopic.php on line 102
 

Mansoor

BeitragMi, Dez 24, 2003 16:29
Antworten mit Zitat
Benutzer-Profile anzeigen
Bei 1 soll er A benützen und das Funktioniert. Und bei 2 soll er B benützen das funktioniert auch. Und bei 3 soll er C benützen und nicht C und B zusammen, ist das Normal?
Code: [AUSKLAPPEN]

Graphics 640,480
Print "Willkommen beim Eisautomaten"
Print "Bitte wählen Sie ihr Eis aus:"
Print "1 - Erdbeere"
Print "2 - Vanille"
Eis = Input ("Drücken Sie eine Taste um das Eis zu bekommen:")
If Eis = 1 Then
;A
Print "Hier ist ihr Erdbeer Eis"
Else
;B
Print "Hier ist ihr Vanille Eis"
End If
;C
If Eis > 2 Then Print "Falsche Eingabe!!!"
 

morszeck

Gast

BeitragMi, Dez 24, 2003 16:40
Antworten mit Zitat
Der Else-Zweig ist immer erfüllt wenn etwas anderes als 1 eingegeben wurde, also auch wenn man bspw. eine 3 eingibt.

Mach es besser so:

Code: [AUSKLAPPEN]

Graphics 640,480
Print "Willkommen beim Eisautomaten"
Print "Bitte wählen Sie ihr Eis aus:"
Print "1 - Erdbeere"
Print "2 - Vanille"
Eis = Input ("Drücken Sie eine Taste um das Eis zu bekommen:")
If Eis = 1 Then
;A
Print "Hier ist ihr Erdbeer Eis"
ElseIf Eis = 2 Then
;B
Print "Hier ist ihr Vanille Eis"
End If
;C
If Eis > 2 Then Print "Falsche Eingabe!!!"


CU

Xenon

BeitragMi, Dez 24, 2003 16:44
Antworten mit Zitat
Benutzer-Profile anzeigen
Oder noch besser alles in nur einem gemeinsamen If, nämlich so:

Code: [AUSKLAPPEN]
Graphics 640,480
Print "Willkommen beim Eisautomaten"
Print "Bitte wählen Sie ihr Eis aus:"
Print "1 - Erdbeere"
Print "2 - Vanille"
Eis = Input ("Drücken Sie eine Taste um das Eis zu bekommen:")
If Eis = 1 Then
;A
   Print "Hier ist ihr Erdbeer Eis"
ElseIf Eis = 2 Then
;B
   Print "Hier ist ihr Vanille Eis"
Else
;C
   Print "Falsche Eingabe!!!"
End If
 

morszeck

Gast

BeitragMi, Dez 24, 2003 16:46
Antworten mit Zitat
OK, das ist natürlich noch besser... Smile
 

CodeMaster

BeitragMi, Dez 24, 2003 16:56
Antworten mit Zitat
Benutzer-Profile anzeigen
Wenn du schon solche Konstruktionen machst, würde ich dir zu Select Case raten:
Code: [AUSKLAPPEN]
Graphics 640,480
Print "Willkommen beim Eisautomaten"
Print "Bitte wählen Sie ihr Eis aus:"
Print "1 - Erdbeere"
Print "2 - Vanille"
Eis = Input ("Drücken Sie eine Taste um das Eis zu bekommen:")
select Eis
 case 1
  print "Hier ist Ihr Erdbeereis"
 case 2
  print "Hier ist Ihr Vanilleeis"
 default
  print "Falsche Eingabe!!!"
end select
Ist viel übersichtlicher!
Dies ist ein Text, der an jeden Beitrag von dir angehängt werden kann. Es besteht eine Limit von 500 Buchstaben.

Zuletzt bearbeitet von CodeMaster am Mo Apr 01, Parse error: syntax error, unexpected ';' in htdocs\viewtopic.php on line 102

Xenon

BeitragMi, Dez 24, 2003 17:51
Antworten mit Zitat
Benutzer-Profile anzeigen
Das wollte ich auch zuerst schreiben, aber wenn er erst beim Kapitel If ist, wird er noch kein Select können!

Hubsi

BeitragMi, Dez 24, 2003 18:08
Antworten mit Zitat
Benutzer-Profile anzeigen
Um mal die Frage zu beantworten: Der erste Code hat einen Bug, wenn man so will. Egal was man auswählt, es wird immer von Erdbeere und Vanille eins abgezogen. Der zweite Code zeigt dann die richtige Lösung Wink
Den ganzen Doag im Bett umanandflagga und iaz daherkema und meine Hendl`n fressn...
 

René Meyer

BeitragMi, Dez 24, 2003 18:23
Antworten mit Zitat
Benutzer-Profile anzeigen
Im Buch wird doch der Unterschied erklärt:

Zitat:
Hinter Then sind mehrere Befehle möglich. Blitz Basic kann aber nicht von allein wissen, dass bei einer Schreibweise wie ...

If Sorte = 1 Then Print "Sie haben Vanille gewählt."
Vanille = Vanille - 1
If Sorte = 2 Then Print "Sie haben Schoko gewählt."
Schoko = Schoko - 1

... die zweite Zeile zum ersten If gehören soll. Es führt sie als eigenständigen Befehl auf jeden Fall aus. Deswegen teilen Sie mit dem Befehl EndIf das Ende der If-Bedingung mit. Gibt es EndIf, dann behandelt Blitz Basic alle Befehle zwischen Then und EndIf als Teil der If-Bedingung:

If Sorte = 1 Then
Print "Sie haben Vanille gewählt."
Vanille = Vanille - 1
EndIf
www.blitzbasic.de | Das Buch zu Blitz Basic: www.schreibfabrik.de/txt/bbb

Neue Antwort erstellen


Übersicht BlitzBasic Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group