Ereignisgesteuerte Programmierung Klaus Becker 2002

Preview:

Citation preview

Ereignisgesteuerte Ereignisgesteuerte ProgrammierungProgrammierung

Klaus Becker2002

2

KB

Ere

ign

isg

est

eu

ert

e P

rog

ram

mie

run

gDas ZiegenproblemDas Ziegenproblem

Der Moderator einer Spielshow zeigt dem Kandidaten 3 Türen.

"Hinter einer der 3 Türen steht der Hauptgewinn, ein Auto. Hinter den beiden anderen Türen sind Ziegen.Welche Tür wählen Sie ?"

Nachdem sich der Kandidat entschieden hat (z.B. für Tür 1), öffnet der Moderator eine der beiden anderen mit einer Ziege (z.B. Tür 3).

"Bleiben Sie nun bei Ihrer Wahl oder möchten Sie auf Tür 2 umwählen ?"

3

KB

Ere

ign

isg

est

eu

ert

e P

rog

ram

mie

run

gSimulationsprogrammSimulationsprogramm

http://www.jgiesen.de/Quiz/Ziegenproblem/Ziegen.html

4

KB

Ere

ign

isg

est

eu

ert

e P

rog

ram

mie

run

gDialog- und Ein-/AusgabegestaltungDialog- und Ein-/Ausgabegestaltung

Button / Schaltfläche

Label / Anzeigefläche

Button / Schaltfläche

Ereignisgesteuerte graphische Interaktionselemente

5

KB

Ere

ign

isg

est

eu

ert

e P

rog

ram

mie

run

gZielsetzungZielsetzung

Entwicklung ereignisgesteuerter Programme mit dem Werkzeug

Delphi

6

KB

Ere

ign

isg

est

eu

ert

e P

rog

ram

mie

run

gTeil 1Teil 1

Programmgestaltung mit GUI-Objekten

7

KB

Ere

ign

isg

est

eu

ert

e P

rog

ram

mie

run

gEin erstes einfaches BeispielEin erstes einfaches Beispiel

Zielsetzung:Die Entwicklung der Weltbevölkerung schreitet rasch voran: Im Jahr 1999 wurde die 6 Milliardengrenze überschritten; zur Zeit wächst die Weltbevölkerung jährlich um ca. 1,3 %. Kann das so weitergehen?

Mit Hilfe eines interaktiven Simulationsprogramms soll der Benutzer die Konsequenzen eines solchen Wachstums austesten können.

Zielsetzung:Die Entwicklung der Weltbevölkerung schreitet rasch voran: Im Jahr 1999 wurde die 6 Milliardengrenze überschritten; zur Zeit wächst die Weltbevölkerung jährlich um ca. 1,3 %. Kann das so weitergehen?

Mit Hilfe eines interaktiven Simulationsprogramms soll der Benutzer die Konsequenzen eines solchen Wachstums austesten können.

8

KB

Ere

ign

isg

est

eu

ert

e P

rog

ram

mie

run

gEntwurf der BenutzungsschnittstelleEntwurf der Benutzungsschnittstelle

Ereignisbehandlung:

Benutzungsoberfläche:

Benutzeraktion Ereignis

Mausklick auf init-Button

Mausklick auf >-Button

Button

Edit

Label

Programmreaktionen:

Die Anfangspopulation (1999: 6.0 Mrd.) wird festgelegt (und angezeigt).

Die nächste Population (jeweils nach einem Jahr) wird berechnet (und angezeigt).

9

KB

Ere

ign

isg

est

eu

ert

e P

rog

ram

mie

run

gDelphi-EntwicklungsumgebungDelphi-Entwicklungsumgebung

Komponentenpalette

Objektinspektor

Formular

10

KB

Ere

ign

isg

est

eu

ert

e P

rog

ram

mie

run

gErzeugung von GUI-ObjektenErzeugung von GUI-Objekten

Aktivierung der Komponente

11

KB

Ere

ign

isg

est

eu

ert

e P

rog

ram

mie

run

gFestlegung von ObjekteigenschaftenFestlegung von Objekteigenschaften

Veränderung der zugeordneten

Werte

12

KB

Ere

ign

isg

est

eu

ert

e P

rog

ram

mie

run

gEine erste ObjektvorstellungEine erste Objektvorstellung

