Von Pascal zu Delphi - Informatik Bildungsserver Rheinland

Download Report

Transcript Von Pascal zu Delphi - Informatik Bildungsserver Rheinland

Programmieren mit Delphi Eine Einführung in Grundkonzepte

Gregor Noll 2008

G.Noll 2008

Delphi für die Schule ?

Delphi setzt die Tradition von Pascal fort und erweitert sie um moderne Konzepte Objektorientierung Klassen Objekte Methoden Ereignisse visuell unterstützte Programmierung Komponentenbibliothek VCL Zusammenspiel mit UML-Werkzeugen kontextsensitives Hilfesystem - Debugger Alternativen Java (visuell unterstützt durch einen JavaEditor) BlueJ ( Objekte von Anfang an )

2

G.Noll 2008

Versionen

1995 - 2005 Delphi 1 - Delphi 8, Delphi 2005 2006 Turbo Delphi (BDS 2006 - Delphi 10) hervorragende Entwicklungsumgebung Videos zu Turbo Delphi und OOP unter http://blogs.codegear.com/nickhodges/articles/26687.aspx

kostenlose "Explorer"-Version für zu Hause Schul-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)

3

G.Noll 2008

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

4

G.Noll 2008

Entwicklungsumgebung

Die IDE von Delphi 6 Professional Programmstart Objektinspektor Komponentenpalette Quelltextfenster Formular

5

G.Noll 2008

Delphi-Projekt

Delphi erstellt automatisch ein neues Projekt Speichern Sie es, bevor Sie etwas verändern, sofort mit Datei Alles speichern in einen neu angelegten Ordner geeigneten Namen für das Projekt Die automatisch vorgeschlagen Namen man dann dem Unitnamen ein m Projekt einen aussagekräftigen Namen unit1.pas

mit einem und project1.dpr

können Sie vorerst übernehmen. Wenn Sie die beiden Namen ändern, dann müssen sie verschieden sein. Üblicherweise stellt für „Modul“ voran und gibt dem 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 Windows-Fenster Programm Wenn Sie es starten, erzeugt Delphi im Projektordner eine exe-Datei und auf dem Bildschirm ein typisches Probieren Sie es aus!

6

G.Noll 2008

Projektaufbau

Von Pascal her erwarten wir eine Struktur aus Hauptprogramm und Units. Delphi Projekte sind genauso aufgebaut:

7

G.Noll 2008

Ü-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ät Beenden 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?

8

G.Noll 2008

Quelltext der Unit

unit mTagUndNacht; interface

Einbinden Systemunits eigene Units

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;

Klassendeklaration Attribute, hier alles Objektvariable Methoden Objektdeklaration

implementation {$R *.DFM}

Einbinden der Datei des Formularobjekts

9

G.Noll 2008

Methoden der Unit

unit mTagUndNacht; interface ...

var Form1: TForm1; implementation

Ereignisbehandlung

{$R *.DFM} procedure TForm1.BTagClick(Sender: TObject); begin Form1.Color := clAqua; Form1.ImMond.Visible := False; Form1.ImSonne.Visible := True; end;

Zugriff auf Attribute (hier "Properties") eines Objektes

procedure TForm1.BNachtClick(Sender: TObject); begin Form1.Color := clBlack; Form1.ImSonne.Visible := False; Form1.ImMond.Visible := True; end;

Qualifizierte Bezeichner

end.

Lassen Sie einmal bei den Zuweisungen den 1. Teil des Bezeichners weg. Was passiert?

10

G.Noll 2008

Quelltext des Hautprogramms

program 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 Ressourcen die Erzeugung des Fensterobjektes den Start des Programms

11

G.Noll 2008

Programmablauf

Delphiprogramme reagieren auf Ereignisse Wir haben keinen festen Programmablauf mehr Ereignisse lassen sich auslösen Maus oder Tastatur OnClick u. a. über Klicken auf ein Objekt mit der Maus OnChange eine Eingabe wird verändert Ereignisse sind Botschaften an Objekte Die Modellierung mit Klassen und Objekten tritt deshalb in den Vordergrund Algorithmische Kenntnisse sind weiterhin wichtig (z. B. Kontrollstrukturen, Sortierverfahren)

12

Klassen und Objekte

In unserem Programm begegnen wir u. a. folgenden Klassen und Objekten

Klassename Objektname G.Noll 2008

