Nach diesem Kapitel sollten Sie

1. die drei Wiederholungsanweisungen von Pascal kennen und wissen, in welcher

Situation welche Schleifenart sinnvollerweise zu verwenden ist,

2. eine gegebene Wiederholungsanweisung in eine andere, bedeutungsgleiche

Wiederholungsanweisung umformen können,

3. die Anwendungsbereiche der strukturierten Datentypen Feld (array) und

Verbund (record) kennen,

4. mit Hilfe strukturierter Datentypen von Pascal problemadäquate, selbstdefinierte

Datentypen festlegen und die darauf zulässigen Operationen anwenden

können,

5. eine Funktion deklarieren und aufrufen können,

6. die Begriffe .„formaler Parameter.“, .„aktueller Parameter.“ und .„lokale Variable

.“ kennen,

7. einfache Programme schreiben können, die ein übersichtliches Layout, sinnvolle

Kommentierung sowie wohlüberlegte Datentypen und Kontrollstrukturen

verwenden.

 

4. Programmierkonzepte orientiert an Pascal (Teil2)

4.1 Wiederholungsanweisungen

4.1.1

for-Anweisung, die while-Anweisung

und die repeat-Anweisung.

Schleife, Schleifenrumpf, Schleifenbedingung.

for Schleife Fig. S. 81

Die for-Schleife, auch Laufanweisung genannt, wird verwendet, wenn die Anzahl

der Schleifendurchläufe vor dem Eintritt in die Schleife bekannt ist.

Nach Beendigung der for-Schleife ist der Wert der Kontrollvariablen nicht

mehr definiert. Es dürfen deshalb im weiteren Verlauf des Programms keine

Annahmen über ihren Wert gemacht werden.

4.1.2

Die while-Schleife wird verwendet, wenn die Anzahl der Schleifendurchläufe vor

dem Eintritt in die Schleife nicht bekannt ist.

Fig. S. 86

Die Schleifenbedingung muß eine Variable enthalten, deren Wert sich bei der Bearbeitung

des Schleifenrumpfes ändert. Andernfalls haben wir eine Endlosschleife

programmiert, und die Programmbearbeitung bricht nicht ab

4.1.3 Repeat Schleife see fig. 89

Abbruchkriteriums repeat-Schleife  Gegensatz zur while-Schleife nicht vor, sondern nach Schleifenrumpf

mehreren Anweisungen besteht, brauchen wir diese nicht mittels begin und end zu einer zusammengesetzten

Anweisung zu klammern,

Die 

while-Schleife

while expression do

statement

läßt sich stets schreiben als

if expression then

repeat

statement

until not expression

Umgekehrt läßt sich jede repeat-Schleife durch eine while-Schleife mit derselben

Bedeutung ersetzen:

repeat

statement

until expression

ist äquivalent zu

statement;

while not expression do

begin

statement

end

Die repeat-Schleife ist zu wählen, wenn unabhängig von der Schleifenbedingung

stets mindestens ein Schleifendurchlauf erfolgen soll. Hängt bereits der erste

Schleifendurchlauf von der Erfüllung der Schleifenbedingung ab, so ist die while-

Schleife die geeignete Wahl.

Die for-Schleife ist gewöhnlich das geeignete Schleifenkonstrukt, wenn die Anzahl

der Schleifendurchläufe vor Eintritt in die Schleife bekannt ist.

Ist das Ende der input-Datei erreicht (und damit eof = true), dürfen keinen weiteren

read-Befehle mehr für die input-Datei erfolgen. Führt das Programm einen

weiteren read-Befehl aus, so erfolgt meist ein Programmabbruch.

 

4.2 Strukturierte Datentypen

4.2.1 Der array-Typ

Array Fig. S. 95

Siehe Beispiel top s.96

Bereichsüberschreitung

Wenn Sie versuchen, dieses Programm so abzuändern, daß es auch für andere Feldgrößen

benutzt werden kann, werden Sie feststellen, daß nicht nur die Typdefinition,

sondern auch die Anfangs- bzw. Endwerte der for-Schleifen angepaßt werden

müssen. Günstiger ist es, die Grenzen eines Feldes als Konstanten zu definieren und

diese in den Operationen, die auf dem Feld arbeiten, konsequent einzusetzen. Wir

werden fortan so verfahren.

Feldgrenzen dynamisch festlegen zu können,

Mehrdimensionale Arrays > S. 105

4.2.2 

Feld festgelegte Anzahl typgleicher Komponente

> fig. S. 109

Komponente Verbund zugreifen

Verbund Name, Punkt, Bezeichner.

Derart ausgewählte record Komponente selektierte Variable

Schachtelung möglich (> S.110) (revisit B. 4.2.2.2)

4.3 Funktionen

 

Pascal stellt nicht nur Standardfunktionen bereit, sondern bietet auch die Möglichkeit,

daß der Programmierer Funktionen selbst vereinbart. In der Funktionsverein-

barung wird festgelegt, wie die Funktion heißt, wie sie aufgerufen wird und wie sie

