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

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

Transcript of 1 Tagesüberblick 7 Lösung Hausaufgabe/Fragen mehrdimensionale Datenstrukturen Module Fehlersuche...

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