Agenda für heute, 18. Mai, 2006 Strukturierung von Programmen: ProzedurenStrukturierung von Programmen: Prozeduren Strukturierung von Programmen: Units.

Slides:



Advertisements
Ähnliche Präsentationen
Einführung in die Programmiersprache C/C++
Advertisements

Ausdrücke bezeichnen Elemente eines Datentyps induktive Definition:
Pascal-Datentypen Skalare Typen Zeiger- Typen Strukturierte Typen
10. Grundlagen imperativer Programmiersprachen
12. Iteration und Rekursion
Java: Objektorientierte Programmierung
Java: Grundlagen der Objektorientierung
SWITCH - Anweisung.
SWITCH - Anweisung.
Strukturen. In einer Struktur kann eine beliebige Anzahl von Komponenten (Daten) mit unterschiedlichen Datentypen (im Gegensatz zu Feldern) zusammengefaßt.
Zusammenfassung Vorwoche
DVG Klassen und Objekte
Agenda für heute, 8. Juni, 2006 Strukturierte Variablen: RecordsStrukturierte Variablen: Records Kombiniertes Strukturieren Bitmap-Dateien Datentypen:
Einführung in die Programmiersprache C 3.Tag Institut für Mathematische Optimierung - Technische Universität Braunschweig.
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.
Konzept einer Programmiersprache!
Grundlagen von Objekt-Pascal Erstellt von J. Rudolf überarbeitet von H.Brehm.
Permanente Datenspeicherung
Grundlagen Wissenschaftlichen Arbeitens Hilal Tekoglu
Agenda für heute, 9. Juni, 2005 Direkte FilezugriffeDirekte Filezugriffe Textfiles Bitmap-Dateien Datentypen: Mengen.
Mala Bachmann, Beispiel Velorennen (1) Velorennen mit 5 TeilnehmerInnen Wie kann die durchschnittliche Rennzeit berechnet werden?
MODULA-2.
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.
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.
Programmierparadigmen
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.
Programmierparadigmen
Vorkurs Programmierungstechnik Einführung in Pascal Michael Gellner Lehrstuhl für Softwaretechnik am Institut für praktische Informatik der Universität.
CuP - Java Achte Vorlesung Entspricht ungefähr Kapitel 4.1 des Skriptums Montag, 28. Oktober 2002.
Kurzreferat über Funktionen und Prozeduren Von Alexander RothHomepage:
Agenda für heute, 21. April, 2005 Interaktion mit Pascal-ProgrammenInteraktion mit Pascal-Programmen Dateneingabe Programmsteuerung Debugging Datentypen:
The Programming Language Pascal
Extended Pascal Erweiterung von Pascal shadi Behzadipour shadi Shadi behzadipour.
Programmiersprache PASCAL
Die Wochentage (der) Montag Dienstag Mittwoch Donnerstag Freitag
Objektorientierte (OO) Programmierung
Variablen und Operatoren. C++ Teil 2: Grundstrukturen Variablen Operatoren Kontrollstrukturen Funktionen Header-Dateien Pointer und Referenzen.
Wochentag-was ist es auf deutsch? Wochentag-was ist es auf deutsch? Презентацию создала учитель немецкого языка МБОУ «школа №6 г.Прокопьевск Седова Оксана.
Wiederholte Programmausführung
Programmieren und Problemlösen
Units und Übung 7 Barbara Scheuner
Programmierparadigmen
Objektorientierte Programmierung
Strukturierte Variablen: Records
Datentypen: integer, char, string, boolean
Direkte Filezugriffe Agenda für heute, 22. Juni, 2006
Programmieren und Problemlösen
Folien nach Wochentagen
Strukturierte Variablen: Records
Datentypen: integer, char, string, boolean
Parametrisierte Prozeduren und Funktionen
Einführung in die Programmierung
GRUNDLAGEN WISSENSCHAFTLICHEN ARBEITENS MODULA-2 SONAY SUBAYAZ
JANUAR MONTAG DIENSTAG MITTWOCH DONNERSTAG FREITAG SAMSTAG
Öffnungszeiten Montag bis Mittwoch: 11 Uhr bis 23 Uhr
Januar 2016 Montag Dienstag Mittwoch Donnerstag Freitag Samstag
The Programming Language Pascal
 Präsentation transkript:

Agenda für heute, 18. Mai, 2006 Strukturierung von Programmen: ProzedurenStrukturierung von Programmen: Prozeduren Strukturierung von Programmen: Units Datentypen: Ordinaltypen Datentypen: Aufzählungstypen

Programmieren und Problemlösen © Institut für Computational Science, ETH Zürich Pascal-Prozeduren program tempumrechnung; var x, y: real; begin {Hauptprogramm} read (x); fahrenheit; write (y:5:2) end. 1/22 procedure fahrenheit; begin y:= (x - 32) * 5 / 9; end; {fahrenheit} Prozeduraufruf Prozedurdeklaration Was schreiben wir, wenn wir zur berechneten Temperatur 20 Grad dazu zählen müssen?

