69
Datenstrukturen Datenstrukturen Klaus Becker (2002)

Datenstrukturen Klaus Becker (2002). KB Datenstrukturen 2 Übersicht Teil 1: Die Datenstruktur Reihung Teil 2: Die Datenstruktur Verbund Teil 3: Die Datenstruktur

Embed Size (px)

Citation preview

Page 1: Datenstrukturen Klaus Becker (2002). KB Datenstrukturen 2 Übersicht Teil 1: Die Datenstruktur Reihung Teil 2: Die Datenstruktur Verbund Teil 3: Die Datenstruktur

DatenstrukturenDatenstrukturen

Klaus Becker(2002)

Page 2: Datenstrukturen Klaus Becker (2002). KB Datenstrukturen 2 Übersicht Teil 1: Die Datenstruktur Reihung Teil 2: Die Datenstruktur Verbund Teil 3: Die Datenstruktur

2

KB

Date

nst

ruktu

renÜbersichtÜbersicht

Teil 1: Die Datenstruktur „Reihung“

Teil 2: Die Datenstruktur „Verbund“

Teil 3: Die Datenstruktur „Datei“

Teil 4: Zusammenfassung und Ausblick

Page 3: Datenstrukturen Klaus Becker (2002). KB Datenstrukturen 2 Übersicht Teil 1: Die Datenstruktur Reihung Teil 2: Die Datenstruktur Verbund Teil 3: Die Datenstruktur

3

KB

Date

nst

ruktu

ren

Teil 1Teil 1

Die Datenstruktur „Reihung“

Page 4: Datenstrukturen Klaus Becker (2002). KB Datenstrukturen 2 Übersicht Teil 1: Die Datenstruktur Reihung Teil 2: Die Datenstruktur Verbund Teil 3: Die Datenstruktur

4

KB

Date

nst

ruktu

ren

LottoLotto

Page 5: Datenstrukturen Klaus Becker (2002). KB Datenstrukturen 2 Übersicht Teil 1: Die Datenstruktur Reihung Teil 2: Die Datenstruktur Verbund Teil 3: Die Datenstruktur

5

KB

Date

nst

ruktu

ren

ProblembeschreibungProblembeschreibung

Ziel:Mit Hilfe eines Programms soll das Ausfüllen von Lottoscheinen, die Ziehung der Lottozahlen und die Auswertung des Lottoscheins simuliert werden.

Anforderungen an das zu entwickelnde System:- Der Benutzer kann (wie bei einem richtigen Lottoschein) auf einem Tippzettel Zahlen ankreuzen.- Per Mausklick wird eine Ziehung der Lottozahlen simuliert.- Die Anzahl der Richtigen wird bestimmt und dem Benutzer mitgeteilt.

(vgl. auch U. Mayr: informatikag.bildung-rp.de/html/delphi_teil_1.html)

Ziel:Mit Hilfe eines Programms soll das Ausfüllen von Lottoscheinen, die Ziehung der Lottozahlen und die Auswertung des Lottoscheins simuliert werden.

Anforderungen an das zu entwickelnde System:- Der Benutzer kann (wie bei einem richtigen Lottoschein) auf einem Tippzettel Zahlen ankreuzen.- Per Mausklick wird eine Ziehung der Lottozahlen simuliert.- Die Anzahl der Richtigen wird bestimmt und dem Benutzer mitgeteilt.

(vgl. auch U. Mayr: informatikag.bildung-rp.de/html/delphi_teil_1.html)

Page 6: Datenstrukturen Klaus Becker (2002). KB Datenstrukturen 2 Übersicht Teil 1: Die Datenstruktur Reihung Teil 2: Die Datenstruktur Verbund Teil 3: Die Datenstruktur

6

KB

Date

nst

ruktu

ren

BenutzungsoberflächeBenutzungsoberfläche

CheckBox3: TCheckBox

Bziehung: TButton

PZiehung: TPanel

PAuswertung:

TPanelPTipp: TPanel

BNeu: TButton

Page 7: Datenstrukturen Klaus Becker (2002). KB Datenstrukturen 2 Übersicht Teil 1: Die Datenstruktur Reihung Teil 2: Die Datenstruktur Verbund Teil 3: Die Datenstruktur

7

KB

Date

nst

ruktu

ren

EreignisbehandlungEreignisbehandlung

Ereignisse:

Mausklick auf CheckBox-Element

Mausklick auf Ziehung-Button

Mausklick auf Neu-Button

Programmstart

Aktionen:

Die entsprechende Zahl wird im Tipp aufgenommen und angezeigt.

Es wird eine Ziehung der Lottozahlen simuliert. Das Ergebnis der Ziehung wird angezeigt. Der Tipp wird ausgewertet und die Anzahl der Richtigen angezeigt.

Ein neuer Tippzettel wird vorbereitet (keine Zahl angekreuzt). Die alten Ziehungsergebnisse werden gelöscht.

Initialisierung der Zustandsvariablen

Lotto - Benutzungsoberfläche

Page 8: Datenstrukturen Klaus Becker (2002). KB Datenstrukturen 2 Übersicht Teil 1: Die Datenstruktur Reihung Teil 2: Die Datenstruktur Verbund Teil 3: Die Datenstruktur

8

KB

Date

nst

ruktu

ren

EreignisbehandlungEreignisbehandlung

Ereignisse:

Mausklick auf CheckBox-Element

Mausklick auf Ziehung-Button

Mausklick auf Neu-Button

Programmstart

Aktionen:

Die entsprechende Zahl wird im Tipp aufgenommen und angezeigt, sofern der Tipp noch keine 6 Zahlen enthält.

Es wird eine Ziehung der Lottozahlen simuliert. Das Ergebnis der Ziehung wird angezeigt. Der Tipp wird ausgewertet und die Anzahl der Richtigen angezeigt.

Ein neuer Tippzettel wird vorbereitet (keine Zahl angekreuzt). Die alten Ziehungsergebnisse werden gelöscht.

Initialisierung der Zustandsvariablen

Verbesserungsmöglichkeit

