FB18 - Das Forum für Informatik

fb18.de / Bachelorstudieng / PM Formale Informatik

FGI2, Aufgabenblatt 11

FGI2, Aufgabenblatt 11 2008-01-16 17:52
vipwolf
In Aufgabe 11.1 müsste folgendes stehen:

Bei push müsste es i<=Max-1 oder i< MAX sein.
Bei pop müsste es i >0 anstatt i>=0 sein.

Ansonsten machen die gestellten Aufgaben keinen Sinn.

RE: FGI2, Aufgabenblatt 11 2008-01-16 20:46
T
Bei pop müsste es i >0 anstatt i>=0 sein.
soweit ich informiert bin soll i=-1 einen leeren stack markieren. insofern wäre ein i>=0 als 'der stack ist nicht leer' zu interpretieren, was ja auch eine sinnvolle voraussetzung für ein pop ist.
in meiner uebungsgruppe wurde allerdings gesagt, dass man ueberall wo [0…MAX] steht [0…MAX-1] stehen sollte.

RE: FGI2, Aufgabenblatt 11 2008-01-17 10:22
Lehrkraft
Ich wurde auch darauf hingewiesen, dass es hier im Aufgabenblatt Unstimmigkeiten gibt. In einem frühen Entwurf des Aufgabenblattes war das Array (getreu den ach so sinnvollen C-Konventionen) mit MAX Elementen definiert, welche die Indizes [0…MAX-1] hatten. Nun ist es aber anders korrigiert worden (siehe fgi2a11a.pdf, man beachte das "a" am Ende). Das Array im korrigierten Aufgabenblatt hat nun MAX+1 Elemente mit den Indizies [0…MAX].

Unter diesen Voraussetzungen muss das Kriterium bei push i < MAX und bei pop i >= 0 lauten. i kann also tatsächlich nach Ausführung des pop-Prozesses den Wert -1 annehmen. Festzustellen, ob trotzdem kein Bereichsüberlauf beim Array-Zugriff entstehen kann, ist unter anderem Eure Aufgabe.

Leider stimmt das pop-Kriterium im korrigierten Aufgabenblatt immer noch nicht, da ist noch Nachbesserung nötig. Andererseits beeinflusst dieser Fehler das Ergebnis der Aufgabe nur marginal. Mal sehen, ob und wann es Blatt 11b gibt…

RE: FGI2, Aufgabenblatt 11 2008-01-20 18:28
Anonymer User
Zu 11.1:
Die Aufgabenstellung ist etwas/absolut unklar. Die Grammatik-Fehler erschweren das Verstehen umso mehr, da verschiedene Deutungen möglich sind.
Kann bitte jemand, der die Frage verstanden hat, diese mal in verständlicher Sprache formulieren?
Außerdem ist mir noch nicht ganz klar, was mit der pid gemeint ist:
Eigentlich steht sie doch für die Prozessor-ID.. Kann man jetzt davon ausgehen, dass wir genau 2 verschiedene pids haben, somit also immer die gleiche gepusht wird?

RE: FGI2, Aufgabenblatt 11 2008-01-20 20:13
Anonymer User
In der Teilaufgabe 1 ist gefragt, ob man mit zwei Prozessoren (einer pusht immer, der andere popt) "out of bounds" sein kann.
In der 2. Teilaugabe - genau dieselbe Frage. Nur du hast je 2 Prozessoren fürs pushen und 2 fürs popen (sorry for my english-deutsch :) )

So hab ich die Aufgabe verstanden. Leicht verdiente 3 Punkte, wenn die natürlichsprachlige Formullierung reicht.

RE: FGI2, Aufgabenblatt 11 2008-01-20 21:54
Anonymer User
wie genau "zeige" ich das nun?

RE: FGI2, Aufgabenblatt 11 2008-01-21 08:36
Lehrkraft
Man könnte zum Beweis auf das Model-Checking-Verfahren mit Kripke-Strukturen im Skript zurückgreifen. Aber da wäre man mehrere Stunden beschäftigt, das Programm in logische Formeln zu übersetzen, eine relativ große Kripke-Struktur zu zeichnen und hinterher den Algorithmus anzuwenden, ob in irgendeinem Zustand die Variable i mit einem zu großen oder zu kleinen Wert als Index zum Arrayzugriff verwendet wird.

Für die Aufgabenlösung soll in diesem Fall eine natürlichsprachliche, aber präzise Argumentation reichen. Entweder ist zu begründen, warum unter keinen Umständen ein Arrayzugriff außerhalb des zulässigen Bereiches möglich ist, oder es ist eine mögliche Programmausführungssequenz anzugeben, die genau dazu führt.