Programmieren und Problemlösen © Institut für Computational Science, ETH Zürich Funktionsprozeduren program tempumrechnung; var x, y: real; begin {Hauptprogramm} read (x); y:= fahrenheit + 20; write (y:5:2) end. 2/22 function fahrenheit: real; begin fahrenheit:= (x - 32) * 5 / 9; end; {fahrenheit} Funktionsname kann in Ausdrücken verwendet werden Aber: für jeden Funktions- aufruf brauchen wir eine Variable x

Programmieren und Problemlösen © Institut für Computational Science, ETH Zürich Datenübergabe mit Werte-Parameter program tempumrechnung; var x, y: real; begin {Hauptprogramm} read (x); y:= fahrenheit(x) + 20; write (y:5:2) end. 3/22 Formeller Parameter Aktueller Parameter function fahrenheit(t: real): real; begin fahrenheit:= (t - 32) * 5 / 9; end; {fahrenheit}

Programmieren und Problemlösen © Institut für Computational Science, ETH Zürich Datenübergabe mit Var-Parameter program tempumrechnung (input, output); var x: real; begin {Hauptprogramm} read (x); fahrenheit(x); write (x:5:2) end. 4/22 procedure fahrenheit(var t: real); begin fahrenheit:= (t - 32) * 5 / 9; end; {fahrenheit} Der Inhalt von x wird überschrieben!

Programmieren und Problemlösen © Institut für Computational Science, ETH Zürich Lokalität: Sichtbarkeit von Bezeichnern var a procedure P var b procedure Q procedure R var b, c Sichtbar bedeutet: Auf eine Variable oder Konstante, die sichtbar ist, kann man zugreifen. Eine Prozedur oder Funktion, die sicht- bar ist, kann man aufrufen. Unsichtbare Elemente entziehen sich einem Zugriff program H 5/22

Programmieren und Problemlösen © Institut für Computational Science, ETH Zürich Sichtbarkeitsbereich von Hauptprogramm H var a procedure P a und P sichtbar program H Weil Prozeduren schachtelbar sind, sind auch Sichtbar- keitsbereiche schachtelbar 6/22

Programmieren und Problemlösen © Institut für Computational Science, ETH Zürich Sichtbarkeitsbereich von Prozedur P var a procedure P var b procedure Q procedure R a, b, Q, R und P sichtbar program H Globale Variable für die Prozeduren P, Q und R Lokale Variable für die Prozedur P 7/22

Programmieren und Problemlösen © Institut für Computational Science, ETH Zürich Sichtbarkeitsbereich von Prozedur R var a procedure P var b procedure Q procedure R a, b, R, Q und P sichtbar program H 8/22

Programmieren und Problemlösen © Institut für Computational Science, ETH Zürich Sichtbarkeitsbereich von Prozedur Q var a procedure P var b procedure Q var b, c b, c, a, Q und P sichtbar program H R (und seine lokalen Variablen) sind für Q nicht sichtbar! procedure R 9/22

Programmieren und Problemlösen © Institut für Computational Science, ETH Zürich Sichtbarkeitsbereich von Prozedur Q var a procedure P var b procedure Q var b, c b, c, a, Q, R und P sichtbar program H procedure R procedure R; FORWARD; Die forward-Deklaration macht R (aber nicht seine lokalen Variablen) für Q sichtbar! 10/22

Strukturierung von Programmen: Prozeduren Strukturierung von Programmen: UnitsStrukturierung von Programmen: Units Datentypen: Ordinaltypen Datentypen: Aufzählungstypen

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. 11/22

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. 12/22

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) 13/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. 14/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; 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 15/22

Strukturierung von Programmen: Prozeduren Strukturierung von Programmen: Units Datentypen: OrdinaltypenDatentypen: Ordinaltypen Datentypen: Aufzählungstypen

Programmieren und Problemlösen © Institut für Computational Science, ETH Zürich Ordinaltypen Die Werte von Ordinaltypen stammen aus einem abzählbaren Wertebereich. Dazu gehören die folgenden einfachen Datentypen: Integer, Cardinal, Boolean, Char Ihre Werte bilden eine geordnete Menge. Jedem Wert ist eine Ordinalzahl zugeordnet: 0, 1, 2,... (Ausnahme: bei Integer ist der Wert selbst die Ordinalzahl) Auf jeden Wert von Ordinaltypen anwendbare Standardfunktionen: Ord() gibt die Ordinalzahl zurück Pred() gibt die Ordinalzahl des Vorgängers zurück Succ() gibt die Ordinalzahl des Nachfolgers zurück Low() gibt den kleinsten Wert des Wertebereichs zurück High() gibt den grössten Wert des Wertebereichs zurück 16/22

Programmieren und Problemlösen © Institut für Computational Science, ETH Zürich Standardfunktionen für Ordinaltypen Beispiele Ord(true) =1 Ord('8') =56 Ord(8) =8 Pred(false) =true Pred(-342) = –343 Succ('m') = n Low(integer) =– Low(word) =0 High(word) = /22

Strukturierung von Programmen: Prozeduren Strukturierung von Programmen: Units Datentypen: Ordinaltypen Datentypen: AufzählungstypenDatentypen: Aufzählungstypen

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); 18/22

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; 19/22

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; 20/22

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) 21/22

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... 22/22