Programmieren mit Delphi

Slides:



Advertisements
Ähnliche Präsentationen
Blue J.
Advertisements

Die Schulkonsole für Lehrerinnen und Lehrer
LS 2 / Informatik Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)
Zusammenfassung der Vorwoche
PKJ 2005/1 Stefan Dissmann Vorwoche - Klasse public class Studierende { private String name, vorname, studiengang; private int matNr, semester; private.
Pflege der Internetdienste
Puck eine visuelle Programmiersprache für die Schule
Christos, Kornelia, Jan Christos, Kornelia, Jan Entwicklungsumgebung Versteht unseren Java Programm Code Versteht unseren Java Programm.
Christos, Kornelia, Jan Christos, Kornelia, Jan Entwicklungsumgebung Versteht unseren Java Programm Code Versteht unseren Java Programm.
Paul, Morten, Yannick Blue J. Entwicklungsumgebung versteht Java Programmcode versteht Java Programmcode Für die Entwicklung eigener Software.
Ausnahmen HS Merseburg (FH) WS 06/07.
Java: Objektorientierte Programmierung
Java: Dynamische Datentypen
Indirekte Adressierung
Java: Grundlagen der Sprache
Ein Beispiel in Java.
Objekte und Arbeitsspeicher
Dynamischer Speicher. In einer Funktion wird z.B. mit der Deklaration int i; Speicher auf dem sogenannten Stack reserviert. Wenn die Funktion verlassen.
Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer Diskrete Mathematik I Vorlesung Listen-
Vererbung Spezialisierung von Klassen in JAVA möglich durch
PKJ 2005/1 Stefan Dissmann Rückblick auf 2005 Was zuletzt in 2005 vorgestellt wurde: Klassen mit Attributen, Methoden und Konstruktoren Referenzen auf.
PKJ 2005/1 Stefan Dissmann Zusammenfassung Bisher im Kurs erarbeitete Konzepte(1): Umgang mit einfachen Datentypen Umgang mit Feldern Umgang mit Referenzen.
PKJ 2005/1 Stefan Dissmann Zusammenfassung der Vorwoche Variable stehen für (einen) Wert, der sich im Programmablauf ändern kann. Variablen besitzen einen.
Excel Kurs Teil I Excel starten, Verknüpfungen auf dem Desktop anlegen. F. Bäumer.
DVG Klassen und Objekte
1 Teil 4 Übung: Uhr. 2 Zielsetzung Ziel ist es, mit Hilfe objektorientierter Modellierung ein System zu entwickeln, mit dem eine einfache Uhr simuliert.
Delphi Eine objektorientierte Programmiersprache © Beushausen 2000.
Objektorientierte Modellierung
PRJ 2007/1 Stefan Dissmann Verkettete datenstruktur: Liste Problem: Liste, die eine beliebige Zahl von Elementen verwaltet Operationen: Erzeugen, Anfügen,
Programmieren mit MS Small Basic
20:00.
Java programmieren mit JavaKara
Eine Einführung in die Entwicklung ereignisgesteuerter Programme
Kapitel 1 – Erste Schritte
Delphi II - OOP IFB Fortbildung
Selbsttest zum Modul 2 Informationstechnik
University of Applied Sciences Übung Objektorientierte Programmierung II Dipl.-Inf. (FH) Markus Vogler.
Wie man eine einfache Präsentation erstellt...
Willkommen bei Sycarus – dem Mathematikprogramm, das neue Wege geht.
Ereignisgesteuerte Programmierung
TWS/Graph HORIZONT Produkt-Präsentation Software für Rechenzentren
Einführung in die objektbasierte Programmierung mit Delphi
MVC-Uhr Siehe auch K. Merkert HSG-Kaiserslautern
Erste Programme mit Delphi
Bausteine zum objektorientierten Programmieren mit Delphi
HORIZONT 1 XINFO ® Das IT - Informationssystem PL/1 Scanner HORIZONT Software für Rechenzentren Garmischer Str. 8 D München Tel ++49(0)89 / 540.
Ganzheitliches Projekt-, Ressourcen- und Qualitätsmanagement 1 Reports und AddOns Auf den folgenden Seiten wird Ihnen die Funktionsweise der Reports und.
Anforderungen und Inhalte
Konzept einer Programmiersprache!
Grundlagen von Objekt-Pascal Erstellt von J. Rudolf überarbeitet von H.Brehm.
1. Entwicklungsumgebung 2. Kontextmenü 3. Compile 4. Objekt 5. Attribut 6. Klasse 7. Deklaration 8. Intialisierung.
1 (C)2006, Hermann Knoll, HTW Chur, FHO Quadratische Reste Definitionen: Quadratischer Rest Quadratwurzel Anwendungen.
1 (C)2006, Hermann Knoll, HTW Chur, FHO Quadratische Reste Definitionen: Quadratischer Rest Quadratwurzel Anwendungen.
CuP - Java Vierte Vorlesung Entspricht ungefähr Kapitel 2.1 des Skriptums Montag, 14. Oktober 2002.
Objektorientierte Programmierung
Agenda für heute, 12. Mai, 2005 ProzedurenProzeduren Funktionsprozeduren Prozedurparameter Lokale und globale Variablen Datentypen: Ordinaltypen.
Erste Schritte in DELPHI
Schutzvermerk nach DIN 34 beachten 20/05/14 Seite 1 Grundlagen XSoft Lösung :Logische Grundschaltung IEC-Grundlagen und logische Verknüpfungen.
Programmierparadigmen
Delphi Einführung Von Frank Schullerer. Inhalt  1 Einführung  2 Die integrierte Entwicklungsumgebung  3 Komponenten  4 Das erste Programm  5 Die.
Programmiervorkurs WS 2014 Referenzdatentypen
Formulare in HTML.
Paul, Morten, Yannick Blue J. Entwicklungsumgebung  versteht Java Programmcode  Für die Entwicklung eigener Software  Durch die Programmierung.
Einführung Blue J. Inhaltsverzeichnis  Definition  Vokabeln.
Java-Kurs Übung Besprechung der Hausaufgabe
Institut für Kartographie und Geoinformation Prof. Dr. L. Plümer, Dipl.-Ing. D. Dörschlag, Dr. G. Gröger Einführung in die Programmierung mit Java 13.
Paul, Morten, Yannick Blue J. Entwicklungsumgebung  versteht Java Programmcode  Für die Entwicklung eigener Software  Durch die Programmierung.
Objektorientierte (OO) Programmierung
Entwicklungsumgebung Lazarus
Objektorientierte Programmierung
 Präsentation transkript:

Programmieren mit Delphi Eine Einführung in Grundkonzepte Gregor 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)

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)

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

