![Page 1: Einführung in die Software-Entwicklung mit Delphi Teil 1 Klaus Becker 2005](https://reader036.vdocuments.mx/reader036/viewer/2022062512/55204d7549795902118ca19d/html5/thumbnails/1.jpg)
Einführung in dieSoftware-Entwicklung mit
Delphi Teil 1
Klaus Becker
2005
![Page 2: Einführung in die Software-Entwicklung mit Delphi Teil 1 Klaus Becker 2005](https://reader036.vdocuments.mx/reader036/viewer/2022062512/55204d7549795902118ca19d/html5/thumbnails/2.jpg)
2 Miniprojekt „chuck a luck“
1$ 1$ 1$ 1$1$ 1$ 1$
1$ 1$1
2
3
4
5
631$31$
Interaktive Systeme entwickeln Benutzungsoberfläche gestalten Ereignisverarbeitung konzipieren und implementieren Systeme modellieren und strukturieren
![Page 3: Einführung in die Software-Entwicklung mit Delphi Teil 1 Klaus Becker 2005](https://reader036.vdocuments.mx/reader036/viewer/2022062512/55204d7549795902118ca19d/html5/thumbnails/3.jpg)
3 Teil 1
Grafische Benutzungsoberfläche
![Page 4: Einführung in die Software-Entwicklung mit Delphi Teil 1 Klaus Becker 2005](https://reader036.vdocuments.mx/reader036/viewer/2022062512/55204d7549795902118ca19d/html5/thumbnails/4.jpg)
4 Das Würfelspiel „chuck a luck“
1$ 1$ 1$ 1$1$ 1$ 1$
1$1$ 1$
1
2
3
4
5
6
Einsatz zahlen und Zahl tippen
Würfel werfen
Gewinn verbuchen
Einsatz: 1 $
3
Gewinn:
0 Treffer: 1 Treffer: Einsatz + 1 $
2 Treffer: Einsatz + 2 $3 Treffer: Einsatz + 3 $
1$
1$
1$1$
3
![Page 5: Einführung in die Software-Entwicklung mit Delphi Teil 1 Klaus Becker 2005](https://reader036.vdocuments.mx/reader036/viewer/2022062512/55204d7549795902118ca19d/html5/thumbnails/5.jpg)
5 Zielsetzung
Ziel ist es, ein System zu entwickeln, mit dem das in Amerika weit verbreitete Würfelspiel „chuck a luck“ am Rechner gespielt werden kann. Als Werkzeug benutzen wir das Programmiersystem „Delphi“.
![Page 6: Einführung in die Software-Entwicklung mit Delphi Teil 1 Klaus Becker 2005](https://reader036.vdocuments.mx/reader036/viewer/2022062512/55204d7549795902118ca19d/html5/thumbnails/6.jpg)
6 Anforderungen
/1/ Der Benutzer hat einen vorgegebenen Geldbetrag auf seinem Konto.
/2/ Der Benutzer kann seinen Einsatz zahlen und eine Zahl auf dem Spielfeld setzen.
/3/ Das System simuliert auf Wunsch das Werfen von drei Würfeln.
/4/ Das System berechnet auf Wunsch den Gewinn und verbucht ihn auf dem Konto.
...
![Page 7: Einführung in die Software-Entwicklung mit Delphi Teil 1 Klaus Becker 2005](https://reader036.vdocuments.mx/reader036/viewer/2022062512/55204d7549795902118ca19d/html5/thumbnails/7.jpg)
7
Eine grafische Benutzungsoberfläche (GUI: Graphical User Interface) legt das äußere Erscheinungsbild eines Programms und die Interaktionsmöglichkeiten des Benutzers mit dem Programm fest. Eine grafische Benutzungsschnittstelle dient als Mensch-Maschine-Schnittstelle.
Benutzungsoberfläche
Der erste Schritt besteht darin, eine Benutzungsoberfläche zu entwerfen und sie mit Hilfe der von Delphi vorgegebenen Komponentenpalette zu erstellen.
![Page 8: Einführung in die Software-Entwicklung mit Delphi Teil 1 Klaus Becker 2005](https://reader036.vdocuments.mx/reader036/viewer/2022062512/55204d7549795902118ca19d/html5/thumbnails/8.jpg)
8 GUI-Objekt
Eine Benutzungsoberfläche wird mit Hilfe von sog. GUI-Objekten aufgebaut. (GUI: Graphical User Interface)
GUI-Objekt
Die Eigenschaften eines Objekts kann man sich mit dem Objektinspektor anzeigen lassen.
GUI-Objekt
GUI-Objekt
GUI-Objekt
![Page 9: Einführung in die Software-Entwicklung mit Delphi Teil 1 Klaus Becker 2005](https://reader036.vdocuments.mx/reader036/viewer/2022062512/55204d7549795902118ca19d/html5/thumbnails/9.jpg)
9 Objekt
Ein Objekt hat (in der Regel) einen Namen und wird einer Klasse zugeordnet. Die Klasse legt dabei den Typ des Objekts fest.
PKonto: TPanel
Im Objektinspektor werden Name und zugehörige Klasse eines Objekts in einem Fenster angezeigt.
PKonto: TPanel
![Page 10: Einführung in die Software-Entwicklung mit Delphi Teil 1 Klaus Becker 2005](https://reader036.vdocuments.mx/reader036/viewer/2022062512/55204d7549795902118ca19d/html5/thumbnails/10.jpg)
10 Aufbau und Zustand eines Objekts
PKonto: TPanel
Caption = ´Konto´Left = 223...
Klasse
Attribut Attributwert
Der Aufbau eines Objekts wird mit Hilfe von Attributen (Eigenschaften) festgelegt. Die Attributwerte legen den aktuellen Objektzustand fest.
Attribut
Attributwert
Um die Struktur von Objekten zu beschreiben, benutzen wir eine vereinfachende Darstellung. Man nennt eine solche Darstellung Objektdiagramm.
Name
Klasse
Name
Objektdiagramm
![Page 11: Einführung in die Software-Entwicklung mit Delphi Teil 1 Klaus Becker 2005](https://reader036.vdocuments.mx/reader036/viewer/2022062512/55204d7549795902118ca19d/html5/thumbnails/11.jpg)
11 Aufgabe
Erstellen Sie eine Benutzungsoberfläche, die aus folgendenden GUI-Objekten aufgebaut ist. Beachten Sie unbedingt den Hinweis auf der nächsten Folie.
PUeberschrift:
TPanelPKonto: TPanel
PWuerfel: TPanel
Pspielfeld: TPanel
PWuerfel1: TPanel PWuerfel2:
TPanel
PKontostand:
TPanel
PWuerfel3:TPanel
BWuerfelWerfen:
TButton
ESpielzahl: TEdit
FGUI: TFGUI
BEinsatzZahlen:TButton
BGewinnVerbuchen:
TButton
![Page 12: Einführung in die Software-Entwicklung mit Delphi Teil 1 Klaus Becker 2005](https://reader036.vdocuments.mx/reader036/viewer/2022062512/55204d7549795902118ca19d/html5/thumbnails/12.jpg)
12
Vorbereitung eines Delphi-Projektes
Delphi erzeugt eine ganze Reihe von Dateien zur Verwaltung eines Programmierprojektes. Um diese Dateien verwalten zu können, sollte man sie immer in einem eigenen Ordner speichern.
Schritte zur Vorbereitung eines Delphi-Projektes:
1. Neuen Ordner anlegen: <ChuckALuck0>
2. Delphi starten
3. Datei Projekt speichern unter: <ChuckALuck0/...>
![Page 13: Einführung in die Software-Entwicklung mit Delphi Teil 1 Klaus Becker 2005](https://reader036.vdocuments.mx/reader036/viewer/2022062512/55204d7549795902118ca19d/html5/thumbnails/13.jpg)
13 Ein Blick in die Datei „Unit1.dfm“
object FGUI: TFGUI Left = 399 Top = 112 Width = 514 Height = 302 Caption = 'Fgui' Color = clBtnFace Font.Charset = DEFAULT_CHARSET Font.Color = clWindowText Font.Height = -11 Font.Name = 'MS Sans Serif' Font.Style = [] OldCreateOrder = False PixelsPerInch = 96 TextHeight = 13 object PUeberschrift: TPanel Left = 32 Top = 32 Width = 441 Height = 41 Caption = 'chuck a luck' Font.Charset = DEFAULT_CHARSET ...
... Font.Color = clWindowText Font.Height = -19 Font.Name = 'MS Sans Serif' Font.Style = [] ParentFont = False TabOrder = 0 end object PSpielfeld: TPanel Left = 32 Top = 104 Width = 137 Height = 25 Caption = 'Spielfeld' TabOrder = 1 end object PWuerfel: TPanel Left = 184 Top = 104 ... end ...end
Achtung: Diese Datei wird in älteren Delphi-Versionen als Binärdatei abgespeichert.Siehe auch http://hsg.region-kaiserslautern.de/faecher/inf/material/misc/d6_2_d4.php
![Page 14: Einführung in die Software-Entwicklung mit Delphi Teil 1 Klaus Becker 2005](https://reader036.vdocuments.mx/reader036/viewer/2022062512/55204d7549795902118ca19d/html5/thumbnails/14.jpg)
14
„verwaltet“
Objekthierarchie
FGUI:TFGUI
PUeberschrift:TPanelPSpielfeld:TPanel
PWuerfel:TPanel
PKonto:TPanel
ESpielzahl:TEdit
......
...
object FGUI: TFGUI Left = 399 Top = 112 Width = 514 Height = 302 Caption = 'Fgui' Color = clBtnFace Font.Charset = DEFAULT_CHARSET Font.Color = clWindowText Font.Height = -11 Font.Name = 'MS Sans Serif' Font.Style = [] OldCreateOrder = False PixelsPerInch = 96 TextHeight = 13 object PUeberschrift: TPanel Left = 32 Top = 32 Width = 441 Height = 41 Caption = 'chuck a luck' Font.Charset = DEFAULT_CHARSET ...
![Page 15: Einführung in die Software-Entwicklung mit Delphi Teil 1 Klaus Becker 2005](https://reader036.vdocuments.mx/reader036/viewer/2022062512/55204d7549795902118ca19d/html5/thumbnails/15.jpg)
15 Ein Blick in die Datei „Unit1.pas“
unit Unit1;
interface
uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,StdCtrls, ExtCtrls;
type TFGUI = class(TForm) ... private { Private-Deklarationen } public { Public-Deklarationen } end;
var FGUI: TFGUI;
implementation{$R *.DFM}end.
Delphi-Quelltext
![Page 16: Einführung in die Software-Entwicklung mit Delphi Teil 1 Klaus Becker 2005](https://reader036.vdocuments.mx/reader036/viewer/2022062512/55204d7549795902118ca19d/html5/thumbnails/16.jpg)
16 Delphi-Quelltext (Unit1.pas)
unit Unit1;interfaceuses ...type TFgui = class(TForm) PUeberschrift: TPanel; PSpielfeld: TPanel; PWuerfel: TPanel; PKonto: TPanel; ESpielzahl: TEdit; PWuerfel1: TPanel; PWuerfel2: TPanel; PWuerfel3: TPanel; PKontostand: TPanel; BWuerfelWerfen: TButton; BGewinnVerbuchen: TButton; BEinsatzZahlen: TButton; private { Private-Deklarationen } public { Public-Deklarationen } end;...
Deklaration eines Formulars mit GUI-Objekten
![Page 17: Einführung in die Software-Entwicklung mit Delphi Teil 1 Klaus Becker 2005](https://reader036.vdocuments.mx/reader036/viewer/2022062512/55204d7549795902118ca19d/html5/thumbnails/17.jpg)
17 Kompilierung
Start
Beim Kompilieren wird ein Delphi-Projekt in lauffähigen Delphi-Code übersetzt (siehe Project1.exe). Dieser Code kann dann anschließend ausgeführt werden.
![Page 18: Einführung in die Software-Entwicklung mit Delphi Teil 1 Klaus Becker 2005](https://reader036.vdocuments.mx/reader036/viewer/2022062512/55204d7549795902118ca19d/html5/thumbnails/18.jpg)
18 Aufgabe
Testen Sie die Funktionalitäten des bisher entwickelten Programms. Was fällt auf?
![Page 19: Einführung in die Software-Entwicklung mit Delphi Teil 1 Klaus Becker 2005](https://reader036.vdocuments.mx/reader036/viewer/2022062512/55204d7549795902118ca19d/html5/thumbnails/19.jpg)
19 Teil 2
Ereignisse und ihre Verarbeitung
![Page 20: Einführung in die Software-Entwicklung mit Delphi Teil 1 Klaus Becker 2005](https://reader036.vdocuments.mx/reader036/viewer/2022062512/55204d7549795902118ca19d/html5/thumbnails/20.jpg)
20 Interaktion: Benutzer - Programm
Das erwartete Verhalten des Programms kann wie folgt beschrieben werden:
Auslösendes Ereignis
Eingabe der Spielzahl
Mausklick auf den Button mit der Aufschrift „Einsatz zahlen“
Mausklick auf den Button mit der Aufschrift „Würfel werfen“
Mausklick auf den Button mit der Aufschrift „Gewinn verbuchen“
Ausgelöste Aktion(en)
Der Einsatz wird vom Konto abgebucht. Der neue Kontostand wird angezeigt.
Die Würfelwürfe werden simuliert. Die Würfelergebnisse werden angezeigt.
Die Spielzahl wird übernommen, der Gewinn dann ermittelt und auf dem Konto verbucht. Der neue Kontostand wird angezeigt.
![Page 21: Einführung in die Software-Entwicklung mit Delphi Teil 1 Klaus Becker 2005](https://reader036.vdocuments.mx/reader036/viewer/2022062512/55204d7549795902118ca19d/html5/thumbnails/21.jpg)
21 Realisierung in Delphi
Doppel-Klick auf den Button erzeugt eine neue Prozedur.
Doppel-Klick
Prozedur zur Ereignisverarbeitung
Ereignis
![Page 22: Einführung in die Software-Entwicklung mit Delphi Teil 1 Klaus Becker 2005](https://reader036.vdocuments.mx/reader036/viewer/2022062512/55204d7549795902118ca19d/html5/thumbnails/22.jpg)
22 Ereignisverarbeitung
Wir ergänzen die Implementierung der Prozedur wie unten angezeigt und kompilieren das Programm. Bei einem Mausklick auf den Button mit der Aufschrift „Würfel werfen“ zeigt das Programm das gewünschte Verhalten. procedure TFGUI.BWuerfelWerfenClick(Sender: TObject); var wuerfel1: integer; wuerfel2: integer; wuerfel3: integer;begin// Verarbeitung: Würfeln simulierenwuerfel1 := random(6)+1;wuerfel2 := random(6)+1;wuerfel3 := random(6)+1;// Ausgabe: Aktualisierung der AnzeigePWuerfel1.Caption := IntToStr(wuerfel1);PWuerfel2.Caption := IntToStr(wuerfel2);PWuerfel3.Caption := IntToStr(wuerfel3);end;
![Page 23: Einführung in die Software-Entwicklung mit Delphi Teil 1 Klaus Becker 2005](https://reader036.vdocuments.mx/reader036/viewer/2022062512/55204d7549795902118ca19d/html5/thumbnails/23.jpg)
23 Ereignisverarbeitung
Analog erzeugen wir eine Prozedur zur Verarbeitung eines Mausklicks auf den Button mit der Aufschrift „Einsatz zahlen“.
procedure TFGUI.BEinsatzZahlenClick(Sender: TObject); var konto: integer;begin// Eingabe: Kontostand übernehmenkonto := StrToInt(PKontostand.Caption);// Verarbeitung: Einsatz vom Konto abbuchenkonto := konto-1;// Ausgabe: Aktualisierung der AnzeigePKontostand.Caption := IntToStr(konto);end;
![Page 24: Einführung in die Software-Entwicklung mit Delphi Teil 1 Klaus Becker 2005](https://reader036.vdocuments.mx/reader036/viewer/2022062512/55204d7549795902118ca19d/html5/thumbnails/24.jpg)
24
Initialisierung des Zufallsgenerators
procedure TFGUI.FormCreate(Sender: TObject);beginrandomize;end;
Auslösendes Ereignis
Erzeugung des Formulars (unmittelbar nach dem Programmstart)
Ausgelöste Aktion(en)
Der Zufallsgenerator von Delphi wird initialisiert.
Doppel-Klick auf das Formular erzeugt eine neue Prozedur.
![Page 25: Einführung in die Software-Entwicklung mit Delphi Teil 1 Klaus Becker 2005](https://reader036.vdocuments.mx/reader036/viewer/2022062512/55204d7549795902118ca19d/html5/thumbnails/25.jpg)
25 Ereignisse
Ein Ereignis ist eine Zustandsänderung in einem Objekt, die von Interesse ist und daher mit einer Ereignisbehandlungsroutine (Prozedur zur Ereignisverarbeitung) verknüpft werden kann. (K. Merkert)
Ereignisverarbeitung:Dieses Ereignis wird vom Betriebssystem an das Programm weitergegeben. Im Programm muss eine spezielle Prozedur „BWuerfelWerfenClick“ zur Verarbeitung des Ereignisses implementiert sein. Zur Ereignisverarbeitung in Delphi siehe K. Merkert: http://hsg.region-kaiserslautern.de/faecher/inf/material/ereignisse/index.php
Ereignis:Der Benutzer klickt auf den Button „Würfel werfen“ und löst hierdurch das Ereignis „BWuerfelWerfen.onClick“ aus.
Ereignisverarbeitung:Dieses Ereignis wird vom Betriebs-system an das Programm weiter-gegeben. Im Programm muss eine spezielle Prozedur „FGUICreate“ zur Verarbeitung des Ereignisses implementiert sein.
Ereignis:Das Formular wird von Delphi erzeugt und löst dabei das Ereignis „FGUI.onCreate“ aus.
![Page 26: Einführung in die Software-Entwicklung mit Delphi Teil 1 Klaus Becker 2005](https://reader036.vdocuments.mx/reader036/viewer/2022062512/55204d7549795902118ca19d/html5/thumbnails/26.jpg)
26 Aufgabe
Ergänzen Sie Schritt für Schritt die Prozeduren zur Ereignisverarbeitung. Versuchen Sie insbesondere, die Prozedur zur Verarbeitung des Ereignisses „Mausklick auf den Button Gewinn verbuchen“ in Analogie zu den gezeigten Ereignisverarbeitungsprozeduren zu entwickeln. Nutzen Sie das Hilfe-System von Delphi bei der Implementierung bzw. die folgenden Folien.
![Page 27: Einführung in die Software-Entwicklung mit Delphi Teil 1 Klaus Becker 2005](https://reader036.vdocuments.mx/reader036/viewer/2022062512/55204d7549795902118ca19d/html5/thumbnails/27.jpg)
27 Exkurs: Delphi-Grundlagen
procedure TFGUI.BEinsatzZahlenClick(Sender: TObject); var konto: integer;
begin// Eingabe: Kontostand übernehmenkonto := StrToInt(PKontostand.Caption);
// Verarbeitung: Einsatz vom Konto abbuchenkonto := konto-1;
// Ausgabe: Aktualisierung der AnzeigePKontostand.Caption := IntToStr(konto);
end;
Variablendeklaration
PKontostand: TPanel
Caption = ´99´...
konto:
konto: 100
konto: 99
DatentypBezeichner
PKontostand: TPanel
Caption = ´100´...
Variablen dienen dazu, Daten (eines festgelegten Datentyps) innerhalb eines Programms zwischenzuspeichern.
![Page 28: Einführung in die Software-Entwicklung mit Delphi Teil 1 Klaus Becker 2005](https://reader036.vdocuments.mx/reader036/viewer/2022062512/55204d7549795902118ca19d/html5/thumbnails/28.jpg)
28 Exkurs: Delphi-Grundlagen
procedure TFGUI.BEinsatzZahlenClick(Sender: TObject); var konto: integer;
begin// Eingabe: Kontostand übernehmenkonto := StrToInt(PKontostand.Caption);
// Verarbeitung: Einsatz vom Konto abbuchenkonto := konto-1;
// Ausgabe: Aktualisierung der AnzeigePKontostand.Caption := IntToStr(konto);end;
Wertzuweisung
konto:
konto: 100
konto: 99
Variablenzustand vorher
Eine Veränderung eines Variablenwerts kann mit Hilfe einer Wertzuweisung erfolgen. Der Wert des Terms (rechte Seite der Wertzuweisung) wird bzgl. des aktuellen Variablenzustands ermittelt und der Variablen (linke Seite der Wertzuweisung) als neuer Wert zugewiesen. Der Inhalt der zur Variablen gehörenden Speicherzelle wird dabei überschrieben.
Variablenzustand nachher
![Page 29: Einführung in die Software-Entwicklung mit Delphi Teil 1 Klaus Becker 2005](https://reader036.vdocuments.mx/reader036/viewer/2022062512/55204d7549795902118ca19d/html5/thumbnails/29.jpg)
29 Exkurs: Delphi-Grundlagen
procedure TFGUI.BEinsatzZahlenClick(Sender: TObject); var konto: integer;begin
// Eingabe: Kontostand übernehmenkonto := StrToInt(PKontostand.Caption);
// Verarbeitung: Einsatz vom Konto abbuchenkonto := konto-1;
// Ausgabe: Aktualisierung der AnzeigePKontostand.Caption := IntToStr(konto);
end;
string
Beachte: Bei einer Wertzuweisung müssen die Datentypen zusammenpassen.
Datentyp
integer
Typumwandlung
string integer
Typumwandlung
PKontostand: TPanel
Caption = ´100´...
PKontostand: TPanel
Caption = ´99´...
konto:
konto: 100
konto: 99
![Page 30: Einführung in die Software-Entwicklung mit Delphi Teil 1 Klaus Becker 2005](https://reader036.vdocuments.mx/reader036/viewer/2022062512/55204d7549795902118ca19d/html5/thumbnails/30.jpg)
30 Exkurs: Delphi-Grundlagen
procedure TFGUI.BWuerfelWerfenClick(Sender: TObject); var wuerfel1: integer; wuerfel2: integer; wuerfel3: integer;begin// Verarbeitung: Würfeln simulierenwuerfel1 := random(6)+1;wuerfel2 := random(6)+1;wuerfel3 := random(6)+1;// Ausgabe: Aktualisierung der AnzeigePWuerfel1.Caption := IntToStr(wuerfel1);PWuerfel2.Caption := IntToStr(wuerfel2);PWuerfel3.Caption := IntToStr(wuerfel3);end;
Deklarationsteil
Anweisungsteil
Prozedur-Deklaration
Variablendeklaration
Anweisung
Kommentar
Beachte: Erst deklarieren, dann benutzenAlle Variablen (Prozeduren etc.) müssen zuerst deklariert werden, bevor sie benutzt werden können.
![Page 31: Einführung in die Software-Entwicklung mit Delphi Teil 1 Klaus Becker 2005](https://reader036.vdocuments.mx/reader036/viewer/2022062512/55204d7549795902118ca19d/html5/thumbnails/31.jpg)
31 Exkurs: Delphi-Grundlagen
procedure TFGUI.BWuerfelWerfenClick(Sender: TObject); var wuerfel1: integer; wuerfel2: integer; wuerfel3: integer;begin// Verarbeitung: Würfeln simulierenwuerfel1 := random(6)+1;wuerfel2 := random(6)+1;wuerfel3 := random(6)+1;// Ausgabe: Aktualisierung der AnzeigePWuerfel1.Caption := IntToStr(wuerfel1);PWuerfel2.Caption := IntToStr(wuerfel2);PWuerfel3.Caption := IntToStr(wuerfel3);end;
Beachte: SyntaxregelnDamit der Delphi-Compiler das Programm in Maschinencode übersetzen kann, müssen die für die Programmiersprache Delphi geltenden Syntaxregeln eingehalten werden.
Semikolon als Trennsymbol
Schlüsselwort
Vordefinierte Bezeichner
![Page 32: Einführung in die Software-Entwicklung mit Delphi Teil 1 Klaus Becker 2005](https://reader036.vdocuments.mx/reader036/viewer/2022062512/55204d7549795902118ca19d/html5/thumbnails/32.jpg)
32 Exkurs: Delphi-Grundlagen
procedure TFGUI.BGewinnVerbuchenClick(Sender: TObject); var wuerfel1, wuerfel2, wuerfel3: integer; spielzahl: integer; konto: integer; treffer: integer;begin// Eingabe: spieldaten übernehmenspielzahl := StrToInt(ESpielzahl.Text);konto := StrToInt(PKontostand.Caption);wuerfel1 := StrToInt(PWuerfel1.Caption);wuerfel2 := StrToInt(PWuerfel2.Caption);wuerfel3 := StrToInt(PWuerfel3.Caption);// Verarbeitung: Treffer und neuen Kontostand bestimmentreffer := 0;if spielzahl = wuerfel1 then inc(treffer);if spielzahl = wuerfel2 then inc(treffer);if spielzahl = wuerfel3 then inc(treffer);if treffer > 0 then konto := konto+treffer+1;// Ausgabe: Aktualisierung der AnzeigePKontostand.Caption := IntToStr(konto);end;
Sequenz
Wertzuweisung
Fallunterscheidung
![Page 33: Einführung in die Software-Entwicklung mit Delphi Teil 1 Klaus Becker 2005](https://reader036.vdocuments.mx/reader036/viewer/2022062512/55204d7549795902118ca19d/html5/thumbnails/33.jpg)
33
for ... to ... do begin ... end;
Exkurs: Delphi-Grundlagen
Kontrollstrukturen dienen dazu, den genauen Ablauf der Verarbeitung festzulegen. Wichtige Kontrollstrukturen sind Sequenz(bildung), Fallunterscheidung und Wiederholung.
Sequenz
begin ...end;
if ... then begin ... end;
Einseitige Fallunterscheidung
if ... then begin ... endelse begin ... end;
while ... do begin ... end;
Wiederholung mit
Anfangsbedingung
repeat ...until ...;
Zweiseitige Fallunterscheidung
ZählschleifeWiederholung
mitEndbedingung
![Page 34: Einführung in die Software-Entwicklung mit Delphi Teil 1 Klaus Becker 2005](https://reader036.vdocuments.mx/reader036/viewer/2022062512/55204d7549795902118ca19d/html5/thumbnails/34.jpg)
34 Aufgabe
Das Programm zur Simulation des Chuck-A-Luck-Spiels soll wie folgt modifiziert werden:- Das gesamte Spiel soll mit nur einem Button ausgeführt werden.- Zur Eingabe der Spielzahl soll eine sog. RadioGroup benutzt werden.
![Page 35: Einführung in die Software-Entwicklung mit Delphi Teil 1 Klaus Becker 2005](https://reader036.vdocuments.mx/reader036/viewer/2022062512/55204d7549795902118ca19d/html5/thumbnails/35.jpg)
35 Teil 4
Datenmodellierung
![Page 36: Einführung in die Software-Entwicklung mit Delphi Teil 1 Klaus Becker 2005](https://reader036.vdocuments.mx/reader036/viewer/2022062512/55204d7549795902118ca19d/html5/thumbnails/36.jpg)
36 Initialisierung des Kontostands
Die Initialisierung des Kontostands soll im Programm selbst erfolgen.
procedure TFGUI.BEinsatzZahlenClick(Sender: TObject); var konto: integer;beginkonto := 100;// Eingabe: Kontostand übernehmenkonto := StrToInt(PKontostand.Caption);// Verarbeitung: Einsatz vom Konto abbuchenkonto := konto-1;// Ausgabe: Aktualisierung der AnzeigePKontostand.Caption := IntToStr(konto);end;
Version 1
Vorsicht: nicht korrekt!
![Page 37: Einführung in die Software-Entwicklung mit Delphi Teil 1 Klaus Becker 2005](https://reader036.vdocuments.mx/reader036/viewer/2022062512/55204d7549795902118ca19d/html5/thumbnails/37.jpg)
37 Initialisierung des Kontostands
Die Initialisierung des Kontostands soll im Programm selbst erfolgen.
procedure TFGUI.BEinsatzZahlenClick(Sender: TObject); var konto: integer;begin// Verarbeitung: Einsatz vom Konto abbuchenkonto := konto-1;// Ausgabe: Aktualisierung der AnzeigePKontostand.Caption := IntToStr(konto);end;
Version 2
procedure TFGUI.FormCreate(Sender: TObject); var konto: integer;beginrandomize;konto := 100;PKontostand.Caption := IntToStr(konto);end;
Vorsicht: nicht korrekt!
![Page 38: Einführung in die Software-Entwicklung mit Delphi Teil 1 Klaus Becker 2005](https://reader036.vdocuments.mx/reader036/viewer/2022062512/55204d7549795902118ca19d/html5/thumbnails/38.jpg)
38 Initialisierung des Kontostands
unit Unit1;interfaceuses ...type TFGUI = class(TForm) PUeberschrift: TPanel; ... private { Private-Deklarationen } konto: integer; public { Public-Deklarationen } end;var FGUI: TFGUI;...
procedure TFGUI.FormCreate(Sender: TObject);beginrandomize;konto := 100;PKontostand.Caption := IntToStr(konto);end;
procedure TFGUI.BEinsatzZahlenClick (Sender: TObject);begin// Verarbeitung: Einsatz abbuchenkonto := konto-1;// Ausgabe: Aktual. der AnzeigePKontostand.Caption := IntToStr(konto);end;
Version 3
Korrekt!
![Page 39: Einführung in die Software-Entwicklung mit Delphi Teil 1 Klaus Becker 2005](https://reader036.vdocuments.mx/reader036/viewer/2022062512/55204d7549795902118ca19d/html5/thumbnails/39.jpg)
39 Attribut als globale Variable
unit Unit1;interfaceuses ...type TFGUI = class(TForm) PUeberschrift: TPanel; ... private { Private-Deklarationen } konto: integer; public { Public-Deklarationen } end;var FGUI: TFGUI;...
procedure TFGUI.FormCreate(Sender: TObject);beginrandomize;konto := 100;PKontostand.Caption := IntToStr(konto);end;
Durch die nebenstehende Deklaration wird das Formular-Objekt um ein Attribut zur Verwaltung des Kontostandes erweitert. Neben Attributen zur Verwaltung der GUI-Objekte kann ein Formular-Objekt auch Attribute zur Verwaltung weiterer Daten enthalten. Diese werden hier in den Bereich „private Deklarationen“ geschrieben.Attribut
![Page 40: Einführung in die Software-Entwicklung mit Delphi Teil 1 Klaus Becker 2005](https://reader036.vdocuments.mx/reader036/viewer/2022062512/55204d7549795902118ca19d/html5/thumbnails/40.jpg)
40 Datenmodell zur Miniwelt
1$ 1$ 1$ 1$1$ 1$ 1$
1$ 1$1
2
3
4
5
631$31$
spielzahl: integer;wuerfel1: integer;wuerfel2: integer;wuerfel3: integer;konto: integer;
Unter einem Datenmodell soll hier eine Beschreibung der Miniwelt verstanden werden, bei der die relevanten Daten mit Hilfe von Variablen / Attributen eines Objektes erfasst werden.
![Page 41: Einführung in die Software-Entwicklung mit Delphi Teil 1 Klaus Becker 2005](https://reader036.vdocuments.mx/reader036/viewer/2022062512/55204d7549795902118ca19d/html5/thumbnails/41.jpg)
41 Datenmodell zur Miniwelt
spielzahl: integer;wuerfel1: integer;wuerfel2: integer;wuerfel3: integer;konto: integer;
type TFGUI = class(TForm) Pueberschrift: TPanel; Pspielfeld: TPanel; Pwuerfel: TPanel; Pkonto: TPanel; ... BWuerfelWerfen: TButton; ... procedure FormCreate(Sender: TObject); private { Private-Deklarationen } spielzahl: integer; wuerfel1: integer; wuerfel2: integer; wuerfel3: integer; konto: integer; public { Public-Deklarationen } end;
Das Formular-Objekt soll auch für die Verwaltung der Spieldaten zuständig sein. Hierzu werden entsprechende Attribute in den Bereich „private Deklarationen“ eingeführt.
![Page 42: Einführung in die Software-Entwicklung mit Delphi Teil 1 Klaus Becker 2005](https://reader036.vdocuments.mx/reader036/viewer/2022062512/55204d7549795902118ca19d/html5/thumbnails/42.jpg)
42
procedure TFGUI.BGewinnVerbuchenClick(Sender: TObject); var treffer: integer;begin...if treffer > 0 then konto := konto+treffer+1;...end;
Lokale Variable
Lokale Variable
Eine lokale Variable ist eine Variable, die innerhalb einer Prozedur deklariert ist und auch nur innerhalb dieser Prozedur zugreifbar ist.
„Globale Variable“
type TFGUI = class(TForm) ... private { Private-Deklarationen } ... konto: integer; public { Public-Deklarationen } end;
![Page 43: Einführung in die Software-Entwicklung mit Delphi Teil 1 Klaus Becker 2005](https://reader036.vdocuments.mx/reader036/viewer/2022062512/55204d7549795902118ca19d/html5/thumbnails/43.jpg)
43 Aufgabe
Verändern Sie das Programm so, dass das Datenmodell mit Hilfe von Formular-Attributen implementiert wird.
![Page 44: Einführung in die Software-Entwicklung mit Delphi Teil 1 Klaus Becker 2005](https://reader036.vdocuments.mx/reader036/viewer/2022062512/55204d7549795902118ca19d/html5/thumbnails/44.jpg)
44 Aufgabe
Das Programm zur Simulation des Spiels „chuck a luck“ soll dem Benutzer auch folgende statistische Daten liefern:- Gesamtanzahl der Spiele- insgesamt gewonnener / verlorener Betrag- pro Spiel durchschnittlich gewonnener / verlorener BetragErweitern Sie schrittweise das bestehende Chuck-A-Luck-System.
![Page 45: Einführung in die Software-Entwicklung mit Delphi Teil 1 Klaus Becker 2005](https://reader036.vdocuments.mx/reader036/viewer/2022062512/55204d7549795902118ca19d/html5/thumbnails/45.jpg)
45 Teil 5
Zustandsbasierte Modellierung
![Page 46: Einführung in die Software-Entwicklung mit Delphi Teil 1 Klaus Becker 2005](https://reader036.vdocuments.mx/reader036/viewer/2022062512/55204d7549795902118ca19d/html5/thumbnails/46.jpg)
46 Aufbesserung des Kontos
Das Programm zur Simulation des Chuck-A-Luck-Spiels lässt noch Bedienungen zu, die in der Miniwelt nicht erlaubt sind.
Einsatz zahlen und Zahl tippen
Würfel werfen
Gewinn verbuchen
Einsatz zahlenZahl tippen (z. B. 1)Solange Würfel werfen, bis die getippte Zahl fälltGewinn verbuchen
![Page 47: Einführung in die Software-Entwicklung mit Delphi Teil 1 Klaus Becker 2005](https://reader036.vdocuments.mx/reader036/viewer/2022062512/55204d7549795902118ca19d/html5/thumbnails/47.jpg)
47
Zustandsbasierte Ablaufmodellierung
Auslösendes Ereignis
BEinsatzZahlen.onClick
RGSpielfeld.onClick
BWuerfelWerfen.onClick
BGewinnVerbuchen.onClick
Ausgelöste Aktion(en)
Einsatz vom Konto abbuchen
Spielzahl festlegen
Würfelwerfen simulieren
Gewinn ermitteln und auf dem Konto verbuchen
AktuellerZustand
bereit
einsatzgezahlt
gewürfelt
NeuerZustand
einsatzgezahlt
einsatzgezahlt
gewürfelt
bereit
Einsatz zahlen und Zahl tippen
Würfel werfen
Gewinn verbuchen
![Page 48: Einführung in die Software-Entwicklung mit Delphi Teil 1 Klaus Becker 2005](https://reader036.vdocuments.mx/reader036/viewer/2022062512/55204d7549795902118ca19d/html5/thumbnails/48.jpg)
48
Zustandsbasierte Ablaufmodellierung
Einsatz zahlen und Zahl tippen
Würfel werfen
Gewinn verbuchen
BEinsatzZahlen.onClick / Einsatz vom Konto
abbuchen
bereiteinsatzgezahlt
RGSpielfeld.onClick / Spielzahl festlegen
BGewinnVerbuchen.onClick /Gewinn ermitteln und auf dem Konto
verbuchen
BWuerfelWerfen.onClick/Würfelwerfen simulieren
gewürfelt
![Page 49: Einführung in die Software-Entwicklung mit Delphi Teil 1 Klaus Becker 2005](https://reader036.vdocuments.mx/reader036/viewer/2022062512/55204d7549795902118ca19d/html5/thumbnails/49.jpg)
49 Zustandsbasierte Modellierung
Auslösendes Ereignis
BEinsatzZahlen.onClick
RGSpielfeld.onClick
BWuerfelWerfen.onClick
BGewinnVerbuchen.onClick
Ausgelöste Aktion(en)
Einsatz vom Konto abbuchen
Spielzahl festlegen
Würfelwerfen simulieren
Gewinn ermitteln und auf dem Konto verbuchen
AktuellerZustand
bereit
einsatzgezahlt
gewürfelt
NeuerZustand
einsatzgezahlt
einsatzgezahlt
gewürfelt
bereit
Zustandsbasierte Modellierung wird benutzt, um Systeme zu beschreiben, bei denen das Verhalten nicht nur von „äußeren“ Eingaben bzw. Ereignissen, sondern auch von „inneren“ Zuständen abhängt, die das System durchlaufen hat. Das Ergebnis einer solchen Modellierung nennt man auch Zustandsautomat.
![Page 50: Einführung in die Software-Entwicklung mit Delphi Teil 1 Klaus Becker 2005](https://reader036.vdocuments.mx/reader036/viewer/2022062512/55204d7549795902118ca19d/html5/thumbnails/50.jpg)
50 Zustandsbasierte Modellierung
BEinsatzZahlen.onClick / Einsatz vom Konto
abbuchen
bereiteinsatzgezahlt
RGSpielfeld.onClick / Spielzahl festlegen
BGewinnVerbuchen.onClick /Gewinn ermitteln und auf dem Konto
verbuchen
BWuerfelWerfen.onClick/Würfelwerfen simulieren
gewürfelt
Zustand
Zustandsautomat
Zustands-übergang
Auslösendes Ereignis
Ausgelöste Aktion(en)
Anfangs-zustand
![Page 51: Einführung in die Software-Entwicklung mit Delphi Teil 1 Klaus Becker 2005](https://reader036.vdocuments.mx/reader036/viewer/2022062512/55204d7549795902118ca19d/html5/thumbnails/51.jpg)
51 Ansatz: GUI-Objekte (de)aktivieren
procedure TFGUI.BEinsatzZahlenClick(Sender: TObject);begin// Aktualisierung des Datenmodellskonto := konto-1;// Aktualisierung der AnzeigePKontostand.Caption := IntToStr(konto);// Aktualisierung der KontrolleBEinsatzZahlen.Enabled := false;RGSpielfeld.Enabled := true;BWuerfelWerfen.Enabled := true;end;
Das gewünschte Verhalten lässt sich mit Hilfe des Attribut „Enabled“ der benutzten GUI-Objekte implementieren.
![Page 52: Einführung in die Software-Entwicklung mit Delphi Teil 1 Klaus Becker 2005](https://reader036.vdocuments.mx/reader036/viewer/2022062512/55204d7549795902118ca19d/html5/thumbnails/52.jpg)
52 Aufgabe
Modifizieren Sie das Chuck-A-Luck-System so, dass es das gewünschte Ablaufverhalten zeigt.
![Page 53: Einführung in die Software-Entwicklung mit Delphi Teil 1 Klaus Becker 2005](https://reader036.vdocuments.mx/reader036/viewer/2022062512/55204d7549795902118ca19d/html5/thumbnails/53.jpg)
53 Ansatz: Datenmodell erweitern
procedure TFGUI.BEinsatzZahlenClick(Sender: TObject);beginif zustand = bereit then begin // Aktualisierung des Datenmodells konto := konto-1; zustand := einsatzgezahlt; // Aktualisierung der Anzeige PKontostand.Caption := IntToStr(konto); end;end;
Wir erweitern das Datenmodell um eine Variable zur Beschreibung des Spielzustands.
spielzahl: integer;wuerfel1: integer;wuerfel2: integer;wuerfel3: integer;konto: integer;zustand: tZustand;
type tZustand = (bereit, einsatzgezahlt, gewuerfelt);type TFGUI = class(TForm) ...
![Page 54: Einführung in die Software-Entwicklung mit Delphi Teil 1 Klaus Becker 2005](https://reader036.vdocuments.mx/reader036/viewer/2022062512/55204d7549795902118ca19d/html5/thumbnails/54.jpg)
54 Aufgabe
Modifizieren Sie das Chuck-A-Luck-System so, dass es das gewünschte Ablaufverhalten zeigt.
![Page 55: Einführung in die Software-Entwicklung mit Delphi Teil 1 Klaus Becker 2005](https://reader036.vdocuments.mx/reader036/viewer/2022062512/55204d7549795902118ca19d/html5/thumbnails/55.jpg)
55 Ein Button, viele Aufgaben
Wir benutzen nur noch einen Button zur Spielkontrolle. In Abhängigkeit des jeweiligen Spielzustands soll sich die Aufschrift und das Verhalten des Buttons ändern.
![Page 56: Einführung in die Software-Entwicklung mit Delphi Teil 1 Klaus Becker 2005](https://reader036.vdocuments.mx/reader036/viewer/2022062512/55204d7549795902118ca19d/html5/thumbnails/56.jpg)
56 Aufgabe
Passen Sie das Chuck-A-Luck-System an die neuen Anforderungen an. Nutzen Sie die sog. case-Anweisung zur Fallunterscheidung (siehe Delphi-Hilfe).
case zustand of bereit: begin ... end; einsatzgezahlt: begin ... end; gewuerfelt: begin ... end; end;
![Page 57: Einführung in die Software-Entwicklung mit Delphi Teil 1 Klaus Becker 2005](https://reader036.vdocuments.mx/reader036/viewer/2022062512/55204d7549795902118ca19d/html5/thumbnails/57.jpg)
57 Zustandsbasierte Modellierung
BSpielen.onClick / Einsatz vom Konto
abbuchen
bereiteinsatzgezahlt
RGSpielfeld.onClick / Spielzahl festlegen
BSpielen.onClick /Gewinn ermitteln und auf Konto
verbuchen
BSpielen.onClick/Würfelwerfen simulieren
gewürfelt
Beachte: Das gleiche Ereignis führt hier zu unterschiedlichen Aktionen.
![Page 58: Einführung in die Software-Entwicklung mit Delphi Teil 1 Klaus Becker 2005](https://reader036.vdocuments.mx/reader036/viewer/2022062512/55204d7549795902118ca19d/html5/thumbnails/58.jpg)
58 Strukturierung der Lösung
procedure TFGUI.BSpielenClick(Sender: TObject); var treffer: integer;begin// Aktualisierung der Kontrollecase zustand of bereit: begin BSpielen.Caption := 'Würfel werfen'; ... end; einsatzgezahlt: ... gewuerfelt: ... end;// Aktualisierung des Datenmodellscase zustand of bereit: begin konto := konto-1; zustand := einsatzgezahlt; end; einsatzgezahlt: ... gewuerfelt: ... end;// Aktualisierung der AnzeigePKontostand.Caption := IntToStr(konto);PWuerfel1.Caption := IntToStr(wuerfel1);PWuerfel2.Caption := IntToStr(wuerfel2);PWuerfel3.Caption := IntToStr(wuerfel3);end;
![Page 59: Einführung in die Software-Entwicklung mit Delphi Teil 1 Klaus Becker 2005](https://reader036.vdocuments.mx/reader036/viewer/2022062512/55204d7549795902118ca19d/html5/thumbnails/59.jpg)
59 Teil 6
Zusammenfassung
![Page 60: Einführung in die Software-Entwicklung mit Delphi Teil 1 Klaus Becker 2005](https://reader036.vdocuments.mx/reader036/viewer/2022062512/55204d7549795902118ca19d/html5/thumbnails/60.jpg)
60 Benutzungsoberfläche
Die Mensch-Maschine-Interaktion wird wesentlich durch die GUI-Objekte zur Gestaltung der Benutzungsoberfläche bestimmt.
PUeberschrift:
TPanelPKonto: TPanel
PWuerfel: TPanel
Pspielfeld: TPanel
PWuerfel1: TPanel PWuerfel2:
TPanel
PKontostand:
TPanel
PWuerfel3:TPanel
BWuerfelWerfen:
TButton
ESpielzahl: TEdit
FGUI: TFGUI
BEinsatzZahlen:TButton
BGewinnVerbuchen:
TButton
![Page 61: Einführung in die Software-Entwicklung mit Delphi Teil 1 Klaus Becker 2005](https://reader036.vdocuments.mx/reader036/viewer/2022062512/55204d7549795902118ca19d/html5/thumbnails/61.jpg)
61 EVA - Systeme
Einfache Eingabe-Verarbeitung-Ausgabe-Systeme lassen sich direkt mit Hilfe von GUI-Objekten realisieren.
procedure TFGUI.BGewinnVerbuchenClick(Sender: TObject); var treffer: integer; wuerfel1, wuerfel2, wuerfel3, spielzahl, konto: integer;begin// Eingabe: Spieldaten übernehmenspielzahl := StrToInt(ESpielzahl.Text);konto := StrToInt(PKontostand.Caption);wuerfel1 := StrToInt(PWuerfel1.Caption);wuerfel2 := StrToInt(PWuerfel2.Caption);wuerfel3 := StrToInt(PWuerfel3.Caption);// Verarbeitung: Treffer und neuen Kontostand bestimmentreffer := 0;if spielzahl = wuerfel1 then inc(treffer);if spielzahl = wuerfel2 then inc(treffer);if spielzahl = wuerfel3 then inc(treffer);if treffer > 0 then konto := konto+treffer+1;// Ausgabe: Aktualisierung der AnzeigePKontostand.Caption := IntToStr(konto);end;
![Page 62: Einführung in die Software-Entwicklung mit Delphi Teil 1 Klaus Becker 2005](https://reader036.vdocuments.mx/reader036/viewer/2022062512/55204d7549795902118ca19d/html5/thumbnails/62.jpg)
62 Trennung: GUI – Datenmodell
Bei komplexeren Systemen ist es günstig, ein von der GUI getrenntes Datenmodell zu entwickeln.
type TFgui = class(TForm) Pueberschrift: TPanel; Pspielfeld: TPanel; Pwuerfel: TPanel; Pkonto: TPanel; ... BWuerfelWerfen: TButton; ... private { Private-Deklarationen } spielzahl: integer; wuerfel1: integer; wuerfel2: integer; wuerfel3: integer; konto: integer; public { Public-Deklarationen } end;
Datenmodell
GUI-Objekte
![Page 63: Einführung in die Software-Entwicklung mit Delphi Teil 1 Klaus Becker 2005](https://reader036.vdocuments.mx/reader036/viewer/2022062512/55204d7549795902118ca19d/html5/thumbnails/63.jpg)
63
procedure TFGUI.BGewinnVerbuchenClick(Sender: TObject); var treffer: integer;begin// Eingabe: Datenmodell aktualisierenspielzahl := StrToInt(ESpielzahl.Text);konto := StrToInt(PKontostand.Caption);wuerfel1 := StrToInt(PWuerfel1.Caption);wuerfel2 := StrToInt(PWuerfel2.Caption);wuerfel3 := StrToInt(PWuerfel3.Caption);// Verarbeitung: Daten verarbeitentreffer := 0;if spielzahl = wuerfel1 then inc(treffer);if spielzahl = wuerfel2 then inc(treffer);if spielzahl = wuerfel3 then inc(treffer);if treffer > 0 then konto := konto+treffer+1;// Ausgabe: Anzeige aktualisierenPKontostand.Caption := IntToStr(konto);end;
Trennung: GUI – Datenmodell
Die Trennung zwischen GUI und Datenmodell sollte sich auch im Programmtext widerspiegeln.
![Page 64: Einführung in die Software-Entwicklung mit Delphi Teil 1 Klaus Becker 2005](https://reader036.vdocuments.mx/reader036/viewer/2022062512/55204d7549795902118ca19d/html5/thumbnails/64.jpg)
64 Zustandsbasierte Modellierung
Zustandsbasierte Modellierung ist eine wichtige Technik, um komplexere (reaktive) Systeme zu entwerfen.
BEinsatzZahlen.onClick / Einsatz vom Konto
abbuchen
bereiteinsatzgezahlt
RGSpielfeld.onClick / Spielzahl festlegen
BGewinnVerbuchen.onClick /Gewinn ermitteln und auf Konto
verbuchen
BWuerfelWerfen.onClick/Würfelwerfen simulieren
gewürfelt
![Page 65: Einführung in die Software-Entwicklung mit Delphi Teil 1 Klaus Becker 2005](https://reader036.vdocuments.mx/reader036/viewer/2022062512/55204d7549795902118ca19d/html5/thumbnails/65.jpg)
65 Teil 7
Vertiefende Übungen
![Page 66: Einführung in die Software-Entwicklung mit Delphi Teil 1 Klaus Becker 2005](https://reader036.vdocuments.mx/reader036/viewer/2022062512/55204d7549795902118ca19d/html5/thumbnails/66.jpg)
66 Aufgabe
Entwickeln Sie ein einfaches Eingabe-Ausgabe-System zur Berechnung des BMI-Indexes.Eingaben: Körpergröße, GewichtAusgaben: BMI-Index, ...
![Page 67: Einführung in die Software-Entwicklung mit Delphi Teil 1 Klaus Becker 2005](https://reader036.vdocuments.mx/reader036/viewer/2022062512/55204d7549795902118ca19d/html5/thumbnails/67.jpg)
67 Aufgabe
Die Entwicklung der Weltbevölkerung schreitet rasch voran: Im Jahr 2000 lebten etwa 6 Milliarden auf der Erde. 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.
Das Programm kann wie folgt erweitert werden:Auslösendes Ereignis:
Mausklick auf <-Button
Mausklick auf >>-Button
Mausklick auf >>-Button
Ausgelöste Aktion(en):
Die vorherige Population (jeweils vor einem Jahr) wird berechnet (und angezeigt), sofern das Jahr nicht vor 2000 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 2000 zurückspringen.
![Page 68: Einführung in die Software-Entwicklung mit Delphi Teil 1 Klaus Becker 2005](https://reader036.vdocuments.mx/reader036/viewer/2022062512/55204d7549795902118ca19d/html5/thumbnails/68.jpg)
68 Aufgabe
Entwickeln Sie ein einfaches zustandsbasiertes System zur Simulation einer Ampel.Hinweis: Die Ampel soll zunächst möglichst einfach dargestellt werden. Erst in einem zweiten Schritt können sie die Darstellung optimieren (wie z. B. in den Materialien zum Buch Damann, Wemßen: Objektorientierte Programmierung mit Delphi, Band 1, s. u.).
![Page 69: Einführung in die Software-Entwicklung mit Delphi Teil 1 Klaus Becker 2005](https://reader036.vdocuments.mx/reader036/viewer/2022062512/55204d7549795902118ca19d/html5/thumbnails/69.jpg)
69 Aufgabe
Entwickeln Sie ein Programm zur Simulation des Ziegenproblems.
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 ?"
Siehe auch: http://www.jgiesen.de/Quiz/Ziegenproblem/Ziegen.html
![Page 70: Einführung in die Software-Entwicklung mit Delphi Teil 1 Klaus Becker 2005](https://reader036.vdocuments.mx/reader036/viewer/2022062512/55204d7549795902118ca19d/html5/thumbnails/70.jpg)
70 Aufgabe
Entwickeln Sie ein Programm zur Simulation eines einfachen Taschenrechners. Gehen Sie dabei schrittweise vor – von einem ersten einfachen System (das evtl. nur ganze Zahlen verarbeitet) bis hin zu komplexeren Systemen (die evtl. Speichertasten, Klammern, ... zulassen).
![Page 71: Einführung in die Software-Entwicklung mit Delphi Teil 1 Klaus Becker 2005](https://reader036.vdocuments.mx/reader036/viewer/2022062512/55204d7549795902118ca19d/html5/thumbnails/71.jpg)
71 Literaturhinweise
E. Modrow: Informatik mit Delphi, Band 1/2, Dümmler-Stam 1998-2000.
P. Damann, J. Wemßen: Objektorientierte Programmierung mit Delphi, Band 1. Klett-Verlag 2001.
U. Bänisch: Praktische Informatik mit Delphi, Band 1/2. Cornelsen 2001.
Frischalowski: Delphi 5.0, Band 1/2, Herdt-Verlag 1999.
Pohl: Schülerübungen / Klausuren in Delphi, Heft 1/2, Verlag J. Pohl 1997-2001.
Noll, Mayr, Paulus, Selinger: http://informatikag.bildung-rp.de/html/delphi_teil_1.html
K. Merkert:http://hsg.region-kaiserslautern.de/faecher/inf/material/delphi/index.php
R. Mechling:http://www.gk-informatik.de/
K. Heidler:http://www.friedrich.fr.schule-bw.de/delphi/delphi.htm
Hessischer Bildungsserver:http://www.bildung.hessen.de/abereich/inform/skii/material/delphi/index.htm
![Page 72: Einführung in die Software-Entwicklung mit Delphi Teil 1 Klaus Becker 2005](https://reader036.vdocuments.mx/reader036/viewer/2022062512/55204d7549795902118ca19d/html5/thumbnails/72.jpg)
72 Literaturhinweise
S. Spolwig: http://oszhdl.be.schule.de/gymnasium/faecher/informatik/delphi/index.htm
Weitere Hinweise unter:
http://www.delphi-source.de
Einsteiger-Tutorial
http://www.delphi-treff.de/content/tutorials/einsteigerkurs/
...