Page 9: Datenstrukturen Klaus Becker (2002). KB Datenstrukturen 2 Übersicht Teil 1: Die Datenstruktur Reihung Teil 2: Die Datenstruktur Verbund Teil 3: Die Datenstruktur

9

KB

Date

nst

ruktu

ren

Datenmodellierung – Version 1Datenmodellierung – Version 1

Lottoziehung: 2; 21; 25; 33; 43; 45

Schwierigkeit:

Das Erstellen von Algorithmen zur Datenverarbeitung erfordert viel Schreibaufwand: gleiche Anweisungen für strukturgleiche Variablen.

type tLottozahl = 1..49;

var Zahl1 : tLottozahl; Zahl2 : tLottozahl; Zahl3 : tLottozahl; Zahl4 : tLottozahl; Zahl5 : tLottozahl; Zahl6 : tLottozahl;

21

Zahl2:

2Zahl1:

33

Zahl4:

25

Zahl3:

45

Zahl6:

43

Zahl5:

Deklaration: Variablenzustand:

Page 10: Datenstrukturen Klaus Becker (2002). KB Datenstrukturen 2 Übersicht Teil 1: Die Datenstruktur Reihung Teil 2: Die Datenstruktur Verbund Teil 3: Die Datenstruktur

10

KB

Date

nst

ruktu

ren

Datenmodellierung – Version 2Datenmodellierung – Version 2

Lottoziehung: 2; 21; 25; 33; 43; 45

Reihung / Array / Feld:

Eine Reihung fasst strukturgleiche Daten zu einer Einheit zusammen. Auf die einzelnen Elemente der Reihung wird über einen Index zugegriffen.

21

Zahl2:

2Zahl1:

33

Zahl4:

25

Zahl3:

45

Zahl6:

43

Zahl5:

Variablenzustand:

2Ziehung: 21

25

33

43

451 2 3 4 5 6

Reihung

Element

Index

Page 11: Datenstrukturen Klaus Becker (2002). KB Datenstrukturen 2 Übersicht Teil 1: Die Datenstruktur Reihung Teil 2: Die Datenstruktur Verbund Teil 3: Die Datenstruktur

11

KB

Date

nst

ruktu

ren

Deklaration einer ReihungDeklaration einer Reihung

Lottoziehung: 2; 21; 25; 33; 43; 45

...Ziehung: ... ... ... ... ...

1 2 3 4 5 6

type tLottozahl = 1..49; tZiehung = array[1..6] of tLottozahl;

var Ziehung : tZiehung;

Deklaration:

Variablenzustand:

Syntax:

array [ <Indexbereich> ] of <Elementtyp>

Page 12: Datenstrukturen Klaus Becker (2002). KB Datenstrukturen 2 Übersicht Teil 1: Die Datenstruktur Reihung Teil 2: Die Datenstruktur Verbund Teil 3: Die Datenstruktur

12

KB

Date

nst

ruktu

ren

Verarbeitung einer ReihungVerarbeitung einer Reihung

type tLottozahl = 1..49; tZiehung = array [1..6] of tLottozahl;

var Ziehung, Tipp: tZiehung;

Deklaration:

Zugriff auf die Elemente:

Ziehung[1] := random(49)+1;if Ziehung[1] = Tipp[1] then ...

Kopieren ganzer Reihungen:

Tipp := Ziehung;

Ein Vergleich ganzer Reihungen ist so nicht möglich:

if Tipp = Ziehung then ...

Page 13: Datenstrukturen Klaus Becker (2002). KB Datenstrukturen 2 Übersicht Teil 1: Die Datenstruktur Reihung Teil 2: Die Datenstruktur Verbund Teil 3: Die Datenstruktur

13

KB

Date

nst

ruktu

ren

Ziehung der LottozahlenZiehung der Lottozahlen

type tLottozahl = 1..49; tZiehung = array [1..6] of tLottozahl;

var Ziehung, Tipp: tZiehung;

Deklaration:

Algorithmus:

randomize;

for i := 1 to 6 do

Ziehung[i] := random(49)+1;

Beachte: Der Algorithmus ist nicht korrekt.

Typische Schleifenstrukt

ur

Page 14: Datenstrukturen Klaus Becker (2002). KB Datenstrukturen 2 Übersicht Teil 1: Die Datenstruktur Reihung Teil 2: Die Datenstruktur Verbund Teil 3: Die Datenstruktur

14

KB

Date

nst

ruktu

ren

Alternatives DatenmodellAlternatives Datenmodell

Lottoziehung: 2; 21; 25; 33; 43; 45

fZiehung: t f f f f

1 2 3 4 5 6

type tZiehung = array [1..49] of boolean;

var Ziehung : tZiehung;

Deklaration:

Datenmodell:

... f t f f f f

44

45

46

47

48

49

...

Page 15: Datenstrukturen Klaus Becker (2002). KB Datenstrukturen 2 Übersicht Teil 1: Die Datenstruktur Reihung Teil 2: Die Datenstruktur Verbund Teil 3: Die Datenstruktur

15

KB

Date

nst

ruktu

ren

Übungen: Aufgabe 1Übungen: Aufgabe 1

Erstellen Sie einen (korrekten) Algorithmus zur Simulation der Ziehung der Lottozahlen.

- Überlegen Sie sich zunächst den gewünschten Ablauf.

- Beschreiben Sie ihn anschließend mit geeigneten Kontrollstrukturen und Anweisungen.

Gehen Sie von folgender Modellierung aus:

type tZiehung = array [1..49] of boolean;

var Ziehung: tZiehung;

procedure Lottoziehung;begin...end;

Page 16: Datenstrukturen Klaus Becker (2002). KB Datenstrukturen 2 Übersicht Teil 1: Die Datenstruktur Reihung Teil 2: Die Datenstruktur Verbund Teil 3: Die Datenstruktur

16

KB

Date

nst

ruktu

ren

LösungsvorschlagLösungsvorschlag

Page 17: Datenstrukturen Klaus Becker (2002). KB Datenstrukturen 2 Übersicht Teil 1: Die Datenstruktur Reihung Teil 2: Die Datenstruktur Verbund Teil 3: Die Datenstruktur

