Upload
dederick-neese
View
116
Download
2
Embed Size (px)
Citation preview
Programmieren mit Delphi
Eine Einführungin
Grundkonzepte
Gregor Noll2008
G.Noll 2008 2
Delphi für die Schule ?
Delphi setzt die Tradition von Pascal fort und erweitert sie um moderne Konzepte
ObjektorientierungKlassen - Objekte - Methoden - Ereignisse
visuell unterstützte Programmierung Komponentenbibliothek VCLZusammenspiel mit UML-Werkzeugenkontextsensitives Hilfesystem - Debugger
AlternativenJava (visuell unterstützt durch einen JavaEditor)BlueJ (Objekte von Anfang an)
G.Noll 2008 3
Versionen
1995 - 2005 Delphi 1 - Delphi 8, Delphi 2005
2006 Turbo Delphi (BDS 2006 - Delphi 10)
hervorragende EntwicklungsumgebungVideos zu Turbo Delphi und OOP unter
http://blogs.codegear.com/nickhodges/articles/26687.aspx
kostenlose "Explorer"-Version für zu HauseSchul-Netzwerk-Lizenz 22 Plätze ca. 240,-€
2007 Delphi 2007 Prof. R2 (für Vista)
Alternative: FreePascal mit passender IDE:
Lazarus (Vers. 0.9.24 Nov.2007)
G.Noll 2008 4
Unsere Ziele heute ...
... Einführung in das Arbeiten mit der Entwicklungsumgebung
... Kennenlernen von Standardkomponenten... eine erste Begegnungen mit Klassen und Objekten sowie der UML... die Erstellung einfacher Programme
nach dem MVC Entwurfsprinzip... Blicke auf den Unterricht entsprechend dem neuen Grundfach Lehrplan
G.Noll 2008 5
Entwicklungsumgebung
Komponentenpalette
Objektinspektor
Quelltextfenster
Formular
Die IDE von Delphi 6 Professional
Programmstart
G.Noll 2008 6
Delphi-Projekt
Delphi erstellt automatisch ein neues ProjektSpeichern Sie es, bevor Sie etwas verändern, sofort mit Datei - Alles speichern in einen neu angelegten Ordner mit einem geeigneten Namen für das Projekt Die automatisch vorgeschlagen Namen unit1.pas und project1.dpr können Sie vorerst übernehmen. Wenn Sie die beiden Namen ändern, dann müssen sie verschieden sein. Üblicherweise stellt man dann dem Unitnamen ein m für „Modul“ voran und gibt dem Projekt einen aussagekräftigen Namen
Neben den beiden Dateien unit1.pas und project1.dpr werden automatisch im Projektordner viele weitere Dateien angelegt und laufend von Delphi verwaltet
Das neue Projekt ist ein lauffähiges Programm Wenn Sie es starten, erzeugt Delphi im Projektordner eine exe-Datei und auf dem Bildschirm ein typisches Windows-Fenster - Probieren Sie es aus!
G.Noll 2008 7
Projektaufbau
Von Pascal her erwarten wir eine Struktur aus Hauptprogramm und Units. Delphi-Projekte sind genauso aufgebaut:
G.Noll 2008 8
Ü-01: Ein erstes Programm
Kopieren Sie den Ordner 01 TagUndNacht in Ihr eigenes Verzeichnis
Laden und starten Sie dann das Projekt in Delphi und testen Sie seine FunktionalitätBeenden Sie das Programm und analysieren Sie den Quelltext Führen Sie auf dem Formular einen Doppelklick auf ein Button-Objekt aus. Was passiert?Wie kommen die Bildchen auf das Fenster?
Fügen Sie eine weitere Wolke hinzu
Lassen Sie sich über Projekt und Quelltext anzeigen das Hauptprogramm anzeigen.Was geschieht dort?
G.Noll 2008 9
Quelltext der Unitunit mTagUndNacht;
interface
uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ExtCtrls;
type TForm1 = class(TForm) BTag: TButton; BNacht: TButton; ImErde: TImage; ImSonne: TImage; ImMond: TImage; ImWolke1: TImage; ImWolke2: TImage; ImWolke3: TImage; procedure BTagClick(Sender: TObject); procedure BNachtClick(Sender: TObject); private { Private-Deklarationen } public { Public-Deklarationen } end; //Ende Klassendeklaration
var Form1: TForm1;
implementation
{$R *.DFM}
Klassendeklaration
Attribute, hier alles Objektvariable
Objektdeklaration
Methoden
Einbinden der Datei des Formularobjekts
Einbinden Systemunits eigene
Units
G.Noll 2008 10
unit mTagUndNacht;
interface
...
var Form1: TForm1;
implementation
{$R *.DFM}
procedure TForm1.BTagClick(Sender: TObject);begin Form1.Color := clAqua; Form1.ImMond.Visible := False; Form1.ImSonne.Visible := True;end;
procedure TForm1.BNachtClick(Sender: TObject);begin Form1.Color := clBlack; Form1.ImSonne.Visible := False; Form1.ImMond.Visible := True;end;
end.
Methoden der Unit
Ereignisbehandlung
Qualifizierte Bezeichner
Lassen Sie einmal bei den Zuweisungen den 1. Teil des Bezeichners weg. Was passiert?
Zugriff auf Attribute (hier "Properties")
eines Objektes
G.Noll 2008 11
Quelltext des Hautprogrammsprogram TagUndNacht;
uses
Forms,
mTagUndNacht in 'mTagUndNacht.pas' {Form1};
{$R *.RES}
begin
Application.Initialize;
Application.CreateForm(TForm1, Form1);
Application.Run;
end.
Hier finden wir u. a.die Einbindung von Units und Ressourcendie Erzeugung des Fensterobjektesden Start des Programms
G.Noll 2008 12
Programmablauf
Delphiprogramme reagieren auf EreignisseWir haben keinen festen Programmablauf mehr
Ereignisse lassen sich auslösen u. a. über Maus oder Tastatur
OnClickKlicken auf ein Objekt mit der MausOnChange eine Eingabe wird verändert
Ereignisse sind Botschaften an ObjekteDie Modellierung mit Klassen und Objekten tritt deshalb in den VordergrundAlgorithmische Kenntnisse sind weiterhin wichtig (z. B. Kontrollstrukturen, Sortierverfahren)
G.Noll 2008 13
Klassen und Objekte
In unserem Programm begegnen wir u. a. folgenden Klassen und Objekten
Form1: TForm1
Color = ´clAqua´
Height = 270
AutoSize= false
...
procedure BTagClick()
Klassename
BTag: TButton
Caption = ´Tag´
Left = 24
Height = 25
...
BNacht: TButton
Caption =´Nacht´
Left = 168
Height = 25
...
Objektname
Klassen sind Baupläne für ObjekteObjekte sind Exemplare einer Klasse
G.Noll 2008 14
Objektzustand
Attribut
Eine Klasse (bzw. ein Objekt) wird u. a. über seine Attribute (Felder, Eigenschaften) bestimmt.
Die konkreten Attributwerte legen den aktuellen Zustand eines Objektes fest.
Objekt
BNacht: TButton
Caption =´Nacht´
Left = 168
Height = 25
...
Attributwert
G.Noll 2008 15
UML Notation
Unified Modeling Language
1995 erstmalig vorgestelltHeute die Standardnotation um ein objektorientiertes Softwaresystem zu modellierenUMLed ist ein schultaugliches UML-Werkzeug, das eine direkte Verknüpfung von Modellierung und Program-mierung in Delphi (oder auch in Java) ermöglicht
G.Noll 2008 16
Ein anderer Blick auf TForm1
Die Klasse TForm1 besitzt andere Klassenhat - Beziehung (Aggregation, Komposition)
Klassendiagramm
Komposition
Aggregation
Komposition
G.Noll 2008 17
Ü-02: Ein zweites Fenster
Die Klasse TForm1 ist ein Bauplan für Fenster. Wir sollten also problemlos ein weiteres Fenster erzeugen können
Kopieren Sie den Ordner 02 TagUndNachtF in Ihr eigenes Verzeichnis und laden Sie dann das Projekt in DelphiErgänzen Sie den Quelltext so, dass ein zweites Fenster (Formular) mit der Caption „Tag und Nacht 2“ erzeugt wird.Wie reagiert das 2. Fenster auf Ereignisse?Ergänzen Sie den Quelltext so, dass auf der Nachtseite des 2. Fensters ein Stern erscheint
G.Noll 2008 18
Ein Blick auf den Unterricht
Zum LP des Grundfaches Informatik hat die FDK einen möglichen Unterrichtsgang entwickelt (www.informatik-lehren.de)Hierin finden sich konkrete Vorschläge zur unterrichtlichen Umsetzung des LP
G.Noll 2008 19
Ü-03: BMI-Rechner
Mit einem Programm soll der BodyMass-Index BMI berechnet werden
2
in kg
( in m)
Gewicht
KörpergrößeBMI
Erstellen Sie zunächst nur die Benutzungs-oberfläche, das GraphicalUserInterface GUI
G.Noll 2008 20
GUI-Objekte erzeugen
Aktivieren der Komponente
anschließend auf
das Formular klicken und
positionieren GroupBox
Edit
Label
Button
Was geschieht bei der Platzierung von Komponenten ?
G.Noll 2008 21
Bezeichnungen
Delphi vergibt automatisch Namen an die GUI-Objekte, z. B. Label1, Button1, Button2
Besser ist es, eigene Bezeichnungen zu vergeben
Im Objektinspektor über die Eigenschaft Namez. B. : BInit B für Button
GBEingabe GB für Groupbox
LUeberschrift L für Labelusw.
Die Aufschriften von Objekten lassen sich anschließend über ihre Caption - Eigenschaft im Objektinspektor verändern oder später zur Laufzeit zuweisen
G.Noll 2008 22
Attribute - Methoden
Delphi trägt die Komponenten automatisch als Objektvariable in die Klasse TForm1 ein
Durch Doppelklick auf ein Objekt wird eine Ereignisbehandlungsroutine erzeugt und als Methode in der Klassendefinition eingetragen
Ereignisbehandlungsroutinen nie per Hand löschen, sondern nur den Prozedurrumpf löschen. Bei der nächsten Compilierung wird die gesamte Prozedur automatisch gelöscht
Verschiedene Objekte können die gleiche Ereignisbehandlungsroutine benutzen. Das wird im Objektinspektor eingetragen
G.Noll 2008 23
Eingabe und Ausgabe
Edit Komponente (Klasse TEdit)einzeiliges Feld für Eingabe und Ausgabezentrale Eigenschaft
Text ( String) antwort:=Edit1.Text; (property)
nützliche Eigenschaften/MethodenClear Edit1.Clear; (procedure)Enabled Edit1.Enabled:=true; (property)Visible Edit1.Visible:=false; (property)ReadOnly Edit1.ReadOnly:=true;(property)
nützliche EreignisseOnChangeOnEnterOnExit z. B. Prüfung der Eingabe vor dem Verlassen
G.Noll 2008 24
Daten auf dem GUI
Edit-Komponenten arbeiten mit Daten des Typs string. Deshalb sind Konvertierungen notwendig:
Groesse:=StrToFloat(EGroesse.text); Gewicht:=StrToFloat(EGewicht.text);
Variable GUI-Objekt
EBMI.text:= FloatToStrF(bmi,ffnumber,8,1);
Variable GUI-Objekt
Formatierte Ausgabe:FloatToStrF() mehrere Formatierungsmöglichkeiten,
meist ausreichend ist FloatToStrF(zahl,ffnumber,8,2)
G.Noll 2008 25
MVC Konzept
Wir wollen von Anfang an eine Trennung von Daten und ihrer Präsentation anstreben. Dies ist das Ziel des MVC-Entwurfsprinzips:
Model : enthält die Daten und die daten-
spezifischen Operationen (Algorithmen)
View : Präsentation der DatenController : verwaltet die Views und die
Benutzeraktionen
Wichtig: das Modell kennt weder die Präsen-tation (View) noch die Steuerung (Controller) und kann auf beide nicht zugreifen
G.Noll 2008 26
BMI - Modell
Daten und Datenoperationen sind für das BMI-Problem leicht identifizierbar:
Körpergröße : realGewicht : realBMI-Wert : realBMI Berechnungsalgorithmus
Später werden noch hinzukommenBMI-Bewertung : stringBMI Bewertungsalgorithmus
Die Daten werden als private Attribute von TForm1, die Datenoperationen als private Methoden deklariert
G.Noll 2008 27
BMI - Formularklasse
Datenmodell
Modellprozeduren
Zugriffsschutz++ published+ public – privat
Methodenart! Auftrag (procedure)? Anfrage (function)
G.Noll 2008 28
BMI - Programmierung
Erstellen Sie das komplette BMI-Programm
Was geschieht bei Fehleingaben?
Ergänzen Sie Ihr Programm mit einer Bewertung des BMI. Die dazu notwendigen Informationen finden Sie über die Google-Suche mit den Stichworten BMI Rechner Düsseldorf
G.Noll 2008 29
Laufzeitfehler
Fehler zur Ausführungszeit lassen sich mit einem try-except Block abfangen und mit eigenen Routinen bearbeiten
VoraussetzungDas Stoppen bei Delphi-Exceptions ist abgeschaltet. Bei Delphi 6 geschieht dies unter dem Menupunkt Tools-Debugger-Optionen-Sprachexceptions
Syntaxtry
// Anweisungen deren Laufzeitfehler abgefangen werden
except // Hinweise oder Abfangroutinen falls Fehler
(exceptions) // auftreten
end;
G.Noll 2008 30
Ü-04: Weltbevölkerung
Die Entwicklung der Weltbe-vö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 wollen wir die jährliche Entwick-lung verfolgen.
dsw-Datenreport 2006
Ausführliche Infos unter www.dsw-online.de
G.Noll 2008 31
Datenmodell
Jahr : integer;Population : real;WFaktor : real;
Informationen:
Im Jahr 2006 wurde die 6,6 Milliardengrenze überschritten. Zur Zeit wächst die Weltbevölkerung jährlich um ca. 1,2 %.
Modellierung:
Entprechend der Aufgabe legen wir die Daten und ihren Datentyp fest:
G.Noll 2008 32
Ereignisse
In unserem Simulationsprogramm wollen wir zwei Ereignisse behandeln:
Benutzeraktion bzw. Ereignis:
Mausklick auf den
Button >
Mausklick auf den
Button <
Programmreaktion:
Aktuelle Werte werden eingelesen und die Population des nächsten Jahres wird berechnet und angezeigt
Aktuelle Werte werden eingelesen und die Population des vorherigen Jahres wird berechnet und angezeigt
G.Noll 2008 33
Datenoperationen
Für die Berechnung formulieren wir passende Prozeduren
procedure TForm1.naechstePopulation;begin Jahr := Jahr + 1; Population := Population * WFaktor;end;
procedure TForm1.vorherigePopulation;begin Jahr := Jahr -1; Population := Population / WFaktor;end;
G.Noll 2008 34
Programmierung
Entwerfen Sie eine eigene Benutzungs-oberfläche oder kopieren Sie sich den Ordner 05 Population in ein eigenes Verzeichnis und benutzen das vorgegebene ProgrammgerüstImplementieren Sie die Daten und Daten-operationen sowie die Ereignisbehandlungs-routinen. Beachten Sie dabei das MVC Prinzip!Wann wird nach diesem Modell die 7 Millarden Grenze überschritten? Wann wurde die 6 Millarden Grenze überschritten?
G.Noll 2008 35
Initialisierungen
Für das Wachstumsprogramm wäre es angenehm, wenn beim Programmstart die Daten von 2006 bereits im Formular eingetragen wären Für solche Initialisierungen wird üblicherweise eine Ereignisbehandlungsroutine benutzt, die automatisch beim Erzeugen des Fensters aufgerufen wird:
procedure TForm1.FormCreate(Sender: TObject);
begin
EJahr.Text:='2006';
EPopulation.Text:='6,6';
EWFaktor.Text:='1,2'
end;
Das Prozedurgerüst von FormCreate wird bei einem Doppelklick auf das Formular angelegt
G.Noll 2008 36
Hilfe von und über DelphiDelphi unterstützt die Programmentwicklung durch verschiedene Hilfsmechanismen, z. B.
Automatische Erzeugung von ProzedurgerüstenAnzeige von Eigenschaften und Methoden hinter der Eingabe eines Objektbezeichners (Strg-Space)
Aufruf eines umfassenden, verlinkten Hilfssystems über die MenüleisteKontextsensitive Hilfe mit
F1(auch im Fehlerfenster)
G.Noll 2008 37
Debugging
Neben dem Hilfesystem besitzt Delphi auch einen Laufzeit Debugger
Das Debugging muss unter Projekt - Optionen - Compiler aktiviert sein
Starten Sie ein Programm mit F7Verfolgen Sie den Ablauf im Quelltext und im ProgrammfensterBeachten Sie die Tooltipps unter dem Cursor im Quelltext. Sie können dazu auch Teile des Quelltextes markieren.Setzen Sie Haltepunkte im Quelltext (auf blauen Punkt klicken), starten Sie dann das Programm mit F8
Typisches Vorgehen
G.Noll 2008 38
Ü-05 Euklidischer Algorithmus
Eine Aufgabe aus einer Kursarbeit:Der euklidische Algorithmus (modern)
ggT(a,b)(1) r sei der Rest bei der Teilung a/b(2) ist r=0 so gib b als ggT(a,b) aus und höre auf(3) speichere b in a und r in b ab und fahre mit
(1) fort
Stelle den Algorithmus mit einem Struktogramm dar
Implementiere den Algorithmus als Funktion
Verwende zur Eingabe der beiden Zahlen je eine SpinEdit Komponente (unter "Beispiele")Das Formular soll keinen Button enthalten
G.Noll 2008 39
Struktogramm
Euklidischer Algorithmus dargestellt im Struktogramm mit StruktEd
ggT(a,b)(1) r sei der Rest bei
derTeilung a/b
(2) ist r=0 so gib b als ggT(a,b)aus und höre auf
(3) speichere b in a und r in b undfahre mit (1) fort
ggT nach Euklid (moderne Variante)
Eingabe: natürliche Zahlen a und b
repeat until r = 0
r := a mod b
r = 0 ?true false
Ausgabe: ggT ist ba := b
b := r
G.Noll 2008 40
Eingabe - Fallunterscheidung
SpinEdit (unter dem Reiter "Beispiele")Edit-Feld für ganze Zahlen Start-Wert ValueMinimalwert MinValue und Maximalwert MaxValueSchrittweite Increment
Eigenschaft checked (boolean)
CheckboxAn- und Abwahl einer Option
Gruppe sich ausschließender OptionenEigenschaft checked (boolean) bzw. ItemIndex (Zählung mit 0 beginnend; -1 bei keiner Auswahl)
Radiobutton - RadiogroupAn- und Abwahl einer Option
G.Noll 2008 41
Ein Blick auf den Unterricht
( Auszug aus "Ein möglicher Gang durch das Grundfach Informatik" )
G.Noll 2008 42
Ü-06: Euklid - alte Version
Der euklidische Algorithmus (alte Version)ggT(a,b)(1) falls a=b gib a
als ggT(a,b) aus
(2) falls a>b speichere a-b in a sonst speichere
b-a in b(3) fahre bei (1) fort
ggT nach Euklid (alte Version)
Eingabe: natürliche Zahlen a und b
while a <> b do
a > b ?true false
a := a - b b := b - a
Ausgabe: ggT ist a
Implementieren Sie den Algorithmus als alternative Methode im vorherigen Projekt
Die Auswahl soll über eine RadioGroup erfolgen
G.Noll 2008 43
Laufzeitmessung
Eine hochpräzise Messung der Laufzeit ist in Delphi mit folgender Befehlsfolge möglichprocedure TForm1.BZeitClick(Sender: TObject);
var a, e, f: int64;
begin QueryPerformanceFrequency(f); QueryPerformanceCounter(a); //Befehlsfolge deren Zeitdauer bestimmt werden soll QueryPerformanceCounter(e); BZeit.Caption := FloatToStrF(1000*(e-a)/f,FFNumber,8,3); //Ergebnis hier in ms
end;
(nach Easy Delphi Helper unter www.dsdt.info)
G.Noll 2008 44
Ü-06 Würfelspiel
Eine Aufgabe aus einer Kursarbeit:
Ein WürfelspielDu wirftst vier Würfel und gewinnst, wenn mindestens 2 Würfel die Augenzahl 5 oder 6 zeigen. Schreibe ein Programm, das die vier Augen-zahlen auf einem Panel ausgibt und feststellt, ob du gewonnen hast.
Erweiterung: Ermitteln Sie mir einer Simulation, wie groß die Chance ist, bei diesem Spiel zu gewinnen?
G.Noll 2008 45
Zufallszahlen
Pseudozufallszahlen in Pascalzz:=random(n) liefert ganzzahliges zz mit 0 zz < nWürfel: zz:=random(6)+1
Damit der Zufallszahlengenerator stets andere Werte liefert, wird er zu Beginn initialisiertprocedure TForm1.FormCreate(Sender: TObject);
begin
randomize;
end;
G.Noll 2008 46
Stringverarbeitung - Parameter
Vom System vorgegebene Funktionen und Prozeduren zur Stringverarbeitung eignen sich in besonderer Weise zur Thematisierung von Schnittstellen und ihren Parametern, z.B.
function length(S:string):Integer;function Pos(SubStr:String; S:String):Integerprocedure Delete(var S:String; Index,Count:Integer)procedure Insert(Source:String; var S:String; Index:integer)function AnsiUpperCase(S:String):String (in der Unit SysUtils)
Auf Zeichen eines Strings kann man wie auf die Elemente eines array of char zugreifenStringverarbeitung lässt sich gut in ein Programmierprojekt zur Kryptographie einbinden
G.Noll 2008 47
Ü-07: Eigene Stringverarbeitung
Einfache Programmierübungen ergeben sich aus Erweiterungen der Standardoperationen Schreiben Sie ein Programm, das in einem Satz jedes Vorkommen einer Zeichenfolge durch eine andere Zeichenfolge ersetzt:
papa kennt den tipmama kennt den tim
Verwenden Sie dazu die Standardoperationen pos, delete und insert
G.Noll 2008 48
Ein Blick auf den Unterricht
G.Noll 2008 49
Ein Blick auf den Unterricht
G.Noll 2008 50
Ü-08: Kryptographie
Cäsar-VerschlüsselungText (ohne Umlaute und Sonderzeichen) in ein Memofeld eingeben In Großbuchstaben umwandeln (AnsiUpperCase)Buchstabenverschiebung durchführen
ASCII-Tabelle: Großbuchstaben haben die Ordnungszahl ORD('A')=65 bis ORD('Z')=90Verschiebung um k (Schlüsselzahl 0<k<26) Ergebnis: 65+k ... 90+kfalls Ergebnis>90 dann Ergebnis:=Ergebnis-26neuer Buchstabe CHAR(Ergebnis)beim Entschlüsseln Subtraktion der SchlüsselzahlErgebnis: 65-k ... 90-kfalls Ergebnis<65 dann Ergebnis:=Ergebnis+26
Ergebnis in einem zweiten Memofeld ausgebenWas lässt sich beobachten? Erklärung?
G.Noll 2008 51
Stringliste: Ein- und Ausgabe
Memo Komponente (Klasse TMemo) mehrzeiliges Feld für Eingabe und Ausgabe
zentrale EigenschaftLines ( Stringliste) Zählung der "Lines" beginnt mit 0
nützliche Eigenschaften/Methoden für Stringlisten
Lines.Clear löscht alle Einträge (procedure)Lines.Add() fügt eine Zeile am Ende hinzuLines.Delete() Lines.Delete(0) löscht 1. ZeileLines.Count Anzahl der Zeilen (property)Lines.SaveToFile() Speichern in einem TextfileLines.LoadFromFile() Laden aus einem Textfile
G.Noll 2008 52
DateidialogeOpenDialog und SaveDialogKomponenten werden nur auf das Formular gebrachtder Aufruf erfolgt durch die Methode executeexecute liefert true (Ok-Button) oder false (Abbruch-Button) zurücküber die Eigenschaft filename wird auf den gewählten oder eingegebenen Dateinamen zugegriffen
Ü-09: Cäsar mit DateienErgänzung zum Projekt Cäsar
Behandlung von Umlauten, Sonderzeichen und LeerzeichenKlartext aus einer Textdatei in das Memofeld einlesen bzw. in eine Textdatei abspeichernGeheimtext aus dem Memofeld in eine Textdatei abspeichern bzw. aus einer Textdatei einlesen
G.Noll 2008 53
Ü-10: Wörter sortieren
Schreiben Sie ein Programm zum Sortieren einer Folge von Wörtern
Einfache Sortierverfahren sind z. B. Bubblesort oder direkte Auswahl (Sortieren durch Minimumsuche)
Beschränkung auf 10 Wörter
Eingabe über Memofeld - Ausgabe über Listbox
Sortieren mit BubblesortImport: Feld f und Feldlänge n
Export: Feld f
wiederhole bis sortiert=true
sortiert := true
für pos von 1 bis n - 1 wiederhole
f [pos] > f [pos+1] true false
vertausche f [pos] mit f [pos+1]
sortiert := false
Sortieren mit MinimumsucheImport: Feld f und Feldlänge n
Export: Feld f
für start von 1 bis n - 1 wiederhole
minpos := start
für pos von start+1 bis n wiederhole
f [pos] < f [minpos] true false
minpos := pos
vertausche f [start] mit f [minpos]
G.Noll 2008 54
Stringliste: Ausgabe
Listbox Komponente (Klasse TListbox)
Ausgabe einer Liste von Strings mit der Möglich-keit zum Auswählen, Löschen, Hinzufügenzentrale Eigenschaften/Methoden
Items ( Stringliste)ListBox1.Items.Add('Speyer');
Es sind alle Eigenschaften und Methoden der Stringliste möglichItemIndex Nr. des ausgewählten Strings Zählung beginnt mit 0
Nr. ist -1 falls kein String gewählt wurde (property)Sorted mit der Zuweisung true werden die Strings sortiert (property)Clear löscht alle Einträge (procedure)
G.Noll 2008 55
Ü-11: Mit Delphi sortieren
Delphi enthält eine eigene Sortierroutine
Eine Listbox kann über die Eigenschaft Sorted von Delphi sortiert werden: LBox1.Sorted:=trueFügen Sie einen Button zur Sortierung mit Delphi ein und vergleichen Sie das Ergebnis mit dem des eigenen VerfahrensWird jetzt alles richtig sortiert?
G.Noll 2008 56
Schumann Delphi für Kids (incl. Delphi 7 Personal Edition)mitp-Verlag, Bonn 2005Bähnisch Praktische Informatik mit Delphi (2 Bd.)Cornelsen, Berlin 2001 Damann-WemßenObjektorientierte Programmierung mit Delphi (2 Bd.+LB)Klett, Stuttgart 2001-2005Frischalowski Delphi 5.0 (2 Bd.)Herdt-Verlag, Nackenheim 1999
Literatur
Delphi - Schulbücher
G.Noll 2008 57
Binzinger DelphiMarkt+Technik, München 2004Doberenz-Kowalski Borland Delphi 6Hanser, München 2002Ebener Delphi 6 - nachschlagen und verstehenAddison-Wesley 2002
Literatur
Delphi - Allgemein
Oestereich Analyse und Design mit UML 2.1Oldenbourg, München 2006Oesterreich Die UML 2.0 Kurzreferenz für die PraxisOldenbourg, München 2006Balzert UML 2 in 5 TagenW3L Verlag, Herdecke 2005
UML
G.Noll 2008 58
LiteraturInternet
Eine Google-Suche mit Delphi Unterricht liefert eine unüberschaubare Vielfalt an Seiten
http://www.hsg-kl.de/faecher/inf/index.php
http://www.plauener.de/~lessing/delphi/delphi_v.htm
http://www.dsdt.info/grundlagen/
http://www.delphipraxis.net
(Stand: 27.3.2008)
G.Noll 2008 59
Viel Spaß und Erfolg
bei der weiteren Arbeit mit Delphi
G.Noll 2008 60
G.Noll 2008 61
Projektverwaltung
*.dpr Projektverwaltung (Hauptprogramm)*.pas Pascalquelltext (Unit)*.dfm Formulareinstellungen*.res Ressourcen wie Icons, Sound etc.*.dcu compilierte Unit*.dof Compiler Einstellungen*.~?? Backup Dateien *.~pa *.~dp etc.*.exe ausführbares Windows-Programm
Delphi sichert im Laufe der Projektentwick-lung eine Serien von Dateien, u. a. :
G.Noll 2008 62
Cäsar - DateidialogeTForm1 = class(TForm) OpenDialog1: TOpenDialog; SaveDialog1: TSaveDialog;
.... procedure BLadenGeheimClick(Sender: TObject); procedure BSpeichernGeheimClick(Sender: TObject);
procedure TForm1.BLadenGeheimClick(Sender: TObject);begin if OpenDialog1.Execute then MGeheimtext.Lines.LoadFromFile(OpenDialog1.Filename);end;
procedure TForm1.BSpeichernGeheimClick(Sender: TObject);begin if SaveDialog1.Execute then MGeheimtext.Lines.SaveToFile(SaveDialog1.Filename);end;
G.Noll 2008 63
Delphi-Forum
G.Noll 2008 64
Tag und Nacht
G.Noll 2008 65
Tag und Nacht mit 2 Fenster
G.Noll 2008 66
BMI
G.Noll 2008 67
BMI mit try-except
G.Noll 2008 68
Population
G.Noll 2008 69
Population mit Initialisierung
G.Noll 2008 70
Euklidischer Algorithmus
G.Noll 2008 71
Struktogrammeditor
G.Noll 2008 72
ggT Algorithmus zur Auswahl
G.Noll 2008 73
Laufzeitmessung
G.Noll 2008 74
Würfelspiel
G.Noll 2008 75
Würfelspiel mit Simulation
G.Noll 2008 76
Suchen und Ersetzen
G.Noll 2008 77
Cäsar
G.Noll 2008 78
Cäsar mit Dateien
G.Noll 2008 79
Sortieren