Grundlagen der Programmierung (Pseudocode nachverfolgen)
Das folgende Programm sollte die Summe aller Elemente des Arrays a berechnen. Die Array-Indizes beginnen bei 1. Welchen Wert hat s nach der Ausführung?
integer array: a ← {4, 7, 1, 9, 3}
integer: s ← 0
for (i from 1 to length(a) − 1 step 1)
s ← s + a[i]
endfor
- A20
- B21
- C24
Antwort und Erläuterung anzeigen
Antwort: B. 21
length(a) ist 5, daher läuft i von 1 bis 4, und es ergibt sich s = 4 + 7 + 1 + 9 = 21. Das letzte Element a[5] = 3 wird nicht addiert; das Ergebnis ist also um 3 kleiner als die richtige Summe 24. Wird das Muster aus Sprachen mit Indizes ab 0 (von 0 bis length − 1) unverändert auf Arrays mit Indizes ab 1 übertragen, entsteht genau diese Art von Off-by-one-Fehler.
Weiter: 9 weitere Fragen zu Grundlagen der Programmierung (Pseudocode nachverfolgen)