Context
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