Entwicklungsumgebung Die IDE von Delphi 6 Professional Komponentenpalette Programmstart Quelltextfenster Objektinspektor Formular

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

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

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

Quelltext der Unit Einbinden Systemunits eigene Units unit 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} Einbinden Systemunits eigene Units Klassendeklaration Attribute, hier alles Objektvariable Methoden Objektdeklaration Einbinden der Datei des Formularobjekts

Methoden der Unit 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); Form1.Color := clBlack; Form1.ImSonne.Visible := False; Form1.ImMond.Visible := True; end. Ereignisbehandlung Zugriff auf Attribute (hier "Properties") eines Objektes Qualifizierte Bezeichner Lassen Sie einmal bei den Zuweisungen den 1. Teil des Bezeichners weg. Was passiert?

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

Programmablauf Delphiprogramme reagieren auf Ereignisse Wir haben keinen festen Programmablauf mehr Ereignisse lassen sich auslösen u. a. über Maus oder Tastatur OnClick 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)

Klassen und Objekte In unserem Programm begegnen wir u. a. folgenden Klassen und Objekten Klassename Objektname Form1: TForm1 BTag: TButton BNacht: TButton Color = ´clAqua´ Height = 270 AutoSize = false ... procedure BTagClick() Caption = ´Tag´ Left = 24 Height = 25 ... Caption =´Nacht´ Left = 168 Height = 25 ... Klassen sind Baupläne für Objekte Objekte sind Exemplare einer Klasse

Objektzustand Objekt BNacht: TButton Caption =´Nacht´ Left = 168 Height = 25 ... Attribut 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.

UML Notation Unified Modeling Language 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

Ein anderer Blick auf TForm1 Die Klasse TForm1 besitzt andere Klassen hat - Beziehung (Aggregation, Komposition) Klassendiagramm Komposition Komposition Aggregation

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

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

Ü-03: BMI-Rechner Mit einem Programm soll der BodyMass-Index BMI berechnet werden Erstellen Sie zunächst nur die Benutzungs-oberfläche, das GraphicalUserInterface GUI

