Ereignisgesteuerte Programmierung

Slides:



Advertisements
Ähnliche Präsentationen
Anzahl der ausgefüllten und eingesandten Fragebögen: 211
Advertisements

Vorlesung: 1 Betriebliche Informationssysteme 2003 Prof. Dr. G. Hellberg Studiengang Informatik FHDW Vorlesung: Betriebliche Informationssysteme Teil3.
LS 2 / Informatik Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)
LS 2 / Informatik Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)
Kritische Betrachtung
Telefonnummer.
CPCP Institute of Clinical Pharmacology AGAH Annual Meeting, 29. Februar 2004, Berlin, Praktischer Umgang mit den Genehmigungsanträgen gemäß 12. AMG Novelle.
Modelle und Methoden der Linearen und Nichtlinearen Optimierung (Ausgewählte Methoden und Fallstudien) U N I V E R S I T Ä T H A M B U R G November 2011.
Modelle und Methoden der Linearen und Nichtlinearen Optimierung (Ausgewählte Methoden und Fallstudien) U N I V E R S I T Ä T H A M B U R G November 2011.
1 JIM-Studie 2010 Jugend, Information, (Multi-)Media Landesanstalt für Kommunikation Baden-Württemberg (LFK) Landeszentrale für Medien und Kommunikation.
= = = = 47 = 47 = 48 = =
Java: Objektorientierte Programmierung
Rechneraufbau & Rechnerstrukturen, Folie 2.1 © W. Oberschelp, G. Vossen W. Oberschelp G. Vossen Kapitel 2.
Grundkurs Theoretische Informatik, Folie 2.1 © 2006 G. Vossen,K.-U. Witt Grundkurs Theoretische Informatik Kapitel 2 Gottfried Vossen Kurt-Ulrich Witt.
Internet facts 2008-II Graphiken zu dem Berichtsband AGOF e.V. September 2008.
Vorlesung: 1 Betriebliche Informationssysteme 2003 Prof. Dr. G. Hellberg Studiengang Informatik FHDW Vorlesung: Betriebliche Informationssysteme Teil2.
Vererbung Spezialisierung von Klassen in JAVA möglich durch
PKJ 2005/1 Stefan Dissmann Rückblick auf 2005 Was zuletzt in 2005 vorgestellt wurde: Klassen mit Attributen, Methoden und Konstruktoren Referenzen auf.
PKJ 2005/1 Stefan Dissmann Zusammenfassung Bisher im Kurs erarbeitete Konzepte(1): Umgang mit einfachen Datentypen Umgang mit Feldern Umgang mit Referenzen.
Differentielles Paar UIN rds gm UIN
Prof. Dr. Bernhard Wasmayr
Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)
Kennlinie Lichtregelung in JavaNNS Version 1.1
Prof. Dr. Bernhard Wasmayr VWL 2. Semester
1 Teil 4 Übung: Uhr. 2 Zielsetzung Ziel ist es, mit Hilfe objektorientierter Modellierung ein System zu entwickeln, mit dem eine einfache Uhr simuliert.
Delphi Eine objektorientierte Programmiersprache © Beushausen 2000.
Rechneraufbau & Rechnerstrukturen, Folie 12.1 © W. Oberschelp, G. Vossen W. Oberschelp G. Vossen Kapitel 12.
Objektorientierte Modellierung
PRJ 2007/1 Stefan Dissmann Verkettete datenstruktur: Liste Problem: Liste, die eine beliebige Zahl von Elementen verwaltet Operationen: Erzeugen, Anfügen,
20:00.
© Gabriele Sowada © Gabriele Sowada 2 Manuell Beispiel 1 demonstriert die Vorgehensweise bei der manuellen Programm- Eingabe am.
„Küsse deine Freunde“ – FlexKom-App teilen
Zusatzfolien zu B-Bäumen
Eine Einführung in die Entwicklung ereignisgesteuerter Programme
Delphi II - OOP IFB Fortbildung
In der Schule.
Implementierung objektorientierter Modelle
Eine Einführung in die CD-ROM
Dokumentation der Umfrage
für Weihnachten oder als Tischdekoration für das ganze Jahr
Wir üben die Malsätzchen
Syntaxanalyse Bottom-Up und LR(0)
Einführung in die objektbasierte Programmierung mit Delphi
Datenstrukturen Klaus Becker (2002).
MVC-Uhr Siehe auch K. Merkert HSG-Kaiserslautern
Konzepte der objektorientierten Programmierung
Erste Programme mit Delphi
Einführung in die Software-Entwicklung mit Delphi Teil 1
HORIZONT 1 XINFO ® Das IT - Informationssystem PL/1 Scanner HORIZONT Software für Rechenzentren Garmischer Str. 8 D München Tel ++49(0)89 / 540.
Ganzheitliches Projekt-, Ressourcen- und Qualitätsmanagement 1 Reports und AddOns Auf den folgenden Seiten wird Ihnen die Funktionsweise der Reports und.
PROCAM Score Alter (Jahre)
Grundlagen von Objekt-Pascal Erstellt von J. Rudolf überarbeitet von H.Brehm.
Ertragsteuern, 5. Auflage Christiana Djanani, Gernot Brähler, Christian Lösel, Andreas Krenzin © UVK Verlagsgesellschaft mbH, Konstanz und München 2012.
Geometrische Aufgaben
Symmetrische Blockchiffren DES – der Data Encryption Standard
Retuschen.ppt Die folgende Schau zeigt die Möglichkeiten, mit PhotoDraw Digitalbilder zu retuschieren. Vergleichen Sie jeweils zwei Bildpaare durch fleissiges.
Zahlentheorie und Zahlenspiele Hartmut Menzer, Ingo Althöfer ISBN: © 2014 Oldenbourg Wissenschaftsverlag GmbH Abbildungsübersicht / List.
MINDREADER Ein magisch - interaktives Erlebnis mit ENZO PAOLO
1 (C)2006, Hermann Knoll, HTW Chur, FHO Quadratische Reste Definitionen: Quadratischer Rest Quadratwurzel Anwendungen.
Erste Schritte in DELPHI
Schutzvermerk nach DIN 34 beachten 20/05/14 Seite 1 Grundlagen XSoft Lösung :Logische Grundschaltung IEC-Grundlagen und logische Verknüpfungen.
Folie Beispiel für eine Einzelauswertung der Gemeindedaten (fiktive Daten)
1 Arbeitsgemeinschaft Biologische Psychiatrie Verordnungsgewohnheiten von Psychopharmaka Statuserhebung 2005 W.Günther G.Laux T.Messer N.Müller M.Schmauss.
Vorkurs Programmierungstechnik Einführung in Pascal Michael Gellner Lehrstuhl für Softwaretechnik am Institut für praktische Informatik der Universität.
Unternehmensbewertung Thomas Hering ISBN: © 2014 Oldenbourg Wissenschaftsverlag GmbH Abbildungsübersicht / List of Figures Tabellenübersicht.
Folie Einzelauswertung der Gemeindedaten
Datum:17. Dezember 2014 Thema:IFRS Update zum Jahresende – die Neuerungen im Überblick Referent:Eberhard Grötzner, EMA ® Anlass:12. Arbeitskreis Internationale.
Sehen, Hören, Schmecken: wenn uns unsere Sinne täuschen
1 Medienpädagogischer Forschungsverbund Südwest KIM-Studie 2014 Landesanstalt für Kommunikation Baden-Württemberg (LFK) Landeszentrale für Medien und Kommunikation.
Monatsbericht Ausgleichsenergiemarkt Gas – Oktober
 Präsentation transkript:

Ereignisgesteuerte Programmierung Klaus Becker 2002

Das 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 ?"

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

Dialog- und Ein-/Ausgabegestaltung Button / Schaltfläche Button / Schaltfläche Label / Anzeigefläche Ereignisgesteuerte graphische Interaktionselemente

Entwicklung ereignisgesteuerter Programme mit dem Werkzeug Zielsetzung Entwicklung ereignisgesteuerter Programme mit dem Werkzeug Delphi

Programmgestaltung mit GUI-Objekten Teil 1 Programmgestaltung mit GUI-Objekten

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

Entwurf der Benutzungsschnittstelle Benutzungsoberfläche: Label Edit Button Ereignisbehandlung: 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).

Delphi-Entwicklungsumgebung Komponentenpalette Objektinspektor Formular

Erzeugung von GUI-Objekten Aktivierung der Komponente

Festlegung von Objekteigenschaften Veränderung der zugeordneten Werte

Eine erste Objektvorstellung Objektname Klasse EJahr: TEdit EAnzahl: TEdit BInit: TButton Text = ´´ Left = 208 Top = 80 ... Text = ´´ Left = 208 Top = 120 ... Caption = ´Init´ Left = 240 Top = 176 ... Jedes Objekt ist über seinen Namen identifizierbar. Objekte mit gleichem Aufbau (Attributen) werden zu Klassen zusammengefasst.

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