EJahr: TEdit

Text = ´´

Left = 208

Top = 80

...

Klasse

EAnzahl: TEdit

Text = ´´

Left = 208

Top = 120

...

BInit: TButton

Caption = ´Init´

Left = 240

Top = 176

...

Objektname

Jedes Objekt ist über seinen Namen identifizierbar.

Objekte mit gleichem Aufbau (Attributen) werden zu Klassen zusammengefasst.

13

KB

Ere

ign

isg

est

eu

ert

e P

rog

ram

mie

run

gEine erste ObjektvorstellungEine erste Objektvorstellung

EJahr: TEdit

Text = ´´

Left = 208

Top = 80

...

Attribut Attributwert

Der Aufbau eines Objekts wird über Attribute (Eigenschaften) bestimmt. Die Attributwerte legen den aktuellen Objektzustand fest.

Objekt

14

KB

Ere

ign

isg

est

eu

ert

e P

rog

ram

mie

run

gBenutzungsoberflächeBenutzungsoberfläche

BWeiter

EAnzahl

LUeberschrift

LUeberschrift: TLabel

...

LJahr: TLabel

...

LAnzahl: TLabel

...

EJahr: TEdit

...

EAnzahl: TEdit

...

BInit: TButton

...

BWeiter: TButton

...

GUI-Objekte:

Form1: TForm

...

EJahr

BInit

LJahr

LAnzahl

Modellierung:

15

KB

Ere

ign

isg

est

eu

ert

e P

rog

ram

mie

run

gImplementierungImplementierung

BWeiter

EAnzahl

LUeberschrift

EJahr

BInit

LJahr

LAnzahl

Aufgabe:

Erstellen Sie mit Hilfe des Delphi-Objektinspektors die unten abgebildete Benutzungsoberfläche. Geben Sie den benutzten GUI-Objekten die unten festgelegten Namen. Schauen Sie sich anschließend auch den von Delphi erzeugten Quelltext an.

16

KB

Ere

ign

isg

est

eu

ert

e P

rog

ram

mie

run

gDelphi-QuelltextDelphi-Quelltext

unit Unit1;

interface

uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls;

type TForm1 = class(TForm) LUeberschrift: TLabel; BInit: TButton; BWeiter: TButton; LJahr: TLabel; LAnzahl: TLabel; EJahr: TEdit; EAnzahl: TEdit; private { Private-Deklarationen } public { Public-Deklarationen } end;

var Form1: TForm1;

implementation

{$R *.DFM}

end.

17

KB

Ere

ign

isg

est

eu

ert

e P

rog

ram

mie

run

gDaten und OperationenDaten und Operationen

const p = 1.3; var Jahr : integer; Anzahl : real;

Variablen / Konstanten:Informationen:

Im Jahr 1999 wurde die 6 Milliardengrenze überschritten; zur Zeit wächst die Weltbevölkerung jährlich um ca. 1,3 %.

Modellierung:

18

KB

Ere

ign

isg

est

eu

ert

e P

rog

ram

mie

run

gOperationenOperationen

procedure initPopulation;beginJahr := 1999;Anzahl := 6.0;end;

procedure naechstePopulation;beginJahr := Jahr + 1;Anzahl := Anzahl + p/100*Anzahl;end;

Benutzeraktion: Mausklick auf init-Button

Programmreaktion: Die Anfangspopulation (1999: 6.0 Mrd.) wird festgelegt.

Benutzeraktion: Mausklick auf >-Button

Programmreaktion: Die nächste Population wird berechnet.

19

KB

Ere

ign

isg

est

eu

ert

e P

rog

ram

mie

run

gImplementierungImplementierung

...

implementation

{$R *.DFM}

// Datenmodellconst p = 1.3; // jährliche prozentuale Wachstumsratevar Jahr : integer; Anzahl : real;

// Operationen zur Aktualisierung des Datenmodellsprocedure initPopulation;begin ... end;

procedure naechstePopulation;begin ... end;

end.

Aufgabe:

Ergänzen Sie in der Implementierung das Datenmodell wie folgt.

20

KB

Ere

ign

isg

est

eu

ert

e P

rog

ram

mie

run

gEreignisbehandlungEreignisbehandlung

Modellierung:

Benutzeraktion Ereignis

