+ All Categories
Home > Documents > 1 Tagesüberblick 2 Lösung Hausaufgabe/Fragen Datei- ein- und ausgabe Schleifen Vergleiche...

1 Tagesüberblick 2 Lösung Hausaufgabe/Fragen Datei- ein- und ausgabe Schleifen Vergleiche...

Date post: 06-Apr-2015
Category:
Upload: hunbeorht-wergin
View: 107 times
Download: 3 times
Share this document with a friend
23
1 Tagesüberblick 2 • Lösung Hausaufgabe/Fragen • Datei- ein- und ausgabe • Schleifen • Vergleiche • Wahrheit
Transcript
Page 1: 1 Tagesüberblick 2 Lösung Hausaufgabe/Fragen Datei- ein- und ausgabe Schleifen Vergleiche Wahrheit.

1

Tagesüberblick 2

• Lösung Hausaufgabe/Fragen

• Datei- ein- und ausgabe

• Schleifen

• Vergleiche

• Wahrheit

Page 2: 1 Tagesüberblick 2 Lösung Hausaufgabe/Fragen Datei- ein- und ausgabe Schleifen Vergleiche Wahrheit.

2

Dateien öffnen und schreiben

open (INFO, $file); # Eingabe

open (INFO,">$file"); # Ausgabe

open (INFO,">>$file"); # Anhängen

open (INFO,"<$file" ); # Eingabe Version 2

close (INFO); # Niemals das # Schließen vergessen

# Merke INFO ist nur Beispiel, Großbuchstaben!

Page 3: 1 Tagesüberblick 2 Lösung Hausaufgabe/Fragen Datei- ein- und ausgabe Schleifen Vergleiche Wahrheit.

3

Sonderfälle

$file="-";

open (INFO, "$file"); # STDIN

open (INFO, ">$file"); # STDOUT

# Eine Art Systemkommandos zu rufen

open (INFO,"dir |"); # pipe am Bsp. dir

open (INFO,"| more"); # pipe am Bsp. more

Page 4: 1 Tagesüberblick 2 Lösung Hausaufgabe/Fragen Datei- ein- und ausgabe Schleifen Vergleiche Wahrheit.

4

Beispiel ( type / cat )

$file = "daten";

open(XYZ,$file) || die "Oeffnen $file $!";

# Fehler stets abfangen

@lines=<XYZ>; # Einlesen aus der Datei

close(XYZ); # geöffnete Dateien

# immer schließen

print @lines;

Page 5: 1 Tagesüberblick 2 Lösung Hausaufgabe/Fragen Datei- ein- und ausgabe Schleifen Vergleiche Wahrheit.

5

Datei schreiben

$out = "daten";

open (OUT,">$out") || die "Oeffnen $out $!";

print OUT "#$lines"; # Schreiben der Datei

close (OUT);

Page 6: 1 Tagesüberblick 2 Lösung Hausaufgabe/Fragen Datei- ein- und ausgabe Schleifen Vergleiche Wahrheit.

6

foreach

foreach $zeile (@lines){

$a= length($zeile);

print "$a\n";

}

foreach $i (1..5,9,20..23,$a){

print "$i\n";}

# foreach und for sind Synonyme

Page 7: 1 Tagesüberblick 2 Lösung Hausaufgabe/Fragen Datei- ein- und ausgabe Schleifen Vergleiche Wahrheit.

7

Aufgaben

• Fragen Sie den Namen einer Datei vom Benutzer ab. ( Der Name lautet: daten2-1.txt)

• Öffnen Sie die Datei und lesen sie ein.

2-1 Geben Sie alle Zeilen gefolgt von jeweils einer Leerzeile aus.

2-2 Geben Sie alle Zeilen in eine zweite Datei aus und stellen Sie jeweils ein # an das Ende jeder Zeile.

Page 8: 1 Tagesüberblick 2 Lösung Hausaufgabe/Fragen Datei- ein- und ausgabe Schleifen Vergleiche Wahrheit.

8

Vergleiche

$a == $b # $a numerisch gleich $b?

# Achtung: nicht = verwenden!

$a != $b# $a numerisch ungleich $b?

$a < $b # $a numerisch kleiner als $b?

$a > $b # $a numerisch größer als $b?

$a eq $b # $a textgleich $b?

$a ne $b # $a textungleich $b?

$a lt $b # $a textkleiner $b?

$a gt $b # $a textgrößer $b?

Page 9: 1 Tagesüberblick 2 Lösung Hausaufgabe/Fragen Datei- ein- und ausgabe Schleifen Vergleiche Wahrheit.

9

Weitere Vergleichsoperationen

($a && $b) # Sind $a und $b wahr?

($a || $b) # Ist $a oder $b wahr?

($a) # Ist $a wahr?

(! $a) # Ist $a falsch?

# Möglich aber unüblich

($a and $b) # Sind $a und $b wahr?

($a or $b) # Ist $a oder $b wahr?

(not $a) # Ist $a falsch?

Page 10: 1 Tagesüberblick 2 Lösung Hausaufgabe/Fragen Datei- ein- und ausgabe Schleifen Vergleiche Wahrheit.

10

Wahrheit@a = ('',' ','0',0,1,'PERL','UNWAHR');

foreach $aa (@a){

if ($aa){ print"|$aa| ist wahr\n";

}

else { print"|$aa| ist falsch\n";

}

}

Page 11: 1 Tagesüberblick 2 Lösung Hausaufgabe/Fragen Datei- ein- und ausgabe Schleifen Vergleiche Wahrheit.