Benutzungsoberfläche Modellierung: LUeberschrift LJahr EJahr LAnzahl EAnzahl BInit BWeiter GUI-Objekte: LUeberschrift: TLabel EJahr: TEdit BInit: TButton ... ... ... LJahr: TLabel EAnzahl: TEdit BWeiter: TButton ... ... ... LAnzahl: TLabel Form1: TForm ... ...

Implementierung 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. LUeberschrift LJahr EJahr LAnzahl EAnzahl BInit BWeiter

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

Daten und Operationen Modellierung: Variablen / Konstanten: Informationen: Im Jahr 1999 wurde die 6 Milliardengrenze überschritten; zur Zeit wächst die Weltbevölkerung jährlich um ca. 1,3 %. const p = 1.3; var Jahr : integer; Anzahl : real;

Operationen Benutzeraktion: Mausklick auf init-Button Programmreaktion: Die Anfangspopulation (1999: 6.0 Mrd.) wird festgelegt. procedure initPopulation; begin Jahr := 1999; Anzahl := 6.0; end; Benutzeraktion: Mausklick auf >-Button Programmreaktion: Die nächste Population wird berechnet. procedure naechstePopulation; begin Jahr := Jahr + 1; Anzahl := Anzahl + p/100*Anzahl; end;

Implementierung Aufgabe: Ergänzen Sie in der Implementierung das Datenmodell wie folgt. ... implementation {$R *.DFM} // Datenmodell const p = 1.3; // jährliche prozentuale Wachstumsrate var Jahr : integer; Anzahl : real; // Operationen zur Aktualisierung des Datenmodells procedure initPopulation; begin ... end; procedure naechstePopulation; end.

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

Datenaustausch mit den GUI-Objekten Variablen / Konstanten: GUI-Objekte: const p = 1.3; var Jahr : integer; Anzahl : real; EJahr: TEdit Text = ... EAnzahl: TEdit Text = ... Variablen GUI-Objekte Jahr := StrToInt(EJahr.Text); Anzahl := StrToFloat(EAnzahl.Text); Variablen GUI-Objekte EJahr.Text := IntToStr(Jahr); EAnzahl.Text := FloatToStr(Anzahl);

Ereignisbehandlungsmethoden Ereignis: Mausklick auf init-Button procedure TForm1.BInitClick(Sender: TObject); begin initPopulation; // Aktualisier. der Daten EJahr.Text := IntToStr(Jahr); // Aktualisierung der EAnzahl.Text := FloatToStr(Anzahl); // Objektattributwerte end; Ereignis: Mausklick auf >-Button procedure TForm1.BWeiterClick(Sender: TObject); begin naechstePopulation; // Aktualisier. der Daten EJahr.Text := IntToStr(Jahr); // Aktualisierung der EAnzahl.Text := FloatToStr(Anzahl); // Objektattributwerte end;

