Hilfe bei Abiturvorbereitung

Gruß Thomas!

Grand Admiral Special
Mitglied seit
27.03.2008
Beiträge
2.027
Renomée
118
Standort
Bayreuth
  • Docking@Home
Hallo liebe Freunde der Informatik,

Ich stehe jetzt vor dem Abitur in Informatik und habe ein Problem. In der Ubungsklausur zum Abitur steht etwas, das mir nicht plausibel scheint.

http://www.isb.bayern.de/isb/download.aspx?DownloadFileID=01fe944e6a041f6e6deae8a1198437e4

Es handelt sich dabei um die Aufgabe IV.2.d) die sich auf die Aufgabe IV.2.c) bezieht.

18.png

Ein Montageroboter setzt aus zwei Bauteilen ein Produkt zusammen. Dabei holt er sich ein dreieckiges Bauteil aus einem Bauteillager und montiert dieses dann auf ein quadratisches Bauteil, das durch ein Förderband zugeführt wird. Das Bauteillager, das maximal 10 Stück dreieckiger Bauteile fassen kann, wird durch einen zweiten Roboter, den Zulieferroboter, befüllt. Das System lässt die beiden Roboter nie gleichzeitig auf das Bauteillager zugreifen, um eine Zerstörung der Greifarme zu verhindern. Außerdem ist gewährleistet, dass genügend viele dreieckige und quadratische Bauteile von außen zugeführt werden.

Das Bauteillager ist zu Beginn der Montage ausreichend gefüllt. Der
Füllstand des Bauteillagers kann von den Robotern erst nach dem Ein-
schwenken in das Bauteillager geprüft werden. Außerdem können sie das
Bauteillager erst wieder verlassen, wenn sie ein Bauteil abgelegt bzw.
aufgenommen haben.

a) Erläutern Sie kurz ein informatisches Konzept, wie der kritische
Bereich „Bauteillager“ geschützt werden kann.

b) Was versteht man in der Informatik allgemein unter einer
Verklemmung?

c) Zeigen Sie durch Beschreibung und Erklärung einer bestimmten
Situation, dass es im oben beschriebenen Szenario zu einer
Verklemmung kommen kann, wenn der Zulieferroboter

i) langsamer arbeitet als der Montageroboter,
ii) schneller arbeitet als der Montageroboter.

Folgender Vorschlag wird zur Verklemmungsvermeidung gemacht: Das
Bauteillager soll seinen aktuellen Status ausgeben können; dabei gibt es
genau eine Statusmeldung, nämlich „Lager voll“. Die Roboter können
den Status vor dem Eintritt in den Lagerbereich abfragen und ggf. das
Einschwenken in das Lager abbrechen.

d) Diskutieren Sie, ob sich damit die Verklemmungen aus Teilaufgabe
2c tatsächlich vermeiden lassen. Gehen Sie davon aus, dass die
Statusabfrage nur möglich ist, wenn sich kein Roboter im Lager
befindet und der Roboter, der die Statusabfrage zuerst stellt, bei einem
eventuellen Zugriff auf das Bauteillager bevorzugt wird.

Lösung:

2 c)

i. Das Lager ist (irgendwann) leer, der Montageroboter tritt in den kritischen
Bereich ein und möchte ein Bauteil holen. Der Roboter kann im Lager
kein Bauteil finden und deshalb den kritischen Bereich nicht verlassen. Er
„wartet“ darauf, dass ein Bauteil geliefert wird. Der Zulieferroboter kann
aber nicht in den kritischen Bereich eintreten, da dieser belegt ist.

ii. Das Lager ist (irgendwann) voll, der Zulieferroboter tritt in den kritischen
Bereich ein und möchte ein Bauteil ablegen. Dies ist nicht möglich, der
Roboter kann aber den kritischen Bereich nicht verlassen. Er „wartet“
darauf, dass ein Bauteil abgeholt wird. Der Montageroboter kann aber
nicht in den kritischen Bereich eintreten, da dieser belegt ist, und wartet
ebenfalls.

2. d)

