Aggregierter Datentyp
Das Ziel eines Aggregierten Datentyps ist es mehrere Objekte unter einem Namen zusammenzufassen und ansprechen zu können.
Inhaltsverzeichnis
Ü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()
- Mengen
- 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
- ↑ 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.
---
Hast du einen Löschwunsch oder ein anderes Anliegen? Dann nutze bitte unser Kontaktformular
PlusPedia Impressum
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.