Sie sind auf Seite 1von 3

Westfalische Wilhelms-Universitat Munster

Ubungen zur Vorlesung Informatik I: Grundlagen der Programmierung im WS 2017/18



Prof. Dr. Jan Vahrenhold Blatt 1 Abgabe via Learnweb bis zum 23.10.2017, 12:00 Uhr
Dipl.-Inf. Mirko Westermeier

In den ersten beiden Aufgaben dieses Zettels geht es darum, sehr einfache Algorithmen unter Verwen-
dung einer nicht-kanonischen Reprasentation bzw. Programmiersprache zu entwickeln.
Als Bausteine zur Programmsteuerung sind die folgenden Komponenten vorgesehen:
Alternative: Es wird eine Bedingung uberpruft. Wenn diese erfullt ist, soll X getan werden, an-

sonsten soll Y getan werden. X und Y sind hierbei (ggfs. mehrere) Operationen zur Reprasentati-
onsverarbeitung.
Bedingte Wiederholung: Es wird eine Bedingung Z uberpruft. Wenn diese erfullt ist, soll X ge-

tan werden. Dann wird erneut Z uberpruft. Dieser Wechsel von Uberprufen und Ausfuhren wird
solange wiederholt, bis Z nicht mehr erfullt ist. X steht hierbei wie oben fur ggfs. mehrere Opera-
tionen zur Reprasentationsverarbeitung.
Programmende: Das Programm wird beendet.

Ein Beispiel ist am Ende der Aufgabenstellung zu Teil (b) der ersten Aufgabe angegeben.

Aufgabe 8: (1,5+3,5=5 Punkte) Betrachten Sie ein Informationssystem, bei dem eine Maschine aus einem
Stab und einer hinreichend groen Menge von Scheiben besteht, die auf den Stab gesteckt werden konnen.
Fur das Informationssystem ( A, R, I ) bzgl. dieser Maschine soll gelten:
Beispiel:
A = IN0 .
Reprsentation
R = Stab mit einer endlichen Anzahl von Scheiben.
I : R A, r 7 Anzahl Scheiben auf dem Stab. Information 0 1 2 3

Auf dieser Maschine wird z. B. die folgende Vorschrift zur Informationsverarbeitung betrachtet:
increment : A A, n 7 n + 1.
Diese Vorschrift wird auf Reprasentationsebene umgesetzt, indem eine weitere Scheibe auf den Stab gelegt
wird.

Es seien weiterhin die beiden folgenden Vorschriften zur Informationsverarbeitung vorgesehen:

decrement: entfernt eine Scheibe.


is empty?: liefert ja, falls der Stab leer ist, ansonsten nein.

Bearbeiten Sie nun folgende Aufgaben:

(a) Bei der obigen Definition der Operationen ist nicht beschrieben, ob jede dieser Funktionen fur jede
Reprasentation sinnvoll bzw. moglich ist. Vervollstandigen Sie die Definition in diesem Sinne fur die
Operationen bzw. erlautern Sie, warum die Definition bereits vollstandig ist.
(b) Nutzen Sie fur die Losung dieser Aufgabe entweder mehrere Stabmaschinen mit je einem Stab (wie
oben) oder eine Stabmaschine, in der mehr als ein Stab zur Verfugung steht; hierbei kann auf je-
dem Stab wie oben beschrieben eine naturliche Zahl reprasentiert werden. Bezeichnen Sie dann die
verwendeten Operationen entsprechend. So soll etwa das decrement auf Stab 2 durch decrement2
gekennzeichnet werden.
Entwerfen Sie einen terminierenden Algorithmus even: IN0 {ja, nein}. Dieser Algorithmus soll
unter Verwendung der Stabmaschine testen, ob eine gerade oder eine ungerade naturliche Zahl vor-
liegt (die Zahl 0 gilt hier als gerade Zahl). Diese Zahl soll zu Beginn des Algorithmus durch eine
entsprechende Reprasentation auf Stab 0 gegeben sein.

Fortsetzung der Aufgabenstellung auf der nachsten Seite.


Ubungen zur Vorlesung Informatik I: Grundlagen der Programmierung im WS 2017/18 Blatt 1

Beispiel: Entfernen aller Scheiben von Stab 0 einer Stabmaschine, die ggfs. mehrere Stabe hat.
1: Solange is empty0 ? den Wert nein liefert:
Fuhre decrement0 aus (um eine Scheibe von Stab 0 zu entfernen).
2: Beende das Programm.

