Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

Programmieren und Problemlösen © Institut für Computational Science, ETH Zürich Agenda für heute, 19. Mai, 2005 ProgrammierparadigmenProgrammierparadigmen.

Ähnliche Präsentationen


Präsentation zum Thema: "Programmieren und Problemlösen © Institut für Computational Science, ETH Zürich Agenda für heute, 19. Mai, 2005 ProgrammierparadigmenProgrammierparadigmen."—  Präsentation transkript:

1 Programmieren und Problemlösen © Institut für Computational Science, ETH Zürich Agenda für heute, 19. Mai, 2005 ProgrammierparadigmenProgrammierparadigmen Imperatives vs. objektorientiertes Programmieren Ereignisse und Objekte Delphi Strukturierung von Programmen: Units Datentypen: Aufzählungstypen

2 Programmieren und Problemlösen © Institut für Computational Science, ETH Zürich Programmierparadigmen Imperative Programmiersprachen In Prozeduren zusammengefasste, sequentiell ausgeführte Anweisungen. Die Prozeduren werden ausgeführt, wenn sie als Teil des Programmablaufs aufgerufen werden. Objektorientierte Programmiersprachen Imperative Prozeduren, die ausgeführt werden, wenn ein bestimmtes Ereignis eintritt. Die Prozeduren sind Bestandteil von sog. Objekten. 2/24

3 Programmieren und Problemlösen © Institut für Computational Science, ETH Zürich Programmierparadigmen 2/24 Regelbasierte Sprachen Kommen in wissensbasierten Systemen (Expertensysteme) zur Anwendung. Logikorientierte Sprachen Orientieren sich in der Beschreibung der Programme an der Prädikatenlogik. Funktionale Sprachen Berechnungen werden als Auswertung mathematischer Funktionen verstanden.

4 Programmierparadigmen Imperatives vs. objektorientiertes ProgrammierenImperatives vs. objektorientiertes Programmieren Ereignisse und Objekte Delphi Strukturierung von Programmen: Units Datentypen: Aufzählungstypen

5 Programmieren und Problemlösen © Institut für Computational Science, ETH Zürich Objektorientiertes Programmieren (OOP) Voraussetzungen für die objektorientierte Programmierung Ereignisgesteuerte Programmierung 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. 3/24 Wir befassen uns mit konzeptionellen Aspekten der OOP weil diese notwendig sind um die technischen Grundlagen von Delphi zu verstehen.

6 Programmieren und Problemlösen © Institut für Computational Science, ETH Zürich Imperatives vs. objektorientiertes Programmieren Imperativ: Wiederholte, sequentielle Verarbeitung. Objektorientiert: Ereignis- gesteuerte Verarbeitung Menü Auswahl Aktion Beispiel: zeilenweise VerarbeitungBeispiel: grafische Verarbeitung Bei Mausklick dividiere 5/24

7 Programmierparadigmen Imperatives vs. objektorientiertes Programmieren Ereignisse und ObjekteEreignisse und Objekte Delphi Strukturierung von Programmen: Units Datentypen: Aufzählungstypen

8 Programmieren und Problemlösen © Institut für Computational Science, ETH Zürich Typische Ereignisse bei Windows-Anwendungen Befehlsereignisse Starten von Programmen, Speichern von Dateien, usw. Fensterereignisse Öffnen, Schliessen, eines Fensters, Grösse verändern, usw. Eingabeereignisse Drücken einer Tastaturtaste, Bewegen der Maus, usw. 6/24

9 Programmieren und Problemlösen © Institut für Computational Science, ETH Zürich Typische Ereignisse bei Windows-Anwendungen Systemereignisse Netzwerksteuerung, Interaktion mit Peripheriegeräten, usw. Timer-Ereignisse Nachführen einer Uhr, Zeitpläne verwalten, usw. 7/24

10 Programmieren und Problemlösen © Institut für Computational Science, ETH Zürich Typische Objekte bei Windows-Anwendungen 8/24