Beim Zulieferroboter wird die in Teilaufgabe 2c aufgetretene
Verklemmung vermieden. Begründung: Der Zulieferroboter fragt den
Status ab:
o Falls die Statusmeldung „Lager voll“ erfolgt, tritt der Roboter nicht in
den kritischen Bereich ein.
o Falls die Statusmeldung nicht erfolgt, kann er auf alle Fälle sein Bauteil
im Lager ablegen.

• Falls der Montageroboter zuerst abfragt, kann es zu einer Verklemmung
kommen. Begründung: Das Lager ist leer; auf die Statusabfrage erhält der
Roboter keine (aussagekräftige) Meldung, er schwenkt in das Bauteil-
lager, und es tritt eine Situation analog der Antwort zu Teilaufgabe 2c auf.

Ich verstehe aber den zweiten Teil der Antwort bei d) nicht. Wieso ist die Meldung nicht aussagekräftig? Sobald der Roboter die Meldung bekommt, dass das Lager nicht voll ist, dann müsste er doch seine Handlung abbrechen oder nicht? Wieso sollte er dann trotzdem in das Lager schwenken und so eine Verklemmung hervorrufen?

Wäre schön, wenn mir das jemand erklären könnte. :)

EDIT: Naja. Lesen ist schon was tolles... GNAAAAAH. Ich hab das wirklich 2-3 mal gelesen und jedes mal das mit den 10 Bauteilen im Lager übersehen. Das ist mal so richtig peinlich...

Ich bin die ganze Zeit davon ausgegangen, dass das Bauteillager genau 1 Teil halten kann...
 
Zuletzt bearbeitet:
Ist jetzt leider zu spät mich da rein zu denken. Vielleicht hilft es zu denken wie ein weltfremder Beamter, der seit Jahren aus der Praxis raus ist, und dazu verdammt wurde das Zentralabi zu verfassen? Aber Du hast es Dir ja ehh schon selbst erklären können ...
 
Die Lösungen variieren auch ziemlich arg. Beispielsweise wird hier und da meiner Meinung nach mehr implementiert, als eigentlich gemacht werden soll... Naja, wird schon werden :). Sind ja noch 3 Wochen und ein paar Tage.
 
Also ich hätte mich da erstmal gefragt was dieser Begriff Verklemmung überhaupt soll!
Und wenn ich dann herausgefunden hätte, dass es sich um einen Deadlock handelt, diese Aufgabe erst gar nicht bearbeitet.
 
Verklemmung ist ein gebräuchlicher Begriff innerhalb der deutschsprachigen Programmierliteratur. Das ist in z.B. in Büchern von Microsoft, Intel und einigen O'Reilly zu finden, ich sehe keinen Grund, warum so etwas nicht in der Schule verwendet werden sollte. Es hört sich vll. etwas ungewohnt an, wenn man hauptsächlich mit den englischen Begriffen zu tun hat, ist aber vollkommen in Ordnung.
 
Bei uns wird jeder Begriff eingedeutscht im Lehrplan. Zwar bischen nervig, aber ist doch gut, wenn man dann auch die deutschen Begriffe kennt :).
 
Also ich hätte mich da erstmal gefragt was dieser Begriff Verklemmung überhaupt soll!
Und wenn ich dann herausgefunden hätte, dass es sich um einen Deadlock handelt, diese Aufgabe erst gar nicht bearbeitet.

So gings mir auch.
Ich habe Verklemmung noch nie gehört und ich arbeite als Software Entwickler ;D

Deutsch empfinde ich beim Entwickeln eh schon als völlig unangebracht. Das es dann auch noch so gelerhrt wird ist fürchterlich, aber gut was will man machen. Augen zu (oder besser auf *G* und durch.

Verklemmung ist ein gebräuchlicher Begriff innerhalb der deutschsprachigen Programmierliteratur. Das ist in z.B. in Büchern von Microsoft, Intel und einigen O'Reilly zu finden, ich sehe keinen Grund, warum so etwas nicht in der Schule verwendet werden sollte. Es hört sich vll. etwas ungewohnt an, wenn man hauptsächlich mit den englischen Begriffen zu tun hat, ist aber vollkommen in Ordnung.

Ich weiß schon warum ich nur engl. Bücher lese ;D

Sehe ich ähnlich wie mit SI Einheiten.
Es gibt einfach so einige feststehende Begriffe die man tunlichst nicht eindeutschen (bzw. generell übersetzen) sollte. Am Ende weiß kein Schwein mehr wovon gesprochen wird und man kann mit ausländischen Kollegen nix mehr zusammen entwickeln hehe.
 
Zuletzt bearbeitet:
Mein Java Projekt, das ich in der Freizeit vorantreibe dokumentiere und schreibe ich auch in Englisch...
 
Bei uns wird jeder Begriff eingedeutscht im Lehrplan. Zwar bischen nervig, aber ist doch gut, wenn man dann auch die deutschen Begriffe kennt :).