Mausklick auf init-Button

Mausklick auf >-Button

Programmreaktionen:

Die Anfangspopulation (1999: 6.0 Mrd.) wird festgelegt (und angezeigt).

Die nächste Population (jeweils nach einem Jahr) wird berechnet (und angezeigt).

21

KB

Ere

ign

isg

est

eu

ert

e P

rog

ram

mie

run

gDatenaustausch mit den GUI-ObjektenDatenaustausch mit den GUI-Objekten

EJahr.Text := IntToStr(Jahr);EAnzahl.Text := FloatToStr(Anzahl);

const p = 1.3; var Jahr : integer; Anzahl : real;

Variablen / Konstanten:

EJahr: TEdit

Text = ...

EAnzahl: TEdit

Text = ...

GUI-Objekte:

Jahr := StrToInt(EJahr.Text);Anzahl := StrToFloat(EAnzahl.Text);

Variablen GUI-Objekte

Variablen GUI-Objekte

22

KB

Ere

ign

isg

est

eu

ert

e P

rog

ram

mie

run

gEreignisbehandlungsmethodenEreignisbehandlungsmethoden

procedure TForm1.BInitClick(Sender: TObject);begininitPopulation; // Aktualisier. der Daten EJahr.Text := IntToStr(Jahr); // Aktualisierung der EAnzahl.Text := FloatToStr(Anzahl); // Objektattributwerteend;

procedure TForm1.BWeiterClick(Sender: TObject);beginnaechstePopulation; // Aktualisier. der Daten EJahr.Text := IntToStr(Jahr); // Aktualisierung der EAnzahl.Text := FloatToStr(Anzahl); // Objektattributwerteend;

Ereignis: Mausklick auf init-Button

Ereignis: Mausklick auf >-Button

23

KB

Ere

ign

isg

est

eu

ert

e P

rog

ram

mie

run

gDelphi-QuelltextDelphi-Quelltext

...

implementation

{$R *.DFM}

// Datenmodell...

// Operationen zur Aktualisierung des Datenmodells...

// Ereignisbehandlungsmethodenprocedure TForm1.BInitClick(Sender: TObject);begin ... end;

procedure TForm1.BWeiterClick(Sender: TObject);begin ... end;

end.

Bevölkerungsentwicklung1

Aufgabe:

Ergänzen Sie in der Implementierung die fehlenden Ereignisbehandlungsmethoden.

24

KB

Ere

ign

isg

est

eu

ert

e P

rog

ram

mie

run

gProjektdateien – eine ÜbersichtProjektdateien – eine Übersicht

program Project1;

uses Forms, Unit1 in 'Unit1.pas' {Form1};

{$R *.RES}

begin Application.Initialize; Application.CreateForm(TForm1, Form1); Application.Run;end.

Project1.dpr

Project1.exe Compiliertes Programm

Unit1.pas Quelltext für Unit1

Unit1.dcu compilierte Unit1

Project1.cfg Konfigurationsdatei

Project1.res Windows-Ressourcendatei (Button, Label, ...)

Project1.dof Delphi-Projekt-Optionen

Unit1.dfm Bilddatei für Form1

25

KB

Ere

ign

isg

est

eu

ert

e P

rog

ram

mie

run

gÜbungen – Aufgabe 1Übungen – Aufgabe 1

Ergänzen Sie weitere Buttons, deren Verhalten wie folgt spezifiziert ist:

Benutzeraktion:

Mausklick auf <-Button

Mausklick auf >>-Button

Mausklick auf >>-Button

Programmreaktion:

Die vorherige Population (jeweils vor einem Jahr) wird berechnet (und angezeigt), sofern das Jahr nicht vor 1999 ist.

Die Population 10 Jahre später wird berechnet (und angezeigt).

Die Population 10 Jahre vorher wird berechnet (und angezeigt). Man kann aber höchstens bis 1999 zurückspringen.

26

KB

Ere

ign

isg

est

eu

ert

e P

rog

ram

mie

run

gÜbungen – Aufgabe 2Übungen – Aufgabe 2

Der Benutzer / die Benutzerin soll selbst die Anfangswerte der Population festlegen können. Insbesondere soll er / sie auch die jährliche prozentuale Wachstumsrate eingeben können.

