07 Funktionen (Teil I) - NKSA-Binf
Transcrição
07 Funktionen (Teil I) - NKSA-Binf
07 Funktionen (Teil I) Funktionen (Teil I) 1/8 Einführung Funktionen sind wiederverwendbare Code-Stücke, die Du in einem Programm überall einsetzen kannst und dir somit viel Kopierarbeit ersparen. PHP besitzt schon viele eingebaute Funktionen und wir lernen einige von diesen in diesen Übungen kennen. Die erste Gruppe die wir uns näher anschauen, beinhaltet Funktionen zur Bearbeitung von Zeichenketten. strlen() ist eine der meistbenutzten Textfunktionen in PHP. Man übergibt ihr eine Zeichenkette (oder eine Variable welche ein solche beinhaltet) und sie gibt die Anzahl Zeichen dieses Strings zurück. Zum Beispiel: <?php // get the length of a string and // print it to the screen $length = strlen("david"); print $length; ?> Aufgabe Verwende im Editor den Tab mit der Datei index.php um deinen Code hineinzuschreiben. Ermittle die Länge deines eigenen Namens so wie ich es mit meinem gemacht habe, und gib ihn auf dem Bildschirm aus. Funktionen (Teil I) 2/8 String-Funktionen I Eine weitere sehr verbreitete String-Funktion ist substr(). Mit dieser Funktion kann ein Teil einer Zeichenkette ausgegeben werden. Man übergibt der Funktion jene Zeichenkette, von der man einen Teil erhalten möchte, die Nummer des Zeichens, bei dem gestartet werden soll, sowie die Anzahl gewünschter Zeichen. Z.B.: $myname = "David"; // you can manipulate strings easily // with built-in funtions too $partial = substr($myname, 0, 3); print $partial; // prints "dav" Denk daran, dass der zweite Parameter der Funktion (also die Nummer des Startzeichens) auf einem 0-indexierten Array basiert. Die Nummer des ersten Zeichens ist also die 0, nicht die 1. Sehr nützlich sind auch die Funktionen strtoupper() und strtolower(), welche die ganze Zeichenkette in GROSSBUCHSTABEN resp. kleinbuchstaben zurückgibt. Hier ein Beispiel mit diesen beiden Funktionen: $uppercase = strtoupper($myname); print $uppercase; // prints "DAVID" $lowercase = strtolower($uppercase); print $lowercase; // prints "david" Selbstverständlich geht das jeweils auch in einer einzigen Zeile: print strtolower("David"); // prints "david" Aufgabe Nimm einen Teil aus Deinem Namen und gib ihn aus. Gib danach den Namen einmal in Gross- und einmal in Kleinbuchstaben aus. Funktionen (Teil I) 3/8 String-Funktionen II strpos() gibt zurück, ab welchem Zeichen man einen Teilstring das erste Mal in einem String findet. strpos("emily", strpos("emily", strpos("emily", strpos("emily", "e"); "i"); "ily"); "zxc"); // // // // 0 2 2 false Die Parameter, die man der Funktion strpos() übergibt kann man sich als Heuhaufen resp. als Nadel vorstellen. Die Funktion versucht, die Nadel im Heuhaufen zu finden. Falls sie den Teilstring gefunden hat, so gibt sie den Index des ersten Buchstabens zurück, ansonsten den Wert false. if (strpos("david","h") === false) { print "Sorry, no 'h' in 'david'"; } // gibt den "Sorry"-Text aus Verwende den Editor um deine eigenen Nadel und Heuhaufen-Kombinationen zu erstellen. Du kannst für beide Übergabewerte jeweils auch eine Variable verwenden. Aufgabe 01.Verwende in Zeile 6 die Funktion strpos() und übergib ihr einen Buchstaben deines Namens als „Nadel“ und deinen Namen als „Heuhaufen“. 02.Teste in Zeile 13, ob strpos() den Wert false zurückgibt, also die Nadel sich nicht im Heuhaufen befindet. Gib im if-Block eine entsprechende Fehlermeldung aus. Funktionen (Teil I) 4/8 Mathematik-Funktionen I Gehen nun zu etwas Arithmetik über. Am häufigsten wirst Du wohl die Funktion round() benutzen. Diese Funktion rundet Fliesskommazahlen (z.B. 5.234) auf oder ab. Mit round() kannst Du die Zahl auf eine Ganzzahl oder auf eine Zahl mit vorgegebener Anzahl Nachkommastellen runden. Letzteres, indem man diese Anzahl Nachkommastellen als zweiten, optionalen Parameter übergibt. Beispiel: // Round pi down from 3.1416... $round = round(M_PI); print $round; // prints 3 // This time, round pi to 4 places $round_decimal = round(M_PI, 4); print $round_decimal; // prints 3.141 Bemerkung: M_PI ist eine vordefinierte Konstante, welche dem Wert der Kreiszahl π entspricht. Aufgabe Benutze das Übungsfenster um selber ein paar Zahlen runden zu lassen. Du kannst dabei auch die Konstante M_PI benutzen, meine Lieblingsdezimalzahl. 0ben: Runde eine beliebige Zahl auf eine Ganzzahl. Unten: Runde eine beliebige Zahl auf 3 Nachkommastellen. Funktionen (Teil I) 5/8 Mathematik-Funktionen II Sehr häufig und nützlich ist die Funktion rand(). Diese liefert zufällige Zahl aus dem Bereich von 0 bis und mit 32767. (Hinweis: Das Maximum hängt von der Plattform ab und kann mit getrandmax() ermittelt werden, auf dieser Website wird es wohl 2147483647 = 231-1.) Andere Bereiche kann man mit zwei optionalen Parametern festlegen. // prints a number between 0 and 32767 print rand(); // prints a number between 1 and 10 print rand(1,10); Aufgabe 01.Verwende den Editor um eine Zufallszahl auszugeben. 02.Erstelle eine neue Variable $name und speichere darin deinen Namen ab. 03.Lass nun einen zufälligen Buchstaben deines Namens ausgeben. Benutze dazu dein Wissen über strlen(string), rand(min, max) und substr(string, start, length). Tipp: Denk daran, dass in Strings die Zeichennummerierung bei 0 beginnt und folglich bei lenght-1 endet. Funktionen (Teil I) 6/8 Array-Funktionen I Arrays (Listen) sind beim Programmieren sehr praktisch. Übrigens: array() ist selbst eine Funktion. Du hast also schon eine Array-Funktion benutzt. Nebst array() selber ist wohl array_push() die meistgenutzte und hilfreichste Funktion im Umgang mit Arrays. array_push() benötigt zwei Argumente: Einen Array und ein Element, das am Ende des Arrays angehängt werden soll. Beispiel: $fav_bands = array(); array_push($fav_bands, array_push($fav_bands, array_push($fav_bands, array_push($fav_bands, array_push($fav_bands, "Maroon 5"); "Bruno Mars"); "Nickelback"); "Katy Perry"); "Macklemore"); Eine weitere coole Array-Funktion ist count(). Übergibt man ihr einen Array, so wird diese Funktion die Anzahl Elemente im Array zurückgeben: print count($fav_bands); // prints 5 Aufgabe Erstelle im Editor einen Array und nutze array_push(), um mindestens 5 Elemente einzufügen. Danach soll die Anzahl Elemente des Arrays ausgegeben werden. Funktionen (Teil I) 7/8 Array-Funktionen II Häufig müssen Arrays sortiert werden. Praktischerweise gibt es genau dafür in PHP die Funktion sort(). $array = array(5, 3, 7, 1); sort($array); print join(", ", $array); // prints "1, 3, 5, 7" PHP besitzt auch eine Funktion fürs Rückwärts-Sortieren: rsort(). $array = array(5, 3, 7 ,1); rsort($array); print join(":", $array); // prints "7:5:3:1" Schliesslich verwenden wir noch join(glue, array), um auf ganz einfache Weise alle Elemente eines Arrays ausgeben zu können. In dieser Übung verwenden wir ein Komma als Trennzeichen (glue). Aufgabe 01.Erstelle in Zeile 6 einen Array mit mehreren Elementen und speichere ihn unter dem Namen $the_array. 02.Sortiere den Array. 03.Gib den Array mit Kommas als Trennzeichen aus. 04.Sortiere in Zeile 12 den Array nun rückwärts. 05.Gib danach den Array wieder aus. Funktionen (Teil I) 8/8 Zeig nun was Du kannst! Nun verwenden wir, was wir über Strings, Mathematik-Funktionen und Arrays gelernt haben und erstellen ein Spiel. In diesem Spiel erstellen wir eine Liste unserer engsten Familie und Freunde und führen eine Lotterie durch. Wir werden das „Glücksrad“ drehen und damit ein Familienmitglied oder einen Freund zufällig aus der Liste wählen. Schliesslich geben wir den Namen des Gewinners in GROSSBUCHSTABEN aus. Los geht’s! Aufgabe Erstelle einen Array mit den Namen von Familienmitgliedern und Freunden. Je mehr Namen es sind, desto lustiger wird das Spiel. Sortiere nun diese Liste und wähle per Zufall einen Namen daraus. Wenn Du den Gewinnernamen hast, so gib ihn in Grossbuchstaben aus. Folgende Funktionen solltest Du hier mindestens benutzen: array(), array_push(), sort(), count(), rand() und strtoupper(). Spiel auch mit den anderen dir bekannten Funktionen etwas herum.