GUI-Objekte erzeugen Aktivieren der Komponente Label anschließend auf das Formular klicken und positionieren Edit GroupBox Button Was geschieht bei der Platzierung von Komponenten ?

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. : BInit B für Button GBEingabe GB für Groupbox LUeberschrift L für Label usw. Die Aufschriften von Objekten lassen sich anschließend über ihre Caption - Eigenschaft im Objektinspektor verändern oder später zur Laufzeit zuweisen

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

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

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)

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 Daten Controller : 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

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 werden als private Attribute von TForm1, die Datenoperationen als private Methoden deklariert

BMI - Formularklasse Zugriffsschutz Methodenart ++ published + public – privat Methodenart ! Auftrag (procedure) ? Anfrage (function) Datenmodell Modellprozeduren

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?

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

Ausführliche Infos unter www.dsw-online.de Ü-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

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 : integer; Population : real; WFaktor : real;

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

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;

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üst 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?

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

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) Aufruf eines umfassenden, verlinkten Hilfssystems über die Menüleiste Kontextsensitive Hilfe mit F1 (auch im Fehlerfenster)

Debugging Neben dem Hilfesystem besitzt Delphi auch einen Laufzeit Debugger Das Debugging muss unter Projekt - Optionen - Compiler aktiviert sein 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 Typisches Vorgehen

Ü-05 Euklidischer Algorithmus Eine Aufgabe aus einer Kursarbeit: Der euklidische Algorithmus (modern) ggT(a,b) r sei der Rest bei der Teilung a/b ist r=0 so gib b als ggT(a,b) aus und höre auf 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

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

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

Ein Blick auf den Unterricht ( Auszug aus "Ein möglicher Gang durch das Grundfach Informatik" )

Ü-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 Implementieren Sie den Algorithmus als alternative Methode im vorherigen Projekt Die Auswahl soll über eine RadioGroup erfolgen

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)

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

Zufallszahlen Pseudozufallszahlen in Pascal zz:=random(n) liefert ganzzahliges zz mit 0  zz < n Würfel: zz:=random(6)+1 Damit der Zufallszahlengenerator stets andere Werte liefert, wird er zu Beginn initialisiert procedure TForm1.FormCreate(Sender: TObject); begin randomize; end;

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

Ü-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 tip mama kennt den tim Verwenden Sie dazu die Standardoperationen pos, delete und insert

Ein Blick auf den Unterricht

Ein Blick auf den Unterricht

Ü-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 0<k<26) Ergebnis: 65+k ... 90+k falls Ergebnis>90 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?

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 löscht alle Einträge (procedure) Lines.Add() fügt eine Zeile am Ende hinzu Lines.Delete() Lines.Delete(0) löscht 1. Zeile Lines.Count Anzahl der Zeilen (property) Lines.SaveToFile() Speichern in einem Textfile Lines.LoadFromFile() Laden aus einem Textfile

Ü-09: Cäsar mit Dateien Ergänzung zum Projekt Cäsar Dateidialoge 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 (Abbruch-Button) zurück über die Eigenschaft filename wird auf den gewählten oder eingegebenen Dateinamen zugegriffen

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

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

Ü-11: Mit Delphi sortieren Delphi enthält eine eigene Sortierroutine Eine Listbox kann über die Eigenschaft Sorted von Delphi sortiert werden: LBox1.Sorted:=true 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?

Literatur Delphi - Schulbücher Schumann Delphi für Kids (incl. Delphi 7 Personal Edition) mitp-Verlag, Bonn 2005 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

Literatur Delphi - Allgemein UML 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 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 UML

Literatur Internet 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)

bei der weiteren Arbeit mit Delphi Viel Spaß und Erfolg bei der weiteren Arbeit mit Delphi

Projektverwaltung Delphi sichert im Laufe der Projektentwick-lung eine Serien von Dateien, u. a. : *.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

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;

Delphi-Forum

Tag und Nacht

Tag und Nacht mit 2 Fenster

BMI

BMI mit try-except

Population

Population mit Initialisierung

Euklidischer Algorithmus

Struktogrammeditor

ggT Algorithmus zur Auswahl

Laufzeitmessung

Würfelspiel

Würfelspiel mit Simulation

Suchen und Ersetzen

Cäsar

Cäsar mit Dateien

Sortieren