Ändern Sie das Simulationsprogramm entsprechend ab. Überlegen Sie sich hierzu zunächst, welche Programmteile sie verändern / ergänzen müssen.

- Benutzungsoberfläche ?- Datenmodell ?- Verarbeitungsoperationen ?- Ereignisbehandlungsmethoden?

27

KB

Ere

ign

isg

est

eu

ert

e P

rog

ram

mie

run

gÜbungen – Aufgabe 3Übungen – Aufgabe 3

Das benutzte Wachstumsmodell beschreibt die Bevölkerungsentwicklung nur in einem begrenzten Zeitraum realistisch.

Über längere Zeiträume lässt sich das Bevölkerungswachstum besser durch die angegebene Folge beschreiben:

B0 = 6.0

Bn+1 = Bn + 0.0027*Bn*(11 – Bn)

Ändern Sie das Simulationsprogramm entsprechend ab. Überlegen Sie sich hierzu zunächst, welche Programmteile sie verändern müssen.

- Benutzungsoberfläche ?- Datenmodell ?- Verarbeitungsoperationen ?- Ereignisbehandlungsmethoden?

28

KB

Ere

ign

isg

est

eu

ert

e P

rog

ram

mie

run

gÜbungen – Aufgabe 4Übungen – Aufgabe 4

Es soll ein Programm erstellt werden, das dem Benutzer Aufgaben zu den vier Grundrechenarten aus dem Zahlenbereich 0..10 stellt.

Legen Sie zunächst die Ereignisbehandlung fest.

Entwerfen Sie anschließend das Datenmodell mit den zugehörigen Verarbeitungsoperationen.

29

KB

Ere

ign

isg

est

eu

ert

e P

rog

ram

mie

run

gTeil 2Teil 2

Ereignisverarbeitung

30

KB

Ere

ign

isg

est

eu

ert

e P

rog

ram

mie

run

gDer RechentrainerDer Rechentrainer

Ziel: Es soll ein Programm erstellt werden, das dem Benutzer Aufgaben zu den vier Grundrechenarten aus dem Zahlenbereich 0..10 stellt.

(vgl. auch G. Noll: informatikag.bildung-rp.de/html/delphi_teil_1.html)

Ziel: Es soll ein Programm erstellt werden, das dem Benutzer Aufgaben zu den vier Grundrechenarten aus dem Zahlenbereich 0..10 stellt.

(vgl. auch G. Noll: informatikag.bildung-rp.de/html/delphi_teil_1.html)

31

KB

Ere

ign

isg

est

eu

ert

e P

rog

ram

mie

run

gModellierung der Modellierung der

BenutzungsschnittstelleBenutzungsschnittstelle

32

KB

Ere

ign

isg

est

eu

ert

e P

rog

ram

mie

run

gModellierung der EreignisbehandlungModellierung der Ereignisbehandlung

Ereignisse:

BAddition.OnClick

BSubtraktion.OnClick

BMultiplikation.OnClick

BDivision.OnClick

BErgebnis.OnClick

Form1.OnCreate

Aktionen:

Erzeuge +-Aufgabe; Berechne Ergebnis; Zeige Aufgabe

Erzeuge -Aufgabe; Berechne Ergebnis; Zeige Aufgabe

Erzeuge *-Aufgabe; Berechne Ergebnis; Zeige Aufgabe

Erzeuge :-Aufgabe; Berechne Ergebnis; Zeige Aufgabe

Zeige Ergebnis

Initialisiere Zufallsgenerator

33

KB

Ere

ign

isg

est

eu

ert

e P

rog

ram

mie

run

gModellierung der Daten und Modellierung der Daten und

OperationenOperationen

var Rechenzeichen: char; Zahl1, Zahl2, Ergebnis: integer;

Daten:

Verarbeitungsoperationen:procedure PlusAufgabeErzeugen;...

procedure MinusAufgabeErzeugen;...

procedure MalAufgabeErzeugen;...

procedure DurchAufgabeErzeugen;...

procedure ErgebnisBerechnen;...

34

KB

Ere

ign

isg

est

eu

ert

e P

rog

ram

mie

run

gAuszug aus der ImplementierungAuszug aus der Implementierung

...procedure PlusAufgabeErzeugen;beginZahl1 := random(11);Zahl2 := random(11);Rechenzeichen := '+';end;

