PHP-Anweisungen: Unterschied zwischen den Versionen

Aus Vokabulabor
Zur Navigation springen Zur Suche springen
(Die Seite wurde neu angelegt: „ = Bedingte Anweisung = Es kommt oft vor, dass eine Berechnung von Bedingungen abhängt: Beispiel: Bestimmen des Maximums von zwei Zahlen a und b: * Wenn a größer als b ist, ist das Ergebnis a. * Sonst ist das Ergebnis b. In PHP wird das so formuliert: <syntaxhighlight lang="php"> if ($a > $b){ $result = $a; } else { $result = $b; } </syntaxhighlight> * Eine bedingte Anweisung beginnt mit dem Wort '''if''. * Es folgt eine in Klammer geschriebene…“)
 
Keine Bearbeitungszusammenfassung
Zeile 1: Zeile 1:
* [[Kategorie:Tutorial]]
* [[Kategorie:Programmierung]]
* [[Kategorie:PHP]]


= Links =
* [[PHP]]
* [[PHP-Funktionen]]
* [[PHP-Anweisungen]]
* [[PHP-Klassen]]


= Bedingte Anweisung =
= Bedingte Anweisung =
Zeile 37: Zeile 45:
* Schreibe eine Funktion, die eine Zahl prüft, ob sie positiv ist. Wenn sie nicht positiv ist, soll der Text "Zahl ist nicht positiv!" ausgeben.
* Schreibe eine Funktion, die eine Zahl prüft, ob sie positiv ist. Wenn sie nicht positiv ist, soll der Text "Zahl ist nicht positiv!" ausgeben.
* Schreibe eine Funktion, die eine Zahl prüft, ob sie zwischen 0 und 100 liegt. Wenn sie nicht im Intervall liegt, soll sie den Text "keine Prozentzahl" ausgeben.
* Schreibe eine Funktion, die eine Zahl prüft, ob sie zwischen 0 und 100 liegt. Wenn sie nicht im Intervall liegt, soll sie den Text "keine Prozentzahl" ausgeben.
= Die for-Schleife =
In einer Schleife werden Anweisungen wiederholt, bis eine Bedingung erreicht ist.
<syntaxhighlight lang="php">
for ($no = 3; $no > 0; $no = $no - 1){
  echo "Noch $no Sekunde(n)\n";
  sleep(1000);
}
echo "Ich bin fertig\n";
</syntaxhighlight>
* Eine for-Schleife beginnt mit dem Wort '''for'''.
* Es folgen 3 Abschnitte, die jeweils mit ';' (Strichpunkt) getrennt sind:
** Der erste Abschnitt ist die '''Initialisierung''', die vor dem Schleifendurchlauf einmal erledigt wird: Die Variable $no erhält den Wert 10.
** Der 2.te Abschnitt ist die '''Bedingung''': Wenn die Bedingung "wahr" ist, wird der '''Schleifenrumpf''' durchlaufen.
** Der 3.te Abschnitt ist die '''Fortschaltung''': Sie wird am Ende des Schleifenkörpers ausgeführt: <code>$no = $no - 1</code> zählt die Variable $no um eins herunter.
** Der Schleifenkörper beginnt hier mit '{', enthält 2 Anweisungen <code>echo "Noch $no Sekunden\n"; sleep(1000);</code> und endet mit '}'.
== Der Programmablauf ==
* Die Schleifeninitalisierung wird gemacht: <code>$no = 3;</code>
* Es folgt die Prüfung: <code>$no > 0;</code>: $no hat den Wert 3, also ist die Bedingung wahr: der Schleifenrumpf wird durchlaufen:
* <code>echo "Noch $no Sekunden\n"; sleep(1000);</code>: Es wird ausgegeben: "Noch 3 Sekunde(n)" und ein Zeilenwechsel.
* Das Ende des Schleifenrumpfs ist erreicht, die Fortschaltung wird ausgeführt: <code>$no = $no - 1;</code>: $no wechselt von 3 auf 2.
* Es folgt die Prüfung: <code>$no > 0;</code>: $no hat den Wert 2, also ist die Bedingung wahr: der Schleifenrumpf wird durchlaufen:
* <code>echo "Noch $no Sekunden\n"; sleep(1000);</code>: Es wird ausgegeben: "Noch 2 Sekunde(n)" und ein Zeilenwechsel.
* Das Ende des Schleifenrumpfs ist erreicht, die Fortschaltung wird ausgeführt: <code>$no = $no - 1;</code>: $no wechselt von 2 auf 1.
* Es folgt die Prüfung: <code>$no > 0;</code>: $no hat den Wert 1, also ist die Bedingung wahr: der Schleifenrumpf wird durchlaufen:
* <code>echo "Noch $no Sekunden\n"; sleep(1000);</code>: Es wird ausgegeben: "Noch 1 Sekunde(n)" und ein Zeilenwechsel.
* Das Ende des Schleifenrumpfs ist erreicht, die Fortschaltung wird ausgeführt: <code>$no = $no - 1;</code>: $no wechselt von 1 auf 0.
* Es folgt die Prüfung: <code>$no > 0;</code>: $no hat den Wert 0, also ist die Bedingung nicht wahr: der Schleifenrumpf wird nicht mehr durchlaufen.
* Es wird die Anweisung nach dem Schleifenrumpf <code>echo "Ich bin fertig\n";</code> ausgeführt: es erscheint die Ausgabe "Ich bin fertig" mit Zeilenwechsel.
= Die abweisende Schleife "while" =
Die abweisende Schleife prüft die Bedingung vor dem Durchlauf des Schleifenrumpfes.
Wir bauen die obige For-Schleife als While-Schleife nach:
<syntaxhighlight lang="php">
$no = 3;
while($no > 0){
  echo "Noch $no Sekunde(n)\n";
  sleep(1000);
  $no = $no - 1;
}
echo "Ich bin fertig\n";
</syntaxhighlight>
== Der Seerosenteich ==
Aufgabe: Ein Seerosenblatt hat 10cm*10 cm Fläche. Eine Seerose verdoppelt sich jeden Tag. Wie lange dauert es, bis der Teich mit 100m*100m zugewachsen ist, wenn am Anfang 64 Seerosen existieren.
<syntaxhighlight lang="php">
$roses = 64;
$days = 0;
$areaRoses = $roses * 0.1*0.1;
while($areaRoses < 100*100){
  $roses = $roses * 2;
  $areaRoses = $areaRoses * 0.1*0.1;
  $days = $days + 1;
}
echo "Es gibt $roses Seerosen nach $days Tagen mit einer Fläche von $areaRoses m²\n";
</syntaxhighlight>
* Die Anfangsfläche ist die Anzahl der Rosen am Anfang (64) mal die Fläche (10cm sind 0.1m): <code>$areaRoses = $roses * 0.1*0.1;</code>
** "Kommazahlen" werden im internationalen Stil mit Punkt statt Komma geschrieben: 0.1
== Aufgaben ==
* Ein Blatt Papier hat 0.1 mm Dicke: Falte das Papier (verdopple die Dicke), bis das Papier 1 m Dicke hat. Gibt die Anzahl der Faltungen aus.
** Falte das Papier, bis es zum Mond reicht: 300 000km. Wieviele Faltungen sind nötig.
* Die Bevölkerung nimmt jedes Jahr 3% ab. Wie lange dauert es, bis sich die Bevölkerung halbiert.
= Die nicht abweisende Schleife do-while =
Wenn der Schleifenrumpf mindestens einmal durchlaufen werden soll, nimmt man die nichtabweisende Schleife:
Der obige Countdown mit einer nicht abweisenden Schleife
<syntaxhighlight lang="php">
<syntaxhighlight lang="php">
$no = 3;
do {
  echo "Noch $no Sekunde(n)\n";
  sleep(1000);
  $no = $no - 1;
} while($no > 0);
echo "Ich bin fertig\n";
</syntaxhighlight>
== Aufgaben ==
* Ein Seerosenblatt hat 10cm*10 cm Fläche. Eine Seerose verdoppelt sich jeden Tag. Wie lange dauert es, bis der Teich mit 100m*100m zugewachsen ist. Es gibt am Anfang eine Seerose.
* Ein Blatt Papier hat 0.1 mm Dicke: Falte das Papier (verdopple die Dicke), bis das Papier 1 m Dicke hat. Gibt die Anzahl der Faltungen aus.
** Falte das Papier, bis es zum Mond reicht: 300 000km. Wieviele Faltungen sind nötig.
* Die Bevölkerung nimmt jedes Jahr 3% ab. Wie lange dauert es, bis sich die Bevölkerung halbiert.

Version vom 7. Oktober 2023, 07:09 Uhr

Links

Bedingte Anweisung

Es kommt oft vor, dass eine Berechnung von Bedingungen abhängt:

Beispiel: Bestimmen des Maximums von zwei Zahlen a und b:

  • Wenn a größer als b ist, ist das Ergebnis a.
  • Sonst ist das Ergebnis b.

In PHP wird das so formuliert:

if ($a > $b){
  $result = $a;
} else {
  $result = $b;
}
  • Eine bedingte Anweisung beginnt mit dem Wort 'if.
  • Es folgt eine in Klammer geschriebene Bedingung: ( $a > $b ).
  • Es folgt ein mit '{' und '}' umschlossener Block von Anweisungen, die bei Erfüllung der Bedingung ausgeführt werden. Hier genau eine Anweisung: $result = $a;
  • Optional folgt das Wort else und ein mit '{' und '}' umschlossener Block von Anweisungen, der nur dann ausgeführt wird, wenn die obige Bedingung nicht erfüllt ist.

Wenn wir das noch in eine Funktion verpacken, dann ist das wiederverwertbar:

function max($a, $b){
  if ($a > $b){
    $result = $a;
  } else {
    $result = $b;
  }
  return $result;
}

Aufgaben

  • Schreibe eine Funktion, die als Parameter das Alter bekommt und dann, wenn das Alter größer 17 ist, den Text "Willkommen" ausgibt, sonst den Text "Leider kein Zutritt!".
  • Schreibe eine Funktion, die eine Zahl prüft, ob sie positiv ist. Wenn sie nicht positiv ist, soll der Text "Zahl ist nicht positiv!" ausgeben.
  • Schreibe eine Funktion, die eine Zahl prüft, ob sie zwischen 0 und 100 liegt. Wenn sie nicht im Intervall liegt, soll sie den Text "keine Prozentzahl" ausgeben.

Die for-Schleife

In einer Schleife werden Anweisungen wiederholt, bis eine Bedingung erreicht ist.

for ($no = 3; $no > 0; $no = $no - 1){
  echo "Noch $no Sekunde(n)\n";
  sleep(1000);
}
echo "Ich bin fertig\n";
  • Eine for-Schleife beginnt mit dem Wort for.
  • Es folgen 3 Abschnitte, die jeweils mit ';' (Strichpunkt) getrennt sind:
    • Der erste Abschnitt ist die Initialisierung, die vor dem Schleifendurchlauf einmal erledigt wird: Die Variable $no erhält den Wert 10.
    • Der 2.te Abschnitt ist die Bedingung: Wenn die Bedingung "wahr" ist, wird der Schleifenrumpf durchlaufen.
    • Der 3.te Abschnitt ist die Fortschaltung: Sie wird am Ende des Schleifenkörpers ausgeführt: $no = $no - 1 zählt die Variable $no um eins herunter.
    • Der Schleifenkörper beginnt hier mit '{', enthält 2 Anweisungen echo "Noch $no Sekunden\n"; sleep(1000); und endet mit '}'.

Der Programmablauf

  • Die Schleifeninitalisierung wird gemacht: $no = 3;
  • Es folgt die Prüfung: $no > 0;: $no hat den Wert 3, also ist die Bedingung wahr: der Schleifenrumpf wird durchlaufen:
  • echo "Noch $no Sekunden\n"; sleep(1000);: Es wird ausgegeben: "Noch 3 Sekunde(n)" und ein Zeilenwechsel.
  • Das Ende des Schleifenrumpfs ist erreicht, die Fortschaltung wird ausgeführt: $no = $no - 1;: $no wechselt von 3 auf 2.
  • Es folgt die Prüfung: $no > 0;: $no hat den Wert 2, also ist die Bedingung wahr: der Schleifenrumpf wird durchlaufen:
  • echo "Noch $no Sekunden\n"; sleep(1000);: Es wird ausgegeben: "Noch 2 Sekunde(n)" und ein Zeilenwechsel.
  • Das Ende des Schleifenrumpfs ist erreicht, die Fortschaltung wird ausgeführt: $no = $no - 1;: $no wechselt von 2 auf 1.
  • Es folgt die Prüfung: $no > 0;: $no hat den Wert 1, also ist die Bedingung wahr: der Schleifenrumpf wird durchlaufen:
  • echo "Noch $no Sekunden\n"; sleep(1000);: Es wird ausgegeben: "Noch 1 Sekunde(n)" und ein Zeilenwechsel.
  • Das Ende des Schleifenrumpfs ist erreicht, die Fortschaltung wird ausgeführt: $no = $no - 1;: $no wechselt von 1 auf 0.
  • Es folgt die Prüfung: $no > 0;: $no hat den Wert 0, also ist die Bedingung nicht wahr: der Schleifenrumpf wird nicht mehr durchlaufen.
  • Es wird die Anweisung nach dem Schleifenrumpf echo "Ich bin fertig\n"; ausgeführt: es erscheint die Ausgabe "Ich bin fertig" mit Zeilenwechsel.


Die abweisende Schleife "while"

Die abweisende Schleife prüft die Bedingung vor dem Durchlauf des Schleifenrumpfes.

Wir bauen die obige For-Schleife als While-Schleife nach:

$no = 3;
while($no > 0){
  echo "Noch $no Sekunde(n)\n";
  sleep(1000);
  $no = $no - 1;
}
echo "Ich bin fertig\n";

Der Seerosenteich

Aufgabe: Ein Seerosenblatt hat 10cm*10 cm Fläche. Eine Seerose verdoppelt sich jeden Tag. Wie lange dauert es, bis der Teich mit 100m*100m zugewachsen ist, wenn am Anfang 64 Seerosen existieren.

$roses = 64;
$days = 0;
$areaRoses = $roses * 0.1*0.1;
while($areaRoses < 100*100){
  $roses = $roses * 2;
  $areaRoses = $areaRoses * 0.1*0.1;
  $days = $days + 1;
}
echo "Es gibt $roses Seerosen nach $days Tagen mit einer Fläche von $areaRoses\n";
  • Die Anfangsfläche ist die Anzahl der Rosen am Anfang (64) mal die Fläche (10cm sind 0.1m): $areaRoses = $roses * 0.1*0.1;
    • "Kommazahlen" werden im internationalen Stil mit Punkt statt Komma geschrieben: 0.1

Aufgaben

  • Ein Blatt Papier hat 0.1 mm Dicke: Falte das Papier (verdopple die Dicke), bis das Papier 1 m Dicke hat. Gibt die Anzahl der Faltungen aus.
    • Falte das Papier, bis es zum Mond reicht: 300 000km. Wieviele Faltungen sind nötig.
  • Die Bevölkerung nimmt jedes Jahr 3% ab. Wie lange dauert es, bis sich die Bevölkerung halbiert.

Die nicht abweisende Schleife do-while

Wenn der Schleifenrumpf mindestens einmal durchlaufen werden soll, nimmt man die nichtabweisende Schleife:

Der obige Countdown mit einer nicht abweisenden Schleife

<syntaxhighlight lang="php">
$no = 3;
do {
  echo "Noch $no Sekunde(n)\n";
  sleep(1000);
  $no = $no - 1;
} while($no > 0);
echo "Ich bin fertig\n";

Aufgaben

  • Ein Seerosenblatt hat 10cm*10 cm Fläche. Eine Seerose verdoppelt sich jeden Tag. Wie lange dauert es, bis der Teich mit 100m*100m zugewachsen ist. Es gibt am Anfang eine Seerose.
  • Ein Blatt Papier hat 0.1 mm Dicke: Falte das Papier (verdopple die Dicke), bis das Papier 1 m Dicke hat. Gibt die Anzahl der Faltungen aus.
    • Falte das Papier, bis es zum Mond reicht: 300 000km. Wieviele Faltungen sind nötig.
  • Die Bevölkerung nimmt jedes Jahr 3% ab. Wie lange dauert es, bis sich die Bevölkerung halbiert.