Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

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

Ähnliche Präsentationen


Präsentation zum Thema: "1 Tagesüberblick 6 Lösung Hausaufgabe/Fragen Weitere besondere Variablen Hier-Dokument Unterprogramme."—  Präsentation transkript:

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

2 2 Weitere besondere 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.

3 # Programm aufrufen mit: test.pl Ich bin ein Test foreach print "#$arg\n"} # liefert: #Ich #bin #ein #Test

4 4 %ENV print join(",",keys(%ENV)); # obiger Einzeiler könnte z. B. liefern # WINBOOTDIR,TMP,PROMPT,TEMP,... # COMSPEC,CMDLINE,PATH,WINDIR,... # BLASTER

5 5 Hier-Dokument #!perl -w $a=<

6 6 Programmausgabe Ich bin ein Text, der in einem Hier- Dokument gespeichert ist.

7 7 Hier-Dokument mit Variablen #!perl -w $b=1745; print <

8 8 Programmausgabe Ich bin ein Text, der in einem Hier-Dokument gespeichert und mit Variablen angereichert ist. Z. B ist eine schoene Zahl.

9 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!

10 10 Aufgabe 6-2 Fragen Sie vom Benutzer seinen Namen, und sein Geburtsdatum ab. Geben Sie anschließend aus: Ihr Name ist: Name Ihr Geburtsdatum ist: Geburtsdatum Benutzen Sie hierzu eine einzelne Printanweisung mit einem Hier-Dokument

11 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 COMSPEC COMSPEC=C:\WINDOWS\COMMAND.COM

12 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

13 13 Argumente sub printargs{# Beachte: print Die hat }# nichts mit der Variablen # $_ zu tun und ist lokal &printargs;# zum Unterprogramm &printargs(12); &printargs(1+3,"Text"); # liefert:;12;4 Text;

14 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");

15 15 Explizite Rückgabe sub maximum{ if ($_[0] > $_[1]){ $a=$_[0]; } else{ $a=$_[1]; }# Der Rückgabewert return $a;# wird nach dem }# return übergeben print &maximum(14,27)

16 16 Rückgabewert dirty sub 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)

17 17 Frage: sub maximum{ if ($_[0] > $_[1]){ $a=$_[0]} else{ $a=$_[1]} print "$a\n"; } print &maximum(14,27) # Was wird ausgegeben?

18 18 Ergebnis 27 1 # Warum kam das heraus?

19 19 Lokale Variablen sub 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","bc"); if (&enthalten($a,$b)){print "enthalten:\n$a\n$b"}

20 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.

21 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 )

22 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.

23 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

24 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);

25 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.

26 26 Aufgabe 6-5 Erweitern Sie die im Beispiel genannte Maximumfunktion durch Verwendung der Rekursion auf beliebig viele Zahlen.

27 27 Aufgabe 6-6 Schreiben sie ein Unterprogramm zur Berechnung der Fakultät n!=1*2*3*.....*n

28 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.


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

Ähnliche Präsentationen


Google-Anzeigen