Verbund (Record)


Mit dem Datentyp Feld haben wir bereits eine Möglichkeit kennengelernt, wie mehrere Variable gemeinsam unter einem Namen abgespeichert werden können. Voraussetzung ist jedoch, dass sie alle den gleichen Datentyp aufweisen. Oft benötigt man aber auch die Möglichkeit Variablen unterschiedlichen Typs gemeinsam abspeichern zu können, z.B. für die Erfassung von Personendaten (Name, Vorname, Geburtsdatum, Anschrift, Telefonnummer, Geschlecht, usw.). Dafür stellen Programmiersprachen einen so genannten Verbund (engl. record) zur Verfügung.

Ein Verbund ist ein strukturierter Datentyp, dessen Elemente aus unterschiedlichen einfachen Datentypen bestehen können. Ein Verbund wird folgendermaßen vereinbart:

type TDatensatz = record

end;

var datensatz: TDatensatz;

Der Zugriff auf die Komponenten eines Verbunds erfolgt durch Nennen der Variable vom Typ Verbund, gefolgt von einem Punkt und dem Namen der Komponente (z.B.: datensatz.name := Meier).


Übung 1

Entwerfen Sie eine Delphi-Oberfläche für die Arbeit mit Brüchen. Es sollen alle vier Grundrechenarten und Kürzen möglich sein. Vereinbaren Sie den Datentyp TBruch als Record mit den Komponenten für Zähler und Nenner.

Schreiben Sie folgende Funktionen:

Hinweise zur Lösung

  1. Gestalten Sie die Oberfläche wie in der folgenden Abbildung!

    Oberfläche Bruchrechnung
  2. Bevor der Button Addition hinterlegt wird, soll im Implementationsteil folgendes bereitgestellt werden: Deklaration eines nutzerdefinierten Datentyps TBruch als Record und entsprechende Variablen.

    type TBruch = record

      z, n : integer;
    end;
    var b1, b2 : TBruch;

  3. Definition einer Funktion zur Berechnung des größten gemeinsamen Teilers:
    function ggt(a, b : integer) : integer;

    Hier soll die Berechnung nach folgendem Struktogramm erfolgen (Verfahren von EUKLID):

    Struktogramm Verfahren von EUKLID
  4. Definition einer Funktion zum Kürzen eines Bruches:
    function kuerzen(b : TBruch) : TBruch;

    Hinweis: Verwenden Sie zur Division den Operator div!

  5. Definition einer Funktion zur Addition zweier Brüche:
    function addbruch(b1, b2 : TBruch) : TBruch;

    Hinweis: Verwenden Sie für die Rückgabe des Funktionswertes die Standardbezeichnung: result vom Typ TBruch!

  6. Definition einer Funktion zum Umwandeln eines Bruches in eine Zeichenkette der Form Zähler / Nenner:
    function BruchToString(b : TBruch) : string[20];
  7. Nachdem alle Funktionen bereitgestellt sind, kann man nun durch Doppelklick auf den Button "Addition" in die Prozedur springen, welche die eigentliche Berechnung realisiert:

    • Einlesen von Zähler und Nenner der beiden Brüche
    • Aufruf der Funktion zur Addition
    • Aufruf der Funktion zum Kürzen des berechneten Bruches
    • Aufruf der Umwandlung eines Bruches in einen String
    • Ausgabe des Ergebnisses
  8. Abschließend können dann die Prozeduren für die anderen Grundrechenarten ergänzt werden.

Musterlösung: uebung01.zip

[Zum Seitenanfang]
Übung 2

Die Angaben zu mehreren Personen (n = 10) sollen in einem Feld gespeichert werden. (type array[1..10] of person).

Ein Datensatz (als Datentyp person = record ...) zum Erfassen persönlicher Daten für eine Person soll enthalten:
die Adresse, bestehend aus Anrede, Vorname, Nachname, PLZ, Ort, Straße_Hausnummer. Innerhalb der Adresse sollen folgende Felder wiederum (als record) zusammengefasst werden:
Vor- und Nachname zu Name
PLZ bis Hausnummer zu Anschrift.

Entwerfen Sie den entsprechenden Record-Typ und verwenden Sie die vorgegebene Delphi-Oberfläche zum Erfassen eines solchen Datensatzes. Die vorgefertigte Oberfläche können Sie hier herunterladen.

Oberfläche Adressenerfassung

Unter dem Button Daten erfassen erfolgt der Aufruf der entsprechenden Prozedur. Schreiben Sie die Prozedur procedure erfassen(var ds:person).

Jeder erfasste Datensatz soll im Feld vom obigen Typ gespeichert werden. Durch Betätigen des Buttons Ausgabe sollen alle Daten im StringGrid erscheinen.

Zusatzaufgabe: Erweitern Sie das Programm um die Möglichkeit des Speicherns und Öffnens der Datensätze in einer separaten Datei. Verwenden Sie dazu die Komponenten SaveDialog und OpenDialog. Informieren Sie sich in der Delphi-Hilfe und / oder in der Fachliteratur bzw. im Internet über die Verwendung dieser Komponenten.

Musterlösung: uebung02.zip

[Zum Seitenanfang]

zuletzt geändert am:
Eine Seite von Mirko Hans