Übersicht Kernbegriffe Einführung der Datentypen Skalare im Detail Vergleichsoperatoren Standardeingabe chomp-operator while-schleife Perl, 24.10.03 Datentypen I 1 Datentypen Übersicht (1) Datentyp Erklärung Skalar einfacher Wert (Zahl, String) Liste geordnete Ansammlung von Werten Indizierung der Listenplätze mit 0... n Variable benannte skalaren Werten, keine festgelegte numerische Indizierung, sondern frei definierbare Label ( Schlüssel ) Behälter, der einen oder mehrere Werte enthalten kann Skalare Vbl. enthält einen Wert Array enthält Liste von skalaren Werten Hash enthält Ansammlung von eindeutig Perl, 24.10.03 Datentypen I 6 Einführung in Perl Datenstrukturen I Heike Zinsmeister Universität Stuttgart Institut für maschinelle Sprachverarbeitung http://www.ims.uni-stuttgart.de/lehre/teaching/2003-ws/perl/home.html Heike.Zinsmeister@ims.uni-stuttgart.de Wintersemester 03/04 Typeset by FoilTEX Kernbegriffe Variable $tiername Wert Dodo Skalar Singular Liste Plural Array Hash ( assoziatives Array ) Perl, 24.10.03 Datentypen I 5
Datentypen Skalar Zahl 123, -10, 1.25 String Max, Einspruch erheben 123 Perl, 24.10.03 Datentypen I 8 Skalar numerische Operatoren Operator Beispiel Bedeutung + 2 + 3 2 plus 3, bzw. 5-5.1-2.4 5,2 minus 2,4, bzw. 2,7 * 3 * 12 3 mal 12, bzw. 36 / 14 / 7 14 geteit durch 7, bzw. 2 ** 2**3 2 hoch 3, bzw. 8 % 6 % 4 Modulo-Operator, hier: 2 Perl, 24.10.03 Datentypen I 10 Datentypen Übersicht (2) Datentyp Beispiel Skalar 42, Douglas Variable $fisch, $x, $vbl 1 Liste (1,2,3), ( Dodo, Aye-Aye, Quastenflosser ) Array @array = ( Dodo, Aye-Aye, Quastenflosser ); Hash %hash = ( Dodo => Vogel, Aye-Aye => Fingertier ); Perl, 24.10.03 Datentypen I 7 Skalar Zahlen Typ Beispiel ganze Zahl, Integer 123, 0, -10, 67452389 67 452 389 (leserfreundliche Schreibweise) Fließkommazahl 1.25, 25.00, -0.003 Zehnerpotenz 1e2 oder 1 mal 10 hoch 2 = 100 7.25e45, -6.5e24, -12e-24 Bereich: mindestens 1e-100 bis 1e100 Perl, 24.10.03 Datentypen I 9
Skalar Strings Typ Beispiel leerer String Wort Max, DinA4 Zeichenkette Theoretisch kann der n Text eines ganzen Buches n als skalarer String n abgelegt werden. andere Zeichenkette 2 + 3 Perl, 24.10.03 Datentypen I 12 String Backslash-Escapes Zeichen Erklärung n Newline-Zeichen, Zeilenumbruch t Tabulator Backslash Doppeltes Anführungszeichen l den folgenden Buchstaben klein schreiben L alle folg. Buchstaben klein schreiben u den folg. Buchstaben groß schreiben U alle folg. Buchstaben groß schreiben Q alle nicht-alphanumerischen Zeichen mit einem Backslash schützen Q U und L, E hebt die Wirkung von wieder auf Perl, 24.10.03 Datentypen I 14 numerische Operatoren Modulo Rest einer ganzzahligen Division. Beispiele: 8%4 = 0 8%2 = 0 8%5 = 3 8%3 = 2 8.34 % 3.89 = 2 8.34 % -3.89 = -2 Perl, 24.10.03 Datentypen I 11 Skalar Zahl vs. String Im Programm: print 2 + 3; Ausgabe: 5 Im Programm: print 2 + 3 ; Ausgabe: 2 + 3 Perl, 24.10.03 Datentypen I 13
Test Operator Kommando Ausgabe. print 3. 4 x print 3 x 4 * print 3 * 4 Perl, 24.10.03 Datentypen I 16 Skalare Variablen (1) Schema: $Perl-Identifier Perl-Identifier = Folge aus Buchstaben, Zahlen, Unterstrichen; andere Zeichen sind nicht erlaubt z.b. $perl-identifier ist $perl - identifier unterscheidet Groß- und Kleinschreibung $Variable ist nicht gleich $variable transparente Namen sind gut, z.b. $tiername Perl, 24.10.03 Datentypen I 18 Operatoren für Strings Typ Erklärung. Verkettungsoperator Hallo. Welt hallowelt Hallo.. Welt Hallo Welt n n Hallo Welt Hallo Welt. x Wiederholungsoperator Fred x 3 FredFredFred Ei x (4+1) EiEiEiEiEi Perl, 24.10.03 Datentypen I 15 Zahlen und Strings Perl wandelt je nach Bedarf Zahlen in Strings um, und umgekehrt. print 3 * 4 ; Ausgabe: 3 * 4 Interpretation gesteuert durch Operatoren 36-3 36 12 * 3 Ei - 3 12Fred24 * 3 Perl, 24.10.03 Datentypen I 17
binäre Zuweisungen im Allgemeinen zugrundeliegendes Muster $variable = $variable + Wert; $variable += Wert; alle binären Operatoren **= += *= &=»= &&= -= /= = «= =.= %= = x= (Pokorra, 2001: 41) Perl, 24.10.03 Datentypen I 20 Variablen-Interpolation (2) $etwas = "Steak"; $barney = "Fred aß drei $etwass.\n"; Fred aß drei. # da $etwass nicht belegt. $barney = "Fred aß drei ${etwas}s.\n" Fred aß drei Steaks. Perl, 24.10.03 Datentypen I 22 Skalare Variablen (2) skalare Zuweisung: $vbl = Wert; binäre Zuweisung: $vbl += Wert; # entspricht: $vbl = $vbl + Wert; Beispiel: $vbl = 3; $vbl += 2; # entspricht: $vbl = 3 + 2 print "$vbl\n"; Ausgabe: 5 Perl, 24.10.03 Datentypen I 19 Variablen-Interpolation $essen = "Brontosaurier-Steak": $barney = "Fred aß ein $essen."; $barney = "Fred aß ein ". $essen; print "$barney"; # unnötige Anführungstriche print $barney; # besserer Stil print "$barney.\n"; # evt. noch besserer Stil Fred aß ein Brontosaurier-Steak. Perl, 24.10.03 Datentypen I 21
Vergleichsoperatoren (2) 35!= 30 + 5 # falsch 35 == 35.0 # wahr "35" eq "35.0" # falsch "fred" lt "barney" # falsch "fred" lt "free" # wahr "fred" eq "Fred" # falsch " " gt "" # wahr Perl, 24.10.03 Datentypen I 24 Vergleichsoperatoren (1) Vergleich Zahlen Strings gleich == eq (equal) ungleich!= ne (not equal) kleiner als < lt (less than) größer als > gt (greater than) kleiner als oder gleich <= le (less or equal) größer als oder gleich >= ge (greater or equal) Perl, 24.10.03 Datentypen I 23
Vergleichsoperatoren (4) $n = 4; $test = $n % 2; if ($test) { print "$n ist eine ungerade Zahl\n."; } else { print "$n ist eine gerade Zahl\n."; } Oder: if (! $test) { print "$n ist eine gerade Zahl\n."; }... Perl, 24.10.03 Datentypen I 28 Standardeingabe Zeileneingabe-Operator <STDIN> print "Bitte eine Zahl eingeben: "; $n = <STDIN>; chomp ($n); if (! ($n % 2)){ # Klammern sind wichtig print "$n ist eine gerade Zahl.\n"; } Beispielaufruf: perl programm.pl Ausgabe: Bitte eine Zahl eingeben: # Eingabe von z.b. 646 646 ist eine gerade Zahl. Perl, 24.10.03 Datentypen I 30 Vergleichsoperatoren (3) Boolsche Werte: falsch undef, 0,, 0 wahr alle anderen Zahlen, alle anderen Strings Umkehrung mit Nicht-Operator! Perl, 24.10.03 Datentypen I 27 chomp-operator Löscht Newline-Zeichen am Zeilenende. n ; $test = Eine Zeile Text. chomp($test); print $test ; Ausgabe ohne Zeilenumbruch: Eine Zeile Text. Funktion ist wichtig, wenn Text zeilenweise eingelesen wird. Perl, 24.10.03 Datentypen I 29
Referenzen Pokorra, Gerd, 2001. Perl. Eine Einführung. Hannover, RRZN- Handbuch. Schwartz, Randal L. & Tom Phoenix, 2002. Einführung in Perl. Köln, O Reilly: Kapitel 2, Ausblicke auf Kapitel 3 und 5. ASCII-Tabellen von http://www.torsten-horn.de/techdocs/ascii.htm Perl, 24.10.03 Datentypen I 32 while-schleife Wiederholt eine Anwendung so lange, wie eine Bedingung wahr ist, $zaehler = 0; while ($zaehler <= 10) { $zaehler += 1; print "Der Zaehler steht jetzt auf $zaehler.\n"; } Perl, 24.10.03 Datentypen I 31