Als Beispiel für die Beispiel wird eine Tabelle (eindimensionaler Array) einer einfachen Datenstruktur mit Personendaten folgenden Aufbaus verwendet:
|
Oft ist am Beginn einer Entwicklung noch nicht klar, ob es sich lohnt, eine komplexe dynamische Verwaltung für bestimmte Daten einzurichten. Also verzichtet man einfach darauf und richtet eine entsprechend große globale Tabelle ein (nehmen wir an, dass wir mit 200-300 Personen rechnen):
|
Aus der Erfahrung ergibt sich, dass solche Tabellen mit einer gewissen Wahrscheinlichkeit auf eine dynamische Verwaltung umgestellt werden müssen. Für diesen Fall ist es besser, die Größe der Tabelle von vorneherein in einer Variablen (PersonTabDim) zu verwalten und z. B. beim Einfügen zur Kontrolle zu verwenden.
Für den Fall, dass wir eine Tabelle mit fix initialisierten Daten haben, könnte das so aussehen:
|
Wobei das in einem Header plazierte Macro
|
beim Verändern solcher voll ausgefüllter Tabellen die Arbeit des Abzählens erspart, und das Macro
|
auch die (für manche C-Programmierer ebenfalls idiomatischen) Schleifen der Art
|
erlaubt.
Wesentlich ist, dass auch in diesen rudimentären Formen die wichtigen Informationen über die Tabelle (Adressinformation, Dimension, Anzahl der vorhandenen Elemente) schon so gehalten werden, wie sie bei einer späteren Dynamisierung benötigt werden.
Man kann also z. B. schon Operationen programmieren, deren Schleifenbearbeitung oder Overflow-Check
|
|
sich nicht von späteren dynamischen Varianten unterscheidet.
Dabei ist es ziemlich egal, ob die drei Variablen getrennt bleiben:
|
oder zu einer objektartigen Struktur zusammengefasst werden:
|
oder zu einem Datenverwaltungsobjekt mit variabler Objektgröße abstrahiert werden:
|
Die interessante Operationen für solche Tabellen sind das unsortierte Einfügen (Append), das gezielte Löschen, das Sortieren, das gezielte Einfügen (Insert mit Positionsangabe) und die automatische Größenveränderung solcher Tabellen. Eventuell auch das Suchen bzw. die Erweiterung solcher Tabellen in Richtung auf Hash-Zugriff.
ToDo IN ARBEIT -- HelmutLeitner