Hinweise:
Geben Sie jeweils eine (kurze) Begrundung fur Ihr Vorgehen an.
Begrunden Sie, warum Ihr Algorithmus terminiert.
Achten Sie darauf, moglichst wenige verschiedene Stabe zu verwenden.
Gehen Sie davon aus, dass zu Beginn alle nicht fur die Eingabe verwendeten Stabe leer sind.
Denken Sie daran, eine geeignete Reprasentation (mit Interpretation) fur das Ergebnis zu definieren.
Sorgen Sie dafur, dass (mit Ausnahme der Reprasentation des Ergebnisses) die Maschine nach Aus-
fuhrung des Algorithmus wieder im Ursprungszustand ist.

Aufgabe 9: (6 Punkte)

Informieren Sie sich vor Bearbeitung dieser Aufgabe uber den so genannten ASCII-Code, z. B. unter
https://de.wikipedia.org/wiki/American_Standard_Code_for_Information_Interchange.

In dieser Aufgabe soll die folgende Problemstellung betrachtet werden: Gegeben ist eine Eingabe, die den
ASCII-Code einer Ziffer z aus dem Bereich von 0 bis 9 darstellt. Als Ausgabe sollen insgesamt z Reprasen-
tationen des Zeichens . erzeugt werden.

Zum aktuellen Zeitpunkt des Semesters durfen Sie (noch) davon ausgehen, dass die Eingabe in der Tat eine
Ziffer im angegebenen Bereich ist, dass also keine Fehlerbehandlung notwendig ist. Um den Bearbeitungs-
aufwand zu reduzieren, ist es im Unterschied zur vorigen Aufgabe hier nicht notwendig, die Maschine
nach Ablauf des Algorithmus wieder in den Ursprungszustand zuruckzuversetzen.

Da zu diesem Zeitpunkt im Semester noch keine Programmiererfahrungen vorausgesetzt werden, es


andererseits aber auch Studierende gibt, die sehr gerne bereits etwas programmieren mochten, kann
diese Aufgabe durch Bearbeiten einer(!) der beiden folgenden Teilaufgaben gelost werden. Diese Aufga-
ben unterscheiden sich nur in der Art der Bearbeitung, nicht aber in der Art der vermittelten Lernziele
oder notwendigen Kompetenzen. Sie durfen zu Ubungszwecken auch gerne beide Varianten bearbeiten,
erhalten aber hierfur keine Sonderpunkte ;-).

(a) Entwerfen Sie ein Programm fur die in der vorigen Aufgabe vorgestellte Stabmaschine. Gehen Sie
davon aus, dass zu Beginn des Programms der ASCII-Code der als Eingabe zu betrachtenden Ziffer z
auf Stab 0 reprasentiert ist. Die Ausgabe soll durch z p Scheiben auf Stab 1 reprasentiert werden,
wobei p der ASCII-Code des Zeichens . ist. Es durfen mehrere Stabe verwendet werden.

Kommentieren Sie das von Ihnen erstellte Programm, indem Sie zu jeder Gruppe von Anweisungen,
die eine logisch sinnvolle Einheit darstellen, angeben, was diese Anweisungen bewirken.
(b) Entwerfen Sie ein lauffahiges Programm in der Sprache brainf*ck (https://esolangs.org/wiki/
Brainfuck, der Name stammt nicht von uns. . . ), das von der Kommandozeile eine Ziffer z wie oben
entgegennimmt und insgesamt z-mal das Zeichen . auf der Kommandozeile ausgibt.

Kommentieren Sie das von Ihnen erstellte Programm, indem Sie zu jeder Gruppe von Anweisungen,
die eine logisch sinnvolle Einheit darstellen, angeben, was diese Anweisungen bewirken.
Eine frei nutzbare Umgebung zur web-basierten Arbeit mit der Programmiersprache brainf*ck ist
unter http://www.bf.doleczek.pl/ (ggfs. muss noch auf englische Sprache umgeschaltet werden)
zu finden.

Fortsetzung der Aufgaben auf der nachsten Seite.


Ubungen zur Vorlesung Informatik I: Grundlagen der Programmierung im WS 2017/18 Blatt 1

