![Page 1: Erste Programme mit Delphi Helmut Paulus Speyer, 08.05.09 Einführung in die Entwicklungsumgebung Grundelemente der Programmiersprache Objekt-Pascal Übungen](https://reader036.vdokument.com/reader036/viewer/2022062512/55204d7549795902118ca192/html5/thumbnails/1.jpg)
Erste Programme mit DelphiErste Programme mit Delphi
Helmut Paulus Speyer, 08.05.09
Einführung in die Entwicklungsumgebung
Grundelemente der Programmiersprache Objekt-Pascal
Übungen
![Page 2: Erste Programme mit Delphi Helmut Paulus Speyer, 08.05.09 Einführung in die Entwicklungsumgebung Grundelemente der Programmiersprache Objekt-Pascal Übungen](https://reader036.vdokument.com/reader036/viewer/2022062512/55204d7549795902118ca192/html5/thumbnails/2.jpg)
Teil 1Teil 1
Einführung in die Entwicklungsumgebung
Grundelemente der Programmiersprache Objekt-Pascal
![Page 3: Erste Programme mit Delphi Helmut Paulus Speyer, 08.05.09 Einführung in die Entwicklungsumgebung Grundelemente der Programmiersprache Objekt-Pascal Übungen](https://reader036.vdokument.com/reader036/viewer/2022062512/55204d7549795902118ca192/html5/thumbnails/3.jpg)
ProblemProblemMit einem Programm soll der BodyMass-Index BMI berechnet werden.
Eingaben: Gewicht in Kg, Körpergröße in m
Ausgabe: BMI-Index
Ablauf: Ereignisgesteuert
3
![Page 4: Erste Programme mit Delphi Helmut Paulus Speyer, 08.05.09 Einführung in die Entwicklungsumgebung Grundelemente der Programmiersprache Objekt-Pascal Übungen](https://reader036.vdokument.com/reader036/viewer/2022062512/55204d7549795902118ca192/html5/thumbnails/4.jpg)
Delphi 4 – Entwicklungsumgebung Delphi 4 – Entwicklungsumgebung
Formular (GUI)
Komponenten-Palette
(GUI-Objekte)
Objektinspektor
Die Benutzungsoberfläche wird mit Hilfe der Komponentenpalette erstellt.
4
![Page 5: Erste Programme mit Delphi Helmut Paulus Speyer, 08.05.09 Einführung in die Entwicklungsumgebung Grundelemente der Programmiersprache Objekt-Pascal Übungen](https://reader036.vdokument.com/reader036/viewer/2022062512/55204d7549795902118ca192/html5/thumbnails/5.jpg)
Bearbeiten eines Delphi-Projekts Bearbeiten eines Delphi-Projekts GUI-Objekte haben einen Namen und gehören einer Klasse an.
Mit Hilfe des Objektinspektors kann man sich die Eigenschaften (Attribute) der GUI-Objekte anschauen und deren Werte verändern.
PAnzeige : TPanel
BtBrechnen : TButtonEdGroesse: TEdit
LInfo : TLabel
GUI : TGUI
Formular
5
![Page 6: Erste Programme mit Delphi Helmut Paulus Speyer, 08.05.09 Einführung in die Entwicklungsumgebung Grundelemente der Programmiersprache Objekt-Pascal Übungen](https://reader036.vdokument.com/reader036/viewer/2022062512/55204d7549795902118ca192/html5/thumbnails/6.jpg)
Bearbeiten eines Delphi-Projekts Bearbeiten eines Delphi-Projekts
Das Formular enthält Komponenten (GUI-Objekte) vom Typ:
•TForm, TEdit, TButton, TLabel, TPanel
Brechnen B für Button
EGroesse E für Edit
PAusgabe P für Panel
LErgebnis L für Label
…
Standardattribute (Eigenschaften) der GUI-Objekte:
•Caption Beschriftung einer Komponente (Aufschrift eines Buttons, Labels, Panels,…)
•Text Inhalt eines Textfeldes (Edit)
•Name Name des Objekts, mit dem es im Programm angesprochen wird
Delphi gibt den GUI-Objekte automatisch Namen, z. B. TForm1, Label1, Button1, Button2
Die Objekte sollten im Objektinspektor mit sinnvollen Namen (nach Konventionen) belegt werden; z. B.: je nach Typ des Objekts einen Präfix:
6
![Page 7: Erste Programme mit Delphi Helmut Paulus Speyer, 08.05.09 Einführung in die Entwicklungsumgebung Grundelemente der Programmiersprache Objekt-Pascal Übungen](https://reader036.vdokument.com/reader036/viewer/2022062512/55204d7549795902118ca192/html5/thumbnails/7.jpg)
Formulardatei „uGUI.dfm“ Formulardatei „uGUI.dfm“
Die Formulardatei uGUI.dfm speichert die Attributwerte der Objekte.
object GUI: TGUI Left = 202 Top = 137 Width = 420 Height = 253 Caption ='Body Master-Indexberechnen … object EdGroesse: TEdit Left = 112 Top = 136 Width = 57 Height = 21 TabOrder = 2 end object Btberechnen: TButton Left = 184 Top = 136 Width = 89 Height = 25 Caption = 'BMI berechnen' TabOrder = 3 OnClick = BtberechnenClick endend
Das Formularobjekt GUI enthält alle anderen Objekte als Unterobjekte
Das Formularobjekt GUI enthält alle anderen Objekte als Unterobjekte
Diese Datei wird automatisch erzeugt und gepflegt.
In älteren Delphi-Versionen als Delphi 4 wird sie als Binärdatei abgespeichert, was zu Kompatiblitätsproblemen führt.
Konvertierung: http://hsg.region-kaiserslautern.de/faecher/inf/material/misc/d6_2_d4.php
Ein Blick hinter die Kulissen
7
![Page 8: Erste Programme mit Delphi Helmut Paulus Speyer, 08.05.09 Einführung in die Entwicklungsumgebung Grundelemente der Programmiersprache Objekt-Pascal Übungen](https://reader036.vdokument.com/reader036/viewer/2022062512/55204d7549795902118ca192/html5/thumbnails/8.jpg)
Quelltext-Unit „uGUI.pas“Quelltext-Unit „uGUI.pas“
unit uGUI;
interface
uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,StdCtrls, ExtCtrls;
type TGUI = class(TForm) PAnzeige: TPanel; LInfo: TLabel; Label2: TLabel; Label3: TLabel; Label4: TLabel; EdGewicht: TEdit; EdGroesse: TEdit; Btberechnen: TButton; Btloeschen: TButton; PAusgabe: TPanel; procedure BtloeschenClick(Sender: TObject); procedure BtberechnenClick(Sender: TObject); private { Private-Deklarationen} public { Public-Deklarationen} end;
var GUI: TGUI;
Deklaration des Formulars
mit GUI-Objekten
(automatisch)
Einbinden von Systemunits
(automatisch)
8
![Page 9: Erste Programme mit Delphi Helmut Paulus Speyer, 08.05.09 Einführung in die Entwicklungsumgebung Grundelemente der Programmiersprache Objekt-Pascal Übungen](https://reader036.vdokument.com/reader036/viewer/2022062512/55204d7549795902118ca192/html5/thumbnails/9.jpg)
Quelltext-Unit „uGUI.pas“Quelltext-Unit „uGUI.pas“
unit uGUI;
interface
...
var GUI: TGUI;
implementation
procedure TGUI.BtberechnenClick(Sender: TObject);var gewicht, groesse, BMI : real;begin //Eingabe gewicht := StrToFloat(EdGewicht.Text); groesse := StrToFloat(EdGroesse.Text); //Verarbeitung BMI := gewicht/groesse/groesse; //Ausgabe PAnzeige.Caption := FloatToStrF(BMI,ffFixed,6,2);end;
end.
Zugriff auf Attribute
Ereignisbehandlung
9
![Page 10: Erste Programme mit Delphi Helmut Paulus Speyer, 08.05.09 Einführung in die Entwicklungsumgebung Grundelemente der Programmiersprache Objekt-Pascal Übungen](https://reader036.vdokument.com/reader036/viewer/2022062512/55204d7549795902118ca192/html5/thumbnails/10.jpg)
Quelltext des Hauptprogramms Quelltext des Hauptprogramms
program BMI;
uses Forms, uGUI in 'uGUI.pas' {GUI};
{$R *.RES}
begin Application.Initialize; Application.CreateForm(TGUI, GUI); Application.Run;end.
Hier findet sich u. a. die Einbindung von Units und Ressourcen
die Erzeugung des Fensterobjektes
den Start des Programms
Diese Datei wird automatisch vom System gepflegt!
10
![Page 11: Erste Programme mit Delphi Helmut Paulus Speyer, 08.05.09 Einführung in die Entwicklungsumgebung Grundelemente der Programmiersprache Objekt-Pascal Übungen](https://reader036.vdokument.com/reader036/viewer/2022062512/55204d7549795902118ca192/html5/thumbnails/11.jpg)
EreignisverarbeitungEreignisverarbeitung
Ein Klick auf den Button soll die Berechnung des BMI-Wertes auslösen.
procedure TGUI.BtBerechnenClick(Sender: TObject);begin
end;
procedure TGUI.BtBerechnenClick(Sender: TObject);begin
end;
Ereignis OnClick
Ereignisprozedur
Doppel-Klick
Durch Doppel-Klick auf den Button wird eine neue Prozedur erzeugt:
Diese Prozeduren nie per Hand löschen, sondern nur den Prozedurrumpf.
Das System entfernt den Rest beim nächsten Start!
Diese Prozeduren nie per Hand löschen, sondern nur den Prozedurrumpf.
Das System entfernt den Rest beim nächsten Start!
11
![Page 12: Erste Programme mit Delphi Helmut Paulus Speyer, 08.05.09 Einführung in die Entwicklungsumgebung Grundelemente der Programmiersprache Objekt-Pascal Übungen](https://reader036.vdokument.com/reader036/viewer/2022062512/55204d7549795902118ca192/html5/thumbnails/12.jpg)
EreignisverarbeitungEreignisverarbeitung
procedure TGUI.BtberechnenClick(Sender: TObject);var gewicht, groesse, BMI : real;begin //Eingabe – Übernahme der Daten vom GUI-Objekt gewicht := StrToFloat(EdGewicht.Text); groesse := StrToFloat(EdGroesse.Text); //Verarbeitung BMI := gewicht/groesse/groesse; //Ausgabe – Übergabe der Daten ans GUI-Objekt PAusgabe.Caption := FloatToStrF(BMI,ffFixed,6,2);end;
procedure TGUI.BtberechnenClick(Sender: TObject);var gewicht, groesse, BMI : real;begin //Eingabe – Übernahme der Daten vom GUI-Objekt gewicht := StrToFloat(EdGewicht.Text); groesse := StrToFloat(EdGroesse.Text); //Verarbeitung BMI := gewicht/groesse/groesse; //Ausgabe – Übergabe der Daten ans GUI-Objekt PAusgabe.Caption := FloatToStrF(BMI,ffFixed,6,2);end;
Implementierung
Ein-/ Ausgabesystem mit lokalen Variablen als temporären Zwischenspeichern!Ein-/ Ausgabesystem mit lokalen Variablen als temporären Zwischenspeichern!
Verarbeitungschema
•Eingabe•Verarbeitung •Ausgabe
Verarbeitungschema
•Eingabe•Verarbeitung •Ausgabe
Lokale Variablen
12
![Page 13: Erste Programme mit Delphi Helmut Paulus Speyer, 08.05.09 Einführung in die Entwicklungsumgebung Grundelemente der Programmiersprache Objekt-Pascal Übungen](https://reader036.vdokument.com/reader036/viewer/2022062512/55204d7549795902118ca192/html5/thumbnails/13.jpg)
Bearbeiten eines Delphi-ProjektsBearbeiten eines Delphi-ProjektsDelphi erzeugt eine ganze Reihe von Dateien zur Verwaltung eines Programmierprojektes. Diese Dateien sollte man immer in einem eigenen Ordner speichern. (Quellcodedateien werden als Units bezeichnet.)
Vorbereitungsschritte:
1. In Delphi in neues Projekt anlegen: Datei->Neu->Anwendung
2. Projektdateien am besten sofort speichern:
3. Ordner für das neue Projekt anlegen (z. B. BMI)
(1) Datei - Alles speichern wählen
(2) Die automatisch vorgeschlagen Namen unit1.pas und project1.dpr umbenennen. (z. B.: uGUI.pas und BMI.dpr)
u – für Unit
Implementierung der Ereignisverarbeitung
Neben den oben genannten beiden Dateien werden automatisch im Projektordner viele weitere Dateien angelegt und laufend von Delphi verwaltet.
Beim Kompilieren wird aus den Projektdateien ein lauffähiges Programm BMI.exe erzeugt, das anschließend ausgeführt werden kann.
13
![Page 14: Erste Programme mit Delphi Helmut Paulus Speyer, 08.05.09 Einführung in die Entwicklungsumgebung Grundelemente der Programmiersprache Objekt-Pascal Übungen](https://reader036.vdokument.com/reader036/viewer/2022062512/55204d7549795902118ca192/html5/thumbnails/14.jpg)
Delphi-HilfenDelphi-Hilfen
Kontextsensitive Hilfe mit F1 (auch im Fehlerfenster)
Laufzeit Debugger
Haltepunkte im Quelltext setzen, an den Stellen an, denen das Programm halten soll (in den Rahmen links neben der Quelltextzeile klicken)
sobald das Programm anhält, kann mit Hilfe der Maus der Zustand der Variablen angezeigt werden
14
![Page 15: Erste Programme mit Delphi Helmut Paulus Speyer, 08.05.09 Einführung in die Entwicklungsumgebung Grundelemente der Programmiersprache Objekt-Pascal Übungen](https://reader036.vdokument.com/reader036/viewer/2022062512/55204d7549795902118ca192/html5/thumbnails/15.jpg)
AufgabeAufgabe
Ergänzen Sie das Programm mit einer Bewertung des BMI nach Alter. Benutzen Sie dazu die folgenden Grundlagen und die Delphi-Hilfe.
Alter BMI19-24 Jahre 19-24
25-34 Jahre 20-25
35-44 Jahre 21-26
45-54 Jahre 22-27
55-64 Jahre 23-28
>64 Jahre 24-29
Die Tabelle zeigt die „wünschenswerte“ BMI-Werte für verschiedene Altersgruppen:
Weitere Informationen unter: https://www.uni-hohenheim.de/wwwin140/info/interaktives/bmi.htm
15
![Page 16: Erste Programme mit Delphi Helmut Paulus Speyer, 08.05.09 Einführung in die Entwicklungsumgebung Grundelemente der Programmiersprache Objekt-Pascal Übungen](https://reader036.vdokument.com/reader036/viewer/2022062512/55204d7549795902118ca192/html5/thumbnails/16.jpg)
Pascal-GrundlagenPascal-Grundlagen
procedure TGUI.BtberechnenClick(Sender: TObject);var gewicht, groesse, BMI : real;begin //Eingabe gewicht := StrToFloat(EdGewicht.Text); groesse := StrToFloat(EdGroesse.Text); //Verarbeitung BMI := gewicht/groesse/groesse; //Ausgabe PAusgabe.Caption := FloatToStr(BMI);end;
procedure TGUI.BtberechnenClick(Sender: TObject);var gewicht, groesse, BMI : real;begin //Eingabe gewicht := StrToFloat(EdGewicht.Text); groesse := StrToFloat(EdGroesse.Text); //Verarbeitung BMI := gewicht/groesse/groesse; //Ausgabe PAusgabe.Caption := FloatToStr(BMI);end;
Datentyp
Variablen- deklaration
Wertzuweisung
Typumwandlung
realstring
Bezeichner
Trennzeichen
Anweisungen
Variablendeklaration
var <Bezeichner> : Datentyp;
Wertzuweisung
a := b ;
Die Variablen müssen zuweisungskompatibel sein!
Kommentar
16
![Page 17: Erste Programme mit Delphi Helmut Paulus Speyer, 08.05.09 Einführung in die Entwicklungsumgebung Grundelemente der Programmiersprache Objekt-Pascal Übungen](https://reader036.vdokument.com/reader036/viewer/2022062512/55204d7549795902118ca192/html5/thumbnails/17.jpg)
Pascal-GrundlagenPascal-Grundlagen
procedure <Bezeichner>(Parameterliste);
var lokale Variablen;
begin
Anweisungen;
end;
Struktur einer (Ereignis-) Prozedur
Eine Prozedur (Variable) kann nur verwendet werden, wenn sie deklariert wurde!
Deklarationsteil
Anweisungsteil
Konventionen für Bezeichner
Es dürfen nur folgende Zeichen verwendet werden
Buchstaben (aber keine Umlaute)
Zahlen, diese aber erste nach mindestens einem Buchstaben
Unterstrich (auch am Anfang)
ansonsten keine Sonderzeichen wie „,“, „;“ …
Die Parameterliste
kann auch fehlen
Beachte: Delphi ist nicht kontextsensitiv!
17
![Page 18: Erste Programme mit Delphi Helmut Paulus Speyer, 08.05.09 Einführung in die Entwicklungsumgebung Grundelemente der Programmiersprache Objekt-Pascal Übungen](https://reader036.vdokument.com/reader036/viewer/2022062512/55204d7549795902118ca192/html5/thumbnails/18.jpg)
Pascal-GrundlagenPascal-GrundlagenElementare Datentypen
integer : Ganze Zahlen(17, -12)
real :Fließkommazahlen(2.675 )
boolean : Wahrheitswerte(true, false)
string : Zeichenkette (‘Hallo‘)Bei der Ein- und Ausgabe von Daten mit Hilfe von GUI-Objekten müssen häufig
Datentypen konvertiert werden.
Delphi stellt folgende Funktionen zur Verfügung:
Typumwandlungen
Funktion : Ergebnistyp Beispiel
StrToInt(<Variable>) :
integer IntToStr(<Variable>)
: string
StrToFloat(<Variable>) :
real
FloatToStr(<Variable>) :
string
Formatierte Ausgabe:FloatToStrF() : string
groesse := StrToInt(EGroesse.Text)
PAusgabe.Caption := FloatToStr(BMI);
Siehe Delphi-HilfePAusgabe.Caption := FloatToStrF(BMI,ffnumber,8,2);
18
![Page 19: Erste Programme mit Delphi Helmut Paulus Speyer, 08.05.09 Einführung in die Entwicklungsumgebung Grundelemente der Programmiersprache Objekt-Pascal Übungen](https://reader036.vdokument.com/reader036/viewer/2022062512/55204d7549795902118ca192/html5/thumbnails/19.jpg)
Pascal-GrundlagenPascal-Grundlagen
Arbeiten mit Zeichenketten
Zeichenkettentexte werden in einfachen Anführungszeichen geschrieben.
Beispiel:
var Ausgabe : string;
Ausgabe := ‘Du hast ‘;
Zeichenketten kann man mit ‚+‘ aneinander hängen.
Ausgabe := Ausgabe + ‚‘leider verloren‘;
Die Länge einer Zeichenkette bestimmt man mit der vordefinierten Operation „length“.
Der Zugriff auf die einzelnen Zeichen einer Zeichenkette erfolgt über einen Index.
Ausgabe[2] ‚u‘
integer / real
+, -, *, / Division ( liefert einen Realtyp bei Anwendung auf Integer z. B. 12/4)
integer
div ganzzahlige Division (schneidet Nachkommastellen ab)
mod Rest einer ganzzahligen Division (Beispiel: a := 4 mod 3; 1 a)
Arithmetische Operatoren :
19
![Page 20: Erste Programme mit Delphi Helmut Paulus Speyer, 08.05.09 Einführung in die Entwicklungsumgebung Grundelemente der Programmiersprache Objekt-Pascal Übungen](https://reader036.vdokument.com/reader036/viewer/2022062512/55204d7549795902118ca192/html5/thumbnails/20.jpg)
Pascal-GrundlagenPascal-Grundlagen
= gleich
<> ungleich
< kleiner
<= kleiner gleich
> größer
>= größer gleich
Vergleichsoperatoren :
Logische Operatoren :AND true : wenn beide Operanden wahr
OR true : wenn einer oder beide Operanden
wahr
NOT Negation des Operanden ( NOT a)
Beispiel:
var x : integer;
teilbar : boolean;
…
teilbar := (x mod 3 = 0) AND (x mod 5 = 0);
begin … Anweisung; …end;
Einseitig
If Bedingung thenbegin Anweisung;end;
zweiseitig
If Bedingung thenbegin Anweisung;end else begin Anweisung; end;
Fallunterscheidung
Sequenz (Anweisungsblock)
Kontrollstrukturen
20
![Page 21: Erste Programme mit Delphi Helmut Paulus Speyer, 08.05.09 Einführung in die Entwicklungsumgebung Grundelemente der Programmiersprache Objekt-Pascal Übungen](https://reader036.vdokument.com/reader036/viewer/2022062512/55204d7549795902118ca192/html5/thumbnails/21.jpg)
Pascal-GrundlagenPascal-Grundlagen
while Schleife
while Bedingung dobegin Anweisung;end;
Wiederholung mit Anfangsbedingung
Repeat – Schleife
repeat Anweisung;until Bedingung;
For –Schleife
for i := 1 to n dobegin Anweisung;end;
Kontrollstrukturen
Wiederholung mit Endbedingung
Deklarationvar
Bezeichner : array[StartIndex..EndIndex] of Datentyp;
Reihung / Array
Beispiele:
var augen : array[1..6] of integer;
Der Zugriff auf die einzelnen Felder erfolgt mit Hilfe des Index
for i := 1 to 6 do augen[i] := i;
Zählschleife
Das so definierte Array ist statisch, d. h. die Anzahl der Elemente kann nicht mehr verändert werden.
Indizes vom Typ Integer (Aufzählungstyp)
21
![Page 22: Erste Programme mit Delphi Helmut Paulus Speyer, 08.05.09 Einführung in die Entwicklungsumgebung Grundelemente der Programmiersprache Objekt-Pascal Übungen](https://reader036.vdokument.com/reader036/viewer/2022062512/55204d7549795902118ca192/html5/thumbnails/22.jpg)
Pascal-GrundlagenPascal-Grundlagen22
Prozeduren und Funktionen
function <Bezeichner>(<Parameter>) : <Datentyp>;var <lokale Variablen>begin Anweisung; result := <Ergebnis>; end;
function TGUI.Max(z1, z2 : integer): integer;begin if (z1 < z2) then result := z2 else result := z1; end;
Schema:
Prozeduren und Funktionen können (wie Ereignisprozeduren) als Methoden des Formulars deklariert werden.
Beispiel: Die Funktion Max als Funktion des GUI-Objektes
Zuweisung des Ergebniswertes an die Funkionsvariabble result
Im Unterschied zu Prozeduren liefern Funktionen ein Ergebnis zurück.
TGUI = class(TForm)
private
{ Private-Deklarationen}
function Max(z1, z2 : integer): integer;
public
{ Public-Deklarationen}
end;
![Page 23: Erste Programme mit Delphi Helmut Paulus Speyer, 08.05.09 Einführung in die Entwicklungsumgebung Grundelemente der Programmiersprache Objekt-Pascal Übungen](https://reader036.vdokument.com/reader036/viewer/2022062512/55204d7549795902118ca192/html5/thumbnails/23.jpg)
Projekt ZahlenratenProjekt Zahlenraten
Aufgabe:
Es ist ein Programm zu entwickeln, das ein Zahlenratespiel simuliert.
Anforderungen:
1. Der Computer bestimmt eine Zufallszahl (1..100), die der Spieler zu erraten hat.
2. Der Spieler hat er beliebig viele Versuche.
3. Nach jeder Zahleneingabe wird angegeben, ob die Zahl zu groß oder zu klein ist.
4. Hat der Spieler die Zahl erraten, so wird die Anzahl der Versuche und eine Bewertung ausgegeben.
5. Alle Ausgaben werden gelöscht, wenn ein neues Spiel begonnen wird.
Aufgabe:
Es ist ein Programm zu entwickeln, das ein Zahlenratespiel simuliert.
Anforderungen:
1. Der Computer bestimmt eine Zufallszahl (1..100), die der Spieler zu erraten hat.
2. Der Spieler hat er beliebig viele Versuche.
3. Nach jeder Zahleneingabe wird angegeben, ob die Zahl zu groß oder zu klein ist.
4. Hat der Spieler die Zahl erraten, so wird die Anzahl der Versuche und eine Bewertung ausgegeben.
5. Alle Ausgaben werden gelöscht, wenn ein neues Spiel begonnen wird.
Datenmodell
Anzahl der Versuche: Versuchszahl : integer
Zu erratende Zahl: Ratezahl : integer
23
![Page 24: Erste Programme mit Delphi Helmut Paulus Speyer, 08.05.09 Einführung in die Entwicklungsumgebung Grundelemente der Programmiersprache Objekt-Pascal Übungen](https://reader036.vdokument.com/reader036/viewer/2022062512/55204d7549795902118ca192/html5/thumbnails/24.jpg)
Zahlen ratenZahlen raten
Lösung:
Die Daten werden als private Attribute von TGUI deklariert. Damit werden sie zu globalen Variablen (innerhalb des GUI-Objekts1).
Problem
Eingabe der Spieldaten in lokale Variablen aus den GUI-Objekten ist ineffektiv!!!
TGUI = class(TForm)
…
procedure FormCreate(Sender: TObject);
procedure TGUI.BtEingabeClick(Sender: TObject);
private
{ Private-Deklarationen}
RateZahl : integer;
Versuchszahl : integer;
public
{ Public-Deklarationen}
end;
Spieldaten als private
Attribute des Formulars
Hinweise:
Zufallszahlen können mit der Funktion random erzeugt werden.
Beispiel:
z := random(20);
ganzzahlige Zufallszahl z mit 0 z < 20
24
![Page 25: Erste Programme mit Delphi Helmut Paulus Speyer, 08.05.09 Einführung in die Entwicklungsumgebung Grundelemente der Programmiersprache Objekt-Pascal Übungen](https://reader036.vdokument.com/reader036/viewer/2022062512/55204d7549795902118ca192/html5/thumbnails/25.jpg)
Zahlen ratenZahlen raten
procedure TGUI.FormCreate(Sender: TObject);
begin
randomize;
end;
Das Prozedurgerüst von FormCreate wird bei einem Doppelklick auf das Formular angelegt.
Alternativ kann die Prozedur mit dem Objektinspektors erzeugt werden.
Initialisierung des Zufallszahlengenerators:
Damit der Zufallsgenerator nicht bei jedem Start dieselbe Zahlenfolge erzeugt, wird er durch Aufruf der Prozedur randomize initialisiert.
Für solche Initialisierungen wird üblicher-weise Ereignisprozedur FormCreate benutzt, die automatisch beim Start des Programms aufgerufen wird.
Mögliche Erweiterungen:
1. Bauen Sie eine Sicherheitsprüfung ein, dass die Eingabe einer Ratezahl nicht über der Feldgröße und nicht unter 0 liegt.
2. Erweitern Sie das Programm so, dass die Feldgröße über ein Edit-Feld eingelesen wird.
25
![Page 26: Erste Programme mit Delphi Helmut Paulus Speyer, 08.05.09 Einführung in die Entwicklungsumgebung Grundelemente der Programmiersprache Objekt-Pascal Übungen](https://reader036.vdokument.com/reader036/viewer/2022062512/55204d7549795902118ca192/html5/thumbnails/26.jpg)
Teil 2Teil 2
Übungen
Helmut Paulus Speyer, 08.05.09
![Page 27: Erste Programme mit Delphi Helmut Paulus Speyer, 08.05.09 Einführung in die Entwicklungsumgebung Grundelemente der Programmiersprache Objekt-Pascal Übungen](https://reader036.vdokument.com/reader036/viewer/2022062512/55204d7549795902118ca192/html5/thumbnails/27.jpg)
Aufgabe 1Aufgabe 127
Das Schaltjahr-Problem
Die Schaltjahresregelung unseres Kalenders (Gregorianischer Kalender) lautet:
Ein Schaltjahr ist ein Jahr, dessen Jahreszahl durch 4 ohne Rest teilbar ist. Ausgenommen davon sind die Jahrhundertwechsel, es sei denn, deren Jahreszahl ist durch 400 ohne Rest teilbar.
Es kommt also alle 400 Jahre vor, dass ein Jahrhundertwechsel ein Schaltjahr erzeugt. Das Jahr 2000 ist ein solches Jahr.
Zu entwickeln ist ein Programm, das nach Eingabe einer gültigen Jahreszahl prüft, ob dieses Jahr ein Schaltjahr ist.
![Page 28: Erste Programme mit Delphi Helmut Paulus Speyer, 08.05.09 Einführung in die Entwicklungsumgebung Grundelemente der Programmiersprache Objekt-Pascal Übungen](https://reader036.vdokument.com/reader036/viewer/2022062512/55204d7549795902118ca192/html5/thumbnails/28.jpg)
Aufgabe 2Aufgabe 2
Die Entwicklung der Weltbevölkerung schreitet rasch voran:
Im Jahr 2006 wurde die 6,6 Milliardengrenze überschritten. Zur Zeit wächst die Weltbevölkerung jährlich um ca. 1,2 %.
Mit Hilfe eines kleinen Programms soll die jährliche Entwicklung verfolgt werden.
Jahr : integer;Population : real;WFaktor : real;
Datenmodell:
Interaktionen:Aktuelle Werte eingeben und die Population des nächsten Jahres berechnen und anzeigen
Aktuelle Werte eingeben und die Population des vorherigen Jahres berechnen und angezeigen
Population in 10-Jahresschritten voraus- oder zurückberechnen
28
![Page 29: Erste Programme mit Delphi Helmut Paulus Speyer, 08.05.09 Einführung in die Entwicklungsumgebung Grundelemente der Programmiersprache Objekt-Pascal Übungen](https://reader036.vdokument.com/reader036/viewer/2022062512/55204d7549795902118ca192/html5/thumbnails/29.jpg)
Aufgabe 3Aufgabe 3
Projekt 17 und 4:
Es ist ein Programm zu entwickeln, das das bekannte Kartenspiel simuliert.
Anforderungen1. Spielkarten werden durch einen Würfel
ersetzt (Wertbereich [1;...;6]).
2. Es werden Zahlen gewürfelt und aufsummiert. Der Spieler kann nach jedem Spielzug entscheiden, ob er aufhört oder weiter spielen will.
3. Ist die Summe größer als 21, so hat der Spieler verloren. Hört der Spieler bei einer Summe kleiner oder gleich 21 auf, wird noch eine Zahl gewürfelt.Ist die neue Summe immer noch kleiner oder gleich 21, so hat der Spieler verloren, andernfalls gewonnen.
4. Alle Ausgaben werden gelöscht, wenn ein neues Spiel begonnen wird.
Projekt 17 und 4:
Es ist ein Programm zu entwickeln, das das bekannte Kartenspiel simuliert.
Anforderungen1. Spielkarten werden durch einen Würfel
ersetzt (Wertbereich [1;...;6]).
2. Es werden Zahlen gewürfelt und aufsummiert. Der Spieler kann nach jedem Spielzug entscheiden, ob er aufhört oder weiter spielen will.
3. Ist die Summe größer als 21, so hat der Spieler verloren. Hört der Spieler bei einer Summe kleiner oder gleich 21 auf, wird noch eine Zahl gewürfelt.Ist die neue Summe immer noch kleiner oder gleich 21, so hat der Spieler verloren, andernfalls gewonnen.
4. Alle Ausgaben werden gelöscht, wenn ein neues Spiel begonnen wird.
29
![Page 30: Erste Programme mit Delphi Helmut Paulus Speyer, 08.05.09 Einführung in die Entwicklungsumgebung Grundelemente der Programmiersprache Objekt-Pascal Übungen](https://reader036.vdokument.com/reader036/viewer/2022062512/55204d7549795902118ca192/html5/thumbnails/30.jpg)
Links und LiteraturLinks und Literatur
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.
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://lernen.bildung.hessen.de/informatik/
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/
30