Zunächst sollen Sie ein Oberon-Modul WordCut
schreiben,
das Zeichen von der Standardeingabe liest. Whitespaces, d.h. Leerzeichen,
Tabulatoren und Zeilenumbrüche, sollen dabei sofort ausgegeben werden.
Alle anderen Zeichen sind jeweils Bestandteil eines Wortes, d.h. Worte
sind durch Whitespaces voneinander getrennte Folgen von Nicht-Whitespaces.
Von jedem Wort sollen nur die ersten MAXLEN
Buchstaben ausgegeben
werden, wobei MAXLEN
in Ihrem Programm als ganzzahlige Konstante
(z.B. mit Wert 3) zu definieren ist. Die restlichen Zeichen eines
Wortes werden ignoriert. Sie können (müssen aber nicht!) zunächst einen
Automaten konstruieren (vgl. Übungen) und diesen dann in ein Oberon-Programm
transformieren.
Nun dürfen Sie ein Oberon-Programm Invert
schreiben, das Zeichen
für Zeichen von der Standardeingabe liest. Whitespaces sollen
unverändert ausgegeben werden. Worte sollen umgedreht ausgegeben werden,
d.h. zunächst das letzte Zeichen des Wortes ausgeben, dann das
vorletzte und zuletzt das erste Zeichen des Wortes.
Sie können annehmen, dass Worte die maximale Länge MAXLEN
besitzen.
Diese Konstante sollten Sie in Ihrem Programm definieren (z.B.
mit dem Wert 80).
(Hinweis: Während Sie ein Wort lesen, sollten Sie die einzelnen
Zeichen in einem Array speichern. Dieses Array kann die feste
Länge MAXLEN
haben. Sollte ein Wort größerer Länge vorkommen,
so geben Sie eine Fehlermeldung aus. Die Grundstruktur dieses Programmes ist
gleich der Grundstruktur des Programmes in der vorigen Aufgabe.)
Viel Erfolg,
fröhliche Weihnachten
und einen guten Rutsch ins neue Jahr!
P.S.: In den Übungen wird das Oberon-Programm As
, welches
aus den Dateien As.od
und As.om
besteht,
mit Hilfe des folgenden Automaten hergeleitet. (Durch dieses Programm
soll von jeder Folge von a's deren Länge ausgegeben werden und am Ende
die Länge der längsten Folge. Das Programm arbeitet dabei als Filter,
d.h. liest von der Standardeingabe und schreibt auf die Standardausgabe.)