Flussdiagramm des Programms KOSKOBIL.C
Wir beginnen die Lösung der Aufgabe direkt mit einem Blick auf das Listing
des Programms KOSKOBIL.C. Wichtig ist, dass das Programm bis auf die
Verarbeitung der Bilder und ihrer Decodierung im Sinne von
"." = "weiß" = "-1" und "X" = "schwarz" = "1"
vollkommen identisch mit dem zuvor besprochenen Programm KOSKONET.C ist. Die
Verarbeitung der einfachst codierten Bilder geschieht ausschließlich in den
C-Funktionen "lese_x",
"lese_y" und
"zeichne_x", "zeichne_y".
Beim Lesen der Bilder erfolgt zunächst -- wie bereits oben erwähnt --
anhand der mit jedem Bild übergebenen Spaltenzahl und Zeilenzahl ein
Test, ob die Dimension des Bildes den im Programm mittels "veraendern"
vorgenommenen Voreinstellungen entspricht. Ist dies nicht der Fall, so
erzeugt das Programm eine Fehlermeldung. Ist die Dimensionierung korrekt,
dann liest das Programm die Zeichen des Bildes ein (fscanf), gibt sie
gleichzeitig zur Visualisierung auf dem Bildschirm aus (printf) und
beschreibt den x- oder y-Bildvektor mit Komponenten -1
(falls "." gelesen wurde) oder 1 (falls "X" gelesen wurde). Dabei ist
für das Verständnis dieser Routinen wesentlich, dass jede Bildzeile
durch ein unsichtbares Steuerzeichen zum Zeilenumbruch abgeschlossen
wird (Wagenrücklauf, carriage return, "\n"), welches auch
gelesen und geschrieben wird, aber natürlich nicht codiert wird. Entsprechend
wird bei den Schreibe-Routinen "zeichne_x"
und "zeichne_y" jeder mit
Komponenten -1 und 1 beschriebene x- oder y-Bildvektor
durch das Schreiben von "." oder "X"
auf den Bildschirm decodiert,
wobei nach jedem Zeilenende in eine neue Zeile gesprungen werden
muss, also ein unsichtbares "\n" zu schreiben ist. Mit diesen
Erläuterungen sowie den grundsätzlichen Bemerkungen zur bipolaren
Bildcodierung in Abschnitt 5.4 sollte das Listing des Programms
KOSKOBIL.C keine Schwierigkeiten mehr bereiten.
Burkhard Lenze
Im Februar 2009