If/else programm-ablauf Allgemein 

Status
Für weitere Antworten geschlossen.

gold_digger

Registered +
Registriert
Okt. 2007
Beiträge
46
Ich habe eine ganz allgemeine Frage zum Programm Ablauf wenn if oder else eine funktion aufruft, die erst weiter unten im code steht:

Code:
if (x)
a()
elseif (y)
b()
else (z)
c()

print q
a()
...
b()
...
c()
...
print w



So nehmen wir mal an y trifft zu, nun ist meine Frage: welche Funktionen werden ausgeführt?
1. wird nur b ausgeführt und dann ist Schluss?
2. wird b ausgeführt und dann einfach der komplette Code der folgt (kein print q, aber c() und print w)?
3. oder wird b ausgeführt, und der folgende code außer c, weil sich das das programm gemerkt hat, dass z nicht zutrifft?

und wie ist das wenn x oder z eintritt?

normalerweise schreibt man ja die funktion gleich bei if oder else rein und nicht erst später, aber so habe ich das mal gesehen und bin nun verwirrt was eintrifft.

Oder ist das vielleicht von Sprache zu Sprache unterschiedlich?

Bitte um deutliche erläuterung, habe keine programmierkenntnisse, Danke!:)

mfg gold_digger
 
Nunja, a(), b() und c() sind Funktionen.
Das heisst, du rufst sie auf, der Code der Funktion wird ausgeführt und anschliessend wird zum Ort, woher die Funktion aufgerufen worden ist, zurückgesprungen.
Falls also y eintrifft, wird b() ausgeführt, zurückgesprungen, falls z auch eintrifft, wird auch noch c() ausgeführt, zurückgesprungen, dann werden print q und print w ausgeführt. a(), b() und c() zwischen print q und print w werden nicht ausgeführt, da diese Funktionsdeklarationen sind und keine Funktionsaufrufe! In den meisten (besser: mir bekannten Programmierssprachen) müsste dein Programm aber so aussehen:

Code:
main{ //Hauptprogramm (von hier aus werden spezielle Funktionen aufgerufen)
if (x)
a() //Funktionsaufruf!
elseif (y)
b()
else (z)
c()

print q
...
...
print w

return 
}

a(){ //Funktionsdeklaration!
...
return // Verursacht das zurückkehren zum Aufrufer
}
b(){
...
return
}
c(){
...
return
}

Ich hoffe ich konnte zur Klärung beitragen, ansonsten einfach nachfragen!
mfg Elefant1990
 
Ja Danke, hast alles sehr gut erklärt und ich konnte es verstehen. also ich glaube das war perl und es waren in den 3 deklarierten funktionen eigentlich noch close oder eof, dann ist klar dass oben entschieden wird was eintrifft und dann nur die eine funktion aufgerufen wird. bloß dann habe ich gegrübelt was passiert wenn die funktionen nicht geclosed werden. aber dann macht das mit dem return ja auch sinn.
 
Status
Für weitere Antworten geschlossen.
Zurück
Oben Unten