Die Skriptsprache Perl (2) Wolfgang Friebel DESY Zeuthen.

Slides:



Advertisements
Ähnliche Präsentationen
Ausführen.
Advertisements

Forschungszentrum caesar
Hochschule Fulda – FB ET Sommersemester 2010
Zusammenfassung der Vorwoche
10. Grundlagen imperativer Programmiersprachen
(kleine!) Java Einführung Mittwoch, Heute Ziel: erstes Java-Programm erstellen Von der Aufgabenstellung bis zur Lösung Grundlagen Einfache.
FH-Hof Einbindung von JavaScript Anweisungen
Java: Dynamische Datentypen
Dateihandles Um in Perl eine bestimmte Datei zum Lesen, Schreiben oder Anhängen zu öffnen, benötigt man so genannte Dateihandles. Ein Dateihandle ist der.
Funktion defined Die Funktion defined testet, ob eine Variable einen anderen Wert als undef enthält. Ist der Wert undef, so wird falsch zurückgegeben,
Robotik mit LEGO Mindstorms
Perl-Grundlagen Teile der Präsentation von A. Grupp,
EINI-I Einführung in die Informatik für Naturwissenschaftler und Ingenieure I Vorlesung 2 SWS WS 99/00 Gisbert Dittrich FBI Unido
EINI-I Einführung in die Informatik für Naturwissenschaftler und Ingenieure I Vorlesung 2 SWS WS 99/00 Gisbert Dittrich FBI Unido
EINI-I Einführung in die Informatik für Naturwissenschaftler und Ingenieure I Vorlesung 2 SWS WS 99/00 Gisbert Dittrich FBI Unido
Imperative Programmierung
Boolesche Ausdrücke Ist der Rückgabewert eines Ausdrucks vom Typ boolean, so wird dieser als Boolescher Ausdruck bezeichnet (nach dem Mathematiker George.
PKJ 2005/1 Stefan Dissmann Zusammenfassung Bisher bekannt: Einfache Variable Feld Vereinbarung Zuweisung Block while-Schleife Bedingte Anweisung (if) Typ.
PKJ 2005/1 Stefan Dissmann Zusammenfassung der Vorwoche Variable stehen für (einen) Wert, der sich im Programmablauf ändern kann. Variablen besitzen einen.
Zusammenfassung Vorwoche
Die Skriptsprache Perl (6) Wolfgang Friebel DESY Zeuthen.
Die Skriptsprache Perl (7)
Die Skriptsprache Perl (3) Wolfgang Friebel DESY Zeuthen.
Die Skriptsprache Perl (5) Wolfgang Friebel DESY Zeuthen.
Die Skriptsprache Perl (8) Wolfgang Friebel DESY Zeuthen.
Programmierung 1 - Repetitorium WS 2002/2003 Programmierung 1 - Repetitorium Andreas Augustin und Marc Wagner Homepage:
Das erste Programm (Folie 16)
DVG Kommentare1 Kommentare. DVG Kommentare 2 Kommentare Es gibt zwei Arten von Kommentaren: einzeilige Kommentare // der Kommentar geht.
DVG Ablaufsteuerung
DVG Klassen und Objekte
Informatik 1 Übung 2.
Javakurs FSS 2012 Lehrstuhl Stuckenschmidt
Debugging in Lua Universität zu Köln Re-usable Content in 3D und Simulationssystemen Prof. Dr. Manfred Thaller Referent: Artur Wilke.
Abteilung für Telekooperation Übung Softwareentwicklung 1 für Wirtschaftsinformatik Dr. Wieland Schwinger
Purga - Scriptengine Ein Einblick.
Informatik II Grundlagen der Programmierung Programmieren in C Programmstrukturen / Kontrollstrukturen Hochschule Fulda – FB ET Sommersemester 2014.
Was mich ursprünglich von Perl überzeugt hat. Gegeben ist eine Textdatei, deren Größe unbekannt ist. Sie ist jedoch so klein, daß sie komplett in den Speicher.
Einführung in PHP.
Einführung in PHP 5.
Datentypen: integer, char, string, boolean
Agenda für heute, 7. April, 2005 Bedingte ProgrammausführungBedingte Programmausführung Algorithmische Grundlagen Vergleichsoperatoren, Wahrheitswerte.
BMEVIEEA100 Grundlagen der Programmierung
PHP: Operatoren und Kontrollstrukturen
1 Tagesüberblick 2 Lösung Hausaufgabe/Fragen Datei- ein- und ausgabe Schleifen Vergleiche Wahrheit.
Hochschule Fulda – FB ET Sommersemester 2014
Programmieren in C Grundlagen C 2
1 Tagesüberblick 6 Lösung Hausaufgabe/Fragen Weitere besondere Variablen Hier-Dokument Unterprogramme.
1 Tagesüberblick 4 Lösung Hausaufgabe/Fragen Mustervergleiche.
Java Syntaxdiagramme Buchstabe A B Z a z ... Ziffer
Übersicht Nachtrag zu Ausdrücken
1 Tagesüberblick 5 Lösung Hausaufgabe/Fragen Assoziative Felder Funktionen zu Variablenbehandlung.
1 Lösung Hausaufgabe 5-1 Seite 1 #!perl -w # Datei Oeffnen und Variablen initialisieren $infile = "daten5-3.txt"; $im=$iw=$sm=$sw=0; open (IN,$infile)
Java-Kurs - 4. Übung Hausaufgabe Weitere Kontrollstrukturen
1 Tagesüberblick 7 Lösung Hausaufgabe/Fragen mehrdimensionale Datenstrukturen Module Fehlersuche Zusammenfassung Feedback.
Java-Kurs - 4. Übung Hausaufgabe Weitere Kontrollstrukturen
MATLAB Control Statements.
Programmierkurs JavaUE 4 Anweisungen und ProgrammeDietrich BolesSeite 1 Programmierkurs Java Dr. Dietrich Boles Teil Imperative Programmierung Unterrichtseinheit.
Extended Pascal ( Erweitreung von Pascal) Name: Mehmet CELIK Matr :
Wann ist eine Funktion (über den natürlichen Zahlen) berechenbar?
Java-Kurs - 4. Übung Hausaufgabe Weitere Kontrollstrukturen
TRUE und FALSE in C Der Wert 0 steht für FALSE Jeder von 0 verschiedene Wert steht für TRUE FALSE wird als 0 dargestellt TRUE wird als 1 dargestellt.
FOR Anweisung. Aufgabe : Ausgabe aller ganzen Zahlen von 0 bis 100 auf dem Bildschirm.
Center for Biotechnology Bielefeld Bioinformatics Service Netzwerk - Programmierung Prozesse Alexander Sczyrba Jan Krüger.
Datentypen: integer, char, string, boolean
Netzwerk - Programmierung
Java-Kurs - 2. Übung primitive Datentypen, Konstanten
Unterschiedliche Kontrollstrukturen
Die programmierte Lösung
GRUNDLAGEN WISSENSCHAFTLICHEN ARBEITENS MODULA-2 SONAY SUBAYAZ
The Programming Language Pascal
 Präsentation transkript:

Die Skriptsprache Perl (2) Wolfgang Friebel DESY Zeuthen

Anmerkungen zu Teil 1 Wichtige Zeichen: \n \t \e \033 \x1b \u \l Wichtige Vars: $_ $| $. $? $! $$ $< $0 $& %ENV Bitoperatoren: & | ^ ~ (and, or, xor, not) defined: if (defined $a)... if (defined &sub)... undef: undef $a; undef %h; undef ⊂ $a = undef;

3. Programmfluß n Einfaches Statement: durch ; begrenzt Leerraum (, \t, \n) wird außerhalb von Strings ignoriert (Ausnahme: Schlüsselwörter wie z.B. print) n Kommentar: eingeleitet mit #, gilt bis Zeilenende n Block: in { } eingeschlossene Statements zählen genauso wie einfaches Statement Subroutine: sub {statements;} Subroutinen heißen auch Funktionen, kein Unterschied können Argumente bekommen und Werte zurückgeben

Gültigkeitsbereich von Variablen n Alle Variablen sind global (im package main) $a ist identisch mit $main::a damit auch in jeder Subroutine sichtbar n Package kann geändert werden (siehe später) n Werte globaler Variablen können versteckt werden local $a# gilt in Block, Subroutine, File, eval für magische Variablen einzige Möglichkeit Variable erhält mit local nur neuen Wert, ist noch global

Lexikalische Variablen mit my Mit my definiert man Variablen, die nur im aktuellen Block (oder File, eval, sub) existieren Private Variablen mit my sind wirklich lokal my $a = 1; my ($b, $c); my %hash; n Analog zu auto Variablen in C Überwiegende Verwendung von my ist gute Praxis

Bedingte Ausführung n Falsche und wahre (logische) Ausdrücke falsch: 0, leerer String, Array, Hash, alles andere ist wahr n Verknüpfung logischer Ausdrücke mit and/or/not bzw. &&/||/! and/or/not hat sehr niedrige Priorität, ist meist besser n Abbruch der Auswertung wenn Wahrheiswert feststeht, wird nicht weiter ausgewertet $a && print 1;# print nur wenn $a wahr $a || print 2;# print nur wenn $a falsch

if then else Syntax: if ( Bedingung ) {Statements;} else {Statements;} if ( Bedingung ) {Statements;} elsif ( Bedingung ) {Statements;} else {Statements;}

Andere bedingte Operatoren n Alternative zu if-elsif-else, Syntax: Statement if Bedingung; Statement unless Bedingung; wird verwendet, wo Statement wichtiger als Bedingung n an C angelehnter if-then-else Operator Bedingung ? Wahr-statement : False-statement; wird gern in print Statements verwendet

Beispiele n Beispiele für Einsatz der verschiedenen Konstrukte open(FILE,hallo.pl) or die open failed\n print Debug: Wert von a:$a\n if $debug; if { print $#ARGV+1, Args\n; } else { print Programm ohne Argumente\n; } print $cat, Katze, $cat == 1 ? : n;

File Testoperatoren n Nicht nur Testoperatoren für Strings und Zahlen: etwa 30 Testoperatoren für Files Syntax: -x filename wobei x die Testart ist n wichtigste Teste: -r lesbar -e existiert-f file -x ausführbar -s Länge > 0-d Verzeichnis -w schreibbar -B Binärfile-l Link Nachfolgende Teste auf gleiches File benutzen _ statt Filename (Geschwindigkeit): exit if -B _;

Switch n Es gibt kein Switch Statement Nachbildung: siehe z.B perldoc -q switch Bei Verwendung von last (Äquivalent zu break in C): $_ = ; { if (/^a/) {$alpha++; last;} if (/^b/) {$beta++; last;} if (/^d/) {$debug=1; last;} }

Schleifen n In der Reihenfolge der Beliebtheit: for $i {$anzahl{$i}++;} for $i (1.. 10) {print 7*$i=,7*$i,\n;} while ($eps > 0.01) {.. iteriere weiter.. } for ($i=1; $i<101; $i++) {$gauss += $i;} while (1) {$_= ; last if /^quit/;} for (;;;) {print Hier hilft nur CTRL-C\n;} do { Statements ; } while ( Bedingung ; );

Schleifenkontrolle n Den Schleifen (wie auch jedem anderen Statement) kann ein Label gegeben werden: LINE:for $line {print $line;} n Änderung des Schleifendurchlaufs mit last; oder last LINE;# verlasse Schleife next; oder next LINE;# nächster Zyklus redo; oder redo LINE if...;# wiederhole last/next/redo auch in normalen Blöcken möglich

Schleifen mit map und grep n Funktionen map und grep stellen implizit Loops = map { -s $_ ist äquivalent zu for ) { -s $_; } n grep testet den Block als Ausdruck und übernimmt die Elemente des Feldes, für die Ausdruck = grep { /my/ ist äquivalent zu for { $_ if /my/; }

Schleifen und I/O Aufruf von perl mit Optionen -a, -i, -n, -p erzeugt implizite Schleife ( Filenamen) n Einlesen von Files typisch mit open FILE, $file or die $file: $!\n while ( ) { $line = $_; } close FILE; n Elegantere Möglichkeit: while (<>) { $line = $_; } dann wird entweder oder STDIN gelesen

Goto n Ist vorhanden n selbst computed goto ist implementiert!!! n habe ich noch nie gebraucht n sollte sicher im Interesse guten Stils vermieden werden n daher schnell weiter...

Subroutinen Deklaration/Definition: sub name {Statements;} Deklaration (vor Definition): sub name; Aufruf: name(Parameterliste); name Parameterliste; # name ist deklariert &name; oder name();# falls name nicht deklariert n Definition mit Prototypen möglich, nicht behandelt n Zahl der Parameter wird durch Aufruf festgelegt, nicht in Definition (Übereinstimmung von Aufruf und Definition ist Sache des Authors)

Parameterübergabe n Aufruf mit Liste (Parameterliste) Subroutine werden Werte übergeben n Call by Reference Änderung ändert Werte im rufenden Programm! Separat übergebene Felder sind vereint n Rückgabewert ist Wert der letzten Anweisung Kann auch durch return wert; festgelegt werden n als Rückgabewert ist Variable oder Liste möglich

Ausführungskontext n Aufruf einer Funktion entscheidet über Kontext kann je nach Kontext unterschiedliche Dinge tun $a # linke Seite ist skalar, $a => # linke Seite ist n Viele Funktionen haben skalaren und Listkontext $datum=gmtime(); # Thu Jan 20 10:38:17 # (17,38,10,20,0,100,4,19,0) Listkontext ist Standard, Skalarkontext kann erzwungen werden: print scalar gmtime(),\n;

Hausaufgaben n Überprüfe, ob 0, 0, 0, 00,,,, () Null bzw. falsch sind n Wie sind die Vorrangregeln für Operatoren? (Camel S.76) Wo soll man Leerzeichen und Leerzeilen im Programm pla(t)zieren? ( perldoc perlstyle ) n Schreibe ein Programm, das den vorzeitigen Abbruch bei logischen Operatoren ausnutzt (z.B. Test auf eins von 3 Betriebssystemen oder Abbruch) n Schreibe ein Programm, das Wortlisten von Files ausgibt n Wozu kann man perl -n oder perl -p gut gebrauchen? n Suche weitere kontextabhängige Funktionen