Prof. Dr. Franz Schweiggert Abteilung Angewandte
Informationsverarbeitung 30. Oktober 2001
Christian Ehrhardt Blatt 2
Allgemeine Informatik 3 (WS 2001/2002)
Abgabetermin 6. November 2001 vor den Übungen
Leider hat sich der Computer Ihres Übungsleiters einen
ansteckenden Virus eingefangen. Daher mußte beim Erstellen
dieses Übungsblattes auf eine etwas betagtere Schreibmaschine
zurückgegriffen werden.
Wie einige von Ihnen vielleicht wissen, besitzt eine
Schreibmaschine einen beweglichen Wagen auf dem eine Walze
zum Transport des Papiers angebracht ist. Zusätzlich kann
der Wagen auch noch angehoben und wieder abgesenkt werden.
Dies hat auf die tatsächlich gedruckten Zeichen die gleiche
Wirkung wie heute die Capslock Taste.
Erstaunlicher Weise ist die verwendete Schreibmaschine bereits
in der Lage, die gedrückten Tasten elektronisch aufzuzeichnen.
Ihre Aufgabe ist es, ein Programm zu schreiben, das diese
aufgezeichneten Daten in lesbaren Text konvertiert.
Jedes Mal, wenn eine Taste gedrückt wird, sendet die
Schreibmaschine einen Tastencode bestehend aus 5 Bits (das
höherwertige Bit wird zuerst gesendet).
Der Zusammenhang zwischen Tastencodes und gedruckten Zeichen
ist wie folgt:
Tastencode |
Angehoben |
Nicht angehoben |
0 - 25 |
A - Z |
a - z |
26 |
Doppelpunkt (:) |
Punkt (.) |
27 |
Strichpunkt (;) |
Komma (,) |
28 |
Plus (+) |
Minus (-) |
29 |
Stern (*) |
Schrägstrich (/) |
30 |
kein Wirkung |
Anheben |
31 |
Anhebung beenden |
keine Wirkung |
Die Tasten 30 und 31 dienen dazu, den Wagen anzuheben bzw.
abzusenken. Diese Operationen sind permanent, d.h. nachdem die
Taste 30 betätigt wurde, bleibt der Wagen so lange angehoben,
bis die Taste 31 betätigt wird.
Ihr Programm soll eine Bitfolge (repräsentiert durch eine
Folge von Nullen und Einsen), die von der Standardeingabe gelesen
wird, in Text konvertieren. Zwischen zwei Bits (nicht nur zwischen
zwei Zeichen) können beliebig viele Leerzeichen und Newlines
stehen, die ignoriert werden sollen. Sie können davon
ausgehen, daß die Länge einer ununterbrochene Folge von
Bits nicht größer als 80 Zeichen ist und daß die Eingabe
nur Nullen, Einsen, Leerzeichen und Newlines enthält.
Die Eingabe:
1111010100011
01 11111 00 00100100 001100010001
000 10010 10011 0010010001 10011
sollte zu der Ausgabe
UNbegeistert
führen.
Um Ihr Werk gleich zu testen, schreiben Sie ein zweites
Programm, das die Konvertierung in die umgekehrte Richtung
vornimmt. Ihr Übungsleiter hofft, daß es damit möglich
wird, die Schreibmaschine als eine Art einfachen Drucker
zu verwenden.
Bei der Ausgabe sollten die Tastencodes zum Anheben und Absenken
des Wagens nicht unnötig verwendet werden. Die Bits in der
Ausgabe sollen sinnvoll gruppiert werden, und eine Zeile sollte
nicht länger als ca. 70 Zeichen sein.
Hinweis: Für beide Aufgaben stehen Eingabedateien zur
Verfügung mit denen Sie Ihre Programme testen können.
Bei der zweiten Aufgabe empfiehlt es sich, bei der Ausgabe nach
jeweils 12 Bytes (60 Bits) eine neue Zeile zu beginnen.
Hinweis: Die in den Übungen kurz angesprochene
Funktion iswhite heißt in Wirklichkeit isspace.
Christian Ehrhardt
2001-10-30