ppt

Werbung
Programmierkurs für absolute Anfänger
 erste Perl-Programme
Caren Brinckmann
Sommersemester 2005
http://www.coli.uni-saarland.de/~cabr/teaching.php
Perl
Entwickler: Larry Wall
backronyms:
 Practical Extraction and Report Language
 Pathologically Eclectic Rubbish Lister
ursprüngliches Anwendungsgebiet:
 Textdateien durchforsten und bearbeiten
 Informationen gewinnen und Berichte erstellen
Philosophie:
 there's more than one way to do it (TMTOWTDI)
 make easy tasks easy and difficult tasks possible
WWW: www.perl.com
Programmierkurs für absolute Anfänger – Sitzung 2
1
Unser erstes Programm
START
Ausgabe:
Hallo Welt!
Erstelle eine Datei mit dem Namen
HalloWelt.pl und folgendem Inhalt:
# Ausgabe: "Hallo Welt!"
print "Hallo Welt!\n";
STOP
Dieses Programm wird ausgeführt mit
folgendem Befehl:
perl HalloWelt.pl
Programmierkurs für absolute Anfänger – Sitzung 2
2
Grundaufbau eines Programms





Ein Programm besteht aus einer Abfolge von Anweisungen
(statements).
Die Anweisungen werden in der Reihenfolge, in der sie im
Programmtext auftauchen, ausgeführt.
Im einfachsten Fall enthält das Programm keine Schleife und
keine bedingte Verzweigung  linearer Kontrollfluss.
Nach Abarbeitung der letzten Anweisung endet das Programm.
Das Programm HalloWelt.pl besteht aus nur einer einzigen
Anweisung. Diese Anweisung ruft die eine Ausgabefunktion mit
einem bestimmten Argument auf, nämlich einer
Zeichenkettenkonstanten.
Programmierkurs für absolute Anfänger – Sitzung 2
3
Zeichenketten





Zeichenkettenkonstante Hallo Welt!\n ändert
ihren Wert nicht.
Zeichenkette (String) ensteht, indem einzelne
Zeichen in Anführungszeichen " eingeschlossen
werden.
\n kodiert ein einziges Zeilentrennzeichen (newline)
 die aktuelle Zeile wird beendet, und eine neue
wird begonnen.
Backslash \ entwertet das nachfolgende Zeichen
und gibt ihm eine spezielle Bedeutung.
Wenn ein Backslash oder Anführungszeichen
ausgegeben werden sollen, so müssen sie selbst
"entwertet" werden: \\ bzw. \"
Programmierkurs für absolute Anfänger – Sitzung 2
4
Benutzung von eingebauten Funktionen




Um eine Funktion aufzurufen, wird ihr Name
hingeschrieben.
Ausgabefunktion print erhält die auszudruckende
Zeichenkette als Argument
In den meisten Programmiersprachen müssen die
Argumente von Funktionen in Klammern gesetzt
werden, z.B. print("Hallo Welt!\n");
In Perl sind die Klammern fakultativ!
Programmierkurs für absolute Anfänger – Sitzung 2
5
Trennung von Anweisungen




Jede Anweisung muss mit einem Semikolon ;
abgeschlossen werden.
Eine Anweisung kann in einer Zeile stehen oder über
mehrere Zeilen verteilt werden.
Es können prinzipiell auch mehrere durch ;
getrennte Anweisungen in einer Zeile stehen.
Guter Programmierstil: Jede Anweisung in einer
eigenen Zeile.
Programmierkurs für absolute Anfänger – Sitzung 2
6
Leerraum





Der Perl-Interpreter zerlegt das Programm zunächst in
kleinste syntaktische Einheiten: Tokens.
Im Programm HalloWelt.pl sind das die drei Tokens
print, "Hallo Welt!\n" und ;
Vor und hinter jedem Token ist beliebig viel Leerraum
(whitespace) erlaubt: Leerzeichen, Zeilentrennzeichen
und Tabulatorzeichen.
Leerraum kann ganz ausgespart werden, es sei denn,
die beiden Tokens ergeben aneinandergeschrieben ein
neues Token.
Guter Programmierstil: Die einzelnen Tokens durch
ausreichend Leerraum leicht erkennbar machen!
Programmierkurs für absolute Anfänger – Sitzung 2
7
Kommentare




In Perl beginnt jede Kommentarzeile mit einem #
Der Perl-Interpreter ignoriert alle Kommentarzeilen.
Mit Kommentaren macht man das Programm für andere und für
sich selbst (!) lesbarer.
Sinnvoll: Mehrere Kommentarzeilen zu Beginn des Programms,
die beschreiben







