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
  1. A20
  2. B21
  3. 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.

Dieses Thema üben Zur Themenseite

Weitere Fragen zu Grundlagen der Programmierung (Pseudocode nachverfolgen)

  1. Die Array-Indizes beginnen bei 1. Das folgende Programm sucht das größte Element. Welchen Wert hat m nach der Ausführung?
  2. Das folgende Programm sollte die Reihenfolge der Elemente des Arrays a umkehren. Die Array-Indizes beginnen bei 1. Was enthält a nach der Ausführung?
  3. Die Array-Indizes beginnen bei 1. Was enthält das Array a, nachdem das folgende Programm ausgeführt wurde?
  4. Die Array-Indizes beginnen bei 1. Das folgende Programm vergleicht benachbarte Elemente. Welchen Wert hat c nach der Ausführung?
  5. m[i, j] ist das Element in Zeile i und Spalte j des zweidimensionalen Arrays m, und die Indizes beginnen bei 1. Welchen Wert hat s, nachdem das folgende Programm ausgeführt wurde?