22
Agenda für heute, 12. Mai, 2005 Prozeduren Prozeduren Funktionsprozeduren Prozedurparameter Lokale und globale Variablen Datentypen: Ordinaltypen

Agenda für heute, 12. Mai, 2005 ProzedurenProzeduren Funktionsprozeduren Prozedurparameter Lokale und globale Variablen Datentypen: Ordinaltypen

Embed Size (px)

Citation preview

Page 1: Agenda für heute, 12. Mai, 2005 ProzedurenProzeduren Funktionsprozeduren Prozedurparameter Lokale und globale Variablen Datentypen: Ordinaltypen

Agenda für heute, 12. Mai, 2005

• ProzedurenProzeduren

• Funktionsprozeduren

• Prozedurparameter

• Lokale und globale Variablen

• Datentypen: Ordinaltypen

Page 2: 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

Page 3: 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

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

Page 4: 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

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

Page 5: 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

Programmablauf bei Prozeduraufrufen

procedure P;begin

...end;

begin { Hauptprogramm }

P

P

end. { Hauptprogramm }

5/18

Page 6: Agenda für heute, 12. Mai, 2005 ProzedurenProzeduren Funktionsprozeduren Prozedurparameter Lokale und globale Variablen Datentypen: Ordinaltypen

• Prozeduren

• FunktionsprozedurenFunktionsprozeduren• Prozedurparameter

• Lokale und globale Variablen

• Datentypen: Ordinaltypen

Page 7: 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

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

Page 8: Agenda für heute, 12. Mai, 2005 ProzedurenProzeduren Funktionsprozeduren Prozedurparameter Lokale und globale Variablen Datentypen: Ordinaltypen

• Prozeduren

• Funktionsprozeduren

• ProzedurparameterProzedurparameter

• Lokale und globale Variablen

• Datentypen: Ordinaltypen

Page 9: 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

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

Page 10: 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

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

Page 11: 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

Syntax von Prozeduren

Prozedurdeklaration

procedure Bezeichner Parameterliste ; Block ;

Parameterliste

( var Bezeichner : Typ )

,

;

Prozeduraufruf

Bezeichner ( Ausdruck )

,9/18

Page 12: Agenda für heute, 12. Mai, 2005 ProzedurenProzeduren Funktionsprozeduren Prozedurparameter Lokale und globale Variablen Datentypen: Ordinaltypen

• Prozeduren

• Funktionsprozeduren

• Prozedurparameter

• Lokale und globale VariablenLokale und globale Variablen• Datentypen: Ordinaltypen

Page 13: 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

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

Page 14: 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

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

Page 15: 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

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

Page 16: 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

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

Page 17: 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

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

Page 18: 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

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

Page 19: 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

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

Page 20: Agenda für heute, 12. Mai, 2005 ProzedurenProzeduren Funktionsprozeduren Prozedurparameter Lokale und globale Variablen Datentypen: Ordinaltypen

• Prozeduren

• Funktionsprozeduren

• Prozedurparameter

• Lokale und globale Variablen

• Datentypen: OrdinaltypenDatentypen: Ordinaltypen

Page 21: 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

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

Page 22: 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

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