• Programmierparadigmen • Imperatives vs. objektorientiertes

Werbung
Programmierparadigmen
Agenda für heute, 4. Mai, 2006
Imperative Programmiersprachen
• Programmierparadigmen
In Prozeduren zusammengefasste, sequentiell ausgeführte
Anweisungen
Die Prozeduren werden ausgeführt, wenn sie als Teil des
Programmablaufs aufgerufen werden
• Imperatives vs. objektorientiertes Programmieren
• Ereignisse und Objekte
• Delphi
Objektorientierte Programmiersprachen
• Datentypen: Real
Imperative Prozeduren, die ausgeführt werden, wenn ein
bestimmtes Ereignis eintritt
Die Prozeduren sind Bestandteil von sog. Objekten
Programmieren und Problemlösen
2/17
© Institut für Computational Science, ETH Zürich
Programmierparadigmen
Funktionale Sprachen
•
Berechnungen werden als Auswertung mathematischer Funktionen
verstanden
• Imperatives vs. objektorientiertes Programmieren
Logikorientierte Sprachen
Orientieren sich in der Beschreibung der Programme an der
Prädikatenlogik
Regelbasierte Sprachen
Kommen in wissensbasierten Systemen (Expertensysteme) zur Anwendung
Programmieren und Problemlösen
3/17
© Institut für Computational Science, ETH Zürich
Programmierparadigmen
•
Ereignisse und Objekte
•
Delphi
•
Datentypen: Real
Objektorientiertes Programmieren (OOP)
Imperatives vs. objektorientiertes Programmieren
Voraussetzungen für die objektorientierte Programmierung
Ereignisse
Ein Programm prüft ständig ob gewisse Ereignisse stattgefunden
haben und reagiert darauf mit Nachrichten an Prozeduren
Verwaltung von Objekten
Durch einen Datentyp, in dem sowohl Eigenschaften der
Speicherung als auch Prozeduren deklariert sind
Imperativ: Wiederholte,
sequentielle Verarbeitung.
Objektorientiert: Ereignisgesteuerte Verarbeitung
Bei Mausklick dividiere
Menü
Auswahl
Aktion
Wir befassen uns mit konzeptionellen Aspekten der OOP weil diese
notwendig sind um die technischen Grundlagen von Delphi zu verstehen.
Beispiel: zeilenweise Verarbeitung
Programmieren und Problemlösen
4/17
© Institut für Computational Science, ETH Zürich
Programmieren und Problemlösen
Beispiel: grafische Verarbeitung
5/17
© Institut für Computational Science, ETH Zürich
Typische Ereignisse bei Windows-Anwendungen
•
Programmierparadigmen
•
Imperatives vs. objektorientiertes Programmieren
Befehlsereignisse
Starten von Programmen, Speichern von Dateien, usw.
• Ereignisse und Objekte
•
Delphi
•
Datentypen: Real
Eingabeereignisse
Drücken einer Tastaturtaste, Bewegen der Maus, usw.
Fensterereignisse
Öffnen, Schliessen, eines Fensters, Grösse verändern, usw.
Programmieren und Problemlösen
6/17
© Institut für Computational Science, ETH Zürich
Typische Ereignisse bei Windows-Anwendungen
Typische Objekte bei Windows-Anwendungen
Timer-Ereignisse
Nachführen einer Uhr, Zeitpläne verwalten, usw.
Systemereignisse
Netzwerksteuerung, Interaktion mit Peripheriegeräten, usw.
Programmieren und Problemlösen
7/17
© Institut für Computational Science, ETH Zürich
Programmieren und Problemlösen
8/17
© Institut für Computational Science, ETH Zürich
Delphi
•
Programmierparadigmen
Grundlagen
•
Imperatives vs. objektorientiertes Programmieren
Object-Pascal
•
Ereignisse und Objekte
Erweiterung von Pascal durch Klassen und Objekte
• Delphi
•
Datentypen: Real
Grafische Programmierumgebung
"Drag-and-drop"-Entwurf von Programmoberflächen
"Visual Component Library" (VCL)
Integrierte Entwicklungsumgebung (IDE)
Verwaltung von Projekten, insb. Abhängigkeiten zwischen Units
Regeln bez. Programmorganisation
Programmieren und Problemlösen
9/17
© Institut für Computational Science, ETH Zürich
Sichtbare Objekte in Delphi
Unsichtbare Objekte in Delphi
DateiöffnungsDialog
DruckerDialog
Timer
SpeicherungsDialog
Programmieren und Problemlösen
10/17
© Institut für Computational Science, ETH Zürich
Ereignisse in Delphi
Programmieren und Problemlösen
HTTP-Transfer
FTP-Transfer
11/17
© Institut für Computational Science, ETH Zürich
Die Projektverwaltung in Delphi
In Delphi wird ein Programm Projekt genannt.
Am Beispiel der Komponente "Button":
Ein Delphi-Projekt besteht aus mehreren Dateien von denen jede
durch eine spezifische Erweiterung gekennzeichnet ist:
.dpr
Die Projektverwaltungs-Datei (wird von Delphi automatisch
erzeugt und nachgeführt)
.pas
Quelltext-Datei (Objekt-Pascal-Code, in Units gegliedert)
.dfm
Binäre Datei für den Aufbau eines Formulars
.res
Datei mit vom Projekt beanspruchten Ressourcen
.dof
Projektoptionsdatei (Einstellungen für Compiler und Linker)
.exe
Ausführbares Programm
Wichtiger Hinweis: Immer alle Dateien speichern!!
Programmieren und Problemlösen
12/17
© Institut für Computational Science, ETH Zürich
Programmieren und Problemlösen
13/24
© Institut für Computational Science, ETH Zürich
Der Datentyp real
Teilbereich der reellen Zahlen
•
Programmierparadigmen
•
Imperatives vs. objektorientiertes Programmieren
•
Ereignisse und Objekte
5.0 x 10 -324 .. 1.7 x 10 308
•
Delphi
Operationen: +, –, *, /, ROUND, TRUNC, ABS
Der Wertebereich ist vom Prozessor abhängig. Beispiel:
• Datentypen: Real
Das Resultat eines Ausdrucks mit Integer-Werten kann sowohl an
eine Integer-Variable als auch an eine Real-Variable zugewiesen
werden.
Programmieren und Problemlösen
Reelle Typen in Delphi 6
Typ
Real48
Bereich
2.9 x 10-39 .. 1.7 x 1038
Single
1.5 x 10-45 .. 3.4 x 1038
Double
5.0 x 10-324 .. 1.7 x 10308
14/17
© Institut für Computational Science, ETH Zürich
Konsequenzen der endlichen Darstellung für real
Signifikante Stellen
Extended 3.6 x 10-4951 .. 1.1 x 104932
Comp
2-63+1 .. 263-1
Grösse in Byte
11-12
6
7-8
4
15-16
8
19-20
10
19-20
8
Currency 922337203685477.5808.. 922337203685477.5807 19-20
8
Der generische Typ Real ist in der aktuellen Implementation mit dem Typ
Double identisch.
Gegeben sind folgende Anweisungen:
a:= 4 / 3 – 1;
a:= 3 * a – 1;
Welchen Wert erhält a?
3(4/3-1)-1 = 4-3-1 = 0
Angenommen, wir haben 4 Ziffern um eine relle Zahl darzustellen:
4 = 4. 0 0 0
3 = 3. 0 0 0
1 = 1. 0 0 0
das bedeutet:
4/3 = 1. 3 3 3
4/3-1 = 0. 3 3 3
Also:
Programmieren und Problemlösen
(8 Byte, 15-16 signifikante Stellen)
15/17
© Institut für Computational Science, ETH Zürich
a = –0. 0 0 1 ≠ 0
Programmieren und Problemlösen
deshalb:
3*(4/3-1) = 0. 9 9 9
3*(4/3-1)-1 = –0. 0 0 1
Lösung:
16/17
3 * 4 / 3 – 3 * 1 rechnen
© Institut für Computational Science, ETH Zürich
Automatische Typenkonversion
In Ausdrücken können Integer- und Real-Werte gemeinsam vorkommen.
Wenn für eine der Operationen +, – oder * ein Operand vom Typ Real ist,
dann wird der andere Operand automatisch zu Real konvertiert bevor der
Operator angewandt wird.
Beispiel:
(6 + 4) * (1 + 0.1)
Die Faktoren in Klammern werden zuerst ausgewertet:
6 + 4 = 10 (Integer)
Im zweiten Faktor ist 0.1 vom Typ Real, deshalb wird 1 zu Real konvertiert:
1 + 0.1 = 1.1 (Real)
Der Multiplikationsoperator * hat einen Integer-Operanden (10) und einen
Real-Operanden (1.1). Der Integer-Operand wird zu Real konvertiert:
10.0 * 1.1 = 11.0 (Real)
Beachte: Das Resultat ist vom Typ "Real" obwohl es ein ganzzahliger Wert ist!
Programmieren und Problemlösen
17/17
© Institut für Computational Science, ETH Zürich
Herunterladen