Bedingte Entscheidungen / Schleifen



Bedingte Entscheidungen

Sie bestimmen ob Programmabschnitte ausgeführt (abgearbeitet) werden
oder übersprungen werden.

Dies wird benötigt, da sich die Skripts unter “bestimmten Bedingungen” anders verhalten sollen:
ZB könnte man eine Webseite nachts mit einem “Abend-Theme” versehen und
tagsüber mit einem kontrastreicheren „Tageslook“.

Für so etwas braucht man Entscheidungen, hier aufgrund der Zeitzone/Zeit
des Benutzers und nicht des Servers.

 

Ein logisches Konstrukt frei formuliert wäre:


“Bedingung:
WENN ( die Aktuelle-Zeit ENTSPRICHT der Nachtzeit )
       ...DANN zeige die Nacht-Design-Html-Datei an
SONST
       ...zeige die Standard-Tages-Html-Datei an.
ende der Bedingung.”

 

 

IF
wenn-dann Entscheidungen – nur wenn die Bedingung in den runden Klammern wahr ist (TRUE),
dann führe folgenden Programmteil aus.

$x 10;
$y 0;
if (
$x $y)
    echo 
"Der Wert der Variablen x ist größer als der der Variablen y";


Umfasst der von der Entscheidung abhängige Programmteil mehr als einen Befehl (hier: echo) muss
dieser als Block zwischen geschweiften Klammern stehen -  { kennzeichnet den Anfang des Blocks, } das Ende:

if ($x $y{ // Bedingungsblock Anfang - durch { eingeleitet
    
echo "Der Wert der Variablen x ist größer als der der zweiten
"
;
    echo 
"----------------------------------------------------------";
} // Bedingungsblock Ende – durch } abgeschlossen


Zu jedem mit { geöffneten Block muss immer genau ein Gegenstück } existieren,
um den Block wieder zu schließen (hier: conditional block, d.h. der Block wird in bestimmter Abhängigkeit ausgeführt - Konditionaler Block)



IF/ELSE


wenn-dann-sonst Entscheidungen – wenn (if) die Bedingung wahr ist (true),
führe folgenden Programmteil aus, sonst (else) den Teil im else-Block (else-Zweig).

if ($x $y) {
    echo 
"TRUE!";
} else {
    echo 
"FALSE!";
}



IF-ELSE VERZWEIGUNG

if (y)

if (Ausdruck)

Statt Anweisung1

$min x;

Anweisung1;

kann auch ein Anweisungs-

else

[else

block stehen; dieser muss wieder mit "{"

$ min y;

Anweisung2;]

geöffnte und mit "}" abgeschlossen werden.


IF / ELSEIF / ELSE

“wenn-dann|sonstwenn...|sonst-Entscheidungen –
wenn (if) die Bedingung in den runden Klammern ( Bedingung ) wahr ist (true),
führe folgenden Programmblock (Zweig) aus,
sonst – wenn eine andere Bedingung (elseif) wahr ist,
führe diesen Programmteil aus;
trifft dies auch nicht zu (else) führe eben den else-Zweig aus:

if ($x $y) {
    echo 
"Variable x ist größer als Variable y";
elseif ($x $y) {
    echo 
"Variable x ist kleiner als Variable y";
} else {
    echo 
"die Variablen haben den gleichen Wert";
}

ELSE-IF KETTEN


$a 22;
if (
$a 20)
    echo 
"Variablenwert von a ist kleiner als 20";
else if (
$a 40)
    echo 
"Variablenwert von a ist größer 40";
else if (
$a == 21)
    echo 
"a hat den Wert 21";
else
    echo 
"a ist weder kleiner 20, noch größer 40 und auch nicht 21";

 

 



Schleifen ("wie oft")

Durch Schleifen kann entschieden werden, wie oft etwas ausgeführt wird (niemals, einmal, mehrmals,...);
bisher hatten wir bei if nur die Entscheidung „wenn dann - sonst“, aber nicht "wie oft".



WHILE-Schleifen

 

while (ausdruck) {

// mach etwas

}

Hier wird am Ende des while-Blocks erneut der Ausdruck auf TRUE oder FALSE geprüft.
Solange der Ausdruck in den runden Klammern TRUE ist, also die Bedingung für die while-Schleife zutrifft,
wird erneut der darauffolgene Block ausgeführt.

$x 0;
while (
$x 10//    while (WAHR)
    
{
    echo 
$x//Anweisungsblock
    
$x $x 1;
}

Programm-Ausgabe:

0123456789


Solang $x kleiner als 10 ist, wird der Wert von $x ausgegeben UND dann um 1 erhöht; nach 10 Durchgängen – wenn
die Bedingung FALSE ist (d.h. 10<10 - stimmt ja nicht, liefert false) und somit der Schleifenblock nicht mehr ausgeführt wird,
wird mit den Befehlen nach } fortgefahren.

Würde darauf vergessen, den Wert, der in der Bedingung geprüft wird in dem "while Block",
also zwischen { und } zu verändern ist schnell eine "Endlosschleife" entstanden.


 

FOR-Schleife

 

Wird meist eingesetzt, wenn abschätzbar ist, wie oft die Schleife durchlaufen werden wird bzw. wenn Befehle zB genau 10 Mal hintereinander ausgeführt werden müssen.


for (Initialisierung; Bedingung; "Iterationswert"-ändern) {
   // Statements;
}

 

Solange die "Bedingung" den Wahrheitswert "true"(1) liefert, wird die for-Schleife erneut durchlaufen.
Der Iterationswert, der geändert wird, ist meist Bestandteil der "Bedingung":

 

for ($x 0$x <= 10$x $x 1)

 

{

A1 ... Initialisierung

echo $x;

A2 ... Bedingung

}

A3 ... Re-Initialisierung

 

Mit einer for-Schleife können sich Endlosschleifen weniger leicht ergeben,
da sich alle Parameter bereits - meist übersichtlich - im “Schleifenkopf” befinden.
Die Parameter A1, A2, A3 werden durch einen Strichpunkt ; voneinander getrennt.

 

// A1 ... Initialisierung
// A2 ... Bedingung, die erfüllt sein muss für einen erneuten Durchlauf
// A3 ... Re-Initialisierung

for (A1; A2; A3)

 

{

// Statements, wenn Bedinung A2 == true

 

}

 

Programm-Ausgabe:

0,1,2,3,4,5,6,7,8,9,10

 


for ($x 0$x <= 10$x $x 1)

{ echo $x;
}

Die zweite for-Schleife wäre doch eine "Endlosschleife", da $x nie größer oder gleich 10 wird,
sondern immer kleiner wird ($x=$x-1) – es wird jedes Mal 1 subtrahiert und $x ist somit immer kleiner gleich 10 -
diese Schleife würde sozusagen wieder endlos laufen.



DO-WHILE-Schleife (how do we do)


Auch genant "Durchlauf-Schleife", da erst nach dem ersten Durchlauf die Bedingung für einen weiteren Durchlauf geprüft wird.
Sprich die Befehle des Schleifenblocks werden auf alle Fälle mindestens einmal ausgeführt.



$x 0;
do {
    echo 
"ho ho ho";
    ++
$x;
} while (
$x 10);

 

 

 

Ergänzende und vertiefende Module