24
1 Tagesüberblick 7 • Lösung Hausaufgabe/Fragen • mehrdimensionale Datenstrukturen • Module • Fehlersuche • Zusammenfassung • Feedback

1 Tagesüberblick 7 Lösung Hausaufgabe/Fragen mehrdimensionale Datenstrukturen Module Fehlersuche Zusammenfassung Feedback

Embed Size (px)

Citation preview

Page 1: 1 Tagesüberblick 7 Lösung Hausaufgabe/Fragen mehrdimensionale Datenstrukturen Module Fehlersuche Zusammenfassung Feedback

1

Tagesüberblick 7

• Lösung Hausaufgabe/Fragen• mehrdimensionale Datenstrukturen• Module• Fehlersuche• Zusammenfassung• Feedback

Page 2: 1 Tagesüberblick 7 Lösung Hausaufgabe/Fragen mehrdimensionale Datenstrukturen Module Fehlersuche Zusammenfassung Feedback

2

Mehrdimensionale Datenstrukturen

• List of Lists (LoL)• Hash of Hashs (HoH)• alle Mischformen möglich

• Zu beachten:Direktes Ausdrucken nicht möglich

Page 3: 1 Tagesüberblick 7 Lösung Hausaufgabe/Fragen mehrdimensionale Datenstrukturen Module Fehlersuche Zusammenfassung Feedback

3

List of Listsfor ($i=0;$i<3;$i++){ for ($j=0;$j<3;$j++){ $abc[$i][$j]=$i*$j}}$abc[2][0]=5;

for ($i=0;$i<3;$i++){ for ($j=0;$j<3;$j++){ print "$abc[$i][$j] "} print "\n"}

Page 4: 1 Tagesüberblick 7 Lösung Hausaufgabe/Fragen mehrdimensionale Datenstrukturen Module Fehlersuche Zusammenfassung Feedback

4

Ergebnis

0 0 0 0 1 2 5 2 4

Page 5: 1 Tagesüberblick 7 Lösung Hausaufgabe/Fragen mehrdimensionale Datenstrukturen Module Fehlersuche Zusammenfassung Feedback

5

List of Lists (Listenverarbeitung)@abc=(["ich","du","er"], ["Karl","Fritz"], [3,2,1], [1,2,"a","b"]); foreach $a(@abc){ @b=@{$a}; print "@b\n";}

Page 6: 1 Tagesüberblick 7 Lösung Hausaufgabe/Fragen mehrdimensionale Datenstrukturen Module Fehlersuche Zusammenfassung Feedback

6

List of Lists

@bce=("Cola","Fanta");$abc[5]=[@bce];$abc[7][1]=5;

foreach $a(@abc){ @b=@{$a}; print "@b\n";}

Page 7: 1 Tagesüberblick 7 Lösung Hausaufgabe/Fragen mehrdimensionale Datenstrukturen Module Fehlersuche Zusammenfassung Feedback

7

Ergebnis: Vorsicht Lücken (perl -w)

ich du erKarl Fritz3 2 11 2 a bUse of uninitialized value at test.pl line 10.Cola FantaUse of uninitialized value at test.pl line 10.Use of uninitialized value at test.pl line 11. 5

Page 8: 1 Tagesüberblick 7 Lösung Hausaufgabe/Fragen mehrdimensionale Datenstrukturen Module Fehlersuche Zusammenfassung Feedback

8

Behandlung undefinierter Werte

@bce=("Cola","Fanta");$abc[5]=[@bce];$abc[7][1]=5;

foreach $a(@abc){ if(defined($a)){ print "@{$a}\n"}}

Page 9: 1 Tagesüberblick 7 Lösung Hausaufgabe/Fragen mehrdimensionale Datenstrukturen Module Fehlersuche Zusammenfassung Feedback

9

Warum das?

ich du erKarl Fritz3 2 11 2 a bCola FantaUse of uninitialized value at test.pl line 12. 5

Page 10: 1 Tagesüberblick 7 Lösung Hausaufgabe/Fragen mehrdimensionale Datenstrukturen Module Fehlersuche Zusammenfassung Feedback

10

Lückenbehandlung komplett@bce=("Cola","Fanta");$abc[5]=[@bce];$abc[7][1]=5;

foreach $a(@abc){ if(defined($a)){ foreach $b(@{$a}){ if (defined($b)){print "$b "}} print "\n"}}

Page 11: 1 Tagesüberblick 7 Lösung Hausaufgabe/Fragen mehrdimensionale Datenstrukturen Module Fehlersuche Zusammenfassung Feedback

11

Aufgabe 7-1

Lesen Sie die Datei daten7-1.txt ein.In jeder Zeile sind 3 Zahlen, jeweils durch

Leerzeichen getrennt, enthalten.Speichern Sie diese Zahlen einzeln in einer List of

Lists (LoL) ab.Geben Sie anschließend die LoL aus.

Page 12: 1 Tagesüberblick 7 Lösung Hausaufgabe/Fragen mehrdimensionale Datenstrukturen Module Fehlersuche Zusammenfassung Feedback

12

Aufgabe 7-2

Lesen Sie die Datei daten7-1.txt ein.In jeder Zeile sind 3 Zahlen, jeweils durch Leerzeichen