17

KB

Date

nst

ruktu

ren

Übungen: Aufgabe 2Übungen: Aufgabe 2

Erstellen Sie einen Algorithmus zur Auswertung eines Tipps bzgl. einer Lottoziehung.

- Überlegen Sie sich zunächst den gewünschten Ablauf.

- Beschreiben Sie ihn anschließend mit geeigneten Kontrollstrukturen und Anweisungen.

Gehen Sie von folgender Modellierung aus:

type tZiehung = array [1..49] of boolean;

var Tipp : tZiehung; Ziehung : tZiehung; Richtige : integer;

procedure Auswertung;begin...end;

Page 18: Datenstrukturen Klaus Becker (2002). KB Datenstrukturen 2 Übersicht Teil 1: Die Datenstruktur Reihung Teil 2: Die Datenstruktur Verbund Teil 3: Die Datenstruktur

18

KB

Date

nst

ruktu

ren

LösungsvorschlagLösungsvorschlag

Page 19: Datenstrukturen Klaus Becker (2002). KB Datenstrukturen 2 Übersicht Teil 1: Die Datenstruktur Reihung Teil 2: Die Datenstruktur Verbund Teil 3: Die Datenstruktur

19

KB

Date

nst

ruktu

ren

Aufgabe 1 – LösungsvorschlagAufgabe 1 – Lösungsvorschlag

type tZiehung = array [1..49] of boolean;

var Ziehung: tZiehung;

procedure Lottoziehung; var i: integer; n: integer; h: integer;beginrandomize;for i := 1 to 49 do Ziehung[i] := false;for n := 1 to 6 do begin repeat h := random(49)+1; until Ziehung[h] = false; Ziehung[h] := true; end;end;

Page 20: Datenstrukturen Klaus Becker (2002). KB Datenstrukturen 2 Übersicht Teil 1: Die Datenstruktur Reihung Teil 2: Die Datenstruktur Verbund Teil 3: Die Datenstruktur

20

KB

Date

nst

ruktu

ren

Aufgabe 2 – LösungsvorschlagAufgabe 2 – Lösungsvorschlag

type tZiehung = array [1..49] of boolean;

var Tipp : tZiehung; Ziehung : tZiehung; Richtige : integer;

procedure Auswertung; var i: integer;beginRichtige := 0;for i := 1 to 49 do if Tipp[i] and Ziehung[i] then inc(Richtige);end;

Page 21: Datenstrukturen Klaus Becker (2002). KB Datenstrukturen 2 Übersicht Teil 1: Die Datenstruktur Reihung Teil 2: Die Datenstruktur Verbund Teil 3: Die Datenstruktur

21

KB

Date

nst

ruktu

ren

Ein Objektmodell für den TippzettelEin Objektmodell für den Tippzettel

type

TForm1 = class(TForm) GBTippzettel: TGroupBox; PTipp: TPanel; CheckBox1: TCheckBox; CheckBox2: TCheckBox; CheckBox3: TCheckBox; CheckBox4: TCheckBox; ...

CheckBox1: TCheckBoxAttribute

Caption : 1

Enabled : true

State : cbUnchecked

...Ereignisse

OnClick: CheckBoxClick

...Methoden

...

Beachte:

Allen TCheckBox-Objekten ist dieselbe Ereignisbehandlungs-methode zugewiesen.

Page 22: Datenstrukturen Klaus Becker (2002). KB Datenstrukturen 2 Übersicht Teil 1: Die Datenstruktur Reihung Teil 2: Die Datenstruktur Verbund Teil 3: Die Datenstruktur

22

KB

Date

nst

ruktu

ren

EreignisbehandlungEreignisbehandlung

procedure TForm1.CheckBoxClick(Sender: TObject); var CB : TCheckBox; Ausgabe : string; i : integer; Zahl : integer;

begin// Aktualisierung des DatenmodellsCB := TCheckBox(Sender); Zahl := StrToInt(CB.Caption); KreuzUebernehmen(Zahl);// Aktualisierung der BenutzungsoberflächeAusgabe := '';for i := 1 to 49 do if Tipp[i] then Ausgabe := Ausgabe + ' ' + IntToStr(i);PTipp.Caption := Ausgabe;end;

Page 23: Datenstrukturen Klaus Becker (2002). KB Datenstrukturen 2 Übersicht Teil 1: Die Datenstruktur Reihung Teil 2: Die Datenstruktur Verbund Teil 3: Die Datenstruktur

23

KB

Date

nst

ruktu

ren

Übungen: Aufgabe 3 (Pflicht) Übungen: Aufgabe 3 (Pflicht)

Implementieren Sie die entwickelten Prozeduren und Methoden.

Zur Kontrolle:

Lotto – Version 1

Page 24: Datenstrukturen Klaus Becker (2002). KB Datenstrukturen 2 Übersicht Teil 1: Die Datenstruktur Reihung Teil 2: Die Datenstruktur Verbund Teil 3: Die Datenstruktur

24

KB

Date

nst

ruktu

ren

Exkurs: Objekt-ReihungExkurs: Objekt-Reihung

type

TForm1 = class(TForm) GBTippzettel: TGroupBox; PTipp: TPanel; ... procedure CheckBoxClick(Sender: TObject); procedure FormCreate(Sender: TObject);

private { Private-Deklarationen }

CheckBox: array[1..49] of TCheckBox;

public { Public-Deklarationen }

end;

CheckBox1

CheckBox:

1

...

CheckBox2

2

CheckBox49

49

Reihung mit TCheckBox-Elementen:

Page 25: Datenstrukturen Klaus Becker (2002). KB Datenstrukturen 2 Übersicht Teil 1: Die Datenstruktur Reihung Teil 2: Die Datenstruktur Verbund Teil 3: Die Datenstruktur

25

KB

Date

nst

ruktu

ren

Dynamische ErzeugungDynamische Erzeugung

procedure TForm1.FormCreate(Sender: TObject); var i: integer; Name: string;