Form1: TForm1 Color Height = ´clAqua´ = 270 AutoSize = false ...

procedure BTagClick() BTag: TButton Caption = ´Tag´ Left = 24 Height ...

= 25 BNacht: TButton Caption =´Nacht´ Left = 168 Height ...

= 25 Klassen Objekte sind Baupläne für Objekte sind Exemplare einer Klasse

13

G.Noll 2008

Objektzustand

Objekt Attribut

BNacht: TButton Caption =´Nacht´ Left Height ...

= 168 = 25

Attributwert

Eine Klasse (bzw. ein Objekt) wird u. a. über seine Attribute (Felder, Eigenschaften) bestimmt. Die konkreten Attributwerte legen den aktuellen Zustand eines Objektes fest.

14

G.Noll 2008

UML Notation

U nified M odeling L anguage 1995 erstmalig vorgestellt Heute die Standardnotation um ein objektorientiertes Softwaresystem zu modellieren UMLed ist ein schultaugliches UML-Werkzeug, das eine direkte Verknüpfung von Modellierung und Program mierung in Delphi (oder auch in Java) ermöglicht

15

Ein anderer Blick auf TForm1

Die Klasse TForm1 besitzt andere Klassen hat - Beziehung (Aggregation, Komposition) Klassendiagramm

G.Noll 2008

Aggregation

16

G.Noll 2008

Ü-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 Delphi Ergä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

17

G.Noll 2008

Ein Blick auf den Unterricht

Zum LP des Grundfaches Informatik hat die FDK einen möglichen Unterrichtsgang entwickelt ( www.informatik-lehren.de

unterrichtlichen Umsetzung des LP ) Hierin finden sich konkrete Vorschläge zur

18

Ü-03: BMI-Rechner

Mit einem Programm soll der B ody M ass I ndex BMI berechnet werden

BMI

Gewicht

in kg (

Körpergröße

in m) 2

G.Noll 2008

Erstellen Sie zunächst nur die Benutzungs oberfläche, das G raphical U ser I nterface GUI

19

GUI-Objekte erzeugen

Aktivieren der Komponente anschließend auf das Formular klicken und positionieren Label Edit GroupBox Button G.Noll 2008

Was geschieht bei der Platzierung von Komponenten ?

20

G.Noll 2008

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 Name z. B. : B Init GB Eingabe L Ueberschrift usw.

B für Button GB für Groupbox L für Label Die Aufschriften von Objekten lassen sich anschließend über ihre Laufzeit zuweisen Caption - Eigenschaft im Objektinspektor verändern oder später zur

21

G.Noll 2008

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

22

G.Noll 2008

Eingabe und Ausgabe

Edit Komponente (Klasse TEdit) einzeiliges zentrale Eigenschaft Text (  Feld für Eingabe und Ausgabe String) antwort:=Edit1.Text; (property) nützliche Eigenschaften/Methoden Clear Edit1.Clear; Enabled Visible ReadOnly Edit1.Enabled:=true; Edit1.Visible:=false; Edit1.ReadOnly:=true; (procedure) (property) (property) (property) nützliche Ereignisse OnChange OnEnter OnExit z. B. Prüfung der Eingabe vor dem Verlassen

23

G.Noll 2008

Daten auf dem GUI

Edit-Komponenten arbeiten mit Daten des Typs string . Deshalb sind Konvertierungen notwendig:

Variable GUI-Objekt Groesse:=StrToFloat(EGroesse.text); Gewicht:=StrToFloat(EGewicht.text); Variable GUI-Objekt EBMI.text:= FloatToStrF(bmi,ffnumber,8,1);

Formatierte Ausgabe: FloatToStrF() mehrere Formatierungsmöglichkeiten, meist ausreichend ist FloatToStrF(zahl,ffnumber,8,2)

24

G.Noll 2008

MVC Konzept

Wir wollen von Anfang an eine Trennung von Daten und ihrer Präsentation anstreben. Dies ist das Ziel des MVC -Entwurfsprinzips: M odel V iew : enthält die Daten und die daten spezifischen Operationen (Algorithmen) : Präsentation der Daten C ontroller : 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

25

G.Noll 2008

BMI - Modell

Daten und Datenoperationen sind für das BMI-Problem leicht identifizierbar: Körpergröße : real Gewicht : real BMI-Wert : real BMI Berechnungsalgorithmus Später werden noch hinzukommen BMI-Bewertung : string BMI Bewertungsalgorithmus Die Daten TForm1, die Datenoperationen Methoden werden als private Attribute deklariert als von private