Und aner Uni darfste dir dann wieder die ENGLISCHEN Begriffe dazu aneignen. Hauptsache für Verwirrung sorgen -.-. Man sollte sich hier zu Lande endlich mal damit abfinden, dass es (internationale) Disziplinen gibt, wo es einfach sinnbefreit ist alles krampfhaft einzudeutschen.

Mein Java Projekt, das ich in der Freizeit vorantreibe dokumentiere und schreibe ich auch in Englisch...

Dito!
 
Zuletzt bearbeitet:
Hallo liebe Freunde der Informatik,

Es handelt sich dabei um die Aufgabe IV.2.d) die sich auf die Aufgabe IV.2.c) bezieht.

Ich verstehe aber den zweiten Teil der Antwort bei d) nicht. Wieso ist die Meldung nicht aussagekräftig? Sobald der Roboter die Meldung bekommt, dass das Lager nicht voll ist, dann müsste er doch seine Handlung abbrechen oder nicht? Wieso sollte er dann trotzdem in das Lager schwenken und so eine Verklemmung hervorrufen?

Wäre schön, wenn mir das jemand erklären könnte. :)

EDIT: Naja. Lesen ist schon was tolles... GNAAAAAH. Ich hab das wirklich 2-3 mal gelesen und jedes mal das mit den 10 Bauteilen im Lager übersehen. Das ist mal so richtig peinlich...

Ich bin die ganze Zeit davon ausgegangen, dass das Bauteillager genau 1 Teil halten kann...

2d hat aber nichts mit der Größe des Lagers zu tun. Es ist schnurz ob ein Buffer 1 oder 1000 Elemente halten kann. Es geht um die Ausnahmebehandlung, wenn auf die Frage "Lager voll?" aus 2c eine Antwort kommt (obwohl das Lager leer ist), die dann eben nicht aussagekräftig sein kann, da sie vorher nicht definiert wurde.

Nachtrag: Um es zu verdeutlichen, der Zulieferer interpretiert den Lagerstatus umgekehrt zum Montierer. Es müßten 2 verschiedene Abfragen oder eine Negation der ersten Abfrage implementiert sein.
 
Zuletzt bearbeitet:
2d hat aber nichts mit der Größe des Lagers zu tun. Es ist schnurz ob ein Buffer 1 oder 1000 Elemente halten kann. Es geht um die Ausnahmebehandlung, wenn auf die Frage "Lager voll?" aus 2c eine Antwort kommt (obwohl das Lager leer ist), die dann eben nicht aussagekräftig sein kann, da sie vorher nicht definiert wurde.

Nachtrag: Um es zu verdeutlichen, der Zulieferer interpretiert den Lagerstatus umgekehrt zum Montierer. Es müßten 2 verschiedene Abfragen oder eine Negation der ersten Abfrage implementiert sein.

Bei einem Bauteillager mit genau 1 Slot wäre doch die Aussage Bauteillager nicht voll gleichbedeutend mit du musst warten (für den Montageroboter). Das habe ich gemeint und das war mein Problem :P
 
Bei einem Bauteillager mit genau 1 Slot wäre doch die Aussage Bauteillager nicht voll gleichbedeutend mit du musst warten (für den Montageroboter). Das habe ich gemeint und das war mein Problem :P
*lol*
Du machst den fehler schon zum zweitenmal. Es ist egal ob das Lager nach 10 oder nach 1 Teil leer ist.
Der Zulieferer fragt "Lager voll" und macht weiter wenn keine Statusmeldung kommt. Fragt der Montierer das gleiche und erhält keine Statusmeldung ist sein Status nicht definiert. Denn nur bei "Lager voll" hätte er weiter machen können.
Wenn eine Abfrage nur eine Antwort liefert (Lager voll), obwohl zwei möglich sind (Lager leer, Lager voll) ist die Meldung eben "nicht aussagekräftig".