begin// Initialisierung des DatenmodellsInitialisierung;// Erzeugung der TCheckBox-Objektefor i := 1 to 49 do begin CheckBox[i] := TCheckBox.Create(self); // Owner CheckBox[i].Name := 'CheckBox' + IntToStr(i); CheckBox[i].Caption := IntToStr(i); CheckBox[i].Checked := false; CheckBox[i].Parent := GBTippzettel; // übergeordn. Obj. CheckBox[i].Top := 32 +((i-1) div 7) * 40; CheckBox[i].Left := 24 + ((i-1) mod 7) * 40; CheckBox[i].Height := 25; CheckBox[i].Width := 33; CheckBox[i].OnClick := CheckBoxClick; end;end; Lotto – Version 2

Page 26: Datenstrukturen Klaus Becker (2002). KB Datenstrukturen 2 Übersicht Teil 1: Die Datenstruktur Reihung Teil 2: Die Datenstruktur Verbund Teil 3: Die Datenstruktur

26

KB

Date

nst

ruktu

ren

Übungen: Aufgabe 4 (Additum)Übungen: Aufgabe 4 (Additum)

Folgende Verbesserungen sind für die Ziehung der Lottozahlen und die Festlegung der Tippzahlen wünschenswert:

Man kann erst ziehen, wenn der Tippzettel ausgefüllt ist.

Beim „Ankreuzen“ des Tippzettels werden nach dem 6. Kreuz alle TCheckBox-Elemente deaktiviert (d. h.: es ist kein weiteres Ankreuzen möglich).

Man kann „Kreuze“ auch wieder entfernen (d. h. man kann Tippzahlen auch ändern).

Hinweis:Erstellen Sie zur Ablaufmodellierung zunächst einen Automaten.

Lotto – Version 3

Page 27: Datenstrukturen Klaus Becker (2002). KB Datenstrukturen 2 Übersicht Teil 1: Die Datenstruktur Reihung Teil 2: Die Datenstruktur Verbund Teil 3: Die Datenstruktur

27

KB

Date

nst

ruktu

ren

Aufgabe 4 - LösungsvorschlagAufgabe 4 - Lösungsvorschlag

CheckBox[i].OnClick [CheckBox[i].Checked=true]/ Tipp[Zahl] := true

0 1

Form1.OnCreate

CheckBox[i].OnClick [CheckBox[i].Checked=false]/ Tipp[Zahl] := false

Page 28: Datenstrukturen Klaus Becker (2002). KB Datenstrukturen 2 Übersicht Teil 1: Die Datenstruktur Reihung Teil 2: Die Datenstruktur Verbund Teil 3: Die Datenstruktur

28

KB

Date

nst

ruktu

ren

Aufgabe 4 - LösungsvorschlagAufgabe 4 - Lösungsvorschlag

CheckBox[i].OnClick [CheckBox[i].Checked=true]/ Tipp[Zahl] := truealle nicht-checked-Felder werden deaktiviert

5 6

CheckBox[i].OnClick [CheckBox[i].Checked=false]/ Tipp[Zahl] := falsealle deaktivierten Felder werden freigegeben

Page 29: Datenstrukturen Klaus Becker (2002). KB Datenstrukturen 2 Übersicht Teil 1: Die Datenstruktur Reihung Teil 2: Die Datenstruktur Verbund Teil 3: Die Datenstruktur

29

KB

Date

nst

ruktu

ren

Übungen – Aufgabe 5Übungen – Aufgabe 5

Zahlenreihung 1

Das System soll folgende Funktionalitäten zur Verfügung stellen:

Ereignisse:

Mausklick auf Erzeuge-Button

Mausklick auf Min/Max-Button

Mausklick auf Position-Button

Aktionen:

Es wird eine Reihung aus 20 integer-Zahlen mit dem Zufallsgenerator erzeugt.

Die kleinste und die größte Zahl der Reihung werden bestimmt und angezeigt.

Die Positionen der kleinsten und größten Zahl werden bestimmt und angezeigt.MinMax

Page 30: Datenstrukturen Klaus Becker (2002). KB Datenstrukturen 2 Übersicht Teil 1: Die Datenstruktur Reihung Teil 2: Die Datenstruktur Verbund Teil 3: Die Datenstruktur

30

KB

Date

nst

ruktu

ren

Übungen – Aufgabe 6Übungen – Aufgabe 6

Zahlenreihung 2

Es soll ein System entwickelt werden, mit dessen Hilfe man Würfelserien auswerten kann.

Mit Hilfe geeigneter Komponenten werden die einzelnen Würfelergebnisse und / oder die statistische Auswertung (absolute Häufigkeiten) angezeigt.

Page 31: Datenstrukturen Klaus Becker (2002). KB Datenstrukturen 2 Übersicht Teil 1: Die Datenstruktur Reihung Teil 2: Die Datenstruktur Verbund Teil 3: Die Datenstruktur

31

KB

Date

nst

ruktu

ren

Übungen – Aufgabe 7Übungen – Aufgabe 7

Textanalyse

In einem Text (der nur aus Großbuchstaben besteht und keine Umlaute und Sonderzeichen enthält) soll die Häufigkeit der jeweiligen Buchstaben bestimmt werden.

Entwerfen Sie zunächst eine geeignete Datenstruktur.

Entwickeln Sie anschließend einen Zählalgorithmus.

Implementieren Sie abschließend die entwickelten Strukturen.

Chiffrierung5

Page 32: Datenstrukturen Klaus Becker (2002). KB Datenstrukturen 2 Übersicht Teil 1: Die Datenstruktur Reihung Teil 2: Die Datenstruktur Verbund Teil 3: Die Datenstruktur

32

KB

Date

nst

ruktu

ren

Übungen – Aufgabe 8Übungen – Aufgabe 8

Monoalphabetische Chiffrierungen