26

G.Noll 2008

BMI - Formularklasse

Zugriffsschutz ++ published + – public privat Methodenart !

Auftrag (procedure) ?

Anfrage (function)

Datenmodell Modellprozeduren 27

G.Noll 2008

BMI - Programmierung

Erstellen Sie das komplette BMI-Programm 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 Was geschieht bei Fehleingaben?

28

G.Noll 2008

Laufzeitfehler

Fehler zur Ausführungszeit lassen sich mit einem try-except Block abfangen und mit eigenen Routinen bearbeiten Syntax try // Anweisungen deren Laufzeitfehler abgefangen werden except // Hinweise oder Abfangroutinen falls Fehler (exceptions) // auftreten end; Voraussetzung Das Stoppen bei Delphi-Exceptions ist abgeschaltet. Bei Delphi 6 geschieht dies unter dem Menupunkt Tools-Debugger Optionen-Sprachexceptions

29

G.Noll 2008

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

30

G.Noll 2008

Datenmodell

Entprechend der Aufgabe legen wir die Daten und ihren Datentyp fest: Informationen: Im Jahr 2006 wurde die 6,6 Milliardengrenze überschritten. Zur Zeit wächst die Weltbevölkerung jährlich um ca. 1,2 %.

Modellierung:

Jahr Population WFaktor : integer; : real; : real; 31

G.Noll 2008

Ereignisse

In unserem Simulationsprogramm wollen wir zwei Ereignisse behandeln: Benutzeraktion bzw. Ereignis: Mausklick auf den Button > Programmreaktion: Aktuelle Werte werden Jahres wird berechnet eingelesen und die Population des nächsten und angezeigt Mausklick auf den Button < Aktuelle Werte werden Jahres wird berechnet eingelesen und die Population des vorherigen und angezeigt

32

G.Noll 2008

Datenoperationen

Für die Berechnung formulieren wir passende Prozeduren

procedure TForm1.naechstePopulation; begin Jahr end; := Jahr + 1; Population := Population * WFaktor; procedure TForm1.vorherigePopulation; begin Jahr end; := Jahr -1; Population := Population / WFaktor; 33

G.Noll 2008

Programmierung

Entwerfen Sie eine eigene Benutzungs oberfläche oder kopieren Sie sich den Ordner 05 Population Programmgerüst in ein eigenes Verzeichnis und benutzen das vorgegebene Implementieren 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?

34

G.Noll 2008

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

35

Hilfe von und über Delphi

Delphi unterstützt die Programmentwicklung durch verschiedene Hilfsmechanismen, z. B.

Automatische Erzeugung von Prozedurgerüsten Anzeige von Eigenschaften und Methoden hinter der Eingabe eines Objektbezeichners ( Strg-Space )

G.Noll 2008

Aufruf eines umfassenden, verlinkten Hilfssystems über die Menüleiste Kontextsensitive Hilfe mit F1 (auch im Fehlerfenster)

36

G.Noll 2008

Debugging

Neben dem Hilfesystem besitzt Delphi auch einen Laufzeit Debugger Das Debugging muss unter Projekt Optionen - Compiler aktiviert sein Typisches Vorgehen Starten Sie ein Programm mit F7 Verfolgen Sie den Ablauf im Quelltext und im Programmfenster Beachten 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

37

G.Noll 2008

Ü-05 Euklidischer Algorithmus