Delphi-Quelltext Aufgabe: Ergänzen Sie in der Implementierung die fehlenden Ereignisbehandlungsmethoden. ... implementation {$R *.DFM} // Datenmodell // Operationen zur Aktualisierung des Datenmodells // Ereignisbehandlungsmethoden procedure TForm1.BInitClick(Sender: TObject); begin ... end; procedure TForm1.BWeiterClick(Sender: TObject); end. Bevölkerungsentwicklung1

Projektdateien – eine Übersicht Project1.dpr program Project1; uses Forms, Unit1 in 'Unit1.pas' {Form1}; {$R *.RES} begin Application.Initialize; Application.CreateForm(TForm1, Form1); Application.Run; end. Project1.exe Compiliertes Programm Project1.res Windows-Ressourcendatei (Button, Label, ...) Project1.dof Delphi-Projekt-Optionen Project1.cfg Konfigurationsdatei Unit1.pas Quelltext für Unit1 Unit1.dcu compilierte Unit1 Unit1.dfm Bilddatei für Form1

Übungen – Aufgabe 1 Ergänzen Sie weitere Buttons, deren Verhalten wie folgt spezifiziert ist: Benutzeraktion: 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.

Ü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?

Ü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?

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

Ereignisverarbeitung Teil 2 Ereignisverarbeitung

Der 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)

Modellierung der Benutzungsschnittstelle

Modellierung 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

Modellierung der Daten und Operationen var Rechenzeichen: char; Zahl1, Zahl2, Ergebnis: integer; Verarbeitungsoperationen: procedure PlusAufgabeErzeugen; ... procedure MinusAufgabeErzeugen; ... procedure MalAufgabeErzeugen; ... procedure DurchAufgabeErzeugen; ... procedure ErgebnisBerechnen; ...

Auszug aus der Implementierung ... procedure PlusAufgabeErzeugen; begin Zahl1 := random(11); Zahl2 := random(11); Rechenzeichen := '+'; end; procedure MinusAufgabeErzeugen; Rechenzeichen := '-'; procedure MalAufgabeErzeugen; Beachte: Die Implementierung ist redundant.

Modellierung der Daten und Operationen var Rechenzeichen: char; Zahl1, Zahl2, Ergebnis: integer; Verarbeitungsoperationen: procedure AufgabeErzeugen; ... procedure ErgebnisBerechnen; ...

Modellierung der Ereignisbehandlung BAddition.OnClick BSubtraktion.OnClick BMultiplikation.OnClick BDivision.OnClick BErgebnis.OnClick Form1.OnCreate Behandlungsmethode: TForm1.RechenzeichenClick(Sender: TObject) TForm1.BErgebnisClick(Sender: TObject) TForm1.FormCreate(Sender: TObject)

Verarbeitung von Ereignissen Auslösende Aktion: Mausklick auf +-Button Ereignis: BAddition.OnClick Ausgelöste Aktion: RechenzeichenClick(BAddition) Sender Delphi wartet auf Ereignisse und reagiert mit der Ausführung der zugeordneten Methoden

Implementierungshinweise Ereignis: BAddition.OnClick BSubtraktion.OnClick BMultiplikation.OnClick BDivision.OnClick Behandlungsmethode: TForm1.RechenzeichenClick(Sender: TObject) procedure TForm1.BRechenzeichenClick(Sender: TObject); begin // Aktualisierung der Modelldaten if Sender = BAddition then Rechenzeichen := '+'; if Sender = BSubtraktion then Rechenzeichen := '-'; if Sender = BMultiplikation then Rechenzeichen := '*'; if Sender = BDivision then Rechenzeichen := ':'; // Aufruf der Verarbeitungsoperationen AufgabeErzeugen; ErgebnisBerechnen; // Aktualisierung der Anzeige LZahl1.Caption := IntToStr(Zahl1); ... end;

Implementierung Aufgabe: Ändern Sie das Programm Rechentrainer1 gemäß der verbesserten Modellierung ab. (zur Kontrolle: Rechentrainer2)

Ü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)

Modellierung ereignisgesteuerter Abläufe Teil 3 Modellierung ereignisgesteuerter Abläufe

Das 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) ?"

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

Modellierung der Benutzungsoberfläche