11

Ergebnis

|| ist falsch

| | ist wahr

|0| ist falsch

|0| ist falsch

|1| ist wahr

|PERL| ist wahr

|UNWAHR| ist wahr

Page 12: 1 Tagesüberblick 2 Lösung Hausaufgabe/Fragen Datei- ein- und ausgabe Schleifen Vergleiche Wahrheit.

12

if else

$a=<STDIN>;

chomp $a; # chomp hier sehr wichtig

# sonst ist $a immer wahr

if (!$a) {

print "Leere Zeichenkette!\n";

}

else {

print "$a\n"; # Zeilenvorschub muß

} # wieder dran

Page 13: 1 Tagesüberblick 2 Lösung Hausaufgabe/Fragen Datei- ein- und ausgabe Schleifen Vergleiche Wahrheit.

13

if elsif else$a=<STDIN>;

chomp $a;

if (!$a) { print "Leere Zeichenkette!\n";

}

elsif (length($a) < 10) { print "Kurze Zeichenkette!\n";

}

else { die "Zeile zu lang\n"; # Stets else Zweig auswerten

# Hier: Programmabbruch

}

Page 14: 1 Tagesüberblick 2 Lösung Hausaufgabe/Fragen Datei- ein- und ausgabe Schleifen Vergleiche Wahrheit.

14

if und unless

@a = ('',' ','0',0);

if ($a[0]) {print 0}; #\ äquivalent

print 0 if ($a[0]); #/

if (!$a[1]) {print 1}; #\

print 1 unless ($a[1]); # > äquivalent

unless ($a[1]) {print 1}; #/

Page 15: 1 Tagesüberblick 2 Lösung Hausaufgabe/Fragen Datei- ein- und ausgabe Schleifen Vergleiche Wahrheit.

15

for

for ($i = 0; $i < 10; $i++) { # hier entpricht

print "$i\n"; # ++$i $i++

} # Beachte: Feld-

# trenner ;

# foreach und for sind Synonyme

Page 16: 1 Tagesüberblick 2 Lösung Hausaufgabe/Fragen Datei- ein- und ausgabe Schleifen Vergleiche Wahrheit.

16

while

print "Bitte Kennwort eingeben:";

$a = <STDIN>;

chomp $a;

while ( $a ne "bla") {

print "Falsch, bitte erneut versuchen:";

$a = <STDIN>;

chomp $a;

}

Page 17: 1 Tagesüberblick 2 Lösung Hausaufgabe/Fragen Datei- ein- und ausgabe Schleifen Vergleiche Wahrheit.

17

do while

do { print "Kennwort:";

$a = <STDIN>;

chomp $a;

}

while ( $a ne "bla");

Page 18: 1 Tagesüberblick 2 Lösung Hausaufgabe/Fragen Datei- ein- und ausgabe Schleifen Vergleiche Wahrheit.

18

do until

do {

print "Kennwort:";

$a = <STDIN>;

chomp $a;

}

until ( $a eq "bla");

Page 19: 1 Tagesüberblick 2 Lösung Hausaufgabe/Fragen Datei- ein- und ausgabe Schleifen Vergleiche Wahrheit.

19

Exkurs one-liner

@a = ('',' ','0',0);

foreach $aa (@a){

if ($aa){

print"|$aa| \n";

}

}

Page 20: 1 Tagesüberblick 2 Lösung Hausaufgabe/Fragen Datei- ein- und ausgabe Schleifen Vergleiche Wahrheit.

20

Äquivalent

@a = ('',' ','0',0);

foreach $aa (@a) { if ($aa) { print"|$aa|\n" } }

Beachte: Das letzte Semikolon in einem Block

kann weggelassen werden, speziell nach einer

geschweiften Klammer ist es absolut unüblich.

Page 21: 1 Tagesüberblick 2 Lösung Hausaufgabe/Fragen Datei- ein- und ausgabe Schleifen Vergleiche Wahrheit.

21

Aufgabe 2-3

• Benutzen Sie Ihre Dateiöffnungsprozedur

• Geben Sie die Datei ganz ohne vollständig leere Zeilen aus und zählen Sie diese.

• Geben Sie die Anzahl der leeren Zeilen aus.

Page 22: 1 Tagesüberblick 2 Lösung Hausaufgabe/Fragen Datei- ein- und ausgabe Schleifen Vergleiche Wahrheit.

22

Aufgabe 2-4

• Benutzen Sie Ihre Dateiöffnungsprozedur.

• Geben Sie die Datei aus, bis Sie auf den Text: Schluss stoßen. Ab dieser Zeile geben Sie nicht mehr aus und beenden die Bearbeitung.

• Geben Sie die Anzahl der nicht leeren Zeilen aus. Die Zeile, die Schluss enthält, zählen Sie nicht mit.

Page 23: 1 Tagesüberblick 2 Lösung Hausaufgabe/Fragen Datei- ein- und ausgabe Schleifen Vergleiche Wahrheit.

23

Hausaufgabe 2-1

• Die Datei daten2-2.txt enthält jeweils eine Zahl in einer Zeile. Öffnen Sie diese Datei.

• Lesen Sie 7 Zahlen in einer Schleife aus der Datei ein.

• Speichern Sie die gelesenen Eingaben in einer Liste ab.

• Bilden Sie die Summe über die ganze Liste.

• Geben Sie die Liste aus.

• Geben Sie die Summe aus.


Recommended