Linuxhotel Wiki

Wie ging das nochmal?

Benutzer-Werkzeuge

Webseiten-Werkzeuge


programmieren_lernen:hashtabelle

Dies ist eine alte Version des Dokuments!


Datentypen (III): Hash/Array/Dictionary

Erklärung: Wie kann ich mir zu einem Wert (z.B. einem Namen) einen weiteren Wert merken (z.B. das Alter)? Oft ist es nützlich, zusätzlich zu einem bekannten Wert (dem Schlüssel) einen weiteren Wert zu kennen (den „Wert“).

Beispiel:

  • Telefonbuch: Schlüssel = Name, Wert = Telefonnummer
  • Wörter-Zähler: Schlüssel = Wort, Wert = Häufigkeit/Anzahl

Wie kann man sich die Datenstruktur vorstellen? Bild mit Eimer und Fähnchen

Syntaxaufgaben

  • Wie lege ich einen leeren Hash an?
  • Wie lege ich einen Hash incl. erster Elemente an?
  • Wie füge ich neue Elemente hinzu?
  • Wie lese ich ein Element aus?
  • Wie verändere ich Elemente, die schon im Hash drin sind?
  • Wie überprüfe ich, ob mein Hash zu einem bestimmten Schlüssel einen Wert enthält?
  • Wie finde ich die Menge aller Schlüssel? Werte?
  • Wie iteriere ich über alle Einträge?
  • Kann ich ein Array in einen Hash umwandeln? Geht das?

Problemlösungsaufgaben

Schreibe ein Programm statistik, das vom Benutzer eine Eingabe erwartet. Sobald der Benutzer eine leere Zeile eingibt, gibt das Programm eine Statistik über die Häufigkeit der eingegebenen Zeichen aus.

Aufruf des Programms:

./statistik

Ausgabe/Eingabe:

Bitte geben Sie Zeichen ein. Beenden durch Leerzeile!
Dies ist ein Text. Dies ist MEIN Text. Mein Text ist ein toller Text und nicht nur ein Test!

D --   2
E --   1
I --   1
M --   2
N --   1
T --   5
n --   7
  --  18
! --   1
c --   1
d --   1
e --  12
h --   1
i --  10
l --   2
. --   2
o --   1
r --   2
s --   6
t --  10
u --   2
x --   4

Zusatz 1: Sortiere die Statistik nach dem eingegebenen Zeichen. Aufruf des Programms:

./statistik

Ausgabe/Eingabe:

Bitte geben Sie Zeichen ein. Beenden durch Leerzeile!
Dies ist ein Text. Dies ist MEIN Text. Mein Text ist ein toller Text und nicht nur ein Test!

  --  18
! --   1
. --   2
D --   2
E --   1
I --   1
M --   2
N --   1
T --   5
c --   1
d --   1
e --  12
h --   1
i --  10
l --   2
n --   7
o --   1
r --   2
s --   6
t --  10
u --   2
x --   4

Zusatz 2: Sortiere die Statistik nach der Anzahl der Zeichen. Aufruf des Programms:

./statistik

Ausgabe/Eingabe:

Bitte geben Sie Zeichen ein. Beenden durch Leerzeile!
Dies ist ein Text. Dies ist MEIN Text. Mein Text ist ein toller Text und nicht nur ein Test!

  --  18
e --  12
i --  10
t --  10
n --   7
s --   6
T --   5
x --   4
M --   2
D --   2
. --   2
l --   2
r --   2
u --   2
I --   1
N --   1
E --   1
h --   1
o --   1
c --   1
! --   1
d --   1

Zusatz 3: Gib ein Ascii-Diagramm der Statistik aus. Die Breite der Balken soll dabei für das meist-eingegebene Zeichen auf 60 gesetzt werden. Aufruf des Programms:

./statistik

Ausgabe/Eingabe:

Bitte geben Sie Zeichen ein. Beenden durch Leerzeile!
Dies ist ein Text. Dies ist MEIN Text. Mein Text ist ein toller Text und nicht nur ein Test!

  --  18 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
e --  12 ++++++++++++++++++++++++++++++++++++++++
i --  10 +++++++++++++++++++++++++++++++++
t --  10 +++++++++++++++++++++++++++++++++
n --   7 +++++++++++++++++++++++
s --   6 ++++++++++++++++++++
T --   5 ++++++++++++++++
x --   4 +++++++++++++
D --   2 ++++++
. --   2 ++++++
M --   2 ++++++
l --   2 ++++++
u --   2 ++++++
r --   2 ++++++
E --   1 +++
N --   1 +++
I --   1 +++
d --   1 +++
! --   1 +++
c --   1 +++
o --   1 +++
h --   1 +++
programmieren_lernen/hashtabelle.1413054624.txt.gz · Zuletzt geändert: 2014/10/11 19:10 von ingo_wichmann