1 Tagesüberblick 5 Lösung Hausaufgabe/Fragen Assoziative Felder Funktionen zu Variablenbehandlung.

Post on 06-Apr-2016

216 views 0 download

transcript

1

Tagesüberblick 5

• Lösung Hausaufgabe/Fragen• Assoziative Felder• Funktionen zu Variablenbehandlung

2

hash

• Assoziatives Feld• Adressierung über Schlüssel ( keys )

nicht über Ziffern• „vergleichbar“ mit kleiner Datenbank• Dies sind keine 2 x n Felder bei denen im ersten

(Text-)Feld der Schlüssel gespeichert ist.

3

hash%Tabelle=("Fahrrad" => 15,

"Auto" => 1000,"Motorrad" => 250,"Mensch" => 70, "Bulle" => 1500);

# Zuweisung eines assoziativen Feldes.# Ein assoziatives Feld wird hash genannt.# Adressierung über eindeutige Schlüssel

4

hash: Einzeldaten

# Zuweisung eines einzelnen Schlüssel-Wert- # Paares:

$Tabelle{"Pferd"}=750;

# Ausgabe des Wertes zum Schlüssel: Autoprint $Tabelle{"Auto"};# liefert: 1000

5

hash alternative (ältere) Schreibweise

%Tabelle=("Fahrrad",15, "Auto",1000,

"Motorrad",250,"Mensch",70,

"Bulle",1500);

6

hash mit qw füllen( quote words )

%Tabelle=qw( Fahrrad 15 Auto 1000 Motorrad 250 Mensch 70 Bulle 1500);# Beachte: keinerlei Zeichen zwischen den # Daten. Also auch keine Kommentare!

7

Funktionen zu Variablenbehandlung

Definition?Existenz?

Undefiniert setzen!Löschen!

Hashauswertung

definedexists

undefdelete

keysvalueseach

8

defined

# Die Funktion defined liefert wahr, wenn der # Wert der Variablen definiert ist. Sie liefert keine# Aussage, ob die Variable bzw. Variable und # Schlüssel existiert!

if (defined($abc)) {print $abc}if (defined($def[0])) {print $def[0]}if (defined($hij{'bla'})) {print $hij{'bla'}}

9

undef

#! perl -w# Die Funktion undef setzt Variablen auf einen # undefinierten Wert.undef($abc);undef(@def);undef($def[0]);undef(%hij);undef($hij{'bla'});

10

exists

#! perl -w# Die Funktion exists liefert wahr, wenn # im hash der spezifizierte Schlüssel existiert!

if (exists($hij{'bla'})) {print 'exists $hij{\'bla\'}'}

11

delete

#! perl -w# Die Funktion delete loescht einen# spezifizierten Schlüssel im hash.

delete($hij{'bla'});

12

Aufgabe 5-1

Füllen Sie einen hash mit folgenden Schlüssel-Wert-Paaren (Blume:Farbe):

Rose:rot Lilie:gelb Nelke:weiss

Lesen Sie von der Tastatur einen Blumennamenein und geben Sie aus dem hash die zugehörige Farbe aus.

13

Aufgabe 5-2

Die Datei daten3-1.txt enthält in jeder Zeile einenNamen, einen Vornamen und ein Alter jeweils durch Komma getrennt. Lesen Sie die Namen in einen hash mit dem Vornamen als Schlüssel. Das Alter ignorieren Sie.Geben Sie anschließend den Wert zum Schlüssel Fritz aus.

14

Aufgabe 5-3

In der Datei daten5-1.txt stehen jeweils ein Vorname und Name einer Person getrennt durch Leerzeichen und/oder Tabulatoren.Lesen Sie die Daten in einen hash mit dem Vornamen als Schlüssel.Geben Sie anschließend den Wert zum Schlüssel Fritz aus.

15

keys/values

#! perl -w# Die Funktion keys liefert alle Schlüssel # eines hash.@a=keys(%Tabelle);

# Die Funktion values liefert alle Werte # eines hash.@b=values(%Tabelle);

16

each

#! perl -w# Die Funktion each liefert beim Aufruf das # nächste Schlüssel/Wert-Paar eines hash.

($ab,$bc)=each(%Tabelle);

17

sequentielle Auswertung über Schlüssel bzw. Wert

foreach $Objekt (keys(%Tabelle)){ print "Ich weiss die Masse von $Objekt\n";}foreach $Masse (values(%Tabelle)){ print "Ich weiss etwas mit $Masse kg\n";}

18

ErgebnisIch weiss die Masse von MotorradIch weiss die Masse von FahrradIch weiss die Masse von PferdIch weiss die Masse von AutoIch weiss die Masse von BulleIch weiss die Masse von MenschIch weiss etwas mit 250 kgIch weiss etwas mit 15 kgIch weiss etwas mit 750 kgIch weiss etwas mit 1000 kgIch weiss etwas mit 1500 kgIch weiss etwas mit 70 kg

19

sequentielle Auswertung über Schlüssel-Wert-Paare

while (($Objekt,$Masse) = each(%Tabelle)){ print "Ein $Objekt hat $Masse kg Masse\n";}# Die Reihenfolge in der die Funktionen keys,# values und each die Daten liefern, ist gleich, # wenn zwischen der Aufrufen das Feld nicht# verändert wird. Sie ist jedoch i. d. R. nicht# gleich der Eingabereihenfolge.

20

Ergebnis

Ein Motorrad hat 250 kg MasseEin Fahrrad hat 15 kg MasseEin Pferd hat 750 kg MasseEin Auto hat 1000 kg MasseEin Bulle hat 1500 kg MasseEin Mensch hat 70 kg Masse

21

Auswertung als Liste

@a=keys(%Tabelle); # Schlüssel in Liste@b=values(%Tabelle); # Werte in Listeprint "@a\n@b\n";# Beispielausgabe@a=sort(@a); # Sortierfunktionforeach $Objekt (@a){ print "Ein $Objekt hat $Tabelle{$Objekt} ", "kg Masse\n";}

22

Ergebnis

Motorrad Fahrrad Auto Bulle Mensch250 15 1000 1500 70Ein Auto hat 1000 kg MasseEin Bulle hat 1500 kg MasseEin Fahrrad hat 15 kg MasseEin Mensch hat 70 kg MasseEin Motorrad hat 250 kg Masse

23

Aufgaben• Lesen Sie die Datei daten3-1.txt ein.• Die Datei enthält in einer Zeile Name, Vorname

und Alter einer Person, jeweils durch Komma getrennt.

5-4 Geben Sie Namen und Vornamen nach Namen sortiert aus.

5-5 Geben Sie Namen und Vornamen nach Vornamen sortiert aus.

5-6 Geben sie „Name, Vorname“ und Alter nach Name sortiert aus

24

Aufgabe 5-7

Lesen Sie die Datei daten5-2.txt ein. Sie enthälteinen Text. Entfernen Sie alle Satzzeichen und zählen Sie anschließend die Häufigkeit des Auftretens der einzelnen Wörter.

25

Hausaufgabe 5-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 den Mittelwert des Alters der Personen des jeweiligen Geschlechts und geben ihn aus.

• Geben Sie die Namen der Personen nach Geschlecht und Namen sortiert aus, sowie Ihre Abweichung vom jeweiligen Altersdurchschnitt.