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