ihren Funktionswert berechnet. Funktionsdeklarationen erfolgen in Pascal im Anschluß

an Konstanten.–, Typen.–, und Variablenvereinbarungen:

>S. 117

>S. 118 Bsp. 4.3.1

Die Liste

der aktuellen Parameter in einem Funktionsaufruf muß mit der Liste der formalen

Parameter nach folgenden Regeln übereinstimmen:

- Die Zahl der Parameter in beiden Listen muß gleich sein.

- Die Typen des formalen und entsprechenden aktuellen Parameters, der an

derselben Position der Parameterliste steht, müssen identisch sein.

Ein Funktionsaufruf ist ein Ausdruck und kann daher überall

verwendet werden, wo Ausdrücke erlaubt sind.

Wir betonen, daß dem Funktionsbezeichner zwar mehrmals ein Wert zugewiesen

werden kann, aber auf diesen Wert innerhalb der Funktion nicht lesend zugegriffen

werden darf. Er kann also z.B. nicht als lokale Variable verwendet werden.

Für jeden

Parameter einer selbstdeklarierten Funktion sowie für das Ergebnis kann nur jeweils

genau ein Typ verwendet werden.

 

Muß Regeln, S. 128

4.4.3 Kommentare

 

 

 

 

 

 

 

 

 

Nach diesem Kapitel sollten Sie

1. eine Prozedur deklarieren und aufrufen können,

2. die wesentlichen Vorteile von Prozeduren und Funktionen kennen,

3. die Unterschiede (in Syntax und Semantik) zwischen Prozeduren und Funktionen

nennen können,

4. die Realisierung einer Aufgabe als Funktion oder Prozedur begründen können,

5. das Parameterkonzept von ParaPascal beherrschen, die Wirkung der unterschiedlichen

Übergabearten (in, out und inout) beschreiben und problembezogen

einsetzen können,

6. die Umsetzung des allgemeineren Parameterkonzeptes von ParaPascal in das

Parameterkonzept von Standard-Pascal angeben können,

7. die Wirkung der Übergabearten von Standard-Pascal (Wertübergabe, Referenzübergabe)

kennen und problembezogen einsetzen können,

8. das Konzept der statischen und dynamischen Blockstruktur kennen sowie die

damit zusammenhängenden Begriffe (Schachtelung, Gültigkeitsbereich, globale

und lokale Variablen, Lebensdauer bzw. Existenz) verstanden haben,

9. die Begriffe Namenskonflikt und Seiteneffekt kennen, deren Auswirkungen

erläutern können und wissen, wie man sie vermeidet,

10. durch Einhaltung von Layoutregeln und geeignete Bezeichnerwahl Prozeduren

und Funktionen übersichtlich und verständlich formulieren können,

11. das Zeigerkonzept von Pascal verstanden haben,

12. grundlegende Operationen auf linearen Listen kennen und programmtechnisch

 

5.1 Prozeduren

5.1.1 Prozeduren und Parameterübergabe

Prozedur, Prozedurdeklaration: 

Eine Prozedur (procedure) ist einer Funktion sehr ähnlich. Eine Prozedurdeklaration

unterscheidet sich von einer Funktionsdeklaration zunächst einmal durch das

Schlüsselwort procedure (an Stelle von function) und durch das Fehlen des

Ergebnistyps.

Prozeduraufruf: Angabe Prozedurname Liste Parameter

Parameterübergabe: Um unterscheiden Schlüsselwörter 

Eingangsparameter: Schlüsselwort in. Lokale Konstante.

Formale und aktuelle Parameter können durch Funktion nicht 

verändert werden. Formaler Parameter und aktueller Parameter können nicht 

verändert werden. 

out Parameter: Durch vorangestelltes Out charackterisiert. Lokale Variabel

deren Wert nicht abgefragt aver verändert werden kann.  

Referenzparameters :sondern es wird der Verweis (Referenz) auf den aktuellen Parameter an den formalen Parameter übergeben. Technisch gesehen können wir uns einen Verweis vorstellen als die Adresse der Speicherzelle bzw. des Speicherbereichs, in dem der aktuelle Parameter abgelegt ist. Die Konsequenz ist, daß jede Änderung des formalen Parameters zu- gleich eine Änderung des aktuellen Parameters bedeutet, so daß nach Abarbeitung der Prozedur der letzte Wert des formalen Parameters zugleich der Wert des aktu- ellen Parameters ist. Wegen des Schlüsselwortes var sprechen wir auch von var-Parametern.

! Übersetzung Procedure Parapascal Standard Pascale Fig.>S.150

Gültigkeitsbereich und Lebensdauer fallen oft nicht zusammen. Dieinteger-Va- riable j aus Beispiel 5.2.2, die lokal zum Programm P deklariert ist, lebt während des gesamten Programmablaufs, ist aber in der Prozedur R nicht gültig, da hier eine lokale real-Variable mit demselben Bezeichner deklariert ist.

 

 

 

 

 

 

 

 

 

 

 

 

 

2.4

Marco Urso
Module by Marco Urso, updated more than 1 year ago
No tags specified