Source Code < BASIC < Programmiersprachen < Praxis < Informatik < Vorhilfe
|
Status: |
(Frage) beantwortet | Datum: | 11:21 Sa 29.03.2014 | Autor: | Mathics |
Liebes Forum,
ich habe hier einen Source Code und verstehe ihn nicht so ganz:
Function algA (a As Integer, b As Integer, c As Integer) As Boolean
Dim return As Boolean
return = False
If a <= b Then
If (c>=a) And (c<=b) Then
return = True
End If
Elself (c>b) And (c<a) Then
return = True
End If
algA = return
End Function
Für mich bedeutet das:
- Ich habe 3 Variablen a,b,c jeweils Integer als Input und suche einen Output als
Boolean
- Ich setze meinen return zunächst als Falsch (Könnte ich das auch weglassen?)
- Ich prüfe ob a <=b gilt und falls dann auch c >=a und c<=b also zwischen c
zwischen a und b liegt, ist mein return True.
- Wieso kommt jetzt ein End If statt Else? Weil man sich denken kann, dass,
wenn c nicht kleiner gleich b und größer gleich a ist, der return False sein
muss?
- Bedeutet das Elself einfach Else oder wieso heißt es anders? Meint das Elself
den Fall a > b? Könnte ich dann auch Elself/Else a > b Then und dann
dadrunter If (c > b) And (c<a) schreiben?
LG
Mathics
|
|
|
|
Hallo,
> Liebes Forum,
>
> ich habe hier einen Source Code und verstehe ihn nicht so
> ganz:
>
>
> Function algA (a As Integer, b As Integer, c As Integer) As
> Boolean
> Dim return As Boolean
> return = False
> If a <= b Then
> If (c>=a) And (c<=b) Then
> return = True
> End If
> Elself (c>b) And (c<a) Then
> return = True
> End If
> algA = return
> End Function
>
>
> Für mich bedeutet das:
> - Ich habe 3 Variablen a,b,c jeweils Integer als Input und
> suche einen Output als
> Boolean
> - Ich setze meinen return zunächst als Falsch (Könnte
> ich das auch weglassen?)
Vermutlich ja, aber dann verlässt man sich auf den Compiler. Deklarieren musst du die Variable return jedoch, also weist man ihr eben gleich einen Wert zu (den sie vermutlich sowieso nach der Deklaration hätte).
> - Ich prüfe ob a <=b gilt und falls dann auch c >=a und
> c<=b also zwischen c
> zwischen a und b liegt, ist mein return True.
> - Wieso kommt jetzt ein End If statt Else? Weil man sich
> denken kann, dass,
> wenn c nicht kleiner gleich b und größer gleich a ist,
> der return False sein
> muss?
Nein, sondern schlicht und ergreifend um die innere If-Struktur zu schließen. Das sind die Sachen die in Sprachen wie C++ einfach per Klammer erledigt werden, in Basic braucht es dazu traditionell ein Schlüsselwort.
> - Bedeutet das Elself einfach Else oder wieso heißt es
> anders?
Das heißt ElseIf und leitet eine neue If-Struktur ein, die nur ausgeführt wird, wenn der Wert der vorangehenden False war.
> Meint das Elself
> den Fall a > b?
Nein, denn sonst wäre es unnötig.
> Könnte ich dann auch Elself/Else a > b
> Then und dann
> dadrunter If (c > b) And (c<a) schreiben?
Man kann vermutlich auch ein Else setzen und darunter eine neue If...End If-Struktur. Aber genau um das zu vermeiden, also für eine bessere Übersicht, gibt es ja ElseIf.
Es wäre hilfreich, wenn du bei solchen Rückfragen ein wenig dazu sagen könntest, wo du das her hast. Hast du das selbst geschrieben, oder besteht die Aufgabe darin, den Code zu interpretieren?
Irgendwie soll ja untersucht werden, ob c zwischen a und b liegt. Das ist hier nach dem Motto Warum einfach, wenn es auch umständlich geht? umgesetzt und dabei ist auch noch die Verwendung von < und <= völlig inkonsistent.
Gruß, Diophant
|
|
|
|
|
Status: |
(Frage) beantwortet | Datum: | 12:01 Sa 29.03.2014 | Autor: | Mathics |
> > Meint das Elself
> > den Fall a > b?
>
> Nein, denn sonst wäre es unnötig.
Für welchen Fall steht Elself denn? Also wenn a <= b ist, aber c nicht >= a und c<=b ist, müsste, wenn gilt c>b und c<a doch a>b sein oder nicht?
LG
Mathics
|
|
|
|
|
Hallo,
>
> > > Meint das Elself
> > > den Fall a > b?
> >
> > Nein, denn sonst wäre es unnötig.
>
> Für welchen Fall steht Elself denn?
Nochmal, es heißt
ELSEIF
Und es wird nur wirksam, wenn a>b ist (das habe ich schon in mieiner vorigen Antwort geschruieben!) und prüft eben die Bedingung, die dahinter steht.
Es ist sehr schwierig, dir zu helfen, weil man nicht so recht versteht, was du eigentlich wissen möchtest. Könntest du da vielleicht ein wenig strukturierter vorgehen?
Gruß, Diophant
|
|
|
|
|
Status: |
(Frage) beantwortet | Datum: | 12:22 Sa 29.03.2014 | Autor: | Mathics |
Entschuldige bitte, ich habe es total missverstanden, was schon damit anfing, dass ich nicht gesehen habe, dass es ELSEIF also (Else und If) heißt. Es handelt sich also um eine Bedingung im Else Teil. Entschuldige meine Ungenauigkeit!
D.h. im Endeffekt wird einfach nur überprüft, ob c zwischen a und b liegt, oder?
LG
Mathics
|
|
|
|
|
Hallo,
> Entschuldige bitte, ich habe es total missverstanden, was
> schon damit anfing, dass ich nicht gesehen habe, dass es
> ELSEIF also (Else und If) heißt. Es handelt sich also um
> eine Bedingung im Else Teil. Entschuldige meine
> Ungenauigkeit!
>
> D.h. im Endeffekt wird einfach nur überprüft, ob c
> zwischen a und b liegt, oder?
Ja, wobei eben die strikten Ungleichheiten in der ElseIf-Struktur im Widerspruch zu den <=-Relationen der ersten If-Struktur stehen. Das ergibt für mich keinen Sinn. Ist es vielleicht ein Tippfehler?
Gruß, Diophant
|
|
|
|
|
Status: |
(Frage) beantwortet | Datum: | 12:39 Sa 29.03.2014 | Autor: | Mathics |
> Ja, wobei eben die strikten Ungleichheiten in der
> ElseIf-Struktur im Widerspruch zu den <=-Relationen der
> ersten If-Struktur stehen. Das ergibt für mich keinen
> Sinn. Ist es vielleicht ein Tippfehler?
Meinst du, dass im ElseIf- Teil auch a >=b möglich sein müsste und damit (c >=b) And (c<=a)?
LG
Mathics
|
|
|
|
|
Hallo,
> > Ja, wobei eben die strikten Ungleichheiten in der
> > ElseIf-Struktur im Widerspruch zu den <=-Relationen der
> > ersten If-Struktur stehen. Das ergibt für mich keinen
> > Sinn. Ist es vielleicht ein Tippfehler?
>
> Meinst du, dass im ElseIf- Teil auch a >=b möglich sein
> müsste
Hä?
Das hatten wir doch schon. Die ElseIf-Struktur wird überhaupt nur durchgeführt, wenn die vorangehende If-Abfrage mit False ausgewertet wurde. Das ist der Fall a>b. Punkt.
> und damit (c >=b) And (c<=a)?
Es würde mehr Sinn ergeben, wenn die Bedingung im ElseIf-Teil so ausgeführt wäre. Insgesamt hätte man dann geprüft, ob c zwischen a und b leigt, wobei c=a oder c=b zulässig sind. Möchte man letzteres nicht, dann bräuchte es eben im inneren If...Then und im ElseIf-Teil eine strikte Kleiner-Relation.
Gruß, Diophant
|
|
|
|