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
...