Name und e-mail des Programmierers
welche Eingabedaten das Programm benötigt
was das Programm macht
wie das Format der Ausgabe aussieht
typischer Programmaufruf (ggf. mit den benötigten Argumenten)
Versionsnummer (bei Programmen, die man mehrfach verändert)
Außerdem:


Kommentar zu Beginn jedes Anweisungsblocks!
Jede Zeile kommentieren, die sich nicht von selbst erklärt.
Programmierkurs für absolute Anfänger – Sitzung 2
8
Fehler und Warnmeldungen




Syntaktische Fehler, etwa der Tippfehler prinnt, werden
vom Interpreter direkt beim Aufruf erkannt.
Der Interpreter gibt eine oder mehrere Fehlermeldungen
mit Angabe der Zeilennummer aus, in der er den Fehler
bemerkt hat.
Semantische Fehler kann der Interpreter nicht erkennen!
Beispiel: Das Programm soll "Hallo Welt!" ausgeben, gibt
aber "Hello world!" aus.
Häufig sind die ausführlichen Warnungen des Interpreters
hilfreich bei der Fehlersuche:
perl -w HalloWelt.pl
Programmierkurs für absolute Anfänger – Sitzung 2
9
Variablen (1)

Variable: Speicherplatz für veränderliche Werte




eindeutiger Name (Bezeichner)
Variable erhält ihren Wert über Zuweisungen
Programm kann über den Bezeichner auf den jeweiligen Wert
zugreifen
Bezeichner




sinnvollen Bezeichner wählen, z.B. eurobetrag statt zahl
Bezeichner muss mit einem Buchstaben oder _ anfangen
deutsche Sonderzeichen dürfen nicht vorkommen
Groß- und Kleinschreibung wird unterschieden
Programmierkurs für absolute Anfänger – Sitzung 2
10
Variablen (2)

skalare Variable:




kann nur einen einzigen Wert speichern
Wert: eine Zahl oder eine Zeichenkette
beginnt in Perl stets mit $
Beispiele: $zaehler $eingabezeile $zaehler2 $vokal_1

Variablen in Perl sind ungetypt, d.h. sie können zu einem
bestimmten Zeitpunkt eine Zahl und zu einem anderen
Zeitpunkt eine Zeichenkette enthalten.

Variablen in Perl müssen nicht deklariert werden, d.h. sie
entstehen genau in dem Moment, in dem ihnen zum
ersten Mal ein Wert zugewiesen wird.
Programmierkurs für absolute Anfänger – Sitzung 2
11
Literale


Literal: konstantes Objekt
Stringliterale:




kodieren konstante Strings (Zeichenketten)
Perl: gebildet durch Einschließen von Zeichen in einfache oder
doppelte Anführungszeichen
Beispiele: "Hallo Du" 'Hallo'
numerische Literale:


ganze Zahlen, z.B. -255
Dezimalzahlen, z.B. 1.609
Programmierkurs für absolute Anfänger – Sitzung 2
12
Zuweisungen

Zuweisungen von Werten an Variablen erfolgen durch
den Zuweisungsoperator =

Die Variable auf der linken Seite des Zuweisungsoperators erhält den Wert auf der rechten Seite.
Was darf auf der rechten Seite stehen?




Literal: $zaehler = 1;
Variable: $zaehler1 = $zaehler2;
komplexer Ausdruck: $kilometer = $meilen * 1.609;
Programmierkurs für absolute Anfänger – Sitzung 2
13
Beispiel: Zuweisungen
$x=42;
print "$x\n";
$x="Gandalf der Graue";
print "Jetzt ist x gleich $x\n";
$Zauberer_Nr_1 = $x;
print "$Zauberer_Nr_1\n";
$Zauberer_Nr_1 = "Gandalf der Weiße";
print "$Zauberer_Nr_1\n";
Programmierkurs für absolute Anfänger – Sitzung 2
14
Arithmetische Ausdrücke

Arithmetische Ausdrücke setzen sich zusammen aus:



Zahlenkonstanten
numerische Variablen
arithmetische Operatoren: + - * /
 Modulo-Operator % berechnet den ganzzahligen Rest einer
ganzzahligen Division, z.B. 9 % 2 = 1

runde Klammern  Präzedenz
$x = 1;
$y = 2;
$mittelwert = ($x + $y) / 2;
print "Mittelwert von x und y: $mittelwert\n";
Programmierkurs für absolute Anfänger – Sitzung 2
15
Konkatenation von Zeichenketten