Die Caesar-Chiffrierung ist sehr leicht zu entschlüsseln. Schwieriger wird es, wenn man eine kompliziertere Kodierung der Buchstaben wählt. Man könnte z. B. die Kodierung mit dem Zufallsgenerator erzeugen. Eine andere gute Möglichkeit funktioniert wie folgt: Man wählt ein (langes) Schlüsselwort, z. B. SCHOKOLADENOSTERHASE. Dann streicht man alle mehrfach vorkommenden Buchstaben: SCHOKLADENTR. Abschließend füllt man ab der letzten Stelle mit den noch zur Verfügung stehenden Buchstaben gemäß dem Alphabet auf. Ergebnis:

A B C D E F G H I J K L M N O P Q R S T U V W X Y Z

S C H O K L A D E N T R U V W X Y Z B F G I J M P Q

Klartextalphabet

Geheimtextalphabet

Entwickeln Sie ein Programm, mit dem man solche Chiffrierungen erzeugen kann und mit deren Hilfe man Texte ver- und entschlüsseln kann. Chiffrierung2

Page 33: Datenstrukturen Klaus Becker (2002). KB Datenstrukturen 2 Übersicht Teil 1: Die Datenstruktur Reihung Teil 2: Die Datenstruktur Verbund Teil 3: Die Datenstruktur

33

KB

Date

nst

ruktu

ren

Aufgabe 5 - LösungsvorschlagAufgabe 5 - Lösungsvorschlag

Datenmodellierung:

const

anzahl = 20;

grenze = 99;

type

tBereich = 0..grenze;

tZahlen = array [1..anzahl] of tBereich;

var

Zahlen : tZahlen;

min, max : tBereich;

minpos, maxpos : 1..anzahl;

Page 34: Datenstrukturen Klaus Becker (2002). KB Datenstrukturen 2 Übersicht Teil 1: Die Datenstruktur Reihung Teil 2: Die Datenstruktur Verbund Teil 3: Die Datenstruktur

34

KB

Date

nst

ruktu

ren

Aufgabe 5 - LösungsvorschlagAufgabe 5 - Lösungsvorschlag

Operation: Erzeugung der Zahlenreihe

procedure ZahlenErzeugen;

var i: integer;

begin

randomize;

for i := 1 to anzahl do

Zahlen[i] := random(grenze+1);

end;

Operation: Bestimmung des Minimums und seiner Position

procedure MinBerechnung;

var i: integer;

begin

min := Zahlen[1];

minpos := 1;

for i := 2 to anzahl do

if Zahlen[i] < min then

begin

min := Zahlen[i];

minpos := i;

end;

end;

Page 35: Datenstrukturen Klaus Becker (2002). KB Datenstrukturen 2 Übersicht Teil 1: Die Datenstruktur Reihung Teil 2: Die Datenstruktur Verbund Teil 3: Die Datenstruktur

35

KB

Date

nst

ruktu

ren

Aufgabe 6 - LösungsvorschlagAufgabe 6 - Lösungsvorschlag

Datenmodellierung:

const

max = 100;

type

tAugen = 1..6;

tSerie = array [1..max] of tAugen;

tStatistik = array [tAugen] of integer;

var

Serie : tSerie;

Statistik : tStatistik;

Page 36: Datenstrukturen Klaus Becker (2002). KB Datenstrukturen 2 Übersicht Teil 1: Die Datenstruktur Reihung Teil 2: Die Datenstruktur Verbund Teil 3: Die Datenstruktur

36

KB

Date

nst

ruktu

ren

Aufgabe 6 - LösungsvorschlagAufgabe 6 - Lösungsvorschlag

Operation: Erzeugung der Würfelserie

procedure SerieErzeugen;

var i: integer;

begin

randomize;

for i := 1 to max do

Serie[i] := random(6)+1;

end;

Operation: Auswertung der Würfelserie

procedure SerieAuswerten;

var

augen, i: integer;

begin

for augen := 1 to 6 do

Statistik[augen] := 0;

for i := 1 to max do

inc(Statistik[Serie[i]]);

end;

Page 37: Datenstrukturen Klaus Becker (2002). KB Datenstrukturen 2 Übersicht Teil 1: Die Datenstruktur Reihung Teil 2: Die Datenstruktur Verbund Teil 3: Die Datenstruktur

37

KB

Date

nst

ruktu

ren

Teil 2Teil 2

Die Datenstruktur „Verbund“

Page 38: Datenstrukturen Klaus Becker (2002). KB Datenstrukturen 2 Übersicht Teil 1: Die Datenstruktur Reihung Teil 2: Die Datenstruktur Verbund Teil 3: Die Datenstruktur

38

KB

Date

nst

ruktu

ren

E-Mail-AdressbuchE-Mail-Adressbuch

Page 39: Datenstrukturen Klaus Becker (2002). KB Datenstrukturen 2 Übersicht Teil 1: Die Datenstruktur Reihung Teil 2: Die Datenstruktur Verbund Teil 3: Die Datenstruktur

39

KB

Date

nst

ruktu

ren

ProblembeschreibungProblembeschreibung

Ziel:Es soll ein Programm entwickelt werden, mit dessen Hilfe man E-Mail-Adressen verwalten kann.

Anforderungen an das zu entwickelnde System:- Der Benutzer kann ein Verzeichnis mit Namen und zugehörigen E-Mail-Adressen erstellen.- Man kann jederzeit weitere Adressen eingeben, bereits eingegebene Adressen abändern und auch Einträge im Verzeichnis wieder löschen.- Das erstellte Verzeichnis kann abgespeichert und wieder geladen werden.- ...

Ziel:Es soll ein Programm entwickelt werden, mit dessen Hilfe man E-Mail-Adressen verwalten kann.

Anforderungen an das zu entwickelnde System:- Der Benutzer kann ein Verzeichnis mit Namen und zugehörigen E-Mail-Adressen erstellen.- Man kann jederzeit weitere Adressen eingeben, bereits eingegebene Adressen abändern und auch Einträge im Verzeichnis wieder löschen.- Das erstellte Verzeichnis kann abgespeichert und wieder geladen werden.- ...

Page 40: Datenstrukturen Klaus Becker (2002). KB Datenstrukturen 2 Übersicht Teil 1: Die Datenstruktur Reihung Teil 2: Die Datenstruktur Verbund Teil 3: Die Datenstruktur