procedure MinusAufgabeErzeugen;beginZahl1 := random(11);Zahl2 := random(11);Rechenzeichen := '-';end;

procedure MalAufgabeErzeugen;begin...

Beachte: Die Implementierung ist redundant.

35

KB

Ere

ign

isg

est

eu

ert

e P

rog

ram

mie

run

gModellierung der Daten und Modellierung der Daten und

OperationenOperationen

var Rechenzeichen: char; Zahl1, Zahl2, Ergebnis: integer;

Daten:

Verarbeitungsoperationen:procedure AufgabeErzeugen;...

procedure ErgebnisBerechnen;...

36

KB

Ere

ign

isg

est

eu

ert

e P

rog

ram

mie

run

gModellierung der EreignisbehandlungModellierung der Ereignisbehandlung

Ereignis:

BAddition.OnClickBSubtraktion.OnClickBMultiplikation.OnClickBDivision.OnClick

BErgebnis.OnClick

Form1.OnCreate

Behandlungsmethode:

TForm1.RechenzeichenClick(Sender: TObject)

TForm1.BErgebnisClick(Sender: TObject)

TForm1.FormCreate(Sender: TObject)

37

KB

Ere

ign

isg

est

eu

ert

e P

rog

ram

mie

run

gVerarbeitung von EreignissenVerarbeitung von Ereignissen

Auslösende Aktion: Mausklick auf +-Button

Ereignis: BAddition.OnClick

Ausgelöste Aktion: RechenzeichenClick(BAddition)

Delphi wartet auf Ereignisse und reagiert mit der Ausführung der zugeordneten Methoden

Sender

38

KB

Ere

ign

isg

est

eu

ert

e P

rog

ram

mie

run

gImplementierungshinweise Implementierungshinweise

Ereignis:

BAddition.OnClickBSubtraktion.OnClickBMultiplikation.OnClickBDivision.OnClick

Behandlungsmethode:

TForm1.RechenzeichenClick(Sender: TObject)

procedure TForm1.BRechenzeichenClick(Sender: TObject);begin// Aktualisierung der Modelldatenif Sender = BAddition then Rechenzeichen := '+';if Sender = BSubtraktion then Rechenzeichen := '-';if Sender = BMultiplikation then Rechenzeichen := '*';if Sender = BDivision then Rechenzeichen := ':';// Aufruf der VerarbeitungsoperationenAufgabeErzeugen;ErgebnisBerechnen;// Aktualisierung der AnzeigeLZahl1.Caption := IntToStr(Zahl1);...end;

39

KB

Ere

ign

isg

est

eu

ert

e P

rog

ram

mie

run

gImplementierung Implementierung

Aufgabe:

Ändern Sie das Programm Rechentrainer1 gemäß der verbesserten Modellierung ab.

(zur Kontrolle: Rechentrainer2)

40

KB

Ere

ign

isg

est

eu

ert

e P

rog

ram

mie

run

gÜbungen – Aufgabe 5Übungen – Aufgabe 5

Der Rechentrainer soll wie folgt abgeändert werden:

Der Benutzer soll einen Lösungsvorschlag in ein Editfeld eingeben können. Nach Abschluss der Eingabe bewertet das System den Lösungsvorschlag (richtig oder falsch).

Ändern Sie zunächst die Benutzungsoberfläche geeignet ab.

Ergänzen Sie gegebenenfalls das Datenmodell.

Entwerfen und implementieren Sie eine geeignete Ereignisbehandlungs-methode. Das geeignete Ereignis finden Sie mit dem Objektinspektor.

(zur Kontrolle: Rechentrainer3)

41

KB

Ere

ign

isg

est

eu

ert

e P

rog

ram

mie

run

gTeil 3Teil 3

Modellierung ereignisgesteuerter Abläufe

42

KB

Ere

ign

isg

est

eu

ert

e P

rog

ram

mie

run

gDas ZiegenproblemDas Ziegenproblem

Der Moderator einer Spielshow zeigt dem Kandidaten 3 Türen.

"Hinter einer der 3 Türen steht der Hauptgewinn, ein Auto. Hinter den beiden anderen Türen sind Ziegen.Welche Tür wählen Sie ?"