11 Programmierparadigmen Imperatives vs. objektorientiertes Programmieren Ereignisse und Objekte DelphiDelphi Strukturierung von Programmen: Units Datentypen: Aufzählungstypen

12 Programmieren und Problemlösen © Institut für Computational Science, ETH Zürich Delphi Grundlagen Object-Pascal Erweiterung von Pascal durch Klassen und Objekte 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 9/24

13 Programmieren und Problemlösen © Institut für Computational Science, ETH Zürich Sichtbare Objekte in Delphi 10/24

14 Programmieren und Problemlösen © Institut für Computational Science, ETH Zürich Unsichtbare Objekte in Delphi Dateiöffnungs- Dialog HTTP-Transfer FTP-Transfer Timer Speicherungs- Dialog Drucker- Dialog 11/24

15 Programmieren und Problemlösen © Institut für Computational Science, ETH Zürich Ereignisse in Delphi Am Beispiel der Komponente "Button": 12/24

16 Programmieren und Problemlösen © Institut für Computational Science, ETH Zürich Die Projektverwaltung in Delphi In Delphi wird ein Programm Projekt genannt. 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!! 13/24

17 Programmierparadigmen Imperatives vs. objektorientiertes Programmieren Ereignisse und Objekte Delphi Strukturierung von Programmen: UnitsStrukturierung von Programmen: Units Datentypen: Aufzählungstypen

18 Programmieren und Problemlösen © Institut für Computational Science, ETH Zürich Strukturierung von Programmen 1. Schritt: Gliederung des Quellcodes Einem Programm können wir Struktur verleihen, indem wir es in Prozeduren gliedern, von denen jede eine spezielle Aufgabe innerhalb des Progamms übernimmt. 2. Schritt: Import von Objektcode Die Struktur eines Programms können wir ergänzen, indem wir bereits kompilierte Prozeduren in den Objektcode des Programms importieren. 14/24

19 Programmieren und Problemlösen © Institut für Computational Science, ETH Zürich Gliederung des Quellcodes var a,b,i,p: integer; begin... read(a,b); p:= a; for i:= 2 to b do p:= p * a; write('a hoch b: '); writeln(p);... end; var x,y,p: integer; procedure pot(a,b: integer); var i: integer; begin p:= a; for i:= 2 to b do p:= p * a end; { pot } begin { main }... read(x,y); pot(x,y); 15/24