Ablaufmodellierung Zustand: bereit gewählt fertig Ereignis: Form1.OnCreate BTuer1.OnClick ... BNeu.OnClick Aktionen: Spiel vorbereiten Anzeigen Ziegentür öffnen Anzeigen Spiel auswerten Anzeigen Neuer Zustand: bereit gewählt fertig

Ablaufmodellierung Zustandsbasierte Ablaufmodellierung BTuer3.OnClick/ Ziegentür öffnen BTuer3.OnClick / Spiel auswerten BNeu.OnClick / Spiel vorbereiten BTuer2.OnClick / Ziegentür öffnen BTuer2.OnClick / Spiel auswerten BTuer1.OnClick / Ziegentür öffnen BTuer1.OnClick / Spiel auswerten Form1.OnCreate / Spiel vorbereiten bereit gewählt fertig BNeu.OnClick / Spiel vorbereiten BNeu.OnClick / Spiel vorbereiten BTuer3.OnClick BTuer2.OnClick Zustandsbasierte Ablaufmodellierung BTuer1.OnClick Darstellung mit einem Zustandsübergangsdiagramm

Modellierungstechnik: Automat Ereignis [Bedingung] / Aktion Zustand1 Zustand2 Grundschema eines Zustandsübergangs bei einem (Harel-) Automat

Datenmodellierung Version 1 type tZustand = (bereit, gewaehlt, fertig); var offen1: boolean offen2: boolean offen3: boolean Gewinntuer: integer; gewaehlteTuer: integer; Gewinn: string; Spielzustand: tZustand Ziegenproblem1

Datenmodellierung Version 2 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 Ziegenproblem2

Datenmodellierung Version 3 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

Modellierung der Verarbeitungsoperationen 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

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

Ü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

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

Aufgabe 6 - Lösungsvorschlag Password1

Aufgabe 6 - Lösungsvorschlag Form1.OnCreate / DatenInitialisieren EEingabe.OnChange / [Eingabe  Password] / Ausgabe: falsch EEingabe.OnChange / [Eingabe  Password] / Ausgabe: falsch EEingabe.OnChange / [Eingabe  Password] / Ausgabe: falsch 1 2 3 EEingabe.OnChange / [Eingabe = Password] / Ausgabe: ok 4 EEingabe.OnChange / EEingabe.OnChange /

Aufgabe 6 - Lösungsvorschlag // Datenmodell type tZustand = 0..4; var Password : integer; Eingabe : integer; Zustand : tZustand; // Datenverarbeitungsoperationen procedure DatenInitialisieren; begin randomize; Password := random(10); Zustand := 0; end; Password1

Aufgabe 6 - Lösungsvorschlag // Ereignisbehandlungsmethoden procedure TForm1.FormCreate(Sender: TObject); begin // Aktualisierung des Datenmodells DatenInitialisieren; end; procedure TForm1.EEingabeChange(Sender: TObject); if Zustand < 3 then Eingabe := StrToInt(EEingabe.Text); if Eingabe = Password then Zustand := 4 else Zustand := Zustand + 1; // Aktualisierung der Anzeige if Zustand = 4 then PRueckmeldung.Caption := 'Ok!' PRueckmeldung.Caption := 'Falsch!'; Password1

Entwicklung von Delphi-Programmen Teil 4 Entwicklung von Delphi-Programmen

Programmentwicklung 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

Strukturierung: Model-View-Control var Rechenzeichen: char; Zahl1, Zahl2, Ergebnis: integer; procedure AufgabeErzeugen; ... Model procedure ErgebnisBerechnen; ... Control Control View

Programmgestaltung 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;

Programmgestaltung implementation {$R *.DFM} // Datenmodell (Model) const ... type var // Operationen zur Aktualisierung des Datenmodells procedure ...; begin ... end; function ...; // Ereignisbehandlungsmethoden (Control) procedure TForm1.???OnClick(Sender: TObject); begin // Aktualisierung des Modells (Model) // Aktualisierung der Anzeige (View) end; end.

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

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