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.