Turbo Pascal - Einführung - Georg von Peuerbach Gymnasium

Werbung
Programmieren mit PhP – Kurs 1
Jede Programmiersprache verfügt über eine eigene „Grammatik“ (Syntax), d.h. eine fix vorgegebene Anzahl an
verfügbaren Wörtern, die nur in bestimmter Weise verwendet werden dürfen, damit das Programm den Text
übersetzen kann. Wie bei jeder Sprache ist es wichtig, möglichst viele von diesen „Vokabeln“ zu kennen.
PhP wurde 1995 von Rasmus Lerdorf entwickelt. PhP stand ursprünglich für „Personal Homepage Tools“,
mittlerweile für „PhP: Hypertext Preprocessor“. PhP ist sprachlich an C angelehnt und wird vor allem zur
Erstellung von dynamischen Webseiten verwendet.
Wie funktioniert PhP?
1. Zunächst startet ein Client (Browser) eine Anfrage für eine PHP-Datei. Dies geschieht über die Eingabe
einer URL oder durch anklicken eines Links. Die Anfrage wird über das Internet an den entsprechenden
Server weitergeleitet.
2. Der Server (Webserver) nimmt die Anfrage entgegen und lädt die PHP-Datei von seiner Festplatte.
3. Anschließend übergibt der Webserver die PHP-Datei an den PHP-Interpreter.
4. Der PHP-Interpreter arbeitet das PHP-Skript ab.
5. Anschließend gibt der Interpreter das Ergebnis seiner Arbeit (meist in Form einer HTML-Datei, aber auch
Bilder oder PDF-Dokumente sind möglich) an den Webserver zurück.
6. Der Webserver liefert anschließend die Daten an den Client (Browser) zurück.
Quelle (Bild und Text): Wikipedia
Nützliche Links
Online-Manual: http://de.php.net/ und http://de.php.net/manual/de/
Selfhtml: http://de.selfhtml.org/
Apache Webserver: http://www.apache.de/
XAMPP-Download: http://www.apachefriends.org/de/xampp.html
XAMPP Installationsanleitung und PhP-Skriptum: http://www.jakober.ch/php/php_install.php
Notepad++: http://notepad-plus.sourceforge.net/de/site.htm
Installation
Für einfache Beispiele genügt die Installation von PhP und PhP-Designer.
Für aufwändigere Beispiele (Datenbank-Anbindung) empfiehlt sich die Installation von XAMPP und PhPDesigner. XAMPP installiert Apache, PhP, MySQL und v.a.m.
Statt PhP-Designer kann man auch Notepad++ verwenden.
Im PhP-Designer muss der Pfad zur Php.exe eingegeben werden: Options/Editor Preferences/Debug.
Das erste Programm – Hallo Welt
<?
print "Hallo Welt!";
?>
Ein PhP-Skript beginnt mit <? bzw. <?php und endet mit ?>. Dazwischen stehen die PhP-Befehle.
Der Ausgabe-Befehl lautet echo bzw. print.
Zeilenumbrüche erzeugt man mit <br>.
Jeder PhP-Befehl wird mit einem Strichpunkt abgeschlossen.
PhPinfo
<?
phpinfo();
?>
Zeigt eine grosse Anzahl von Informationen über die aktuelle Konfiguration von PHP an
Einbinden in HTML
PhP-Skripts können in HTML-Seiten an beliebiger Stelle eingebunden werden, auch mehrmals.
Kommentare werden mit // begonnen. Mehrzeilige Kommentare stehen zwischen /* und */.
<html>
<head>
<title>PHP - Test</title>
</head>
<body bgcolor="#FFFFFF">
<p align="center"><b>Peter Pfligl</b></p>
<p align="center">Georg von Peuerbach-Gymnasium</p>
<?php
// Kommentar: php-Scripts können an beliebigen stellen eingefügt werden
print "Herzlich willkommen bei <font color='red'><b>PHP</font></b>";
/* das ist ein Kommentar,
der über mehrere Zeilen geht */
?>
</body>
</html>
Übung: Ergänze das Programm so, dass noch einige weitere Zeilen mit Text ausgegeben werden.
Variable
In PHP werden Variablen durch ein vorangestelltes Dollarzeichen ($) gekennzeichnet und durch die Angabe
des Operators (=) mit einem Wert gefüllt. Man muss den Typ der Variablen (Zahl, Zeichen, String,…) nicht
deklarieren (wie z.B. in Java). Der Typ ergibt sich aus dem Wert, mit dem die Variable gefüllt wird.
Regeln für Variable:
Variablen müssen mit einem Dollarzeichen $ beginnen.
Sonderzeichen und Umlaute sind nicht erlaubt, wie z.B. %,#,ä,ö,ü.
Sie dürfen keine Leerzeichen enthalten.
Sie müssen mit einem Buchstaben beginnen.
Achtung: Gross-Kleinschreibung beachten!
Programmieren mit PhP – Einführung
Seite 2
<?
$variable1="Ich bin
$variable2="123";
$variable3=123; //
$variable4=123.45;
print
print
print
print
eine Zeichenkette";
// Zeichenkette (String)
// Zeichenkette (String)
ganze Zahl (Integer)
// Dezimalzahl (Double); Achtung: Dezimalpunkt!
$variable1."<br>";
$variable2."<br>";
$variable3."<br>";
$variable4."<br>";
// Ausgabe; <br> Zeilenumbruch
$variable5=$variable2+$variable3; // Addition von String und Integer
print $variable5."<br>";
print $variable2."+".$variable3."=".$variable5; // Verknüpfung von Strings
?>
$variable1 bis $variable4 sind 4 verschiedene Variablentypen. Es kann aber sogar ein String mit einer Zahl
addiert werden.
Strings werden mit Hilfe eines Punktes verknüpft.
Will man keine automatische Typisierung, so muss man sie erzwingen, z.B.: $var1=(double)123;
Grundrechenoperationen
Übung: Ein Programm ZweiZahlen soll Summe, Differenz, Produkt und Quotient von zwei eingegebenen
Zahlen berechnen und ausgeben. Grundrechenoperationen: +...Addition, -...Subtraktion, *...Multiplikation,
/...Division.
Welches Problem könnte auftreten?
IF – Bedingung / Logische Verknüpfungen
Um im Programm ZweiZahlen einen Absturz bei der Eingabe eines Nenners mit dem Wert 0 zu vermeiden,
muss das Programm um eine IF-Bedingung erweitern.
Syntax 1:
if (Bedingung) { Anweisungen; }
Wenn Bedingung zutrifft, dann erledige Anweisungen
Syntax 2:
if (Bedingung) { Anweisungen1; } else { Anweisungen2; }
Wenn Bedingung zutrifft, dann erledige Anweisungen1, ansonsten erledige Anweisungen2
Für die Bedingungen benötigt man Vergleichsoperatoren und logische Verknüpfungen:
==
!=
&&
||
Gleichheit
Ungleichheit
Logisches UND
Logisches ODER
if
if
if
if
($b == 0) ...
($b != 0) ...
( ($x > 1) && ($x <=10) ) ... Beide Bedingungen müssen erfüllt sein
( ($x < 0) || ($x >= 10) ) ... Eine Bedingung muss erfüllt sein
Beispiel:
if ($zahl2 != 0) { $quotient = $zahl1 / $zahl2; }
oder
if ($zahl2 == 0) { print "Division durch 0!"; }
else
{ $quotient = $zahl1 / $zahl2;
print $zahl1." : ".$zahl2." = ".$quotient;}
Programmieren mit PhP – Einführung
Seite 3
Ein Programm ZahlPrüfen soll überprüfen, ob eine eingegebene Zahl zwischen 100 und 1000 liegt. Bei der
Ausgabe sollen alle drei Fälle (zahl<100, zahl>1000, zahl dazwischen) unterschieden werden.
Erweitere das Programm, sodass die Unter- und die Obergrenze am Beginn frei wählbar ist.
Ein Programm Vokal soll feststellen, ob ein Zeichen ein Konsonant oder ein Vokal ist:
if (($zeichen=='a') || ($zeichen=='A') || ($zeichen=='e') || ... || ($zeichen=='U'))
{...}
else {...}
Eleganter kann man die Funktion eregi verwenden, die nach Zeichen sucht. (eregi ist nicht caseSensitive, ereg schon!
if ( eregi($zeichen,'aeiou') ) print $zeichen." ist ein Vokal";
Ein Programm Celsius soll Fahrenheitsgrade in Celsiusgrade umrechnen. Dabei gilt: °C=(°F –32)*5/9.
Erweitere das Programm so, dass bei Temperaturen kleiner oder gleich 0 Grad Celsius zusätzlich der Text
„Achtung: Glatteisgefahr“ erscheint.
Um die Dezimalzahl mit nur 2 Dezimalstellen anzuzeigen, verwendet man:
number_format( $celsius , 2 , ',' , '.' )
Parameter: number_format(Fließkommazahl , Anz. Dez.-stellen , Dezimaltrennung , Tausendertrennung)
Ein Programm KlFormel soll die Lösungen der quadratischen Gleichung der Form x  px  q  0
berechnen. Das Programm soll nach der Eingabe von p und q die Lösungen der Gleichung ausgeben. Achte
auf die Fallunterscheidungen ( Diskriminante!).
2
1
2
3
if ($d>0)
{
// 1. Fall: Diskriminante >0
print "Es gibt 2 Lösungen <br>";
$x1=-p/2+sqrt($d);
// sqrt = Square-Root = Quadratwurzel
$x2=...;
print "$x1 = ".number_format($x1,5,',','.'); // Ausgabe der 1. Lösung
...
}
// Ende IF-Zweig
else
{
// wenn also die Diskriminante nicht >0 ist
if ($d==0)
{
// 2. Fall: Diskriminante =0
print "Es gibt 1 Lösung <br>";
....
}
if ($d<0) print "Es gibt keine Lösung!";// 3. Fall: Diskriminante <0
}
// Ende ELSE-Zweig
Struktogramm für KlFormel
Programmieren mit PhP – Einführung
Seite 4
Schleifen
Die For-Schleife (Zählschleife):
Diese Schleife ist günstig, wenn man die Anzahl der Durchläufe kennt.
Syntax: for ( Zählvariableninitialisierung; Abbruchbedingung; Hochzählanweisung ) { Anweisungen; }
Programm Quadrat: Es werden die Quadratzahlen von 02 bis 1002 berechnet und ausgegeben
for ($i=0; $i<=100; $i++)
// Initialisierung von i (i ist zu Beginn 0)
// Abbruchbedingung (Wiederholung solange i<=100)
// Hochzählanweisung (i wird pro Durchlauf um 1 erhöht)
{
$quadrat=$i*$i;
// Berechnung der Quadratzahl
print $i." zum Quadrat ist ".$quadrat."<br>";
// Ausgabe
}
// Ende der For-Schleife
Die Hochzählanweisung kann kann auch anders gestaltet werden. Beispiele:
$i=$i+1
Erhöhung um 1
$i=$i+2
Erhöhung um 2
$i=$i-1 oder $i-Reduzierung um 1
Achte stets darauf, dass die Abbruchbedingung auch irgendwann erfüllt wird. Folgende Schleife würde nie
abgebrochen werden (Endlosschleife):
for ($i=100; $i != 1; $i=$i-2) {...} // Der Wert 1 wird nie angenommen
Programm Summe: Es soll a) die Summe der Zahlen von 1 bis 100 berechnet werden (Gauß), b) die
Summe der geraden Zahlen von 2 bis 100 berechnet werden.
Die While-Schleife (Kopfgesteuerte Schleife):
Bei dieser Schleife muss die Initialisierung vor dem while erfolgen. Die Hochzählanweisung steht im
Anweisungsblock:
Syntax: Initialisierung der Zählvariable;
while (Abbruchbedingung)
{ Anweisungen;
Hochzählanweisung; }
Programm Funktion: Berechnung der Funktionswerte der Fkt. y=x2–3. Intervall [–2;2] in Abständen von 0.1
$x=-2;
while ($x<=2)
{
$y=pow($x,2)-3;
print $x."/".$y."<br>";
$x=$x+0.1;
}
// Initialisierung der Zählvariable
// Abbruchbedingung
//
//
//
//
Berechnung des y-Wertes
Ausgabe
Hochzählanweisung
Ende der while-Schleife
Bemerkungen:
pow(a,b)...Funktion zur Berechnung von ab
Die Do-Schleife (Fußgesteuerte Schleife):
Bei dieser Schleife werden die Anweisungen mindestens einmal durchlaufen.
Syntax: Initialisierung der Zählvariable;
do { Anweisungen;
Hochzählanweisung; }
while (Bedingung)
Programmieren mit PhP – Einführung
Seite 5
Übungen zur For- und While-Schleife:
Ein Programm Teilbar soll alle Zahlen von 1 bis 100 aufzählen, die durch 7 teilbar sind.
Allgemein: ...alle Zahlen von 1 bis zu einer wählbaren Zahl n, die durch eine wählbare Zahl t teilbar sind.
Verwende dazu die Modulo-Division: $r = $i % $t; (r ist der Rest, der bei Division von i durch t bleibt)
Ein Programm CelsiusTab soll Celsiusgrade in Fahrenheitsgrade umrechnen und umgekehrt. Die
Umrechnungsformel lautet °C=(°F–32)*5/9. Es soll jeweils eine Tabelle ausgegeben werden, von der man
die entsprechenden Werte ablesen kann.
Ein Programm Primzahl soll nach Eingabe einer Zahl überprüfen, ob diese Zahl eine Primzahl ist.
Verwende dazu wieder die Modulo-Division.
Grundalgorithmus:
$zahl=101;
// Zu überprüfende Zahl
$prim=true;
for ($i=2;$i<$zahl;$i++)
{
$r=$zahl % $i;
if ($r==0) {$prim=false;}
}
// Initialisierung der Variable prim
// r ist der Rest bei Division von zahl durch i
// wenn r=0, dann teilbar, also keine Primzahl
if ($prim) {print $zahl." ist eine Primzahl";} // Ausgabe
else {print $zahl." ist keine Primzahl";}
Optimierung 1:
Gerade Zahlen müssen überhaupt nicht geprüft werden.
Die Prüfung soll außerdem abgeschlossen werden, sobald ein Teiler gefunden ist (break).
if ($zahl % 2 !=0)
// nur ungerade Zahlen werden geprüft
{
for ($i=3;$i<$zahl;$i=$i+2) {…} // nur ungerade Teiler werden geprüft
if ($r==0) {$prim=false;
break;}
// Unterbrechung, sobald prim=false (Teiler gefunden)
}
else $prim=false;
// gerade Zahl --> nicht prim
if ($zahl==2) $prim=true;
// 2 ist prim
Optimierung2:
Es muss nicht bis zahl-1 geprüft werden, sondern es genügt, bis
$wurzel=sqrt($zahl);
...
for ($i=3;$i<=$wurzel;$i=$i+2) {…}
zahl zu rechnen!
// Berechnung von Wurzel(zahl)
// nur ungerade Teiler; nur bis zur Wurzel
Folgende Zeiten wurden bei einem Testlauf (mit einem analogen Java-Programm) gemessen:
Zahl
Grundalgorithmus
Optimierung 1
Optimierung 2
999 999 937 (prim)
40 sec.
20 sec.
 0 sec.
999 999 938 (gerade)
40 sec.
 0 sec.
 0 sec.
999 999 943 (=5 623*177 841)
40 sec.
 0 sec.
 0 sec.
100 000 980 001 501
 46 Tage
 1 sec.
 0 sec.
(=10 000 019*10 000 079)
100 000 000 000 031 (prim)
 46 Tage
 23 Tage
 0 sec.
Ein Programm PrimAufzaehlen soll nach Eingabe von Start- und Endzahl alle Primzahlen dazwischen
aufzählen. Verwende den Algorithmus von Optimierung 2!
Programmieren mit PhP – Einführung
Seite 6
Herunterladen