40

KB

Date

nst

ruktu

ren

Eine einfache BenutzungsoberflächeEine einfache Benutzungsoberfläche

Page 41: Datenstrukturen Klaus Becker (2002). KB Datenstrukturen 2 Übersicht Teil 1: Die Datenstruktur Reihung Teil 2: Die Datenstruktur Verbund Teil 3: Die Datenstruktur

41

KB

Date

nst

ruktu

ren

DatenmodellierungDatenmodellierung

Peter [email protected]

Datenstruktur:

KatharinaSchmitt [email protected]

Müller

Renate [email protected]

Meier

...

Verschiedene Datentypen

Gleich strukturiert

eDaten

kurzer String

kurzer String

langer String

Page 42: Datenstrukturen Klaus Becker (2002). KB Datenstrukturen 2 Übersicht Teil 1: Die Datenstruktur Reihung Teil 2: Die Datenstruktur Verbund Teil 3: Die Datenstruktur

42

KB

Date

nst

ruktu

renVerbundVerbund

Renate [email protected]

Meier

Vorname EmailName

Datensatz:

Verbund

Komponente

Name der Komponen

te

Verbund:

Ein Verbund fasst Daten, die unterschiedlichen Typs sein können, zu einer Einheit zusammen. Auf die Komponenten wird über einen Namen zugegriffen.

Page 43: Datenstrukturen Klaus Becker (2002). KB Datenstrukturen 2 Übersicht Teil 1: Die Datenstruktur Reihung Teil 2: Die Datenstruktur Verbund Teil 3: Die Datenstruktur

43

KB

Date

nst

ruktu

ren

Deklaration eines VerbundesDeklaration eines Verbundes

type tDatensatz = record Name : string[20]; Vorname : string[20]; Email : string[40]; end;var Datensatz : tDatensatz;

Deklaration:

Variablenzustand:

Syntax:

record <Komp1> : <Typ1>; <Komp2> : <Typ2>; ... end

Renate [email protected]

Meier

Vorname EmailName

Datensatz:

Page 44: Datenstrukturen Klaus Becker (2002). KB Datenstrukturen 2 Übersicht Teil 1: Die Datenstruktur Reihung Teil 2: Die Datenstruktur Verbund Teil 3: Die Datenstruktur

44

KB

Date

nst

ruktu

ren

Verarbeitung eines VerbundesVerarbeitung eines VerbundesDeklaration:

Zugriff auf Komponenten:

Datensatz.Name := 'Meier';Datensatz.Vorname := 'Renate';Datensatz.Email := '[email protected]';

Zugriff mit der With-Anweisung:

with Datensatz do begin Name := 'Meier'; Vorname := 'Renate'; Email := '[email protected]'; end;

type tDatensatz = record Name : string[20]; Vorname : string[20]; Email : string[40]; end;var Datensatz : tDatensatz;

Page 45: Datenstrukturen Klaus Becker (2002). KB Datenstrukturen 2 Übersicht Teil 1: Die Datenstruktur Reihung Teil 2: Die Datenstruktur Verbund Teil 3: Die Datenstruktur

45

KB

Date

nst

ruktu

ren

Verarbeitung eines VerbundesVerarbeitung eines VerbundesDeklaration:

Kopieren ganzer Verbunde:

Datensatz2 := Datensatz1;

Ein Vergleich ganzer Felder ist so nicht möglich:

if Datensatz1 = Datensatz2 then ...

type tDatensatz = record Name : string[20]; Vorname : string[20]; Email : string[40]; end;var Datensatz1, Datensatz2 : tDatensatz;

Page 46: Datenstrukturen Klaus Becker (2002). KB Datenstrukturen 2 Übersicht Teil 1: Die Datenstruktur Reihung Teil 2: Die Datenstruktur Verbund Teil 3: Die Datenstruktur

46

KB

Date

nst

ruktu

ren

DatenmodellDatenmodell

const max = 100;

type tDatensatz = record ... end; tVerzeichnis = array [1..max] of tDatensatz;

var Verzeichnis : tVerzeichnis; Stand : 0..max;

Deklaration:

Variablenzustand:

Katharina [email protected]

SchmittVerzeichnis:

Peter [email protected]üller

...

Renate [email protected]

Meier

1

2

...

max

6

Stand: 6

Page 47: Datenstrukturen Klaus Becker (2002). KB Datenstrukturen 2 Übersicht Teil 1: Die Datenstruktur Reihung Teil 2: Die Datenstruktur Verbund Teil 3: Die Datenstruktur

47

KB

Date

nst

ruktu

ren

Übungen: Aufgabe 9Übungen: Aufgabe 9

Gehen Sie beim Entwickeln und Erstellen des Programms schrittweise wie folgt vor. Testen Sie nach jedem Schritt, ob das Programm das tut, was es tun soll. Schritt 0 können Sie (wenn Sie wollen) auslassen und stattdessen die vorbereitete Benutzungsoberfläche benutzen.

Schritt 0: BenutzungsoberflächeEntwerfen und implementieren Sie eine geeignete Benutzungsoberfläche.

Schritt 1: DatenmodellImplementieren Sie zunächst das Datenmodell.

Schritt 2: ProgrammstartBeim Programmstart muss das Datenmodell initialisiert werden.

Schritt 3: Vor-/Zurück-NavigationEntwerfen und implementieren Sie passende Ereignisbehandlungsmethoden.

Schritt 4: Eingabe eines DatensatzesBenutzen Sie zur Übernahme der Daten am besten ein OnChange-Ereignis.

Schritt 5: Löschen eines DatensatzesEntwerfen Sie zunächst einen geeigneten Algorithmus. Implementieren und testen Sie ihn anschließend.

EMail – Benutzungsoberfläche

EMail – Version1

Page 48: Datenstrukturen Klaus Becker (2002). KB Datenstrukturen 2 Übersicht Teil 1: Die Datenstruktur Reihung Teil 2: Die Datenstruktur Verbund Teil 3: Die Datenstruktur

48

KB

Date

nst

ruktu

ren