Nachdem sich der Kandidat entschieden hat (z.B. für Tür 1), öffnet der Moderator eine der beiden anderen mit einer Ziege (z.B. Tür 3).

"Bleiben Sie nun bei Ihrer Wahl oder möchten Sie auf umwählen (hier Tür 2) ?"

43

KB

Ere

ign

isg

est

eu

ert

e P

rog

ram

mie

run

gSystembeschreibungSystembeschreibung

Das zu entwickelnde System simuliert die Gewinnermittlung der Spielshow. Der Benutzer des Systems übernimmt die Rolle des Kandidaten, das System selbst simuliert den Moderator.

Anforderungen an das System:

- Das System bereitet eine Spielsituation (wie im Bild) vor.

- Der Benutzer kann mit dem System über Schaltflächen etc. interagieren.

- Der Benutzer wird über seine vorzunehmenden Aktionen und die jeweiligen Resultate informiert.

- Das Spiel kann wiederholt ausgeführt werden.

[- Es wird eine kleine Statistik über die Spielergebnisse angefertigt.]

44

KB

Ere

ign

isg

est

eu

ert

e P

rog

ram

mie

run

gModellierung der Modellierung der

BenutzungsoberflächeBenutzungsoberfläche

45

KB

Ere

ign

isg

est

eu

ert

e P

rog

ram

mie

run

gAblaufmodellierungAblaufmodellierung

Ereignis:

Form1.OnCreate

BTuer1.OnClick...

BTuer1.OnClick...

BNeu.OnClick

Aktionen:

Spiel vorbereiten Anzeigen

Ziegentür öffnenAnzeigen

Spiel auswerten Anzeigen

Spiel vorbereiten Anzeigen

Zustand:

bereit

gewählt

fertig

Neuer Zustand:

bereit

gewählt

fertig

bereit

46

KB

Ere

ign

isg

est

eu

ert

e P

rog

ram

mie

run

gAblaufmodellierungAblaufmodellierung

BTuer1.OnClick / Ziegentür öffnen

bereit gewählt

fertig

BNeu.OnClick / Spiel vorbereiten

BTuer2.OnClick / Ziegentür öffnen

BTuer3.OnClick/ Ziegentür öffnen

Form1.OnCreate / Spiel vorbereiten

BTuer1.OnClick / Spiel auswerten

BTuer2.OnClick / Spiel auswerten

BTuer3.OnClick / Spiel auswerten

BNeu.OnClick / Spiel vorbereiten

BNeu.OnClick / Spiel vorbereiten

BTuer1.OnClick

BTuer2.OnClick

BTuer3.OnClick

Darstellung mit einem Zustandsübergangsdiagramm

Zustandsbasierte Ablaufmodellierung

47

KB

Ere

ign

isg

est

eu

ert

e P

rog

ram

mie

run

gModellierungstechnik: AutomatModellierungstechnik: Automat

Zustand1Ereignis [Bedingung] / Aktion

Grundschema eines Zustandsübergangs bei einem (Harel-) Automat

Zustand2

48

KB

Ere

ign

isg

est

eu

ert

e P

rog

ram

mie

run

gDatenmodellierungDatenmodellierung

type tZustand = (bereit, gewaehlt, fertig);

var offen1: boolean offen2: boolean offen3: boolean Gewinntuer: integer; gewaehlteTuer: integer; Gewinn: string; Spielzustand: tZustand

Version 1

Ziegenproblem1

49

KB

Ere

ign

isg

est

eu

ert

e P

rog

ram

mie

run

gDatenmodellierungDatenmodellierung

type tZustand = (bereit, gewaehlt, fertig); tTuer = RECORD offen: boolean; Gewinn: string; END;

var Tuer1: tTuer Tuer2: tTuer Tuer3: tTuer Gewinntuer: integer; gewaehlteTuer: integer; SpielGewinn: string; Spielzustand: tZustand

Version 2

Ziegenproblem2

50

KB

Ere

ign

isg

est

eu

ert

e P

rog

ram

mie

run

gDatenmodellierungDatenmodellierung

type tZustand = (bereit, gewaehlt, fertig); tTuer = RECORD offen: boolean; Gewinn: string; END;

var Tuer: array [1..3] of tTuer Gewinntuer: integer; gewaehlteTuer: integer; SpielGewinn: string; Spielzustand: tZustand

