Vorbemerkungen Diese Schrittanleitung bezieht sich auf die Aufgaben 4 bis 6 von "Übung 2 - Schleifenbeispiele (1)" Sie soll als Anregung dienen, wie Sie Ihren Code blockweise erstellen und testen können. Unter Punkt "Schritte zur Realisierung der Aufgaben 5 und 6" ab Seite 3 geht es vor allem darum, wie ein vorhandener Arbeitsstand in kleinen und überschaubaren Schritten modifiziert und erweitert werden kann. ZeilenMax = 10 SpaltenMax = 10 Ausgabe Tag <pre> Für (zeile = 1; zeile <= ZeilenMax ; zeile++) Für (spalte = 1; spalte <= SpaltenMax; spalte++) Ausgabe "zeile.spalte " (mit Leerzeichen) Ausgabe Tag <br> Ausgabe Tag </pre> Schritte zur Realisierung der Aufgabe 4 Schritt 1: Apache- Server (ggf. auch MySql) starten Editor öffnen und Datei unter dem gewünschten Namen speichern Schritt 2: PHP- Rahmen schreiben Schritt 3: Variabelenzuweisungen Ausgabe der HTML-Tags <pre> 1 und </pre> in das Webbrowser- Fenster mittels der Anweisung echo. Nicht Gegenstand des Struktogrammes, aber beim Erstellen und Testen von PHP- Skripten nützlich: highlight_file() 2. Damit wird der Code des Skriptes farbig formatiert ausgegeben (natürlich nur, wenn es keine Fehlermeldungen gibt). $SpaltenMax = 9 Schritt 4: Speichern und testen im Webbrowser localhost eingeben, danach ggf. Unterverzeichnisse, dann den Dateinamen: localhost/.../ueb2/dateiname.php Wenn der Dateiname index.php lautet, kann er weggelassen werden. Ggf. Fehler beseitigen (fehlendes Semikolon hinter 9), nochmals testen Schritt 5: zuerst for () { Äußere Schleife (Zeilenschleife) dann for (Schleifensteuerung) { dann, eingerückt 3, eine Schleifenanweisung zum testen echo $Zeile; 1 Mit <pre>... </pre> wird der eingeschlossene Abschnitt im Webbrowser in einer Schrift dargestellt, bei der jedes Zeichen die gleiche Breite hat. Sieht im vorliegenden Beispiel optisch einfach besser aus. 2 Mit basename($php_self) wird der Dateiname der aktuellen Datei ermittelt. Die System- Variable $PHP_SELF enthält den vollständigen Namen der Datei (einschließlich Pfadangaben), die eingebaute PHP- Funktion basename() gibt den reinen Dateinamen wieder, im vorliegenden Fall also index.php. Sie können so diese Anweisungs- Zeile zu Testzwecken in jedem ihrer PHP- Skripte einsetzen, ohne sich Gedanken über den Dateinamen zu machen. 3 Einrückungen sind äußerst hilfreich, um optisch den Überblick zu behalten (wo beginnt ein Konstrukt, wo endet es, was ist worin geschachtelt, usw.). Einrückungen sollten mit Leerzeichen erzeugt werden. Tab- Taste geht zwar schneller, hat aber folgenden Nachteil: R.-P. Keil Übung 2 - Schleifenbeispiele (1) - Schrittanleitung / Seite 1 von 6
Schritt 6: Speichern und testen im Webbrowser Es ist vermutlich erst mal nichts zu sehen. Wir haben es mit einem beliebten und häufigen Fehler zu tun: eine versehentlich falsch geschriebene Variable: $Zeile anstatt $zeile (Bei Variablen Groß- / Kleinschreibung beachten). Bei der testweisen Ausgabe von Variablen sollte immer ein Textanteil mit enthalten sein, sinnvollerweise der Variabelenname ohne Dollarzeichen: echo "zeile: $zeile"; Nehmen Sie die Änderung vor und testen Sie erneut. Es sollte nun eine korrekte Webbrowser- Ausgabe erfolgen. Die Schleife funktioniert also prinzipiell. Erst jetzt ist es sinnvoll, weitere Details des Schleifeninneren zu realisieren und zu testen. Schritt 7: Ändern Sie zunächst die bisherige Testanweisung um in Beim Testen im Webbrowser werden alle Zeilennummern in einer Zeile ausgegeben. Es fehlt also noch ein HTML- Zeilenumbruch: (Das ist die Struktogrammzeile "Ausgabe Tag <br>" Testen Sie erneut im Webbrowser Schritt 8: Innere Schleife (Spaltenschleife) zuerst auf der gleichen Einrückungsebene wie die bisherigen Schleifenanweisungen: for () { (Bemerkung: wird von der äußeren Schleife übernommen und eingerückt) dann for (Schleifensteuerung) { (Bemerkung: der Inhalt von "Schleifensteuerung" kann von der äußeren Schleife kopiert und angepasst werden) Schritt 9: Speichern und testen im Webbrowser Es sollte jetzt im Webbrowser eine Matrix sichtbar sein, in der lediglich noch die Spaltennummern fehlen. Diese werden erzeugt, indem die Anweisung der inneren Schleife geändert wird von zu echo "$zeile.$spalte "; (S. nächster Absatz) wenn die Datei in einem anderen Editor geöffnet wird, der eine größere Tabulator- Schrittweite hat, ragt der Code schnell über den rechten Rand des Editorfenster hinaus und man muss horizontal scrollen. R.-P. Keil Übung 2 - Schleifenbeispiele (1) - Schrittanleitung / Seite 2 von 6
Der fertige Code für Aufgabe 4: echo "$zeile.$spalte "; Es sollte jetzt alles funktionieren. Aufgabe 4 ist somit erledigt. Es geht nun darum, die Aufgaben 5 und 6 zu realisieren, indem vorhandener Code in kleinen, überschaubaren Schritten modifiziert und erweitert wird. Schritte zur Realisierung der Aufgaben 5 und 6 Schritt 1: Kopieren Sie den bisherigen Code (Zeilen bis einschließlich ). Fügen Sie Ihn oberhalb der Zeile ein. Testen Sie den Arbeitsstand im Webbrowser. Es sollte nun, getrennt mit einer horizontalen Linie, eine exakte Kopier der Matrix zu sehen sein. Schritt 2: Ändern Sie die bisherige Anweisung der inneren Schleife um von echo "$zeile.$spalte "; nach Beim Testen im Webbrowser ist nun eine Matrix von Sternen zu sehen. Es geht nun darum, die Sterne nur anzuzeigen, wenn es sich um die erste und letzte Zeile sowie um die erste und letzte Spalte handelt. D.h. es ist lediglich das Schleifeninnere der inneren Schleife zu modifizieren. Wir werden hierzu eine Verzweigung benötigen (if... else...): wenn es sich um eine der genannten Zeilen bzw. Spalten handelt gib einen Stern, ansonsten gib ein Leerzeichen aus. Da die Bedingung der if- Konstruktion ziemlich umfangreich wird (wir müssen vier logische Aussagen verknüpfen, für Aufgabe 6 sind es acht), werden wir eine zusätzliche Variable einführen: die Variable $bedingung (s. nachfolgender Code). Diese setzen wir zunächst auf true, um die anschließende if- Konstruktion zu testen. R.-P. Keil Übung 2 - Schleifenbeispiele (1) - Schrittanleitung / Seite 3 von 6
Schritt 3: Fügen Sie vor die bisherige Schleifenanweisung die Anweisung $bedingung = true; ein. Fügen Sie anschließend die if- Konstruktion ein können Sie direkt übernehmen, indem Sie es einrücken. $bedingung = true; Beim Testen im Webbrowser ist erst mal keine Änderung zu sehen. Wir befinden uns aber, sofern es keine Fehlermeldung gibt, auf dem richtigen Weg. Mit dem folgenden Schritt erweitern wir die if- Konstruktion durch ein else: Schritt 4: Fügen Sie den else- Zweig ein Um auch diesen zu testen, setzen wir die Variable $bedingung auf false und geben testweise einen Strich aus $bedingung = false; else { echo "-"; Beim Testen im Webbrowser sollten jetzt an Stelle der Sterne Striche zu sehen. Wenn das der Fall ist, funktioniert auch der else- Zweig prinzipiell. Es geht nun um die korrekte Formulierung der Bedingung: R.-P. Keil Übung 2 - Schleifenbeispiele (1) - Schrittanleitung / Seite 4 von 6
Schritt 5: Ändern Sie die Bedingung um in $bedingung = $spalte == 1; (= fungiert als Wertzuweisung, == als Vergleichsoperator) Testen Sie den Arbeitsstand im Webbrowser. Es sollten nun in der ersten Spalte Sterne zu sehen sein. Fügen Sie mittels des Oder- Operators ( ) nun Schritt für Schritt die anderen Teilbedingungen ein (nach jeder neuen Teilbedingung testen). Achtung: das Semikolon darf sich nur hinter der letzten Teilbedingung befinden! Ändern Sie im else- Zweig den Strich um in ein Leerzeichen $bedingung = $spalte == 1 $spalte == $SpaltenMax $zeile == 1 $zeile == $ZeilenMax; else { echo " "; Der einfache Rahmen aus Sternen sollte jetzt funktionieren. Von hier bis zur Erzeugung eines zweifachen Rahmens, der Realisierung von Aufgabe 6 also, ist es nur ein kleiner Schritt (s. folgender Code). R.-P. Keil Übung 2 - Schleifenbeispiele (1) - Schrittanleitung / Seite 5 von 6
Schritt 6: Fügen Sie nun Schritt für Schritt die zusätzlichen Teilbedingung ein (nach jeder neuen Teilbedingung testen). Achtung: das Semikolon darf sich nur hinter der letzten Teilbedingung befinden! Sie sehen spätestens an dieser Stelle: es war sehr sinnvoll, für die Bedingung eine eigene Variable einzuführen. Es ist so einfach übersichtlicher, Änderungen und Erweiterungen sind unkompliziert realisierbar. $bedingung = $spalte == 1 $spalte == 2 $spalte == $SpaltenMax $spalte == $SpaltenMax -1 $zeile == 1 $zeile == 2 $zeile == $ZeilenMax $zeile == $ZeilenMax - 1; else { echo " "; Beim Testen im Webbrowser sollten jetzt an Stelle der Sterne Striche zu sehen. Wenn das der Fall ist, funktioniert auch der else- Zweig prinzipiell. Es geht nun um die korrekte Formulierung der Bedingung: R.-P. Keil Übung 2 - Schleifenbeispiele (1) - Schrittanleitung / Seite 6 von 6