Page 49: Datenstrukturen Klaus Becker (2002). KB Datenstrukturen 2 Übersicht Teil 1: Die Datenstruktur Reihung Teil 2: Die Datenstruktur Verbund Teil 3: Die Datenstruktur

49

KB

Date

nst

ruktu

ren

Teil 3Teil 3

Die Datenstruktur „Datei“

Page 50: Datenstrukturen Klaus Becker (2002). KB Datenstrukturen 2 Übersicht Teil 1: Die Datenstruktur Reihung Teil 2: Die Datenstruktur Verbund Teil 3: Die Datenstruktur

50

KB

Date

nst

ruktu

ren

DateiDatei

DS

Band

Schreib/Lese-Kopf

(Sequentielle typisierte) Datei:

- Die Datensätze können nur sequentiell (der Reihe nach) durchlaufen werden.

- Alle Datensätze haben dieselbe Größe.

DS DS DS DS

Datensatz

DS

DS DS DS DS <EOF>

Aktuelles Dateiende

Page 51: Datenstrukturen Klaus Becker (2002). KB Datenstrukturen 2 Übersicht Teil 1: Die Datenstruktur Reihung Teil 2: Die Datenstruktur Verbund Teil 3: Die Datenstruktur

51

KB

Date

nst

ruktu

ren

Deklaration einer DateiDeklaration einer Datei

DS DS DS DS DS <EOF>

type tDatensatz = record ... end; tDatei = file of tDatensatz

var Datei : tDatei; // Datensatz : tDatensatz;

Deklaration:

Datenzustand:

Datei:

Syntax:

file of <Datensatztyp>

Page 52: Datenstrukturen Klaus Becker (2002). KB Datenstrukturen 2 Übersicht Teil 1: Die Datenstruktur Reihung Teil 2: Die Datenstruktur Verbund Teil 3: Die Datenstruktur

52

KB

Date

nst

ruktu

ren

DateioperationenDateioperationen

AssignFile(Datei,'Adressen.dat')

Verknüpfung mit einer externen Datei:

Datenzustand:

Datei:

'Adressen.dat'

Eine Dateivariable muss zunächst immer mit einer externen Datei verknüpft werden.

Bemerkungen:

Page 53: Datenstrukturen Klaus Becker (2002). KB Datenstrukturen 2 Übersicht Teil 1: Die Datenstruktur Reihung Teil 2: Die Datenstruktur Verbund Teil 3: Die Datenstruktur

53

KB

Date

nst

ruktu

ren

DateioperationenDateioperationen

Rewrite(Datei)

Erstellen einer leeren Datei:

Datenzustand:

Datei:

'Adressen.dat'

Die Datei enthält noch keine Datensätze. Eine bereits bestehende Datei kann so „gelöscht“ werden.

Bemerkungen:

<EOF>

Page 54: Datenstrukturen Klaus Becker (2002). KB Datenstrukturen 2 Übersicht Teil 1: Die Datenstruktur Reihung Teil 2: Die Datenstruktur Verbund Teil 3: Die Datenstruktur

54

KB

Date

nst

ruktu

ren

DateioperationenDateioperationen

write(Datei,Datensatz)

Datensatz in der Datei aufnehmen:

Datenzustand vorher:

Datei:

'Adressen.dat'

Der Datensatz wird am Ende der Datei angefügt.

Bemerkungen:

<EOF> Datensatz: DS

Datei:

'Adressen.dat'

<EOF>

Datenzustand vorher:

Datensatz: DSDS

Page 55: Datenstrukturen Klaus Becker (2002). KB Datenstrukturen 2 Übersicht Teil 1: Die Datenstruktur Reihung Teil 2: Die Datenstruktur Verbund Teil 3: Die Datenstruktur

55

KB

Date

nst

ruktu

ren

DateioperationenDateioperationen

Reset(Datei)

Öffnen einer bestehenden Datei:

Datenzustand:

Datei:

'Adressen.dat'

Der Schreib/Lese-Kopf wird auf den ersten Datensatz gesetzt (sofern es einen solchen gibt).

Bemerkungen:

<EOF>DS DS DS

Page 56: Datenstrukturen Klaus Becker (2002). KB Datenstrukturen 2 Übersicht Teil 1: Die Datenstruktur Reihung Teil 2: Die Datenstruktur Verbund Teil 3: Die Datenstruktur

56

KB

Date

nst

ruktu

ren

DateioperationenDateioperationen

read(Datei,Datensatz)

Datensatz lesen:

Datenzustand vorher:

Datei:

'Adressen.dat'

Der Schreib/Lese-Kopf wandert eine Einheit weiter.

Bemerkungen:

Datensatz: ...

Datei:

'Adressen.dat'

Datenzustand vorher:

<EOF>DS DS DS

Datensatz: DS<EOF>DS DS DS

Page 57: Datenstrukturen Klaus Becker (2002). KB Datenstrukturen 2 Übersicht Teil 1: Die Datenstruktur Reihung Teil 2: Die Datenstruktur Verbund Teil 3: Die Datenstruktur

57

KB

Date

nst

ruktu

ren

DateioperationenDateioperationen

CloseFile(Datei)

Datei schließen:

Eine Datei muss nach der Bearbeitung geschlossen werden.

Bemerkungen:

Datei:

'Adressen.dat'

Datenzustand:

Page 58: Datenstrukturen Klaus Becker (2002). KB Datenstrukturen 2 Übersicht Teil 1: Die Datenstruktur Reihung Teil 2: Die Datenstruktur Verbund Teil 3: Die Datenstruktur

58

KB

Date

nst

ruktu

ren

DateioperationenDateioperationen

EOF(Datei) false

Dateiende erfragen:

Datenzustand:

Datei:

'Adressen.dat'

<EOF>DS DS DS

EOF(Datei) true

Dateiende erfragen:

Datenzustand:

Datei:

'Adressen.dat'

<EOF>DS DS DS

Page 59: Datenstrukturen Klaus Becker (2002). KB Datenstrukturen 2 Übersicht Teil 1: Die Datenstruktur Reihung Teil 2: Die Datenstruktur Verbund Teil 3: Die Datenstruktur

