Agenda für heute, 12. Mai, 2005 ProzedurenProzeduren Funktionsprozeduren Prozedurparameter Lokale...
-
Upload
jan-wichern -
Category
Documents
-
view
110 -
download
2
Transcript of Agenda für heute, 12. Mai, 2005 ProzedurenProzeduren Funktionsprozeduren Prozedurparameter Lokale...
Agenda für heute, 12. Mai, 2005
• ProzedurenProzeduren
• Funktionsprozeduren
• Prozedurparameter
• Lokale und globale Variablen
• Datentypen: Ordinaltypen
Programmieren und Problemlösen © Institut für Computational Science, ETH Zürich
Rezept als Programm mit Prozeduren
2/18
Programmieren und Problemlösen © Institut für Computational Science, ETH Zürich
Prozeduren
• Eine Prozedur ist ein kleines Programm, das innerhalb eines anderen Programms steht.
• Prozeduren werden eingesetzt um:
a) Grosse Programme in kleinere Teile aufzuteilen
b) Mehrfach verwendete Codesegmente nur einmal schreiben zu müssen
3/18
Programmieren und Problemlösen © Institut für Computational Science, ETH Zürich
Pascal-Prozeduren
program tempumrechnung (input, output);
var
x, y: real;
procedure fahrenheit;
begin
y:= (x - 32) * 5 / 9;
end; {fahrenheit}
begin {Hauptprogramm}
read (x);
fahrenheit;
write (y:5:2)
end.
Prozedurdeklaration
Prozeduraufruf
4/18
Programmieren und Problemlösen © Institut für Computational Science, ETH Zürich
Programmablauf bei Prozeduraufrufen
procedure P;begin
...end;
begin { Hauptprogramm }
P
P
end. { Hauptprogramm }
5/18
• Prozeduren
• FunktionsprozedurenFunktionsprozeduren• Prozedurparameter
• Lokale und globale Variablen
• Datentypen: Ordinaltypen
Programmieren und Problemlösen © Institut für Computational Science, ETH Zürich
Funktionsprozeduren
program tempumrechnung (input, output);
var
x, y: real;
function fahrenheit: real;
begin
fahrenheit:= (x - 32) * 5 / 9;
end; {fahrenheit}
begin {Hauptprogramm}
read (x);
y:= fahrenheit;
write (y:5:2)
end.
Funktionsname kann in Ausdrückenverwendet werden
6/18
• Prozeduren
• Funktionsprozeduren
• ProzedurparameterProzedurparameter
• Lokale und globale Variablen
• Datentypen: Ordinaltypen
Programmieren und Problemlösen © Institut für Computational Science, ETH Zürich
Datenübergabe mit Werte-Parameter
program tempumrechnung (input, output);
var
x, y: real;
function fahrenheit(t: real): real;
begin
fahrenheit:= (t - 32) * 5 / 9;
end; {fahrenheit}
begin {Hauptprogramm}
read (x);
y:= fahrenheit(x);
write (y:5:2)
end.
7/18
Formeller Parameter
Aktueller Parameter
Programmieren und Problemlösen © Institut für Computational Science, ETH Zürich
Datenübergabe mit Var-Parameter
program tempumrechnung (input, output);
var
x: real;
procedure fahrenheit(var t: real): real;
begin
fahrenheit:= (t - 32) * 5 / 9;
end; {fahrenheit}
begin {Hauptprogramm}
read (x);
fahrenheit(x);
write (x:5:2)
end.
8/18
Programmieren und Problemlösen © Institut für Computational Science, ETH Zürich
Syntax von Prozeduren
Prozedurdeklaration
procedure Bezeichner Parameterliste ; Block ;
Parameterliste
( var Bezeichner : Typ )
,
;
Prozeduraufruf
Bezeichner ( Ausdruck )
,9/18
• Prozeduren
• Funktionsprozeduren
• Prozedurparameter
• Lokale und globale VariablenLokale und globale Variablen• Datentypen: Ordinaltypen
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
b, c, a, Q und P sichtbar
a, b, R, Q und P sichtbar
a, b, Q, R und P sichtbar
a und P sichtbar
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
10/18
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
11/18
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
12/18
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
13/18
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
14/18
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!
15/18
Programmieren und Problemlösen © Institut für Computational Science, ETH Zürich
Sichtbarkeitsregeln für Prozeduren
1. Ein Bezeichner ist innerhalb der Prozedur in der er deklariert wird sichtbar.
Ebenso ist er in allen von dieser Prozedur eingeschlossenen Prozeduren sichtbar, vorbehaltlich Regel 2.
2. Wenn ein in der Prozedur P deklarierter Name N in einer inneren, von P eingeschlossenen Prozedur Q, umdeklariert wird, dann sind die Prozedur Q und alle weiteren, in Q eingeschlossenen Prozeduren, aus dem Sichtbarkeitsbereich des in P deklarierten Namens N ausgeschlossen.
3. Die Standarbezeichner von Pascal werden als bereits deklariert angesehen, und zwar in einer imaginären, das Programm umschliessenden, Prozedur.
16/18
• Prozeduren
• Funktionsprozeduren
• Prozedurparameter
• Lokale und globale Variablen
• Datentypen: OrdinaltypenDatentypen: Ordinaltypen
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: Integer)
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
17/18
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)= –2147483648
Low(word) = 0
High(word) = 65535
18/18