Punktabzüge bei Aufgaben zur Nachverfolgung von Algorithmen liegen meist nicht an einem mangelnden Verständnis des Algorithmus selbst. Oft liegt es daran, dass eine inkonsistente Tabelle erstellt wird – etwa wenn eine Zeile heimlich zwei Schritte umfasst oder ein Variablenfeld leer gelassen wird, weil sich der Wert nicht geändert hat.
Betrachte bei der kleinen Liste A = [4, 1, 3] jede Zeile als den vollständigen Zustand des Programms nach genau einem Schritt. Ein Schritt entspricht dabei einem Schleifendurchlauf, einer Zuweisung oder einem Tauschvorgang, je nachdem, was die jeweilige Zeile im Pseudocode bewirkt.
Bevor du die Tabelle siehst, beantworte folgende Frage: Wenn eine Schleife in jedem Durchlauf A[i] ausliest, welcher Wert sollte dann in der Spalte current_value in der Zeile stehen, in der i = 1 gilt (für A = [4, 1, 3])?
Sieh dir an, wie eine Zustandstabelle mit Einzelschritten für A = [4, 1, 3] ausgefüllt wird.
Die Tabelle funktioniert, weil in jeder Zeile alle überwachten Variablen erneut aufgeführt werden, selbst wenn sie sich nicht ändern. Wenn i erhöht wird, current_value aber gleich bleibt, notieren Sie current_value dennoch erneut; das Bewertungsschema verlangt nämlich den Nachweis, dass der Wert unverändert geblieben ist, anstatt einfach vergessen worden zu sein.
Sobald Sie die Variablen zeilenweise konsistent führen können, treten Fehler häufig bei Arrays auf. Der häufigste Fehler besteht darin, Lese- und Schreibvorgänge so zu behandeln, als fänden sie gleichzeitig statt, sodass die Zeile einen Wert anzeigt, der erst nach einem späteren Schritt existiert.
Ein Index bezeichnet die Position, über die auf ein Array-Element zugegriffen wird (z. B. A[0] oder A[1]); dabei müssen Sie sich an die in der Prüfung vorgegebene Konvention halten. Wenn die Aufgabenstellung eine Indizierung ab 1 (1-based indexing) vorgibt, ist A[1] das erste Element, und jeder Zugriff in Ihrer Trace-Tabelle muss dieser Regel folgen.
Bevor wir uns den Momentaufnahmen für Arrays zuwenden, beantworten Sie folgende Frage: Wenn Sie in A = [4, 1, 3] die Elemente an den Indizes 0 und 1 vertauschen, was sollte dann in der nächsten Zeile der Array-Momentaufnahme stehen?
Lernen Sie, wie man Lese- und Schreibvorgänge bei Arrays als separate Zustandsänderungen in jeweils einer eigenen Zeile protokolliert.