Professor Dr. F. Schweiggert Abteilung Angewandte Informationsverarbeitung 25. Januar 2001
Johannes MayerBlatt 10


[c]



Allg. Informatik für WiWi (WS 2000/2001)


Abgabetermin: 25. Januar 2001

1 Automat (10 Punkte)

In Aufgabe 3b auf Blatt 4 mussten Sie zu einer gegebenen regulären Sprache einen endlichen Automaten konstruieren. Nun sollen Sie diesen Automaten durch ein Oberon-Programm implementieren. Dieses Programm soll Zeile für Zeile von der Standardeingabe (Beispiel) einlesen (bis ,,end of file`` erreicht ist) und danach soll jeweils überprüft werden, ob der Satz (ohne Zeilentrenner), d.h. eine Zeile, zur Sprache gehört und entsprechend ,,ja`` oder ,,nein`` ausgegeben werden.
(Hinweise: Denken Sie bei der Implementierung auch an den impliziten Fehlerzustand des Automaten, d.h. alle nicht spezifizierten Übergänge führen in den Fehlerzustand. Außerdem treten hier nicht nur die Zeichen ,,0`` und ,,1``, sondern beliebige ASCII-Zeichen auf. Sie können Ihren (korrekten!) Automaten oder den Automaten aus der Beispiellösung zu Aufgabe 3b von Blatt 4 als Grundlage verwenden. Sie dürfen davon ausgehen, dass in jeder Zeile maximal 100 Zeichen eingegeben werden.)



2 Datenstrukuren - Arrays vs. Records (20 Punkte)

Nun haben Sie die Aufgabe Studentendaten des Studentenwerks zu verwalten. Für jeden Studenten bekommen Sie seinen Namen (max. 80 Zeichen), seine Matrikelnummer (positive ganze Zahl kleiner oder gleich 9999999) und sein Geburtsdatum, das aus Tag, Monat und Jahr besteht.

(a)
Definieren sie zuerst Oberon-Datenstrukturen, um einen Studenten mit den angegebenen Daten zu repräsentieren. Verwenden Sie hierbei Arrays und Records. Die Datenstruktur soll es ermöglichen, direkt auf Tag, Monat und Jahr des Geburtsdatums zuzugreifen.
(5 Punkte)
(b)
Jetzt bekommen Sie eine kleine Studentendatenbank. In jeder Zeile befinden sich die Daten eines Studenten. Name, Matrikel-Nummer und Geburtsdatum sind jeweils durch einen Doppelpunkt getrennt. Das Datum ist im Format [d]d.[m]m.[yy]yy angegeben (siehe Blatt 6). Es kommen keine unnötigen Whitespaces (d.h. Leerzeichen, Tabulator oder Zeilentrenner) vor.
Beispiel (für eine Zeile): Thomas Huber:123456:13.2.1979
Schreiben Sie ein Oberon-Programm, das von der Standardeingabe die beschriebene Datenbank (mit maximal 100 Datensätzen) in ein Array der Datenstruktur aus (a) einliest (nach dem letzten Datensatz kommt das ,,end of file``) und dann den ältesten Studenten sucht und ausgibt.
(Hinweise: Sie können davon ausgehen, dass die Eingabe genau die beschriebene Form besitzt. Ist die Jahreszahl nur zweistellig angegeben, so soll 19 als Jahrhundert angenommen werden. Sie können davon ausgehen, dass es mindestens einen Datensatz gibt. Bei mehreren gleich alten ältesten Studenten geben Sie einen beliebigen aus.)
(15 Punkte)



Viel Erfolg!


Johannes Mayer, 2001-01-25