PlusPedia wird derzeit technisch modernisiert. Aktuell laufen Wartungsarbeiten. Für etwaige Unannehmlichkeiten bitten wir um Entschuldigung; es sind aber alle Artikel zugänglich und Sie können PlusPedia genauso nutzen wie immer.

Neue User bitte dringend diese Hinweise lesen:

Anmeldung - E-Mail-Adresse Neue Benutzer benötigen ab sofort eine gültige Email-Adresse. Wenn keine Email ankommt, meldet Euch bitte unter NewU25@PlusPedia.de.

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://)

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.

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

Aggregierter Datentyp: Unterschied zwischen den Versionen

Aus PlusPedia
Zur Navigation springen Zur Suche springen
typo ...
typo ...
Zeile 48: Zeile 48:


=== Funktionen ===
=== Funktionen ===
(partielle) Funktion/Abbildungen: "Eine partille 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."
(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.
Die unabhängige Variable nennt man in der Informatik den Schlüssel - und die abhängige Variable ist der Wert.

Version vom 23. November 2011, 15:40 Uhr

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++ 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()
  • 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


Andere Lexika

Wikipedia kennt dieses Lemma (Aggregierter Datentyp) vermutlich nicht.

---