agenda für heute, 18. mai, 2006 strukturierung von programmen: prozedurenstrukturierung von...

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

Post on 06-Apr-2015

102 views

Category:

Documents

0 download

Embed Size (px)

TRANSCRIPT

  • Folie 1
  • Agenda fr heute, 18. Mai, 2006 Strukturierung von Programmen: ProzedurenStrukturierung von Programmen: Prozeduren Strukturierung von Programmen: Units Datentypen: Ordinaltypen Datentypen: Aufzhlungstypen
  • Folie 2
  • Programmieren und Problemlsen Institut fr Computational Science, ETH Zrich 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 zhlen mssen?
  • Folie 4
  • Programmieren und Problemlsen Institut fr Computational Science, ETH Zrich Datenbergabe 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}
  • Folie 5
  • Programmieren und Problemlsen Institut fr Computational Science, ETH Zrich Datenbergabe 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!
  • Folie 6
  • Programmieren und Problemlsen Institut fr Computational Science, ETH Zrich Lokalitt: 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
  • Folie 7
  • Programmieren und Problemlsen Institut fr Computational Science, ETH Zrich 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
  • Folie 8
  • Programmieren und Problemlsen Institut fr Computational Science, ETH Zrich 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 fr die Prozeduren P, Q und R Lokale Variable fr die Prozedur P 7/22
  • Folie 9
  • Programmieren und Problemlsen Institut fr Computational Science, ETH Zrich 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
  • Folie 10
  • Programmieren und Problemlsen Institut fr Computational Science, ETH Zrich 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 fr Q nicht sichtbar! procedure R 9/22
  • Folie 11
  • Programmieren und Problemlsen Institut fr Computational Science, ETH Zrich 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) fr Q sichtbar! 10/22
  • Folie 12
  • Strukturierung von Programmen: Prozeduren Strukturierung von Programmen: UnitsStrukturierung von Programmen: Units Datentypen: Ordinaltypen Datentypen: Aufzhlungstypen
  • Folie 13
  • Programmieren und Problemlsen Institut fr Computational Science, ETH Zrich Strukturierung von Programmen 1. Schritt: Gliederung des Quellcodes Einem Programm knnen 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 knnen wir ergnzen, indem wir bereits kompilierte Prozeduren in den Objektcode des Programms importieren. 11/22
  • Folie 14
  • Programmieren und Problemlsen Institut fr Computational Science, ETH Zrich 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 Verfgung stehen sollen. 12/22
  • Folie 15
  • Programmieren und Problemlsen Institut fr Computational Science, ETH Zrich 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 gendert wird. Unit B Quellcode Unit B Objektcode Muss neu kompiliert werden, wenn die Unit gendert wird. berschaubarkeit durch Modularisierung (Programmieren im Grossen) 13/22
  • Folie 16
  • Programmieren und Problemlsen Institut fr Computational Science, ETH Zrich 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
  • Folie 17
  • Programmieren und Problemlsen Institut fr Computational Science, ETH Zrich 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
  • Folie 18
  • Strukturierung von Programmen: Prozeduren Strukturierung von Programmen: Units Datentypen: OrdinaltypenDatentypen: Ordinaltypen Datentypen: Aufzhlungstypen
  • Folie 19
  • Programmieren und Problemlsen Institut fr Computational Science, ETH Zrich Ordinaltypen Die Werte von Ordinaltypen stammen aus einem abzhlbaren Wertebereich. Dazu gehren 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 zurck Pred() gibt die Ordinalzahl des Vorgngers zurck Succ() gibt die Ordinalzahl des Nachfolgers zurck Low() gibt den kleinsten Wert des Wertebereichs zurck High() gibt den grssten Wert des Wertebereichs zurck 16/22
  • Folie 20
  • Programmieren und Problemlsen Institut fr Computational Science, ETH Zrich Standardfunktionen fr Ordinaltypen Beispiele Ord(true) =1 Ord('8') =56 Ord(8) =8 Pred(false) =true Pred(-342) = 343 Succ('m') = n Low(integer) =2147483648 Low(word) =0 High(word) = 65535 17/22
  • Folie 21
  • Strukturierung von Programmen: Prozeduren Strukturierung von Programmen: Units Datentypen: Ordinaltypen Datentypen: AufzhlungstypenDatentypen: Aufzhlungstypen
  • Folie 22
  • Programmieren und Problemlsen Institut fr Computational Science, ETH Zrich Aufzhlungstypen Ein Aufzhlungstyp wird durch eine Liste von Werten definiert. Aufzhlungstypen gehren zur Klasse der Ordinaltypen. Einer Variablen von diesem Typ knnen 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
  • Folie 23
  • Programmieren und Problemlsen Institut fr Computational Science, ETH Zrich Aufzhlungstypen Den Variablen, die als vom Typ Aufzhlung deklariert sind, knnen die entsprechenden Werte wie Konstanten zugewiesen werden. Beispiele var Feiertag, Werktag: Tag; Verwandter: Beziehung; Laubfarbe: Farbe; Die folgenden Anweisungen sind mglich: Feiertag:= Sonntag; Verwandter:= Nachkomme; Laubfarbe:= gelb; Diese jedoch nicht: Feiertag:= blau; Verwandter:= Freitag; 19/22
  • Folie 24
  • Programmieren und Problemlsen Institut fr Computational Science, ETH Zrich Aufzhlungstypen: Einschrnkungen Im selben Gltigkeitsbereich darf ein Wert nicht zu mehr als einem Aufzhlungstyp gehren: 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
  • Folie 25
  • Programmieren und Problemlsen Institut fr Computational Science, ETH Zrich Aufzhlungstypen: Operationen Auf die Werte eines Aufzhlungstyps knnen Vergleichsoperatoren und die Standardfunktionen ord, succ und pred angewandt werden: Kartoffel < Bohne (= true) ord(Orange) (= 1) succ(Kartoffel) (= Wirz) pred(Zitrone) (= Orange) 21/22
  • Folie 26
  • Programmieren und Problemlsen Institut fr Computational Science, ETH Zrich Aufzhlungstypen: Operationen Variablen vom Typ Aufzhlung knnen inkrementiert werden. var Wochentag:(Montag, Dienstag, Mittwoch, Donnerstag, Freitag, Samstag, Sonntag); Nach den Anweisungen: Wochentag:= Dienstag; inc(Wochentag); enthlt Wochentag den Wert Mittwoch Die f

Recommended

View more >