Themenbereich: Prozeduren, Funktionen, Prozedurtypen
Ferienaufgabe 2: Einfach(st)e Matrizenrechnung
Vorbemerkung: Die Idee zu dieser Aufgabe entstand aus einer
Anfrage eines Studenten, der mir ein von ihm geschriebenes Programm
mit der Bitte um Korrektur zugesandt hatte. Ich habe sein Programm
für diese Übungsaufgabe etwas "ge-tune-d" und bedanke mich bei
ihm (der nicht näher genannt werden möchte...) für seine
Anregung!
Gegeben sei das Oberon-Programm
Matrix.om nebst zugehöriger Definition-Datei.
Das Programm fragt zunächst nach den gewünschten Dimensionen
für die Matrix (max. 10x10-Matrizen sind möglich) und liest
danach die einzelnen Matrixeinträge von der Standardeingabe ein. Auch
eine Fehlerbehandlung ist bereits vorhanden.
Wenn die Matrix vollständig und korrekt vorliegt, dann werden
nacheinander die folgenden Operationen auf ihr durchgeführt:
- Die eingelesene Matrix wird ausgegeben,
- der Vektor der Zeilensummen wird berechnet und ausgegeben,
- die Matrix wird mit einem Skalar multipliziert und ausgegeben,
- die Zeilen werden mit ihrem jeweiligen Zeilenindex multipliziert
und ausgegeben.
Wenn Sie sich das Programm genau anschauen, werden Sie feststellen,
daß dort eine Konstruktion mit einer doppelten WHILE-Schleife
mehrfach vorkommt. Diese Konstruktion dient dazu, die Matrix elementweise
zu durchlaufen und auf jedem Element eine bestimmte Operation
durchzuführen.
Ihre Aufgabe ist es nun, das gegebene Programm unter der Verwendung
von Prozedurtypen so umzugestalten, daß diese doppelte
WHILE-Schleife nur noch einmal - als eigene Prozedur - vorkommt. Die
Funktionalität, die letztlich pro Matrixelement ausgeführt
werden soll, wird dieser Prozedur dann als Funktionsparameter
übergeben.
Zur Verwendung von Prozedurtypen: siehe Skript oder Übungsaufgabe 14 (nebst Beispielen dazu).
Hinweis: Um sich bei dieser Aufgabe auf das Wesentliche -
nämlich auf die Verwendung von Prozedurtypen - zu konzentrieren,
dürfen Sie auch globale Variablen verwenden.