Programmierparadigmen

Slides:



Advertisements
Ähnliche Präsentationen
Blue J.
Advertisements

Was ist neu in VS 2003 ? Ein Überblick. Bernd Marquardt Software & Consulting
Pascal-Datentypen Skalare Typen Zeiger- Typen Strukturierte Typen
10. Grundlagen imperativer Programmiersprachen
Objektorientierte Programmierung
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.
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.
Java: Objektorientierte Programmierung
Java: Grundlagen der Objektorientierung
Praktikum Entwicklung und Einsatz von Geosoftware I - Sitzung 3 Klassen, Objekte, Arrays und Kontrollstrukturen Sommersemester 2003 Lars Bernard.
DVG Klassen und Objekte
Delphi Eine objektorientierte Programmiersprache © Beushausen 2000.
Eine Einführung in die Entwicklung ereignisgesteuerter Programme
Delphi II - OOP IFB Fortbildung
University of Applied Sciences Übung Objektorientierte Programmierung II Dipl.-Inf. (FH) Markus Vogler.
INHALT INHALT Inhalt Delphi IDE ObjectPascal Hello World! Delphi IDE
Agenda für heute, 8. Juni, 2006 Strukturierte Variablen: RecordsStrukturierte Variablen: Records Kombiniertes Strukturieren Bitmap-Dateien Datentypen:
Entwicklung der Programmiersprachen
BIT – Schaßan – WS 02/03 Basisinformationstechnologie HK-Medien Teil 1, 11.Sitzung WS 02/03.
Wiederholte Programmausführung
Willkommen... Studentinnen und Studenten der Studiengänge Umweltnaturwissenschaften Erdwissenschaften Agrarwissenschaften zur.
Agenda für heute, 20. Juni, 2010 Strukturieren von Programmen: UnitsStrukturieren von Programmen: Units Datentypen: Unterbereichstypen Übung 7: Bitmap-Dateien.
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.
Computerorientierte Physik VORLESUNG und Übungen Vorlesung Zeit: Mo., – Uhr Ort: Hörsaal 5.01, Institut für Physik, Universitätsplatz 5, A-8010.
Konzept einer Programmiersprache!
Grundlagen von Objekt-Pascal Erstellt von J. Rudolf überarbeitet von H.Brehm.
Permanente Datenspeicherung
Einführung. Steuerelemente Hier erstellt man das Fenster, mit dem der Anwender später arbeiten soll: Werte eingibt Buttons klickt Auswahlen trifft.
Grundlagen Wissenschaftlichen Arbeitens Hilal Tekoglu
Agenda für heute, 9. Juni, 2005 Direkte FilezugriffeDirekte Filezugriffe Textfiles Bitmap-Dateien Datentypen: Mengen.
EPROG Tutorium #3 Philipp Effenberger
Objektorientierte Programmierung
Agenda für heute, 22. Juni, 2006 Direkte FilezugriffeDirekte Filezugriffe Datentypen: Mengen Individualisierbare Datentypen.
Willkommen... Studentinnen und Studenten der Studiengänge Umweltnaturwissenschaften Erdwissenschaften Agrarwissenschaften zur.
Agenda für heute, 18. Mai, 2006 Strukturierung von Programmen: ProzedurenStrukturierung von Programmen: Prozeduren Strukturierung von Programmen: Units.
Datentypen: integer, char, string, boolean
Agenda für heute, 20. April, 2006 Wiederholte ProgrammausführungWiederholte Programmausführung Algorithmische Grundlagen Bedingungen zum Abbruch von Programmschleifen.
Willkommen... Studentinnen und Studenten der Studiengänge Umweltnaturwissenschaften Erdwissenschaften Agrarwissenschaften zur.
Agenda für heute, 12. Mai, 2005 ProzedurenProzeduren Funktionsprozeduren Prozedurparameter Lokale und globale Variablen Datentypen: Ordinaltypen.
Agenda für heute, 28. April, 2005 Strukturierte VariablenStrukturierte Variablen Arrays.
Agenda für heute, 2. Juni, 2005 Permanente DatenspeicherungPermanente Datenspeicherung Lesen und schreiben in Pascal Filetypen: Drei Kategorien Arbeiten.
Agenda für heute, 7. April, 2005 Bedingte ProgrammausführungBedingte Programmausführung Algorithmische Grundlagen Vergleichsoperatoren, Wahrheitswerte.
Agenda für heute, 14. April, 2005 Wiederholte ProgrammausführungWiederholte Programmausführung Algorithmische Grundlagen Bedingungen zum Abbruch von Programmschleifen.
Agenda für heute, 26. Mai, 2005 Strukturierte Variablen: RecordsStrukturierte Variablen: Records Kombiniertes Strukturieren Individualisierbare Datentypen.
Erste Schritte in DELPHI
Programmieren in C Module und Bibliotheken Hochschule Fulda – FB AI Sommersemester Peter Klingebiel, HS Fulda, DVZ.
Programmierparadigmen
Delphi Einführung Von Frank Schullerer. Inhalt  1 Einführung  2 Die integrierte Entwicklungsumgebung  3 Komponenten  4 Das erste Programm  5 Die.
Paul, Morten, Yannick Blue J. Entwicklungsumgebung  versteht Java Programmcode  Für die Entwicklung eigener Software  Durch die Programmierung.
Agenda für heute, 21. April, 2005 Interaktion mit Pascal-ProgrammenInteraktion mit Pascal-Programmen Dateneingabe Programmsteuerung Debugging Datentypen:
Prüfungsbesprechung Barbara Scheuner Vorlesung: Programmieren und Problemlösen Prof. Hans Hinterberger.
Programmiersprache PASCAL
Paul, Morten, Yannick Blue J. Entwicklungsumgebung  versteht Java Programmcode  Für die Entwicklung eigener Software  Durch die Programmierung.
Objektorientierte (OO) Programmierung
Christos, Kornelia, Jan Christos, Kornelia, Jan Entwicklungsumgebung Versteht unseren Java Programm Code Versteht unseren Java Programm.
Objektorientierte Programmierung §Klassen §Objekte §Attribute §Eigenschaften §Methoden §Datenkapselung §Ereignisse §Vererbung §Entwicklungszeit §Laufzeit.
Wiederholte Programmausführung
Programmieren und Problemlösen
Units und Übung 7 Barbara Scheuner
Entwicklungsumgebung Lazarus
Programmierparadigmen
Objektorientierte Programmierung
Strukturierte Variablen: Records
Datentypen: integer, char, string, boolean
Programmieren und Problemlösen
Folien nach Wochentagen
Datentypen: integer, char, string, boolean
Öffnungszeiten Montag bis Mittwoch: 11 Uhr bis 23 Uhr
 Präsentation transkript:

