Noch eine Sache, wo man sich als Deutschlehrer bei Informatik leicht tut.
Einleitende Denkaufgabe aus dem Informatikbuch:
In Hamburg und München werden am selben Tag zwei Autos gleichen Typs und völlig gleichen Aussehens mit demselben Kennzeichen jeweils in einer Radarkontrolle geblitzt. Welche möglichen Erklärungen gibt es dafür?
(Informatik 3, Klett)
Mögliche Erklärungen sind wohl: Da ist ein Auto von Hamburg nach München gefahren, oder jemand hat ein gefälschtes Nummernschild benutzt. Großangelegter Trickbetrug, identity theft, oder so…
Mein alternativer Einstieg und ebensolche Überschrift: „Das gleiche oder dasselbe?“ Die Frage kennen die Schüler, vielleicht eher aus Diskussionen beim Mittagessen als aus dem Schulunterricht, aber sie kennen sie: Zwei Sachen sind gleich, wenn sie sich in allen Merkmalen gleichen, und zwei Sachen sind dasselbe… schon falsch, eine Sache ist dieselbe wie eine andere, wenn es eben nicht zwei Sachen sind, sondern eine, dieselbe eben.
Eselsbrücke, von mir selbst erfunden: „Das gleiche“ schreibt man auseinander, in zwei Worten, weil es um zwei Objekte geht. „Dasselbe“ schreibt man zusammen, in einem Wort, weil es um ein Objekt geht.
Ich brauche diese Eselsbrücke auch, denn ich habe jahrelang mit diesem Unterschied gekämpft, ganz verinnerlicht habe ich ihn immer noch nicht. Andere Sprachen kommen auch ohne diese explizite Unterscheidung aus, oder wird auch so auf auf same vs. identical herumgeritten?
Für Informatik ist das aber nützlich. Da gibt es nämlich etwas, das „Mehrfachreferenz“ heißt. Zuerst der einfache Fall. Es gibt zwei Variablen a und b.
a=7;
b=a;
Das „=“ bedeutet in Java und vielen anderen Programmiersprachen nicht ist gleich, sondern sei oder soll sein. Demnach heißt „a=7“ also „a sei 7/a soll 7 sein“. Andere Programmiersprachen benutzen für soll sein die Zeihenfolge „:=“, dort heißt „a soll den Wert 7 haben“ demnach „a:=7“. Das ist besser, aber Java macht es leider anders.
Die Variablen a und b haben zu diesem Zeitpunkt den gleichen Wert. Und wenn ich danach etwas an der einen Variablen ändere, wird die andere dadurch nicht verändert:
a=7;
b=a;
a=8; //neue Wertzuweisung, alter Wert wird überschrieben
Danach hat a den Wert 8, aber b immer noch den Wert 7.
Anders scheint es, wenn diese Variablen nicht für ganze Zahlen (oder andere „primitive Datentypen“) stehen, sondern für kompliziertere, zusammengesetzte Gebilde, zum Beispiel Raumschiffe in einem Computerspiel.
a=new Raumschiff("Enterprise");
b=a;
b.captainÄndern("Kirk");
Hier heißt „b = a“ nicht so wie vorhin, dass b den gleichen Wert haben soll wie a, also ein gleiches Raumschiff sein soll, sondern das es dasselbe Raumschiff bezeichnen soll. Nach den ersten beiden Zeilen haben a und b denselben Wert, sie referenzieren beide dasselbe Objekt. Wenn ich danach bei b den Captain ändere, hat auch a einen anderen Captain, da a und b ja dasselbe Objekt referenzieren
Das ganze ist ein notorisch schwieriges Problem und noch ein bisschen komplizierter, als es aussieht. Für Fortgeschrittene:
stefansLieblingslehrer = x;
sabinesLieblingslehrer = stefansLieblingslehrer;
Wenn ich jetzt Eigenschaften von Stefans Lieblingslehrer ändere, ändere ich auch die Eigenschaften von Sabines Lieblingslehrer, da beider Lieblingslehrer ja x ist.
Allerdings: Wenn Stefan sich danach umentscheidet, so dass „stefansLieblingslehrer = y“, dann ändert sich nichts an der Tatsache, dass Sabines Lieblingslehrer immer noch der x ist.
stefansLieblingslehrer = x;
sabinesLieblingslehrer = stefansLieblingslehrer;
stefansLieblingslehrer = y; //neue Wertzuweisung, alte Referenz wird überschrieben
Der Unterschied zwischen primitiven Datentypen (Buchstaben, Zahlen) und komplexeren (Raumschiffe, Lehrer) ist der, dass es nur bei letzteren Referenzen gibt, dass also nur da Mehrfachreferenzen auftauchen können. „a = 7“ heißt, dass a den Wert hat, „a = new Raumschiff()“ heißt, dass a auf ein Raumschiff verweist, ein Raumschiff referenziert. Und auf dasselbe Raumschiff können neben a eben auch andere Variablen verweisen.
— Und die Schüler haben danach ihrer Mathematiklehrerin erklärt, dass dem Herrn Rau der Unterschied zwischen „dasselbe“ und „das gleiche“ gaaaanz wichtig ist.
Schreibe einen Kommentar