PlusPedia wird derzeit technisch modernisiert. Wie alles, was bei laufendem Betrieb bearbeitet wird, kann es auch hier zu zeitweisen Ausfällen bestimmter Funktionen kommen. Es sind aber alle Artikel zugänglich, Sie können PlusPedia genauso nutzen wie immer.
Bei PlusPedia sind Sie sicher: – Wir verarbeiten keine personenbezogenen Daten, erlauben umfassend anonyme Mitarbeit und erfüllen die Datenschutz-Grundverordnung (DSGVO) vollumfänglich. Es haftet der Vorsitzende des Trägervereins.
Bitte beachten: Aktuell können sich keine neuen Benutzer registrieren. Wir beheben das Problem so schnell wie möglich.
PlusPedia blüht wieder auf als freundliches deutsches Lexikon.
Wir haben auf die neue Version 1.43.3 aktualisiert.
Wir haben SSL aktiviert.
Hier geht es zu den aktuellen Aktuelle Ereignissen
Hinweis zur Passwortsicherheit:
Bitte nutzen Sie Ihr PlusPedia-Passwort nur bei PlusPedia.
Wenn Sie Ihr PlusPedia-Passwort andernorts nutzen, ändern Sie es bitte DORT bis unsere Modernisierung abgeschlossen ist.
Überall wo es sensibel, sollte man generell immer unterschiedliche Passworte verwenden! Das gilt hier und im gesamten Internet.
Aus Gründen der Sicherheit (PlusPedia hatte bis 24.07.2025 kein SSL | https://)
Aggregierter Datentyp
Das Ziel eines Aggregierten Datentyps ist es mehrere Objekte unter einem Namen zusammenzufassen und ansprechen zu können.
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)
Top-Down-Sicht: Konstrukoren
In der Mathematik gibt es
- Mengen
- Tupel
- Relationen und Funktionen
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:
- ∈ ∉ ∩ ∪ ⊂ ⊃ ⊆ ⊇ \ Δ
Tupel
- Tupel sind eine endliche Liste
- Auf ein Tuppel kann über einen Index zugegriffen werden
- x(i,j)
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}
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 |
Wichtige Datenstrukturen
- Liste
- Array
- Stapel
- Schlange
- Graph
- Menge
- Abbildung
- Verbund
In den verschiedenen Programmiersprachen
In Python
In Python gibt es
- None
- Elementare
- Kollektionen
- Mengen
- frozenset()
- set()
- Sequenzen
- string
- tupel()
- list()
- Abbildungen
- dictionary()
- Mengen
- aufrufbar
- Prozeduren
- Klassen
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. |
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.
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)
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 | |
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.
Links und Quellen
Siehe auch
Weblinks
Quellen
Literatur
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."
Andere Lexika
Wikipedia kennt dieses Lemma (Aggregierter Datentyp) vermutlich nicht.
---