Handsimulation - richtig?
Hallo, ich wollte mal gerne wissen, ob meine Handsimulation richtig ist.
Ich hoffe jemand kann mir dabei helfen :)
Aufgabe
Führt eine Handsimulation für folgendes Programm durch. Schreibt also in die Tabelle, welche Zeilen nacheinander ausgeführt werden (erste Spalte), und welche Werte die Variablen nach Ausführung dieser Zeile jeweils haben (die anderen Spalten).
- Variablen, die zu diesem Zeitpunkt noch nicht existieren, werden mit - markiert
- Variablen, deren Wert undefiniert ist, werden mit undef markiert
- Felder von Variablen, die sich nicht ändern bleiben leer! Dies wird interpretiert als “gleicher Wert wie in der Zeile davor”. Das wiederholte Eintragen von Werten in Felder von Variablen die sich nicht ändern ist falsch (Das Eintragen eines Wertes bedeutet "der Speicher für die Variable bekommt an dieser Stelle (erneut) den angegebenen Wert zugewiesen").
- Die erste ausgeführte Zeile einer Funktion ist immer die öffnende Klammer
- Die letzte ausgeführte Zeile einer Funktion ist immer die schließende Klammer
- Beim Sprung in eine Funktion wird hinter die aktuelle Zeile in Klammern die Zeile, aus der der Sprung stattgefunden hat, geschrieben (z.B: 7(14); Achtung: Bitte nur die Zahlen und die Klammern. Sollten Leerzeichen dazwischen kommen, erkennt ISIS die Lösung als falsch an).
- Die Anzahl der Zeilen in der Tabelle ist abgezählt, die Vorgaben sind korrekt.
Programm
1 public class HuetchenSpieler {
2
3 public static void sortieren(Huetchen links, Huetchen mitte, Huetchen rechts) {
4 links.kugel = rechts.kugel;
5 rechts.kugel = mitte.kugel;
6 mitte = links;
7 }
8
9
10 public static void main(String[] args) {
11 Huetchen l = new Huetchen(0);
12 Huetchen m = new Huetchen(0);
13 Huetchen r = new Huetchen(1);
14 Terminal.print("Wo ist die 1?\n links: "+l.kugel+", mitte: "+m.kugel+", rechts: "+r.kugel+" \n");
15 sortieren(l,m,r);
16 Terminal.print("Und jetzt .. \n links: "+l.kugel+", mitte: "+m.kugel+", rechts: "+r.kugel+" \n");
17 sortieren(l,m,r);
18 Terminal.print("Und jetzt .. \n links: "+l.kugel+", mitte: "+m.kugel+", rechts: "+r.kugel+" \n");
19 }
20 }
Das Objekt l erhält bei der Ausführung im Speicher Adresse 50, Objekt m Adresse 51 und Objekt r Adresse 52.
Um euch ein besseres Bild von der Klasse Huetchen machen zu können steht im folgenden der Quelltext. Bei
der Simulation soll sie aber vernachlässigt werden, nur HuetchenSpieler ist relevant. (Es muss also auch nicht
beim Konstruktoraufruf in die Klasse gesprungen werden!)
Die Klasse Huetchen
public class Huetchen {
public int kugel;
public Huetchen(int kugel) {
this.kugel = kugel;
}
}
1 Antwort
Die Variable "links" sollte nur lokal existieren, wenn du in der Funktion "main" bist hat diese also keinen Wert.
Die Initialisierungen in den darauffolgenden Zeilen hast du verschoben.
Sprungstellen sollst du nur beim Sprung angeben, danach nicht mehr.
...