Aufgabe 10: (3 Punkte) Eine Funktion ist eine Vorschrift f , die jedem Element x einer (Eingabe-)Menge A
(Definitionsbereich) genau einen (d. h. mindestens einen und hochstens einen) Wert y einer (Ausgabe-)Menge
B (Wertebereich) zuweist. Man bezeichnet dann y mit f ( x ) und schreibt:
f : A B, x 7 f ( x ).
( bedeutet Elementen aus der Menge links vom Pfeil werden Elemente aus der Menge rechts vom

Pfeil zugewiesen, 7 bedeutet wird abgebildet auf.)

Betrachten Sie nun die folgenden Definitionen:

Eine Funktion f : A B heit injektiv (vgl. Folie 1.18), wenn fur je zwei Werte x1 und x2 aus der
(Eingabe-)Menge A gilt: Sofern x1 und x2 verschieden sind, sind auch f ( x1 ) und f ( x2 ) verschieden;
formal schreibt man dies:
x1 6 = x2 f ( x1 ) 6 = f ( x2 ).
( bedeutet Wenn die Aussage links vom Pfeil wahr ist, ist auch die Aussage rechts vom Pfeil

wahr.)
Eine Funktion f : A B heit surjektiv (vgl. Folie 1.18), wenn fur jeden Wert y aus der (Ausgabe-)
Menge B (mindestens) ein Wert x aus der (Eingabe-)Menge A existiert, so dass f ( x ) den Wert y ergibt;
formal schreibt man dies:
y B : x A : y = f ( x ).
( bedeutet fur jeden/fur alle, bedeutet (es) existiert, der Doppelpunkt bedeutet (es) gilt.)

Eine Funktion f : A B heit bijektiv, wenn sie sowohl injektiv als auch surjektiv ist.

Es sei A die Menge der Elemente {0, 1, 2} und es sei B die Menge {, , , } (diese vier Elemente seien alle
paarweise verschieden). Geben Sie bei den folgenden Vorschriften an, ob sie uberhaupt Funktionen sind
und, falls ja, ob sie jeweils injektiv, surjektiv bzw. bijektiv sind. Begrunden Sie Ihre Antworten.

(a) f 1 : A B mit f 1 (0) = , f 1 (1) = , f 1 (2) = .
(b) f 2 : A B mit f 2 (0) = , f 2 (1) = , f 2 (2) = .
(c) f 3 : A B mit f 3 (0) = , f 3 (1) = , f 3 (2) = , f 3 (0) = .

Aufgabe 11: (6 Punkte) Auf Folie 1.19 wurde (in der gebotenen Kurze) das Vorgehen bei der Modellbil-
dung angesprochen. Kerngedanke hierbei ist die Abstraktion von der realweltlichen Situation hin zu einer
maschinell bearbeitbaren Form.

Uberlegen Sie sich zu einem der nachfolgend beschriebenen Szenarien drei verschiedene Anwendungen,
die unterschiedliche Darstellungen erfordern. Ihre Darstellungen sollen hierbei unterschiedliche Komple-
xitaten haben. Geben Sie dann umgangssprachlich an, welche Reprasentationen Sie fur die maschinelle
Verarbeitung verwenden wurden. Erlautern Sie dabei ggfs. notwendige, nicht offensichtliche Interpretati-
onsvorschriften.

Beispiel: Im Szenario Vorlesung konnte man z. B. die vertretenen Studienfacher erfassen wollen. Hier-

zu mussten alle Studierenden die von ihnen studierten Facher speichern. Dies konnte man uber die
jeweiligen Studiengangsnummer verwalten, die fur jede(n) Studierende(n) durch einen einen ganzzahli-
gen Wert reprasentiert werden konnte. Als Interpretationsvorschrift musste man dann festhalten, welche
Reprasentation (Zahl) welcher Information (Studiengang) zugeordnet wird. Ein weiteres (hier nicht aus-
gefuhrtes) Szenario ware die Erweiterung auf Ubungs- und Abgabegruppenzugehorigkeiten, ein drittes
Szenario die zusatzliche Verwaltung von pro Aufgabe erreichten Ubungspunkten.

Als mogliche Szenarien stehen fur diese Aufgabe zur Verfugung:

Soziales Netzwerk. Zoo. Flughafen.

Hinweis:
Es ist weder gefordert noch in Hinblick auf die Bewertung der Aufgabe vorteilhaft, eine ggfs. aus
dem Schulunterricht bekannte Notation zu verwenden. Da in der Vorlesung noch keine Notationen
besprochen wurden, ist eine umgangssprachliche, aber exakte Beschreibung vollstandig ausreichend.