• Willkommen im Geoclub - dem größten deutschsprachigen Geocaching-Forum. Registriere dich kostenlos, um alle Inhalte zu sehen und neue Beiträge zu erstellen.

If... then... end

AoiSora

Geocacher
Arbeite grad an einem neuen WIG und hab da mal ne Frage zum Befehl "end".

Spielt es eine Rolle wenn ich in einem Script die end-Befehle alle am Ende habe oder diese auch mittendrin habe.

Beispiel:
IF ...
THEN...
END
IF...
THEN...
END

oder

IF...
THEN...
IF...
THEN..
END
END

Nach meinen geringen Erkenntnissen bringt das eigentlich schon das selbe Ergebnis. Aber vielleicht gibts ja mit einer Schreibweise Probleme, oder es gibt doch eine gewisse andere Reihenfolge in der es aufgelöst wird oder so.

Wär nett wenn jemand antworten könnte der damit Ahnung hat.
 

eifelente

Geocacher
Bei den beiden Schreibweisen gibt es schon einen Unterschied:

Code:
IF Bedingung 1
THEN Code 1
END
IF Bedingung 2
THEN Code 2
END
Hier ist die Ausführung der beiden Codestücke unabhängig voneinander. D.h. wenn Bedingung 1 wahr ist wird Code 1 ausgeführt. Wenn Bedingung 2 wahr ist wird Code 2 ausgeführt.

Code:
IF Bedingung 1
THEN Code 1
IF Bedingung 2
THEN  Code 2
END
END
Hier wurden die beiden IF-Anweisungen verschachtelt. Die Ausführung von Code 2 hängt auch an der Bedingung 1: Wenn Bedingung 1 falsch ist wird weder Code 1 noch Code 2 ausgeführt. Wenn Bedingung 1 wahr ist und Bedingung 2 falsch wird nur Code 1 ausgeführt. Code 2 wird nur genau dann ausgeführt, wenn beide Bedinungen wahr sind.

Das THEN gibt zusammen mit dem END also den Bereich an, der ausgeführt werden soll, wenn die Bedingung nach dem IF wahr ist.
 

bodenseepingu

Geomaster
eifelente schrieb:
Code:
IF Bedingung 1
THEN 
       Code 1
END
IF Bedingung 2
THEN 
       Code 2
END
Hier ist die Ausführung der beiden Codestücke unabhängig voneinander. D.h. wenn Bedingung 1 wahr ist wird Code 1 ausgeführt. Wenn Bedingung 2 wahr ist wird Code 2 ausgeführt.

Code:
IF Bedingung 1
THEN 
    Code 1
    IF Bedingung 2
    THEN  Code 2
    END
END
Hier wurden die beiden IF-Anweisungen verschachtelt. Die Ausführung von Code 2 hängt auch an der Bedingung 1: Wenn Bedingung 1 falsch ist wird weder Code 1 noch Code 2 ausgeführt. Wenn Bedingung 1 wahr ist und Bedingung 2 falsch wird nur Code 1 ausgeführt. Code 2 wird nur genau dann ausgeführt, wenn beide Bedinungen wahr sind.

Das THEN gibt zusammen mit dem END also den Bereich an, der ausgeführt werden soll, wenn die Bedingung nach dem IF wahr ist.

Und bitte - ihr macht euch das Leben viel einfacher, wenn ihr im Code einrückt !!! Dann seht ihr auch sofort, wie die Programmlogik ist.
 
OP
A

AoiSora

Geocacher
Danke für die Antworten.
Ja logisch ist das ja auch und hab ich auch so gedacht. Ich bin mir jetzt grad nicht sicher, jedoch glaub ich, dass bei mir auch die verschachtelten Bedingungen aufgelöst wurden auch wenn die erste Bedingung nicht ging. Hmmm naja egal ich werds dann einfach so machen wie es sich gehört.^^
 

bodenseepingu

Geomaster
....also mir ist kein Fehler bekannt, daß die Programmlogik in LUA nicht funktionieren würde...und damit habe ich wirklich schon reichlich gemacht...

Was am meisten hilft:
- print-Befehle reinnehmen (Achtung, in der fertigen Cartridge alle rauskommentieren wg. Problemen beim I-Phone)
 
OP
A

AoiSora

Geocacher
Das mit dem Einrücken kenn ich ja auch so und find ich auch wesentlich übersichtlicher.
Hab halt mit dem Groundspeakbuilder programmiert. Da wird zwar die Aktion nach dem if eingerückt, jedoch ist das nächste (verschachtelte) if nicht eingerückt, sondern beginnt wieder am Anfang.
Denk mal, wegen diesem teilweisem Einrücken aber halt nicht konsequentem habe ich gedacht, dass es egal ist wo das end steht, denn so wie der Builder einrückt gibt es keine verschachtelten Bedingungen.
 
Oben