Aggregierter Datentyp

Aus PlusPedia
Wechseln zu: Navigation, Suche

Das Ziel eines Aggregierten Datentyps ist es mehrere Objekte unter einem Namen zusammenzufassen und ansprechen zu können.

Coin Übrigens: Die PlusPedia ist NICHT die Wikipedia.
Wir sind ein gemeinnütziger Verein, PlusPedia ist werbefrei. Wir freuen uns daher über eine kleine Spende!

1 Bottom-Up: Konstrukoren

  • Array -
    • Ein ein- oder mehrdimensionales Feld
    • Ein Array enthält typischerweise denselben Datentyp.
  • Record (Verbund, Struct)
    • In einem Record können verschiedene Dateitypen zusammengefast werden
    • Zugriff über die Namenskonversion: record_name.komponenten_name
  • Zeiger oder Pointer
    • Ein Zeiger zeigt auf ein bestimmtes Objekt.
    • In maschinennahen Programmiersprachen wie Assembler oder C oder C++ [1] kommen sie vor
    • In streng typisierten Sprachen wie Modula-2 oder Ada stark eingeschränkt
    • In Sprachen wie Java, Eiffel oder Python sind Zeiger intern vorhanden - die Zeiger sind vor dem Programmierer verborgen.
    • Zeiger sind sehr fehleranfällige Konstrukte. "Pufferüberläufe" und "Abstürze"
    • Ein Zeiger kann zeigen auf
      • Daten
      • Programmcode
      • Andere Zeiger
    • Vorzüge
      • Verkettete Listen
      • Dynamische Datentypen (Einfaches Ändern einer Reihenfolge ohne zu kopieren)
      • Effizient
      • Einfaches Durchlaufen eines Feldes
    • Nachteile
      • Schwer zu erlernen, kompliziert und fehlerfanfällig (Auch Flüchtigkeitsfehler)
      • Programmierung mit Zeigern kann Daten und Programmcode zerstören
      • Effizienz kann auch leiden, da der Compiler schwer optimieren kann - und Daten verstreut im Adressraum liegen können.
      • Die Strukturen müssen ziemlich genau bekannt werden (Verhindert Abstraktion)

2 Top-Down-Sicht: Konstrukoren

In der Mathematik gibt es

  • Mengen
  • Tupel
  • Relationen und Funktionen

2.1 Mengen

„Eine Menge ist eine Zusammenfassung bestimmter, wohlunterschiedener Objekte unsere Anschauung oder unseres Denkens zu einem Ganzen. Diese Objekte heißen Elemente der Menge.“ (naive Definition von Cantor)

Operatoren sind:

  • ∈ ∉ ∩ ∪ ⊂ ⊃ ⊆ ⊇ \ Δ

2.2 Tupel

  • Tupel sind eine endliche Liste
  • Auf ein Tuppel kann über einen Index zugegriffen werden
    • x(i,j)

2.3 Funktionen

(partielle) Funktion/Abbildungen: "Eine partielle Funktion ist eine rechtseindeutige Relation R. R ist eine Menge von n-Tupeln. Objekte, die in der Relation R zueinander stehen, bilden ein n-Tupel, das Element von R ist."

Die unabhängige Variable nennt man in der Informatik den Schlüssel - und die abhängige Variable ist der Wert.

  • (Schlüssel, Wert);
  • auch geschrieben als {Schlüssel, Wert}

3 Konstrukte

Struktur Ordnung Einzigartigkeit der Werte der Elemente Werte pro Element
Set nein ja 1
List ja nein 1
Map (Dictionary) nein ja für das erste Element: sichert Rechtseindeutigkeit,
also die Eigenschaft eine partielle Funktion zu sein
2


4 Wichtige Datenstrukturen

  • Liste
    • Array
  • Stapel
  • Schlange
  • Graph
  • Menge
  • Abbildung
  • Verbund

5 In den verschiedenen Programmiersprachen

5.1 In Python

In Python gibt es

  • None
  • Elementare
  • Kollektionen
    • Mengen
      • frozenset()
      • set()
    • Sequenzen
      • string
      • tupel()
      • list()
    • Abbildungen
      • dictionary()
  • aufrufbar
    • Prozeduren
    • Klassen

5.1.1 Liste

Struktur Bedeutung
Liste = [] Erzeugt eine leere Liste
Liste = [1,2,3] Enthält drei Integer-Elemente
i = Liste[1] Zugriff auf das 2. Element
Liste2 = ['Text', Liste, [5,6], 3.1415] Eine Liste, die einen Text, die Liste, eine zweite Liste und eine Doublezahl enthält.