Eine Aufgabe aus einer Kursarbeit: Der euklidische Algorithmus ggT(a,b) (modern) (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

38

G.Noll 2008

Struktogramm

Euklidischer Algorithmus dargestellt im Struktogramm mit StruktEd 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 und fahre mit (1) fort

ggT nach Euklid (moderne Variante)

Eingabe: natürliche Zahlen a und b r := a mod b r = 0 ?

true Ausgabe: ggT ist b a := b b := r repeat until r = 0 false

39

G.Noll 2008

Eingabe - Fallunterscheidung

SpinEdit (unter dem Reiter "Beispiele") Edit-Feld für ganze Zahlen Start-Wert Value Minimalwert MinValue Schrittweite Increment und Maximalwert MaxValue Radiobutton - Radiogroup An- und Abwahl einer Option Gruppe sich ausschließender Optionen Eigenschaft checked (boolean) bzw. ItemIndex (Zählung mit 0 beginnend; -1 bei keiner Auswahl) Checkbox An- und Abwahl einer Option Eigenschaft checked (boolean)

40

Ein Blick auf den Unterricht

G.Noll 2008

( Auszug aus "Ein möglicher Gang durch das Grundfach Informatik" )

41

G.Noll 2008

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

ggT nach Euklid (alte Version)

Eingabe: natürliche Zahlen a und b while a <> b do true a := a - b a > b ?

b := b - a false Ausgabe: ggT ist a (3) fahre bei (1) fort Implementieren Sie den Algorithmus als alternative Methode im vorherigen Projekt Die Auswahl soll über eine RadioGroup erfolgen

42

G.Noll 2008

Laufzeitmessung

Eine hochpräzise Messung der Laufzeit ist in Delphi mit folgender Befehlsfolge möglich

procedure 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

)

43

G.Noll 2008

Ü-06 Würfelspiel

Eine Aufgabe aus einer Kursarbeit: Ein Würfelspiel Du 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?

44

G.Noll 2008

Zufallszahlen

Pseudozufallszahlen in Pascal zz:=random(n) liefert ganzzahliges zz mit 0  Würfel: zz:=random(6)+1 zz < n Damit der Zufallszahlengenerator stets andere Werte liefert, wird er zu Beginn initialisiert

procedure TForm1.

FormCreate (Sender: TObject); begin randomize ; end; 45

G.Noll 2008

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):Integer procedure 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 zugreifen Stringverarbeitung lässt sich gut in ein Programmierprojekt zur Kryptographie einbinden

46

G.Noll 2008

Ü-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: p a p a kennt den ti p m a m a kennt den ti m Verwenden Sie dazu die Standardoperationen

pos,

delete und insert

47

G.Noll 2008

Ein Blick auf den Unterricht

48

G.Noll 2008

Ein Blick auf den Unterricht

49

G.Noll 2008

Ü-08: Kryptographie

