Robert Sedgewick: Algorithmen

[ Inhaltsverzeichnis ] [ vorhergehende Seite ] [ nächste Seite ] [ Stichwort ]


2. Pascal



Ein-/Ausgabe

Ein weiteres Gebiet, das wesentlich von der Maschine abhängt, ist die Wechselwirkung zwischen dem Programm und seinen Daten, die gewöhnlich als Ein- und Ausgabe bezeichnet wird. In Betriebssystemen bezieht sich dieser Begriff auf die Übertragung von Daten zwischen dem Computer und physischen Medien wie Magnetbändern oder Disketten; wir streifen solche Fragen nur in den Kapiteln 13 und 18. In den meisten Fällen suchen wir einfach einen systematischen Weg, um den Implementationen von Algorithmen Daten zukommen und die Ergebnisse ausgeben zu lassen, wie wir es beispielsweise im obigen gcd-Beispiel taten.

Wenn »Lesen« und »Schreiben« erforderlich ist, benutzen wir Standardmöglichkeiten von Pascal, verwenden jedoch möglichst wenige von den zur Verfügung stehenden zusätzlichen Formatierungsmöglichkeiten. Auch dies dient wieder dem Zweck, die Programme kurz, übertragbar und leicht übersetzbar zu gestalten; eine Richtung, in der der Leser die Programme vielleicht verändern möchte, ist die Verbesserung ihrer Schnittstelle mit dem Anwender. Nur wenige moderne Pascal- oder andere Programmierumgebungen benutzen tatsächlich read oder write für die Bezugnahme auf ein externes Medium; stattdessen wenden sie sich normalerweise an »logische Geräte« oder »Ströme« von Daten. Auf diese Weise kann die Ausgabe von einem Programm als Eingabe für ein anderes Programm verwendet werden, ohne irgendein physisches Lesen oder Schreiben. Unser Bestreben, die Ein-/Ausgabe in unseren Implementierungen einfach und einheitlich zu gestalten, verbessert deren Anwendbarkeit in solchen Systemen.

Darüber hinaus ist es in vielen modernen Programmierumgebungen zweckmäßig und recht einfach, grafische Darstellungen zu verwenden, wie sie z.B. in den Abbildungen im gesamten Buch benutzt wurden. (Wie im Nachwort beschrieben wurden diese Abbildungen tatsächlich von den Programmen selbst, mit einer erheblich verbesserten Schnittstelle versehen, erzeugt.)

Viele der Verfahren, die wir betrachten werden, sind für die Verwendung innerhalb größerer Anwendungssysteme bestimmt, so daß bei diesen die Ein-/Ausgabe der Daten besser über Parameter vonstatten geht. Dies ist das Verfahren, das für die obige Prozedur gcd benutzt wurde. Weiterhin verwenden verschiedene Implementierungen in den späteren Kapiteln des Buches Programme aus vorherigen Kapiteln. Um zu vermeiden, daß unsere Aufmerksamkeit von den Algorithmen selbst abgelenkt wird, widerstehen wir auch hier der Versuchung, die Implementierungen für die Verwendung als allgemeine Hilfsprogramme zu »bündeln«. Sicherlich sind viele der Implementierungen, die wir untersuchen, als Ausgangspunkt für solche Hilfsprogramme recht gut geeignet, doch muß eine große Zahl system- und anwendungsabhängiger Fragen, die wir hier nicht betrachten, im Rahmen der Entwicklung solcher Pakete auf zufriedenstellende Weise gelöst werden.

Oft schreiben wir Algorithmen so, daß sie mit »globalen« Daten operieren, um eine exzessive Parameterübergabe zu vermeiden. Zum Beispiel könnte die Funktion gcd direkt mit x und y operieren, anstatt mit den Parametern u und v zu arbeiten. Das ist in diesem Falle nicht gerechtfertigt, weil gcd eine wohldefinierte Funktion ihrer zwei Eingangsgrößen ist. Wenn andererseits jedoch mehrere Algorithmen mit denselben Daten operieren oder wenn umfangreiche Datenmengen übergeben werden, werden wir globale Variablen verwenden, um unsere Algorithmen nicht unnötig kompliziert formulieren zu müssen und um das unnötige Hin- und Herschieben von Daten zu vermeiden. In Pascal und anderen Sprachen und Systemen stehen leistungsfähige Mittel zur Verfügung, um dies auf eine elegantere Art und Weise zu realisieren, aber auch hier sind wir wieder bestrebt, derartige Sprachabhängigkeiten nach Möglichkeit zu umgehen.


[ Inhaltsverzeichnis ] [ vorhergehende Seite ] [ nächste Seite ] [ Stichwort ]