Konkatenation: Aneinanderhängen von zwei
Zeichenketten

Konkatenationsoperator: .
$vorname = "Caren";
$nachname = "Brinckmann";
$name = $vorname . " " . $nachname;

Konkatenation durch Substitution in Stringliteralen:
$name = "$vorname $nachname";
Programmierkurs für absolute Anfänger – Sitzung 2
16
Standardeingabe und -ausgabe





Skalare Variablen können ihre Werte zur Laufzeit des Programms aus
der Standardeingabe beziehen.
Normalfall: Programm wartet auf eine Eingabe durch den Benutzer
(Ende: Return-Taste)
Der Inhalt der Eingabezeile wird in einen speziellen Eingabestrom –
die Standardeingabe STDIN – geschrieben.
Das Programm kann diesen Eingabestrom Zeile für Zeile lesen und
den Inhalt einzelner Zeilen in Variablen abspeichern.
Die print Funktion sendet die auszugebenden Daten an die
Standardausgabe STDOUT.
Programmierkurs für absolute Anfänger – Sitzung 2
17
Beispiel: Eingabe lesen
## Programm, dass die Eingabezeile des
## Benutzers auf dem Bildschirm ausgibt
print "Deine Eingabe: ";
$eingabezeile = <STDIN>;
print "Ich wiederhole: $eingabezeile";

Achtung: Das Zeilentrennzeichen \n gehört mit zu den
eingegebenen Zeichen (verursacht durch das Drücken
der Return-Taste).
Programmierkurs für absolute Anfänger – Sitzung 2
18
Funktion chomp

chomp schneidet das letzte Zeichen einer Zeichenkette ab, wenn es
ein Zeilentrennzeichen ist, ansonsten lässt sie die Zeichenkette
unverändert.
print "Name: ";
$name = <STDIN>;
chomp $name;
print "Alter: ";
$alter = <STDIN>;
chomp $alter;
$maximalpuls = 220 - $alter;
print "Maximalpuls von $name beträgt $maximalpuls.\n";
Programmierkurs für absolute Anfänger – Sitzung 2
19
Funktion length

length bestimmt die Anzahl der Zeichen eines Strings (seine Länge)
und gibt diesen Wert zurück.
print "Vorname: ";
$vorname = <STDIN>;
chomp $vorname;
print "Nachname: ";
$nachname = <STDIN>;
chomp $nachname;
$laenge_name = length($vorname) + length($nachname);
print "Dein Name hat $laenge_name Buchstaben.\n";
Programmierkurs für absolute Anfänger – Sitzung 2
20
Bedingte Anweisungen

if
Anweisung wird ausgeführt, wenn eine Bedingung erfüllt ist

if – else
zwei Alternativen

if – elsif – else
mehr als zwei Alternativen
Programmierkurs für absolute Anfänger – Sitzung 2
21
if
Syntax: if (Ausdruck) {
Anweisungsblock
}
$vorname = <STDIN>; chomp $vorname;
$nachname = <STDIN>; chomp $nachname;
$laenge_vorname = length($vorname);
$laenge_nachname = length($nachname);
if ($laenge_vorname > $laenge_nachname) {
print "Vorname ist länger als Nachname.\n";
}
Programmierkurs für absolute Anfänger – Sitzung 2
22
if – else
Syntax: if (Ausdruck) {
Anweisungsblock_1
} else {
Anweisungsblock_2
}
if ($laenge_vorname > $laenge_nachname) {
print "Vorname ist länger als Nachname.\n";
} else {
print "Vorname ist nicht länger als Nachname.\n";
}
Programmierkurs für absolute Anfänger – Sitzung 2
23
if – elsif – else
Syntax: if (Ausdruck_1) {
Anweisungsblock_1
} elsif (Ausdruck_2) {
Anweisungsblock_2
} elsif (Ausdruck_3) {
Anweisungsblock_3
...
} else {
Anweisungsblock_default
}
else-Block ist fakultativ!
Programmierkurs für absolute Anfänger – Sitzung 2
24
Beispiel: if – elsif – else
if ($laenge_vorname > $laenge_nachname) {
print "Vorname ist länger als Nachname.\n";
} elsif ($laenge_vorname == $laenge_nachname) {
print "Vor- und Nachname sind gleich lang.\n";
} else {
print "Nachname ist länger als Vorname.\n ";
}
Achtung: Der arithmetische Gleichheitsoperator ist ==. Nicht zu
verwechseln mit dem Zuweisungsoperator =.
Programmierkurs für absolute Anfänger – Sitzung 2
25
Herunterladen