Cäsar-Verschlüsselung Text (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')=90 Verschiebung um k (Schlüsselzahl 090 dann Ergebnis:=Ergebnis-26 neuer Buchstabe CHAR(Ergebnis) beim Entschlüsseln Subtraktion der Schlüsselzahl Ergebnis: 65-k ... 90-k falls Ergebnis<65 dann Ergebnis:=Ergebnis+26 Ergebnis in einem zweiten Memofeld ausgeben Was lässt sich beobachten? Erklärung?

50

G.Noll 2008

Stringliste: Ein- und Ausgabe

Memo Komponente (Klasse TMemo) mehrzeiliges Feld für Eingabe und Ausgabe zentrale Eigenschaft Lines (  Stringliste) Zählung der "Lines" beginnt mit 0 nützliche Eigenschaften/Methoden für Stringlisten Lines.Clear

Lines.Add() löscht alle Einträge (procedure) fügt eine Zeile am Ende hinzu Lines.Delete() Lines.Count

Lines.SaveToFile() Lines.LoadFromFile() Lines.Delete(0) löscht 1. Zeile Anzahl der Zeilen (property) Speichern in einem Textfile Laden aus einem Textfile

51

G.Noll 2008

Ü-09: Cäsar mit Dateien

Ergänzung zum Projekt Cäsar Behandlung von Umlauten, Sonderzeichen und Leerzeichen Klartext aus einer Textdatei in das Memofeld einlesen bzw. in eine Textdatei abspeichern Geheimtext aus dem Memofeld in eine Textdatei abspeichern bzw. aus einer Textdatei einlesen Dateidialoge OpenDialog und SaveDialog Komponenten werden nur auf das Formular gebracht der Aufruf erfolgt durch die Methode execute execute liefert true (Ok-Button) oder false zurück über die Eigenschaft filename eingegebenen Dateinamen zugegriffen (Abbruch-Button) wird auf den gewählten oder

52

G.Noll 2008

Ü-10: Wörter sortieren

Schreiben Sie ein Programm zum Sortieren einer Folge von Wörtern Einfache Sortierverfahren sind z. B. Bubblesort Auswahl (Sortieren durch Minimumsuche) oder direkte Beschränkung auf 10 Wörter Eingabe über Memofeld - Ausgabe über Listbox

Sortieren mit Bubblesort

Import: Feld f und Feldlänge n Export: Feld f sortiert := true für pos von 1 bis n - 1 wiederhole f [pos] > f [pos+1] true vertausche f [pos] mit f [pos+1] sortiert := false wiederhole bis sortiert=true false

Sortieren mit Minimumsuche

Import: 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 minpos := pos vertausche f [start] mit f [minpos] false

53

G.Noll 2008

Stringliste: Ausgabe

Listbox Komponente (Klasse TListbox) Ausgabe einer Liste von Strings mit der Möglich keit zum Auswählen, Löschen, Hinzufügen zentrale Eigenschaften/Methoden Items (  Stringliste) ListBox1.Items.Add('Speyer'); Es sind alle Eigenschaften und Methoden der Stringliste möglich ItemIndex Sorted Clear Nr. des ausgewählten Strings Zählung beginnt mit 0 Nr. ist -1 falls kein String gewählt wurde (property) mit der Zuweisung true werden die Strings sortiert (property) löscht alle Einträge (procedure)

54

G.Noll 2008

Ü-11: Mit Delphi sortieren

Delphi enthält eine eigene Sortierroutine Eine Listbox kann über die Eigenschaft Sorted sortiert werden: LBox1.Sorted:=true von Delphi Fügen Sie einen Button zur Sortierung mit Delphi ein und vergleichen Sie das Ergebnis mit dem des eigenen Verfahrens Wird jetzt alles richtig sortiert?

55

G.Noll 2008

Literatur

Delphi - Schulbücher Schumann Delphi für Kids mitp-Verlag, Bonn 2005 (incl. Delphi 7 Personal Edition) Bähnisch Praktische Informatik mit Delphi (2 Bd.) Cornelsen, Berlin 2001 Damann-Wemßen Objektorientierte Programmierung mit Delphi (2 Bd.+LB) Klett, Stuttgart 2001-2005 Frischalowski Delphi 5.0 (2 Bd.) Herdt-Verlag, Nackenheim 1999

56

G.Noll 2008

Literatur

Delphi - Allgemein Binzinger Delphi Markt+Technik, München 2004 Doberenz-Kowalski Borland Delphi 6 Hanser, München 2002 Ebener Delphi 6 - nachschlagen und verstehen Addison-Wesley 2002 UML Oestereich Analyse und Design mit UML 2.1

Oldenbourg, München 2006 Oesterreich Die UML 2.0 Kurzreferenz für die Praxis Oldenbourg, München 2006 Balzert UML 2 in 5 Tagen W3L Verlag, Herdecke 2005

57

G.Noll 2008

Literatur

Internet Eine Google-Suche mit Delphi Unterricht unüberschaubare Vielfalt an Seiten liefert eine 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)

58

G.Noll 2008

Viel Spaß und Erfolg bei der weiteren Arbeit mit Delphi

59

G.Noll 2008 60

G.Noll 2008

Projektverwaltung

Delphi sichert im Laufe der Projektentwick lung eine Serien von Dateien, u. a. : *.dpr

*.pas

*.dfm

*.res

*.dcu

*.dof

*.~??

*.exe

Projektverwaltung (Hauptprogramm) Pascalquelltext (Unit) Formulareinstellungen Ressourcen wie Icons, Sound etc.

compilierte Unit Compiler Einstellungen Backup Dateien *.~pa *.~dp etc.

ausführbares Windows-Programm

61

G.Noll 2008

Cäsar - Dateidialoge

TForm1 = 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; 62

Delphi-Forum

G.Noll 2008 63

Tag und Nacht

G.Noll 2008

64

G.Noll 2008

Tag und Nacht mit 2 Fenster

65

BMI

G.Noll 2008

66

G.Noll 2008

BMI mit try-except

67

Population

G.Noll 2008

68

G.Noll 2008

Population mit Initialisierung

69

G.Noll 2008

Euklidischer Algorithmus

70

G.Noll 2008

Struktogrammeditor

71

G.Noll 2008

ggT Algorithmus zur Auswahl

72

G.Noll 2008

Laufzeitmessung

73

Würfelspiel

G.Noll 2008

74

G.Noll 2008

Würfelspiel mit Simulation

75

G.Noll 2008

Suchen und Ersetzen

76

Cäsar

G.Noll 2008

77

G.Noll 2008

Cäsar mit Dateien

78

Sortieren

G.Noll 2008

79