Du bist aber davon ausgegangen das niemand so blöd ist eine Abfrage so zu programmieren und hast unterstellt, es gäbe auch eine Test auf "Lager leer". Diese Aufgabe soll an dieser Stelle verdeutlichen, das Mehrdeutigkeiten zu verhindern sind und Abfragen immer causal bleiben müssen.
 
hmmm... Okay. Aber das ist doch dann ein völlig bescheuertes Beispiel... Und zudem denke ich zu sehr nach... Naja, aber da mich das ganze jetzt extrem angenervt hat, werd ich das nicht mehr vergessen xD.

Und nochmal wegen meiner Überlegung: Heißt das, ich habe die Methode LagerVoll falsch verstanden, beziehungsweise Extrafunktionalität reininterpretiert? Ich krieg das nicht in meinen Schädel rein...
 
Zuletzt bearbeitet:
Stimmt, solche gekünstelten Beispiele sind immer voll von Ars**.

Joa, du bist davon ausgegangen, daß auf "Lager voll" im negativen Fall "Lager leer" geantwortet wird oder das eine fehlende Antwort als "Lager leer" gewertet werden darf. 2c schließt das aber nicht ein. Es wird nur "Voll" oder gar nix zurück gegeben und nur so ausgewertet. Leider erschließt sich die Deppendenkweise erst, wenn man die Antwort aus 2c kennt. Als Programmierer hätte ich gar nicht erst so eine dämliche Abfrage erstellt, womit eine Antwort auf 2d gar nicht möglich gewesen wäre da der Fehler nie eintritt. es gilt also festzuhalten, daß nur "Voll" gewertet wurde und das Gegenteil "Leer" nicht ermittelt wird. Ich hasse bayrische Aufgaben, das gleiche Prob gibts auch bei den Matheklausuren. Die Fragen sind so dermaßen dämlich und zweideutig das einem schlecht wird. Ich habe das Gefühl, die Leute sollen an dieser Stelle versagen.

In der Realität würde ein solcher Fehler nicht nur sofort auffallen, es ist auch ein typischer Anfängerfehler (bzw. von Leuten die sich keine Gedanken machen bevor sie programmieren), den man selten mehr als einmal macht. Denn spätestens der Debugger wird an dieser Stelle hängenbleiben.

Da merkt man, dass die Ersteller solcher Aufgaben gar nicht weiterdenken. Oder es vom Probanten nicht erwarten.
 
Hmm. Auch mal ein neues Problem: Ich weiß zu viel für das Informatikabitur, beziehungsweise ich denke zu weit.

Genauso: Im Text steht z.B. bei einer Aufgabe, dass ein Kunde ein Konto erstellt bekommt, wenn er noch nicht Kunde ist. Was folger ich daraus? Genau, Pro Kunde 1 Konto. Was folgern sie daraus? Nichts. Genauso implementieren sie in den Lösungen viel zu ausführlich als dass man damit lernen könnte. So wird z.B. bei den Kontos der Inhaber eingespeichert, ohne dass es benötigt wird, beziehungsweise aus dem Text ersichtlich ist, dass das gebraucht wird. Jegliche Extralösungen verunsichern sowas von. Gott sei Dank habe ich nach den Ferien noch genug Zeit, mich damit mit meinem Lehrer zu unterhalten, der das Abitur sowieso komisch gestellt findet.

Danke dir nochmal für deine Hilfe!
 
Find ich gute Aufgaben ehrlich gesagt.
Zu 2) Ein Konto ohne Meta-Info macht aber auch kein Sinn, auch wenn es im Text nicht erwähnt ist.
Und ob man die Kontobesitzer-infos seperat speichert oder alles in der Kontoumgebung würde bestimmt beides akzeptiert werden, wobei 1. seperat natürlich mehr arbeit ist und fehleranfälliger unter Prüfungsstress :)
 
Hmmm. Danke für die Antwort, aber das hat schon alles geklappt wie es sollte. 15 Punkte :).
 
Zurück
Oben Unten