Informatik-Test | Aufgabe richtig interpretiert?

Palladin007

assimiliert
kruemel und keks sind zwei Variablen vom Typ int. kruemel hat den Anfangswert 1000. In einem Java-Programm steht die Zeile "kruemel = keks".
Otto meint: "Genauso gut könnte man 'keks = kruemel' schreiben.
Entscheiden sie, ob er Recht hat und begründen sie ihre Entscheidung!


Das war eine Aufgabe im letzten Informatik-Test.
ot:
Es ist nicht ganz das Original. den Satz, der fest legt, welchen Wert keks hat, dan hab ich beim Abschreiben wohl übersprungen.
keks soll den Wert 1 haben.


Hab es sinngemäß so beantwortet:


Ja, er hat Recht, da das Programm mit vertauschten Variablen trotzdem funktioniert.
Allerdings wäre das Ergebnis anders, da bei der ursprünglichen Variante hätten beide Variablen den Wert 1, da kruemel mit keks überschrieben wird.
Bei Otto's Variante ist es umgekehrt, da keks mit kruemel überschrieben wird.


Das ist der grobe Inhalt und mehr war da auch nicht groß zu schreiben, das hatte sie nach dem Test auch erklärt.


ABER die Lehrerin hat es nicht akzeptiert.
Sie meinte, dass meine Aussage falsch ist, da das Programm ja einen anderen Wert ausgibt, als vorher.


Das stimmt auch soweit, aber ich finde keine genaue Festlegung, wie man die Aufgabe zu interpretieren hat.
Denn man kann sie auf zwei Weisen sehen.

1. Otto hat nicht recht, weil am Ende nicht die gleichen Werte gespeichert sind.
2. Otto hat Recht, weil das Programm trotzdem funktioniert.

Ich habe den zweiten Punkt genommen und das hat sie als Falsch gesehen, obwohl alles da stand. Nur nicht in der Reihenfolge, die sie sich vorgestellt hatte.




Und jetzt möchte ich euch um eure Meinung fragen.

Wie versteht ihr die Aufgabe?
Ist das in Ordnung so, dass sie das als falsch sieht, oder ist meine Erklärung richtig?
Mir glaubt sie nicht, deswegen will ich Kundige Meinung haben^^
 
Ist doch ganz klar, deine Lehrerin hat recht, denn diese Aussage ist falsch:
Otto meint: "Genauso gut könnte man 'keks = kruemel' schreiben.
Es ist nicht dasselbe, da jetzt 'keks' einen neuen Wert erhält und nicht 'kruemel', wie ursprünglich im Programm vorgesehen.
Bei Zuweisungen kann man schließlich die Variablen nicht einfach umdrehen, anders als bei einem Vergleich:
"if keks == kruemel then ..." wäre dasselbe wie "if kruemel == keks then ...".
 
Nein, das ist nicht das selbe und das hab ich auch geschrieben.


Ich hatte die Frage nur so verstanden (und ich bin nicht der einzige), ob das Programm dann noch funktioniert und das tut es ja schließlich.
Es ist ja eigentlich völlig egal, wie rum, das Programm zeigt keinen Fehler, es läuft einwandfrei, also funktioniert es. Und was funktioniert, ist möglich.

So hab ich es verstanden und so hab ich es aufgeschrieben, mit dem Zusatz, dass das Programm zwar funktionieren wird, aber der Wert der Variablen sich ändert.



Ich wüsste gerne, warum sie das nicht akzeptiert hat. Es steht exakt das da, was da stehen sollte, nur nicht in der richtigen Reihenfolge. Trotzdem ist der Text, auf die Funktionalität des Programmes bezogen, korrekt und dagegen hatte sie auch nichts gesagt.

Wie es scheint, war ihr der Rest egal, weil sie oben die Wörtchen "hat recht" gelesen hat.
 
Ob das Programm durch die Vertauschung funktionsfähig bleibt oder nicht, war nicht gefragt, wenn dein Zitat ganz oben vollständig ist. Also interpretiere ich auch keine solche Annahmen hinein.;) Fakt ist, dass das Programm mit der Vertauschung der Variablen ein falsches Ergebnis liefert, wenn überhaupt. Also ist Ottos Aussage falsch.
 
Otto meint: "Genauso gut könnte man 'keks = kruemel' schreiben.
Entscheiden sie, ob er Recht hat und begründen sie ihre Entscheidung!

Deine Entscheidung war einfach falsch, denn Du meintest, er hätte Recht. Hat er aber nicht. Der Kern der Problemstellung ist nunmal offensichtlich das Vertauschen der Variablen bei einer Zuweisung, nicht ob das Programm dadurch Fehler aufweist. Und eine Zuweisung a=b ist nunmal nicht b=a. Wie Norbert schon sagte, ist es nur bei einer Abfrage "==" egal, was links und was rechts steht. Deine Begründung sieht die Lehrerin daher als falsch an, da sie die falsche Antwort als Grundlage hat.
 
Ich glaube, es geht bei dieser Frage darum, ob der Student den Unterschied zwischen
primitiven und referentiellen Datentypen verstanden hat:

Wäre die Variable nicht vom Typ int, sondern ein referentieller Datentyp, dann wäre
Otto's Aussage richtig.

Eure Lehrerin sollte euch diesen wichtigen Unterschied unbedingt erläutern.
:weg
 
Oben