02 - AB Schreibtischtest
Mit Hilfe eines sogenannten Schreibtischtests können die Veränderungen der Variablenwerte während des im Struktogramm beschriebenen Algorithmus protokolliert werden. Dazu wird eine Tabelle mit sämtlichen Variablen erstellt. Ausgehend von den Anfangswerten der Variablen wird der Programmablauf gedanklich nachvollzogen. Jedes Mal, wenn sich der Wert einer Variablen ändert, wird der neue Wert in einer weiteren Zeile erfasst. Wenn der Algorithmus bis zum Ende durchdacht wurde, sollten die richten Werte ermittelt worden sein.
Schreibtischtest 1
arr als Array = [5,11,3,1,10]
Wiederhole von i := 1 solange i < arr.length, Schrittweite 1
arr[i] := arr[i-1] + 1
Wiederhole Ende
Ausgabe arr
Aufgaben:
1.1 Führen Sie den Algorithmus mit dem Array arr = [5, 11, 3, 1,10]
aus und notieren Sie die Ausgabe am Ende des
Algorithmus.
Durchgang | i | arr |
---|---|---|
1 | 1 | [5, 6, 3, 1, 10] |
2 | 2 | [5, 6, 7, 1, 10] |
3 | 3 | [5, 6, 7, 8, 10] |
4 | 4 | [5, 6, 7, 8, 9] |
1.2 Beschreiben Sie allgemein, was der Algorithmus leistet.
Der Algorithmus überschreibt jedes Element im Array ab Index 1 mit dem Wert des vorherigen Elements plus 1.
Schreibtischtest 2
arr als Array = [5,3,8,7,9]
Wiederhole von i := 0 solange i < arr.length, Schrittweite 1
Falls arr[i] > 5
arr[i] := 1
Sonst
arr[i] := 0
Sonst Ende
Wiederhole Ende
Ausgabe arr
2.1 Führen Sie den Algorithmus mit dem Array arr = [5, 3, 8, 7, 9]
aus und notieren Sie die Ausgabe am Ende des
Algorithmus.
Durchgang | i | arr |
---|---|---|
1 | 0 | [0, 3, 8, 7, 9] |
2 | 1 | [0, 0, 8, 7, 9] |
3 | 2 | [0, 0, 1, 7, 9] |
4 | 3 | [0, 0, 1, 1, 9] |
5 | 4 | [0, 0, 1, 1, 1] |
2.2 Beschreiben Sie allgemein, was der Algorithmus leistet.
Der Algorithmus ersetzt jedes Element im Array durch 1 oder 0, abhängig vom Vergleich mit dem Wert 5:
- Werte größer als 5 → 1
- Werte kleiner oder gleich 5 → 0
Schreibtischtest 3
Text Variablen: input := "hallo";
clde := "";
output := "";
Wiederhole von i := 0 solange i < clde.Length, Schrittweite 1
output := "";
Wiederhole von j := 0 solange j < input.Length, Schrittweite 1
Falls (input[j] != clde[i])
output := output + input[j];
Falls Ende
Wiederhole Ende
input := output;
Wiederhole Ende
Console.WriteLine(output);
3.1 Führen Sie den Algorithmus mit der Variablen clde = “ao” aus und notieren Sie die Ausgabe am Ende des Algorithmus.
Durchgang | i | j | input | output |
---|---|---|---|---|
1 | 0 | 0 | hallo | h |
1 | 0 | 1 | hallo | h |
1 | 0 | 2 | hallo | hl |
1 | 0 | 3 | hallo | hll |
1 | 0 | 4 | hallo | hll |
input := hll | ||||
2 | 1 | 0 | hll | h |
2 | 1 | 1 | hll | hl |
2 | 1 | 2 | hll | hll |
input := hll |
3.2 Beschreiben Sie allgemein, was der Algorithmus leistet.
Der Algorithmus entfernt alle Zeichen aus input, die in clde vorkommen. Dabei geht er zeichenweise durch clde durch und filtert pro Schleife das entsprechende Zeichen aus input.
In diesem Beispiel:
a
wird entfernt → “hllo”o
wird entfernt → “hll”