+ All Categories
Home > Documents > 1 Tagesüberblick 6 Lösung Hausaufgabe/Fragen Weitere besondere Variablen Hier-Dokument...

1 Tagesüberblick 6 Lösung Hausaufgabe/Fragen Weitere besondere Variablen Hier-Dokument...

Date post: 06-Apr-2015
Category:
Upload: fedde-appelt
View: 106 times
Download: 0 times
Share this document with a friend
28
1 Tagesüberblick 6 • Lösung Hausaufgabe/Fragen • Weitere besondere Variablen • Hier-Dokument • Unterprogramme
Transcript
Page 1: 1 Tagesüberblick 6 Lösung Hausaufgabe/Fragen Weitere besondere Variablen Hier-Dokument Unterprogramme.

1

Tagesüberblick 6

• Lösung Hausaufgabe/Fragen

• Weitere besondere Variablen

• Hier-Dokument

• Unterprogramme

Page 2: 1 Tagesüberblick 6 Lösung Hausaufgabe/Fragen Weitere besondere Variablen Hier-Dokument Unterprogramme.

2

Weitere besondere Variablen

@ARGV # enthält alle Argumente die an das

# Programm übergeben wurden.

%ENV # enthält die Variablen des Environ- # ments. Schlüssel sind die

Variablen-

# namen, diese weisen auf die Werte.

Page 3: 1 Tagesüberblick 6 Lösung Hausaufgabe/Fragen Weitere besondere Variablen Hier-Dokument Unterprogramme.

3

@ARGV

# Programm aufrufen mit: test.pl Ich bin ein Test

foreach $arg(@ARGV){

print "#$arg\n"}

# liefert:

#Ich

#bin

#ein

#Test

Page 4: 1 Tagesüberblick 6 Lösung Hausaufgabe/Fragen Weitere besondere Variablen Hier-Dokument Unterprogramme.

4

%ENV

print join(",",keys(%ENV));

# obiger Einzeiler könnte z. B. liefern

# WINBOOTDIR,TMP,PROMPT,TEMP, ...

# COMSPEC,CMDLINE,PATH,WINDIR, ...

# BLASTER

Page 5: 1 Tagesüberblick 6 Lösung Hausaufgabe/Fragen Weitere besondere Variablen Hier-Dokument Unterprogramme.

5

Hier-Dokument

#!perl -w$a=<<BLA;Ich bin ein Text,der in einem Hier-Dokument gespeichert ist.BLAprint $a;

Page 6: 1 Tagesüberblick 6 Lösung Hausaufgabe/Fragen Weitere besondere Variablen Hier-Dokument Unterprogramme.

6

Programmausgabe

Ich bin ein Text,

der in einem Hier-

Dokument gespeichert

ist.

Page 7: 1 Tagesüberblick 6 Lösung Hausaufgabe/Fragen Weitere besondere Variablen Hier-Dokument Unterprogramme.

7

Hier-Dokument mit Variablen

#!perl -w$b=1745;

print <<BLA;Ich bin ein Text, der in einem Hier-Dokument gespeichert und mit Variablen angereichert ist.Z. B. $b ist eine schoene Zahl.BLA

Page 8: 1 Tagesüberblick 6 Lösung Hausaufgabe/Fragen Weitere besondere Variablen Hier-Dokument Unterprogramme.

8

Programmausgabe

Ich bin ein Text, der in einem Hier-Dokument

gespeichert und mit Variablen angereichert ist.

Z. B. 1745 ist eine schoene Zahl.

Page 9: 1 Tagesüberblick 6 Lösung Hausaufgabe/Fragen Weitere besondere Variablen Hier-Dokument Unterprogramme.

9

Aufgabe 6-1

• Schreiben Sie ein Programm, dass Sie mit Namen als Parametern aufrufen können.

• Geben Sie für jeden Namen eine Zeile aus:Hallo Name

• Wenn kein Parameter angegeben wurde, geben Sie aus:Hallo Ihr da!

Page 10: 1 Tagesüberblick 6 Lösung Hausaufgabe/Fragen Weitere besondere Variablen Hier-Dokument Unterprogramme.

10

Aufgabe 6-2

• Fragen Sie vom Benutzer seinen Namen, und sein Geburtsdatum ab. Geben Sie anschließend aus:

Ihr Name ist: NameIhr Geburtsdatum ist: Geburtsdatum

• Benutzen Sie hierzu eine einzelne Printanweisung mit einem Hier-Dokument

Page 11: 1 Tagesüberblick 6 Lösung Hausaufgabe/Fragen Weitere besondere Variablen Hier-Dokument Unterprogramme.

11

Aufgabe 6-3

• Schreiben Sie ein Programm, daß alle Environment-Variablen, die als Argument übergeben wurden, mit ihren Werten ausgibt,.

• Anmerkung: Beachten Sie den Sonderfall, daß nichts übergeben wurde. Hier geben Sie alle Environment-Variablen mit ihren Werten aus.

• Beispiel:test.pl COMSPECCOMSPEC=C:\WINDOWS\COMMAND.COM

Page 12: 1 Tagesüberblick 6 Lösung Hausaufgabe/Fragen Weitere besondere Variablen Hier-Dokument Unterprogramme.

12

Unterprogramme

sub beispiel{

print "Ein primitives Unterprogramm\n";

}

&beispiel;

&beispiel(12);

&beispiel(1+3,"Text"); # Es gibt keine Probleme

# falls man mehr Argumente als nötig übergibt

Page 13: 1 Tagesüberblick 6 Lösung Hausaufgabe/Fragen Weitere besondere Variablen Hier-Dokument Unterprogramme.

13

Argumente

sub printargs{ # Beachte:

print "@_;"; # Die Liste @_ hat

} # nichts mit der Variablen

# $_ zu tun und ist lokal

&printargs; # zum Unterprogramm

&printargs(12);

&printargs(1+3,"Text");

# liefert: ;12;4 Text;

Page 14: 1 Tagesüberblick 6 Lösung Hausaufgabe/Fragen Weitere besondere Variablen Hier-Dokument Unterprogramme.

14

Einzelne Argumente

sub print2args{ # Auch die einzelnen

print "$_[0] $_[1]\n"; # Listenelemente

} # $_[n] haben nichts

# mit $_ zu tun.

&print2args;

&print2args(12);

&print2args(1+3,"Text");

Page 15: 1 Tagesüberblick 6 Lösung Hausaufgabe/Fragen Weitere besondere Variablen Hier-Dokument Unterprogramme.

15

Explizite Rückgabesub maximum{

if ($_[0] > $_[1]){

$a=$_[0];

}

else{

$a=$_[1];

} # Der Rückgabewert

return $a; # wird nach dem

} # return übergeben

print &maximum(14,27)

Page 16: 1 Tagesüberblick 6 Lösung Hausaufgabe/Fragen Weitere besondere Variablen Hier-Dokument Unterprogramme.

16

Rückgabewert dirtysub maximum{

if ($_[0] > $_[1]){

$_[0]; # Der Rückgabewert

} # ist der jeweils

else{ # letzte evaluierte Wert.

$_[1]; # Diese Form findet man

} # gelegentlich vor.

} # Keinesfalls benutzen

print &maximum(14,27)

Page 17: 1 Tagesüberblick 6 Lösung Hausaufgabe/Fragen Weitere besondere Variablen Hier-Dokument Unterprogramme.

17

Frage:sub maximum{

if ($_[0] > $_[1]){

$a=$_[0]}

else{

$a=$_[1]}

print "$a\n";

}

print &maximum(14,27)

# Was wird ausgegeben?

Page 18: 1 Tagesüberblick 6 Lösung Hausaufgabe/Fragen Weitere besondere Variablen Hier-Dokument Unterprogramme.

18

Ergebnis

27

1

# Warum kam das heraus?

Page 19: 1 Tagesüberblick 6 Lösung Hausaufgabe/Fragen Weitere besondere Variablen Hier-Dokument Unterprogramme.

19

Lokale Variablensub enthalten{

my ($a, $b); # lokale Variable def.

($a, $b)=($_[0],$_[1]); # zuweisen

$a =~ s/\s//g; # \ whitespace

$b =~ s/\s//g; # / entfernen

return ($a =~ /$b/ | $b =~ /$a/); # enthalten ?

}

($a, $b) = ("a b c-Dur","b c");

if (&enthalten($a,$b)){print "enthalten:\n$a\n$b"}