59

KB

Date

nst

ruktu

ren

Algorithmus „Laden“Algorithmus „Laden“

beginAssignFile(Datei,'Adressen.dat');Reset(Datei);while not EOF(Datei) do begin read(Datei,Datensatz); // verarbeite Datensatz: aktualisiere das Datenmodell

end;CloseFile(Datei);end;

Page 60: Datenstrukturen Klaus Becker (2002). KB Datenstrukturen 2 Übersicht Teil 1: Die Datenstruktur Reihung Teil 2: Die Datenstruktur Verbund Teil 3: Die Datenstruktur

60

KB

Date

nst

ruktu

ren

Algorithmus „Speichern“Algorithmus „Speichern“

beginAssignFile(Datei,'Adressen.dat');Rewrite(Datei);for i := 1 to ... do begin Datensatz := ...; write(Datei,Datensatz); end;CloseFile(Datei);end;

Page 61: Datenstrukturen Klaus Becker (2002). KB Datenstrukturen 2 Übersicht Teil 1: Die Datenstruktur Reihung Teil 2: Die Datenstruktur Verbund Teil 3: Die Datenstruktur

61

KB

Date

nst

ruktu

ren

Übungen: Aufgabe 10Übungen: Aufgabe 10

Ergänzen Sie das Email-Verwaltungsprogramm um die Möglichkeit, die Daten speichern und wieder laden zu können.

EMail – Version2

Page 62: Datenstrukturen Klaus Becker (2002). KB Datenstrukturen 2 Übersicht Teil 1: Die Datenstruktur Reihung Teil 2: Die Datenstruktur Verbund Teil 3: Die Datenstruktur

62

KB

Date

nst

ruktu

ren

Page 63: Datenstrukturen Klaus Becker (2002). KB Datenstrukturen 2 Übersicht Teil 1: Die Datenstruktur Reihung Teil 2: Die Datenstruktur Verbund Teil 3: Die Datenstruktur

63

KB

Date

nst

ruktu

ren

Teil 4Teil 4

Zusammenfassung und Ausblick

Page 64: Datenstrukturen Klaus Becker (2002). KB Datenstrukturen 2 Übersicht Teil 1: Die Datenstruktur Reihung Teil 2: Die Datenstruktur Verbund Teil 3: Die Datenstruktur

64

KB

Date

nst

ruktu

renDatentypDatentyp

Ein Datentyp legt einen Wertebereich und die Grundoperationen, die auf die Elemente des Wertebereichs angewandt werden können, fest.

Ein Datentyp legt einen Wertebereich und die Grundoperationen, die auf die Elemente des Wertebereichs angewandt werden können, fest.

Beispiele (für elementare Datentypen):

> boolean (Wahrheitswert)

> char (Zeichen)

> integer (ganze Zahl)

> real (Dezimalzahl)

Page 65: Datenstrukturen Klaus Becker (2002). KB Datenstrukturen 2 Übersicht Teil 1: Die Datenstruktur Reihung Teil 2: Die Datenstruktur Verbund Teil 3: Die Datenstruktur

65

KB

Date

nst

ruktu

ren

DatenstrukturDatenstruktur

Eine Datenstruktur legt den Aufbau von komplexen Wertebereichen aus einfacheren Wertebereichen fest.Eine Datenstruktur legt den Aufbau von komplexen Wertebereichen aus einfacheren Wertebereichen fest.

Beispiele (für Datenstrukturen):

> Reihung / Feld

> Verbund

> Datei

> ... Liste, Schlange, Stapel, Baum, Graph, ...

Page 66: Datenstrukturen Klaus Becker (2002). KB Datenstrukturen 2 Übersicht Teil 1: Die Datenstruktur Reihung Teil 2: Die Datenstruktur Verbund Teil 3: Die Datenstruktur

66

KB

Date

nst

ruktu

renReihungReihung

Eine Reihung fasst eine fest vorgegebene Anzahl von Elementen gleichen Typs zu einer Einheit zusammen.Eine Reihung fasst eine fest vorgegebene Anzahl von Elementen gleichen Typs zu einer Einheit zusammen.

2Ziehung: 21

25

33

43

451 2 3 4 5 6

Reihung

Element

Index

Page 67: Datenstrukturen Klaus Becker (2002). KB Datenstrukturen 2 Übersicht Teil 1: Die Datenstruktur Reihung Teil 2: Die Datenstruktur Verbund Teil 3: Die Datenstruktur

67

KB

Date

nst

ruktu

renVerbundVerbund

Eine Verbund fasst Elemente unterschiedlichen Typs zu einer Einheit zusammen.Eine Verbund fasst Elemente unterschiedlichen Typs zu einer Einheit zusammen.

Renate [email protected]

Meier

Vorname EmailName

Datensatz:

Verbund

Komponente

Name der Komponen

te

Page 68: Datenstrukturen Klaus Becker (2002). KB Datenstrukturen 2 Übersicht Teil 1: Die Datenstruktur Reihung Teil 2: Die Datenstruktur Verbund Teil 3: Die Datenstruktur

68

KB

Date

nst

ruktu

ren

DateiDatei

Eine Datei besteht aus beliebig vielen Datensätzen gleicher Struktur, die auf einem externen Medium gespeichert werden können.

Eine Datei besteht aus beliebig vielen Datensätzen gleicher Struktur, die auf einem externen Medium gespeichert werden können.

DS

Band

Schreib/Lese-Kopf

DS DS DS DS

Datensatz

DS

DS DS DS DS <EOF>

Page 69: Datenstrukturen Klaus Becker (2002). KB Datenstrukturen 2 Übersicht Teil 1: Die Datenstruktur Reihung Teil 2: Die Datenstruktur Verbund Teil 3: Die Datenstruktur

69

KB

Date

nst

ruktu

ren

Liste / Baum / GraphListe / Baum / Graph

Es gibt noch viele weitere Datenstrukturen, mit denen wir uns beschäftigen müssen!Es gibt noch viele weitere Datenstrukturen, mit denen wir uns beschäftigen müssen!