getrennt, enthalten.Speichern Sie diese Zahlen einzeln in einer List of Lists

(LoL) ab.Multiplizieren Sie in einem Unterprogramm die Elemente

der Lol jeweils mit sich selbst.Geben Sie anschließend die LoL in die Datei out7-1.txt aus.

Page 13: 1 Tagesüberblick 7 Lösung Hausaufgabe/Fragen mehrdimensionale Datenstrukturen Module Fehlersuche Zusammenfassung Feedback

13

Dateiinformationen

$_="bla.txt";if (-e) {}; # existiertif (-z) {}; # Laenge 0if (-s) {}; # Laenge nicht 0if (-f) {}; # normale Datei (file)if (-d) {}; # Verzeichnis (directory)

Page 14: 1 Tagesüberblick 7 Lösung Hausaufgabe/Fragen mehrdimensionale Datenstrukturen Module Fehlersuche Zusammenfassung Feedback

14

File::Find#! perl -wsub gefunden{ print "$File::Find::name\n"}

use File::Find;print 'Ab welchem Verzeichnis soll gesucht werden?';$startdir=<STDIN>;chomp ($startdir);find(\&gefunden,$startdir);

Page 15: 1 Tagesüberblick 7 Lösung Hausaufgabe/Fragen mehrdimensionale Datenstrukturen Module Fehlersuche Zusammenfassung Feedback

15

File::Find (globale Var.)sub gefunden{if (-d) { push (@list, $File::Find::name.'/',"\n")}else {push (@list, $File::Find::name,"\n")}} # Achtung: große Systeme => @list großuse File::Find;print 'Ab welchem Verzeichnis soll gesucht werden?';$startdir=<STDIN>;chomp ($startdir);find(\&gefunden,$startdir);print @list;

Page 16: 1 Tagesüberblick 7 Lösung Hausaufgabe/Fragen mehrdimensionale Datenstrukturen Module Fehlersuche Zusammenfassung Feedback

16

Aufgaben

7-3 Suchen Sie innerhalb des Dateibaumes alle Dateien, deren Name die Sequenz win enthält. Geben Sie die Dateinamen aus.

7-4 Suchen Sie innerhalb des Dateibaumes alle Dateien, in deren Inhalt die Sequenz c: vorkommt. Geben Sie die Dateinamen aus.

Page 17: 1 Tagesüberblick 7 Lösung Hausaufgabe/Fragen mehrdimensionale Datenstrukturen Module Fehlersuche Zusammenfassung Feedback

17

Fehlersuche(1)

#! perl -wuse diagnostics;use strict;

Page 18: 1 Tagesüberblick 7 Lösung Hausaufgabe/Fragen mehrdimensionale Datenstrukturen Module Fehlersuche Zusammenfassung Feedback

18

Fehlersuche (2)

$test=1;...if($test) print ......if($test) print ....

Page 19: 1 Tagesüberblick 7 Lösung Hausaufgabe/Fragen mehrdimensionale Datenstrukturen Module Fehlersuche Zusammenfassung Feedback

19

Kontrolle des Dateiöffnens

open(XYZ,$file) || die "Oeffnen: $file $!\n";# Dateiname, Ursache

open(XYZ,$file) || die "Oeffnen: $file $!";# Dateiname, Ursache, rufendes Programm, Zeile

Page 20: 1 Tagesüberblick 7 Lösung Hausaufgabe/Fragen mehrdimensionale Datenstrukturen Module Fehlersuche Zusammenfassung Feedback

20

Häufige Schnitzer

• print STDOUT,$a;• Verwenden der falschen Vergleichsoperatoren (==

statt eq)• Semikolon vergessen• Bei Blöcken geschweifte Klammern vergessen• Bei local Vererbung vergessen• Klammerebenen durcheinander bringen• Durcheinanderbringen von $,@,%,&

Page 21: 1 Tagesüberblick 7 Lösung Hausaufgabe/Fragen mehrdimensionale Datenstrukturen Module Fehlersuche Zusammenfassung Feedback

21

Zusammenfassung I

• Philosophie von PERL• Bildschirmausgabe• Variablen und ihre Benutzung

Skalare, Felder ( Vektoren, Listen )• Einlesen größerer Datenmengen• Schleifen• Vergleiche• Wahrheit

Page 22: 1 Tagesüberblick 7 Lösung Hausaufgabe/Fragen mehrdimensionale Datenstrukturen Module Fehlersuche Zusammenfassung Feedback

22

Zusammenfassung II

• Mustervergleiche• Weitere Textfunktionen tr,split ...• Assoziative Vektoren• Spezielle Variable• Hier-Dokument• Unterprogramme• Mehrdimensionale Felder• Module

Page 23: 1 Tagesüberblick 7 Lösung Hausaufgabe/Fragen mehrdimensionale Datenstrukturen Module Fehlersuche Zusammenfassung Feedback

23

Feedback

• Was hat Ihnen gefallen?

• Was hat Sie gestört?

• Was hat Ihnen gefehlt?

Page 24: 1 Tagesüberblick 7 Lösung Hausaufgabe/Fragen mehrdimensionale Datenstrukturen Module Fehlersuche Zusammenfassung Feedback

24

Fragen, Anregungen und Hinweise

Bitte an mich senden:

[email protected]

Vielen Dank