5.1.2 Tupel

Identisch zu Listen - aber mit runden Klammern; Die Werte von Tupeln sind nicht veränderbar.

Struktur Bedeutung
Tupel = () Erzeugt eine leere Liste
Tupel = (1,2,3) Enthält drei Integer-Elemente
i = Tupel(1) Zugriff auf das 2. Element
Tupel2 = ('Text', Tupel, (5,6), 3.1415) Eine Tupel-Liste, die einen Text, die Liste, eine zweite Liste und eine Doublezahl enthält.

Ein Tupel wird in Python mit (1,) gekennzeichnet und von einem geklammerten Ausdruck unterschieden.

5.1.3 Sets

Mengenobjekte werden durch {} erzeugt oder mit eingebauten Funktionen set (mutable) oder frozenset (unmutable) erzeugt.

  • x = {'a', 'c', 'b'}
  • y = set ('bcde')

Operatoren bei Sets:

Struktur Bedeutung
x & y
x ^ y
len (N)
x in M
x not in M
N <= M
N >= M
M (PIPE) N
M (PIPE)= N
M & N
M &= N
M - N
M -= N
M ^ N

Methoden:

  • M.add(x)
  • M.clear()
  • M.pop()
  • M.remove(x)

5.2 Dictionaries

Bei einem Dictionary benutzt man das 2-Tupel der Form (Schlüsel, Wert), geschrieben als:

  • {Schlüssel:Wert.}
    • Wert ist beliebig (Elementare Typen, aber auch Listen, andere Dictionaries etc)

Kein Zugiff über Index möglich, sondern Zugriff geschieht über den Schlüssel.

Schlüssel können Strings oder Zahlen oder Tupels sein. Listen können keine Schlüssel sein, weil sich Listen ändern können. Schlüssel müsen unmutable sein.

Struktur Bedeutung
{} Leeres Dictionary


Operation Bedeutung
Speichern eines Wertes
Suchen über einen Schlüssel
Löschen eines Wertes


5.2.1 Unterschied zwischen Zuweisung, copy und deepcopy

Wird ein aggregierter Typ übergeben, so wird eine Referenz übergeben.

  • s = [1,2,3]
  • t = s
  • t is s --> liefert True

Dies ist eine shallow copy. t ist ein Aliasname zum selben Objekt.

Daneben gibt es im Modul copy echte Kopien anzulegen.

  • copy.copy()
  • copy.deepcopy()
  • import copy
  • s = [1,2,3]
  • t = copy.copy (s)
  • t is s --> False

Beim Deepcopy werden auch Referenzen aufgelöst und neu angelegt.

Deepcopy löst

  • Modulobjkete
  • Fileobjekte
  • Socketobjekte
  • Tracebackobjekte

Daneben gibt es Slicing.


6 Links und Quellen

6.1 Siehe auch

6.2 Weblinks

6.3 Quellen

6.4 Literatur

6.5 Einzelnachweise

  1. Chuck Sphaer: Visual C++ - Schritt für Schritt, (deutsche Übersetzung von Learn Visual C++ Now), Microsoft Press, 1999, S. 110: "Eines der am häufigsten verwendeten Merkmale von C und C ++ ist der Zeiger."

7 Andere Lexika

Wikipedia kennt dieses Lemma (Aggregierter Datentyp) vermutlich nicht.

---



Diesen Artikel melden!
Verletzt dieser Artikel deine Urheber- oder Persönlichkeitsrechte?
Hast du einen Löschwunsch oder ein anderes Anliegen? Dann nutze bitte unser Kontaktformular

PlusPedia Impressum
Diese Seite mit Freunden teilen:
Mr Wong Digg Delicious Yiggit wikio Twitter
Facebook




Bitte Beachte:
Sämtliche Aussagen auf dieser Seite sind ohne Gewähr.
Für die Richtigkeit der Aussagen übernimmt die Betreiberin keine Verantwortung.
Nach Kenntnissnahme von Fehlern und Rechtsverstößens ist die Betreiberin selbstverständlich bereit,
diese zu beheben.

Verantwortlich für jede einzelne Aussage ist der jeweilige Erstautor dieser Aussage.
Mit dem Ergänzen und Weiterschreiben eines Artikels durch einen anderen Autor
werden die vorhergehenden Aussagen und Inhalte nicht zu eigenen.
Die Weiternutzung und Glaubhaftigkeit der Inhalte ist selbst gegenzurecherchieren.


Typo3 Besucherzähler - Seitwert blog counter
java hosting vpn norway