Hans35: wo ist der unterschied zwischen "elsif" und "if" "else"?

Beitrag lesen

Hallo,

Du brauchst nur das Programm mit "gesundem Menschenverstand" zu lesen und dabei "if" mit "falls", "else" mit "ansonsten" oder mit "und falls nicht dann" und "elsif" - schon selbstverständlich - mit "ansonsten falls" zu übersetzen. Falls du die falsche Schreibweise erwischst, sagt dir das schon der Compiler obzw. Interpreter.

wozu wird "elsif" überhaubt benötigt?

damit die nachfogende Bedingung nur abgefragt wird, wenn die vorausgehende (nach "if") ***nicht*** erfüllt ist.

wird das auf eine ganzen if else strang angewendet oder sind das
einzelne "neu abfragen"

"elsif" muß sich - genau wie "else" - auf ein vorausgehendes "if" oder "elseif" beziehen. Andernfalls wird ein Syntaxfehler gemeldet.

was ich noch wissen möchte ist beim cgi z.B.
wenn eine abfrage wie diese z.B.
{ irgendwas.......
if ($var[$count] eq "pin_exp_day"){
         $pin_exp_day = $val[$count];
     }

if ($var[$count] eq "pin_exp_month"){
         $pin_exp_month = $val[$count];
     }

if ($var[$count] eq "pin_subscription"){
         $pin_subscription = $val[$count];
     }

{$count = $count + 1;}}

stattfindet wird dann bei "einer" wahrheit die schlaufe abgebrochen
und der befehl ausgeführt oder speichert er alle daten beim durchgang
und führt dann die antwort aus?

Die Schleife wird nur dann abgebrochen, wenn das irgendwo ins Programm geschrieben wurde. Hier steht nirgends etwas davon. "count" zählt daher munter unendlich weiter, d.h. bis zu "overflow" des Zahlenbereichs oder bis irgend etwas anderes Schreckliches passiert. Es sei dann bei "irgendwas..." steht eine Abbruchbedingung, die du nicht gepostet hast. Jedesmal, wenn bei einem dieser Durchläufe eine der if-Bedingungen erfüllt ist, wird die entsprechende Variable überschrieben, der alte Wert ist weg.

und nochmal zu elsif
könnte dieses beispiel auch so geschrieben werden
{ irgendwas.......
elsif ($var[$count] eq "pin_exp_day"){
         $pin_exp_day = $val[$count];
     }

elsif ($var[$count] eq "pin_exp_month"){
         $pin_exp_month = $val[$count];
     }

if ($var[$count] eq "pin_subscription"){
         $pin_subscription = $val[$count];
     }
     else
     {$count = $count + 1;}}

Nein.
Dein erstes "elsif" bezieht sich nicht auf ein vorausgegangenes "if" und ist daher ein Syntaxfehler.
Das zweite "elsif" bewirkt nur, dass nicht mehr getestet wird, ob ($var[$count] eq "pin_exp_month") wahr ist, wenn bereits feststeht, dass ($var[$count] eq "pin_exp_day") wahr ist. Es schadet also nicht, hier elsif zu nehmen.
Vor "count" darf keinesfalls "else" stehen, sonst bleibt "count" unverändert und beim nächsten Schleifendurchlauf ist die Situation unverändert. Das bedeutet, es gibt dadurch eine "unendliche" Schleife, der Programm "hängt" und muß von außen abgebrochen werden.

Das "endif" in VB-Script und etlichen anderen Sprachen (z.B. PASCAL) hat nichts damit zu tun! Dort gibt es die geschweiften Klammern { } nicht: "then" ersetzt die öffnende Klammer  {  nach "if" oder "elseif" und "endif" ersetzt die zugehörige schließende Klammer  } .

Gruß
Hans35