Version 3

51

KB

Ere

ign

isg

est

eu

ert

e P

rog

ram

mie

run

gModellierung der Modellierung der

VerarbeitungsoperationenVerarbeitungsoperationen

SpielVorbereiten- alle Türen werden geschlossen- die Gewinntür wird (per Zufallsgenerator) ermittelt- der Spielzustand wird gesetzt

ZiegentuerOeffnen- die vom Master gewählte „Ziegentür“ wird bestimmt und geöffnet- der Spielzustand wird aktualisiert

SpielAuswerten- alle Türen werden geöffnet- der Gewinn wird ermittelt- der Spielzustand wird aktualisiert

informelle Verhaltensbeschreibungen

52

KB

Ere

ign

isg

est

eu

ert

e P

rog

ram

mie

run

gImplementierungImplementierung

Versuchen Sie jetzt, das Programm selbst zu implementieren.

Sie können aber auch eine fertige Implementierung analysieren und um eine statistische Auswertung (wie beim Internet-Simulationsprogramm) ergänzen.

53

KB

Ere

ign

isg

est

eu

ert

e P

rog

ram

mie

run

gÜbungen – Aufgabe 6Übungen – Aufgabe 6

Password-Überprüfung

Das zu entwickelnde System ermittelt per Zufallsgenerator eine Zahl zwischen 0 und 9 (Password). Der Benutzer hat maximal 3 Versuche, das Password richtig einzugeben. Nach drei Fehlversuchen nimmt das System keine weiteren Eingaben mehr an und informiert den Benutzer hierüber.

Entwickeln Sie ein solches Passwordüberprüfungssystem.

Schritt 1: Systembeschreibung (teilweise oben durchgeführt)

Schritt 2: Modellierung des Systems (Benutzungsoberfläche; Ablaufmodell. mit Automat; Datenmodell incl. Verarbeitungsoperationen)

Schritt 3: Realisierung bzw. Implementierung des Systems

Schritt 4: Test des Systems

54

KB

Ere

ign

isg

est

eu

ert

e P

rog

ram

mie

run

gÜbungen – Aufgabe 7Übungen – Aufgabe 7

17 und 4

Ziel ist es, das Spiel „17 und 4“ zu simulieren. Das Spiel soll wie folgt funktionieren:In jedem Spielzug wird eine Karte mit einer Zahl aus dem Bereich [1;...;11] bestimmt und auf einen Kartenstapel gelegt. Der Spieler kann nach jedem Spielzug entscheiden, ob er aufhört oder weiter spielt. Ist die Summe der Zahlen der Karten des Stapels größer als 21, so hat der Spieler verloren. Hört der Spieler bei einer Stapelsumme kleiner oder gleich 21 auf, so wird die nächste Karte gezogen. Ist die neue Stapelsumme immer noch kleiner oder gleich 21, so hat der Spieler verloren, andernfalls gewonnen.

55

KB

Ere

ign

isg

est

eu

ert

e P

rog

ram

mie

run

gAufgabe 6 - LösungsvorschlagAufgabe 6 - Lösungsvorschlag

Password1

56

KB

Ere

ign

isg

est

eu

ert

e P

rog

ram

mie

run

gAufgabe 6 - LösungsvorschlagAufgabe 6 - Lösungsvorschlag

EEingabe.OnChange / [Eingabe Password] /Ausgabe: falsch

0 1 2

Form1.OnCreate / DatenInitialisieren

4

3

EEingabe.OnChange / [Eingabe Password] /Ausgabe: falsch

EEingabe.OnChange / [Eingabe Password] /Ausgabe: falsch

EEingabe.OnChange /

EEingabe.OnChange / [Eingabe = Password] /Ausgabe: ok

EEingabe.OnChange /

57

KB

Ere

ign

isg

est

eu

ert

e P

rog

ram

mie

run

gAufgabe 6 - LösungsvorschlagAufgabe 6 - Lösungsvorschlag

// Datenmodelltype tZustand = 0..4;

var Password : integer; Eingabe : integer; Zustand : tZustand;

// Datenverarbeitungsoperationen

procedure DatenInitialisieren;beginrandomize;Password := random(10);Zustand := 0;end;

Password1

58

KB

Ere

ign

isg

est

eu

ert

e P

rog

ram

