Die Skriptsprache Perl (6) Wolfgang Friebel DESY Zeuthen.

Slides:



Advertisements
Ähnliche Präsentationen
Imperative Programmierung
Advertisements

Imperative Programmierung
DVG Einfache Klassen Einfache Klassen. DVG Einfache Klassen 2 Strukturen Beispiel: Personendaten bestehen aus –String name –String vorname.
Frame-Logik Eine Einführung Andreas Glausch.
Kapitel 4 Datenstrukturen
4. Serverbasierte Programmierung: Perl 4.1Grundlagen 4.1.1HTTP-Server und CGI-Schnittstelle 4.1.2Formulare 4.1.3Ein einfaches Perl Programm 4.2Interaktion.
der Universität Oldenburg
FH-Hof Einbindung von JavaScript Anweisungen
Java: Objektorientierte Programmierung
Java: Dynamische Datentypen
Indirekte Adressierung
FH-Hof Indirekte Adressierung Richard Göbel. FH-Hof Einfache Speicherung von Daten Eine "einfache" Deklaration definiert direkt eine Speicherplatz für.
FH-Hof Verwaltung von Zeichenketten Richard Göbel.
Java: Referenzen und Zeichenketten
Java: Grundlagen der Objektorientierung
Konstruktoren.
Polymorphie (Vielgestaltigkeit)
Objekte und Arbeitsspeicher
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
PRJ 2007/1 Stefan Dissmann Motivation Problem: gleiche Datenstrukturen werden für verschiedene Objekte gebraucht: z.B. Listen von Studierenden, Kunden,
PKJ 2005/1 Stefan Dissmann Zusammenfassung Bisher im Kurs erarbeitete Konzepte(1): Umgang mit einfachen Datentypen Umgang mit Feldern Umgang mit Referenzen.
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.
Die Skriptsprache Perl (2) Wolfgang Friebel DESY Zeuthen.
EDV1 - Komplexe Datentypen
DVG Felder1 Felder. DVG Felder 2 Was sind Felder? Felder sind Reihungen aus endlich vielen Elementen gleichen Typs. Z.B.: Vektoren : (x.
Arrays,Strings&Pointer in C/C++
DVG Einfache Klassen 1 Einfache Klassen. 2DVG Einfache KlassenStrukturen Beispiel: Personendaten bestehen aus String name String name.
Einführung in die Programmiersprache C 3.Tag Institut für Mathematische Optimierung - Technische Universität Braunschweig.
Javakurs FSS 2012 Lehrstuhl Stuckenschmidt
Wissenschaftliche Programmierung mit Python - für Meteorologie und Atmosphärenforschung Martin G. Schultz Teil 3: Numpy.
Informatik 1 Letzte Übung.
Institut für Wirtschaftsinformatik – Software Engineering, JKU Linz 1 Algorithmen und Datenstrukturen SS 2005 Mag.Th. Hilpold u. Dr. A.Stritzinger Institut.
Dynamische Datentypen
Referenztypen (II) und Const- Referenzen Temporäre Objekte, Const- Referenzen, was genau ist konstant?
PHP Basic.
Variablenkonzept Klassisch, in Java Basistyp
Arrays / Felder Themen: Arrays / Felder / Vektoren Was soll das eigentlich? Erstellen von Arrays Arrays auslesen. Wie sie verwaltet werden.
Einführung in PHP.
Programmieren in C Grundlagen C 2
Programmiervorkurs WS 2014 Referenzdatentypen
1 Tagesüberblick 6 Lösung Hausaufgabe/Fragen Weitere besondere Variablen Hier-Dokument Unterprogramme.
Benutzerdefinierte Datentypen (1)
1 Tagesüberblick 5 Lösung Hausaufgabe/Fragen Assoziative Felder Funktionen zu Variablenbehandlung.
Objekte und Literale ODMG-Objektmodell kennt zwei Arten von Datenelementen: Literale: Identität ist ausschließlich durch Wert gegeben. Nur maximal eine.
Java-Kurs - 3. Übung Hausaufgabe Arrays For-Schleifen.
Mag. Thomas Hilpold, Universität Linz, Institut für Wirtschaftsinformatik – Software Engineering 1 Algorithmen und Datenstrukturen 1 SS 2002 Mag.Thomas.
1 Tagesüberblick 7 Lösung Hausaufgabe/Fragen mehrdimensionale Datenstrukturen Module Fehlersuche Zusammenfassung Feedback.
Java-Kurs Übung Besprechung der Hausaufgabe
Java-Kurs - 5. Übung Besprechung der Übungsaufgabe Klassen und Objekte
Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer, Dr. Gerhard Gröger Einführung in die Programmierung mit Java 5. Vorlesung WS 2002/2003.
Einführung in die Programmierung mit Java 5. Vorlesung WS 2002/2003 Institut für Kartographie und Geoinformation Prof.-Dr. Lutz Plümer, Dr. Gerhard Gröger,
Microsoft Student Partner
Objektorientierte (OO) Programmierung
Variablen und Operatoren. C++ Teil 2: Grundstrukturen Variablen Operatoren Kontrollstrukturen Funktionen Header-Dateien Pointer und Referenzen.
Tutorium Software-Engineering SS14 Florian Manghofer.
Java Programme nur ein bisschen objektorientiert.
Tutorium Software-Engineering SS14 Florian Manghofer.
Tutorium Software-Engineering SS14 Florian Manghofer.
Funktionen (Zweck und Eigenschaften) Funktionen sind Unterprogramme, die einen bestimmten Zweck erfüllen Sie zerlegen Probleme in kleine, abgeschlossene.
Pointer. * und &  Bei der Definition int var1; ○ // „normale“ Variable int *var2; ○ // Zeiger auf einen Integer int *var2 = NULL; ○ // … incl. Initialisierung.
Deutscher Perl Workshop 2014 PORF Practice
Netzwerk - Programmierung
Einführung in die Programmierung mit Java
Grundkurs Informatik 11-13
Implementieren von Klassen
Felder in der Informatik
 Präsentation transkript:

Die Skriptsprache Perl (6) Wolfgang Friebel DESY Zeuthen

Anmerkungen zum ersten Teil n Folgende man Pages wurden (teilweise) behandelt: u perlsyn, perlop, perldata, perlre, perlfunc, perlvar, perlsub, perlipc, perldebug, perlsec, perlrun, perlfaq n Folgende Module wurden (teilweise) besprochen: u POSIX, Date::Manip, Date::Format, Date::Parse, Getopt::Std, Getopt::Long, Term::ReadKey, Term::ReadLine, RPC::PlServer, Devel::Dprof, Dumpvalue, Benchmark

Inhalt des Kurses (2) n Teil 1 Grundlegende Konzepte n Teil 2 Objektorientiertes Perl u 1. Referenzen und Datenstrukturen u 2. Grundlagen der Objektorientierung u 3. Elemente der Objektorientierung in Perl u 4. Klassen und Vererbung u 5. Weiterführende Themen (tie, persistence) n Teil 3 Wichtige Perl Module

1. Referenzen und Datenstrukturen n Referenzen sind Zeiger auf Datentypen Notation durch vorangestelltes \ (z.B ) Referenzen passen in einen Skalar: alle Datentypen können referenziert werden: \&sub Dereferenzierung mit Datentyp-Prefix ( % & n Vorrangregeln durch {} modifizieren $element=${$ref}[0];

Dereferenzierung mit -> n Dereferenzierung mit Präfix unübersichtlich: ${$aref}[0] = ${$href}{key0}; n Arraynotation ist leserlicher: $aref->[0] = $href->{key0}; n Besonders nützlich bei Subroutine-Referenzen: statt &{$subref}($arg1, $arg2); schreibt man $subref->($arg1, $arg2);

Referenztyp Bestimmung des Typs mit ref $ref_var n ref liefert als Rückgabewert Typ der Referenz u undef, falls Argument keine Referenz u SCALAR, ARRAY,HASH,CODE als Referenztyp u REF, falls Referenz auf Referenz u Objektklasse für Objekt (siehe später) n Benutzung einer Referenz in String liefert Referenztyp und Adresse

Anonyme Arrays Feld wird definiert 2, 3); Referenz auf Array Feldname wird für Zugriff nicht benötigt: $ptr->[0] n Anonymes Feld wird als Referenz auf Feld definiert $feld = [1, 2, 3]; # $feld ist = (1, 2, 3); # normale Felddefinition Zugriff mit $feld->[1] = 2;

Mehrdimensionale Arrays n Bei Liste von Feldern verwischen Feldgrenzen: ((1,2,3), (4,5,6)) äquivalent zu (1,2,3,4,5,6) Daher besser: n Verwendung anonymer Arrays vereinfacht Notation $matrix = [ [1,2,3], [4,5,6] ]; n Zugriff mit Arraynotation $matrix->[1]->[2]; oder $matrix->[1][2];

Anonyme Hashes Hashdefinition mit %hash=(num=>1, str=>a); n Auch hier Name des Hashes nicht nötig n Anonymer Hash als Referenz auf Hash definiert $hash={num=>1, str=>a}; # $hash ist str=>a); # normaler Hash Zugriff mit $hash->{num} = 2;

Datenstrukturen n Mehrdimensionale Hashes analog zu Arrays: {a=>{aa=>1, bb=>2}, b=>{aa=>2, cc=>3}} Zugriff analog: $hash->{b}{aa} = 2; n Gemischte Datenelemente (Records) n am besten als anonymer Hash mit Datenelementen u Keys sind Strings, Werte sind: u Skalare, anonyme Arrays, anonyme Hashes u Referenzen auf andere Datenstrukturen

Beispiel Datenstruktur $record = {familyname=>$name, accounts =>[$name, guest], access =>{linux=>accept, irix =>deny }, room =>1R06, }; login($record->{accounts}->[0]);

Pseudohashes n Neues Konzept in Perl5.005 n Zugriff auf Pseudohash wie auf Array oder Hash n Dazu bei Definition Zuordnung Key Index nötig: $pseudo = [ {a=>1, b=>2}, eins, zwei]; $pseudo->[1] #liefert eins $pseudo->{a} #liefert ebenfalls eins n Erlaubt Eingrenzung auf vordefinierte Keys Optimierung mit der Direktive use fields;

Anonyme Subroutinen Subroutine wird definiert mit sub name {block}; Aufruf name(args) oder &name(args) oder &name; Bei Aufruf mit &name; übergeben u geeignet für Parameterweitergabe in Subroutine n Definition einer anonymen Subroutine $sub_ref = sub {block}; Aufruf mit $sub_ref->(args); n Wird für OO Programmierung mit Perl benutzt

Closures n Zugriff auf lokale Variablen mit Subroutine { my $count=0; sub incr { $count++; print $count\n} sub decr { $count--; print $count\n} } n Zugrif auf lokale Variable nur noch per Subroutine n Variable bleibt erhalten, da Referenzcount != 0 Keine Manipulationsmöglichkeit von $count

Parameterübergabe Übergabe per Referenz im modifiziert, so auch Aufrufargument n Vermeidung durch Kopie der Argumente my ($arg1, $arg2) n Übergabe von Feldern als Referenzen, sonst alle Argumente im ersten # alle Elemente

Hausaufgaben n Erzeuge je eine Referenz auf Variable, Array und Hash n Benutze die zwei Methoden der Dereferenzierung n Schreibe eine Subroutine, die den Argumenttyp bestimmt n Erzeuge ein mehrdimensionales anonymes Array und arbeite damit n Erzeuge eine komplexe Datenstruktur mit einem anonymen Hash und bearbeite diese in einer Subroutine n Lies die manpages perlref und perldsc und perllol