Programmierparadigmen Agenda für heute, 19. Mai, 2005 Programmierparadigmen Imperatives vs. objektorientiertes Programmieren Ereignisse und Objekte Delphi Strukturierung von Programmen: Units Datentypen: Aufzählungstypen 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. Andere, hier nicht behandelte Programmierparadigmen Funktionale Sprachen Logikorientierte Sprachen Regelorientierte Sprachen 2/24 Programmieren und Problemlösen © Institut für Computational Science, ETH Zürich

Programmierparadigmen Funktionale Sprachen Berechnungen werden als Auswertung mathematischer Funktionen verstanden. Logikorientierte Sprachen Orientieren sich in der Beschreibung der Programme an der Prädikatenlogik. Ein funktionales Programm ist eine Abbildung von Eingabedaten auf Ausgabedaten, wohingegen ein imperatives Programm eine Arbeitsanweisung für eine Maschine ist. In einem funktionalen Programm wird die Reihenfolge der Berechnungsschritte in der Regel nicht festgelegt, während ein imperatives Programm ohne die Reihenfolge der Abarbeitungsschritte gar nicht verstanden werden kann. Bsp.: Lisp, Scheme, Haskell Beschreibung der Programme mit der Prädikatenlogik. Logikorientierte Programmiersprachen haben ungewöhnliche Eigenschaften (Backtracking, Unifikationsalgorithmenn), die sie für gewisse Arten von Problemen vorherbestimmt, die mit anderen Programmiersprachen nur sehr schwer zu lösen sind. Bsp.: Prolog Regelbasierte Sprachen Kommen in wissensbasierten Systemen (Expertensysteme) zur Anwendung. 2/24 Programmieren und Problemlösen © Institut für Computational Science, ETH Zürich

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

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

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

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

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

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

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

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

Grafische Programmierumgebung 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 Programmieren und Problemlösen © Institut für Computational Science, ETH Zürich

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

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

Am Beispiel der Komponente "Button": Ereignisse in Delphi Am Beispiel der Komponente "Button": 12/24 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 Programmieren und Problemlösen © Institut für Computational Science, ETH Zürich

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

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 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); Wird dieser Code der Prozedur verändert, dann muss das ganze Programm neu kompiliert werden. Dieser Code der Prozedur kann durch Prozeduraufrufe an verschiedenen Stellen im Programm wiederverwendet werden. 15/24 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 Programmieren und Problemlösen © Institut für Computational Science, ETH Zürich

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

Sichtbarkeit bei Units unit A; interface procedure p1; procedure p2; implementation var j: real; begin . . . end; var k: real; k := k*j; . . . end. program X; uses A; var R, S: integer; begin R:= S + 1; p1; p2; end. 18/24 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 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 Unit A ist direkt abhängig von Unit B Programm X ist direkt abhängig von Unit A und indirekt abhängig von Unit B Bsp.: Im Interface: const C =10 in Unit B, const B = C in Unit A, const A = B in Progr. X. In implementation: const D =20 in Unit B. Wird D geändert, nur Unit B kompilieren Wird C geändert, ebenfalls A und X neu kompilieren Der Compiler kann ein Programm oder eine Unit nur dann kompilieren, wenn er alle Units lokalisieren kann, von denen das zu kompilierende Modul dierkt oder indirekt abhängt. 19/24 Programmieren und Problemlösen © Institut für Computational Science, ETH Zürich

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

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 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 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 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 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 Programmieren und Problemlösen © Institut für Computational Science, ETH Zürich