20 Programmieren und Problemlösen © Institut für Computational Science, ETH Zürich Import von Objektcode aus einer "Unit" program xyz; uses math; var alpha: integer; sinalpha: real; begin { main }... read(alpha); sinalpha:= sin(alpha); write('Sinus von ',alpha,': ';... Diese Anweisung sagt dem Compiler, dass alle in der Unit "Math" dekla- rierten Prozeduren dem Programm zur Verfügung stehen sollen. 16/24

21 Programmieren und Problemlösen © Institut für Computational Science, ETH Zürich Getrennte Kompilation von Programmen und Units Programm Quellcode Unit A Quellcode Compiler Unit A Objektcode Programm Objektcode Muss neu kompiliert werden, wenn das Programm oder eine der Units geändert wird. Unit B Quellcode Unit B Objektcode Muss neu kompiliert werden, wenn die Unit geändert wird. Überschaubarkeit durch Modularisierung (Programmieren im Grossen) 17/24

22 Programmieren und Problemlösen © Institut für Computational Science, ETH Zürich Sichtbarkeit bei Units program X; uses A; var R, S: integer; begin R:= S + 1; p1; p2; end. unit A; interface procedure p1; procedure p2; implementation var j: real; procedure p1; begin... end; procedure p2; var k: real; begin k := k*j;... end; end. 18/24

23 Programmieren und Problemlösen © Institut für Computational Science, ETH Zürich Sichtbarkeit bei Units program X; uses A; var R, S: integer; begin R:= S + 1; j:= R - S; p2; q3; end. unit A; interface uses B; var j: real; procedure p2; implementation procedure p2; var k: real; begin k := k*j; q1;... end; end. unit B; interface procedure q1 procedure q2 procedure q3; implementation procedure q1; begin... end;... end. kann via Unit A auch die Bezeichner im Interface von Unit B verwenden 19/24

24 Programmierparadigmen Imperatives vs. objektorientiertes Programmieren Ereignisse und Objekte Delphi Strukturierung von Programmen: Units Datentypen: AufzählungstypenDatentypen: Aufzählungstypen

25 Programmieren und Problemlösen © Institut für Computational Science, ETH Zürich Aufzählungstypen Ein Aufzählungstyp wird durch eine Liste von Werten definiert. Aufzählungstypen gehören zur Klasse der Ordinaltypen. Einer Variablen von diesem Typ können diese und nur diese Werte zugewiesen werden. Beispiele type Tag = (Montag, Dienstag, Mittwoch, Donnerstag, Freitag, Samstag, Sonntag); Beziehung = (Eltern, Geschwister, Nachkomme, Cousine); Operator = (plus, minus, multipl, div); Trigfunktion =(sinus, kosinus, tangens, kotangens); Farbe = (braun, rot, orange, gelb, gruen); 20/24

26 Programmieren und Problemlösen © Institut für Computational Science, ETH Zürich Aufzählungstypen Den Variablen, die als vom Typ Aufzählung deklariert sind, können die entsprechenden Werte wie Konstanten zugewiesen werden. Beispiele var Feiertag, Werktag: Tag; Verwandter: Beziehung; Laubfarbe: Farbe; Die folgenden Anweisungen sind möglich: Feiertag:= Sonntag; Verwandter:= Nachkomme; Laubfarbe:= gelb; Diese jedoch nicht: Feiertag:= blau; Verwandter:= Freitag; 21/24

27 Programmieren und Problemlösen © Institut für Computational Science, ETH Zürich Aufzählungstypen: Einschränkungen Im selben Gültigkeitsbereich darf ein Wert nicht zu mehr als einem Aufzählungstyp gehören: type Frucht = (Apfel, Orange, Zitrone, Tomate); Gemuese = (Kartoffel, Wirz, Tomate, Bohne); var Karte1: (Eichel, Schelle, Rose, Schilte); var Karte2: (Eichel, Schelle, Rose, Schilte); Dagegen werden die folgenden Zeilen fehlerfrei compiliert: var Karte1, Karte2: (Eichel, Schelle, Rose, Schilte); type Farbe = (Eichel, Schelle, Rose, Schilte); var Karte1: Farbe; Karte2: Farbe; 22/24

28 Programmieren und Problemlösen © Institut für Computational Science, ETH Zürich Aufzählungstypen: Operationen Auf die Werte eines Aufzählungstyps können Vergleichsoperatoren und die Standardfunktionen ord, succ und pred angewandt werden: Kartoffel < Bohne (= true) ord(Orange) (= 1) succ(Kartoffel) (= Wirz) pred(Zitrone) (= Orange) 23/24

29 Programmieren und Problemlösen © Institut für Computational Science, ETH Zürich Aufzählungstypen: Operationen Variablen vom Typ Aufzählung können inkrementiert werden. var Wochentag:(Montag, Dienstag, Mittwoch, Donnerstag, Freitag, Samstag, Sonntag); Nach den Anweisungen: Wochentag:= Dienstag; inc(Wochentag); enthält Wochentag den Wert Mittwoch Die for-Anweisung wird oft zusammen mit Aufzählungstypen benützt. Beispiel for Wochentag:= Montag to Freitag do... 24/24


Herunterladen ppt "Programmieren und Problemlösen © Institut für Computational Science, ETH Zürich Agenda für heute, 19. Mai, 2005 ProgrammierparadigmenProgrammierparadigmen."

Ähnliche Präsentationen


Google-Anzeigen