mie

run

gAufgabe 6 - LösungsvorschlagAufgabe 6 - Lösungsvorschlag

// Ereignisbehandlungsmethoden

procedure TForm1.FormCreate(Sender: TObject);begin// Aktualisierung des DatenmodellsDatenInitialisieren;end;

procedure TForm1.EEingabeChange(Sender: TObject);begin// Aktualisierung des Datenmodellsif Zustand < 3 then begin Eingabe := StrToInt(EEingabe.Text); if Eingabe = Password then Zustand := 4 else Zustand := Zustand + 1; end;// Aktualisierung der Anzeigeif Zustand = 4 then PRueckmeldung.Caption := 'Ok!'else PRueckmeldung.Caption := 'Falsch!';end;

Password1

59

KB

Ere

ign

isg

est

eu

ert

e P

rog

ram

mie

run

gTeil 4Teil 4

Entwicklung von Delphi-Programmen

60

KB

Ere

ign

isg

est

eu

ert

e P

rog

ram

mie

run

gProgrammentwicklungProgrammentwicklung

Problemanalyse

Entwurf / Modellierung

- Modellierung der Benutzungsoberfläche – erfolgt oft direkt in der Entwicklungsumgebung: Auswahl der Objekte zur Systemkontrolle und Datenanzeige - Modellierung der Ereignisbehandlung (Tabelle / Automat)- Modellierung der Daten und Verarbeitungsoperationen (ergeben sich i. a. aus der Ereignisbehandlung)

Realisierung- Implementierung des Datenmodells und der Verarbeitungsoperationen - Implementierung der Ereignisbehandlungsmethoden

Nutzung

- Testen der Programmfunktionalitäten

61

KB

Ere

ign

isg

est

eu

ert

e P

rog

ram

mie

run

gStrukturierung: Model-View-ControlStrukturierung: Model-View-Control

var Rechenzeichen: char; Zahl1, Zahl2, Ergebnis: integer;

procedure AufgabeErzeugen;...

procedure ErgebnisBerechnen;...

Model

View

ControlControl

62

KB

Ere

ign

isg

est

eu

ert

e P

rog

ram

mie

run

gProgrammgestaltungProgrammgestaltung

unit Unit1;

interface

uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls;

type TForm1 = class(TForm) // View- und Control-Objekte LUeberschrift: TLabel; ...

private { Private-Deklarationen } public { Public-Deklarationen } end;

var Form1: TForm1;

63

KB

Ere

ign

isg

est

eu

ert

e P

rog

ram

mie

run

gProgrammgestaltungProgrammgestaltung

implementation

{$R *.DFM}

// Datenmodell (Model)const ...type ...var ...

// Operationen zur Aktualisierung des Datenmodellsprocedure ...;begin ... end;

function ...;begin ... end;

// Ereignisbehandlungsmethoden (Control)procedure TForm1.???OnClick(Sender: TObject);begin // Aktualisierung des Modells (Model)... // Aktualisierung der Anzeige (View)...end;

end.

64

KB

Ere

ign

isg

est

eu

ert

e P

rog

ram

mie

run

gLiteraturhinweiseLiteraturhinweise

Einführung in die Programmierung mit Delphi.

- Doberenz / Kowalski: Borland Delphi 6, Hanser-Verlag 2002.

- Schumann: Delphi für Kids (incl. Delphi 3 CD), mitp-Verlag 2000.

...

Schulbücher zur Programmierung / Informatik mit Delphi

- Modrow: Informatik mit Delphi (2 Bd.), Dümmler-Stam 1998-2000.

- Bähnisch: Praktische Informatik mit Delphi (2 Bd.), Cornelsen 2001.

- Damann-Wemßen: Objektorientierte Programmierung mit Delphi, Band 1, Klett 2001.

...

65

KB

Ere

ign

isg

est

eu

ert

e P

rog

ram

mie

run

gLiteraturhinweiseLiteraturhinweise

Materialien im Internet

- IFB-Fortbildung: informatikag.bildung-rp.de/html/delphi_teil_1.html

- Lessing-Gymnasium Plauen: www.plauener.de/delphi

- OSZ Berlin: oszhdl.be.schule.de/index.htm

- Heidler: www.friedrich.fr.schule-bw.de/ delphi

...

Recommended