Page 20: 1 Tagesüberblick 6 Lösung Hausaufgabe/Fragen Weitere besondere Variablen Hier-Dokument Unterprogramme.

20

Ergebnis:

enthalten:

a b c-Dur

b c

Dies zeigt deutlich, daß die Variablen $a und $b

im Unterprogramm von denen im Hauptprogramm

verschieden sind, sonst wären alle Leerstellen

verschwunden. Um dies zu verdeutlichen

schreiben Sie ein # vor das my und testen dann.

Page 21: 1 Tagesüberblick 6 Lösung Hausaufgabe/Fragen Weitere besondere Variablen Hier-Dokument Unterprogramme.

21

my <-> local

my Variablen sind immer lokal zu dem

Block in dem sie definiert sind. my ist

vorzuziehen, da schneller und sicherer

local Variablen sind lokal zu dem Block in

dem sie definiert sind und in von diesem

aufgerufenen Unterprogrammen

( geht nicht mit use strict )

( War vor PERL 5 üblich )

Page 22: 1 Tagesüberblick 6 Lösung Hausaufgabe/Fragen Weitere besondere Variablen Hier-Dokument Unterprogramme.

22

Merke

• Die Variablen des Programms sind global wenn nichts anderes vorgegeben ist.

• Ans Unterprogramm übergebene Variablen können von diesem verändert werden.

• Um zu vermeiden, daß bei späteren Programm-weiterentwicklungen Kuddelmuddel auftritt sollte man alle im Unterprogramm verwendeten, nicht übergebenen Variablen lokalisieren.

Page 23: 1 Tagesüberblick 6 Lösung Hausaufgabe/Fragen Weitere besondere Variablen Hier-Dokument Unterprogramme.

23

use strict

use strict; # jetzt müssen alle Variablen vor Ihrer

# Benutzung definiert werden

use vars qw($bb); # Global bekannt

{

my $aa; # Lokal bekannt

$aa=$bb=1;

print "$aa # ";

&bla;

}

sub bla{ print ++$bb}

# liefert: 1 # 2

Page 24: 1 Tagesüberblick 6 Lösung Hausaufgabe/Fragen Weitere besondere Variablen Hier-Dokument Unterprogramme.

24

Rekursion

sub rec{

if ($_[0] < 10){ # Immer auf Abbruch

print $_[0]++,"\n"; # achten!

&rec($_[0]); # Falls noetig

} # Schleifenzaehler

} # mitführen

$a=0;

&rec($a);

Page 25: 1 Tagesüberblick 6 Lösung Hausaufgabe/Fragen Weitere besondere Variablen Hier-Dokument Unterprogramme.

25

Aufgabe 6-4

• Lesen Sie die Datei daten6-1.txt ein.

• Wandeln Sie alle Klein- in Großbuchstaben um.

– Tun Sie dies in einem Unterprogramm.

• Geben Sie die Zeilen zunächst im Unterprogramm in Großbuchstaben aus.

• Geben Sie die Zeilen anschließend im Hauptprogramm im Original aus.

Page 26: 1 Tagesüberblick 6 Lösung Hausaufgabe/Fragen Weitere besondere Variablen Hier-Dokument Unterprogramme.

26

Aufgabe 6-5

• Erweitern Sie die im Beispiel genannte Maximumfunktion durch Verwendung der Rekursion auf beliebig viele Zahlen.

Page 27: 1 Tagesüberblick 6 Lösung Hausaufgabe/Fragen Weitere besondere Variablen Hier-Dokument Unterprogramme.

27

Aufgabe 6-6

• Schreiben sie ein Unterprogramm zur Berechnung der Fakultät

n!=1*2*3*.....*n

Page 28: 1 Tagesüberblick 6 Lösung Hausaufgabe/Fragen Weitere besondere Variablen Hier-Dokument Unterprogramme.

28

Hausaufgabe 6-1

• Lesen Sie die Datei daten5-3.txt ein.

• Die Datei enthält in einer Zeile Name, Vorname, Geschlecht und Alter einer Person, jeweils durch Schrägstrich (/) getrennt.

• Ermitteln Sie für jede Person die Fakultät des Alters. Benutzen Sie hierzu ein Unterprogramm.

• Ermitteln Sie die Mittelwerte der Fakultäten jeweils nach Geschlecht getrennt und geben Sie aus.


Recommended