Bases de la programmation (trace de pseudo-code)
Le programme suivant devait calculer la somme de tous les éléments du tableau a. Les indices du tableau commencent à 1. Quelle est la valeur de s après son exécution ?
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
Afficher la réponse et l'explication
Réponse : B. 21
length(a) vaut 5 : i varie donc de 1 à 4, et s = 4 + 7 + 1 + 9 = 21. Le dernier élément a[5] = 3 n'est pas ajouté, et le résultat est inférieur de 3 à la somme correcte, 24. Reprendre telle quelle, pour un tableau dont les indices commencent à 1, l'écriture utilisée dans les langages où ils commencent à 0 (de 0 à length − 1) provoque ce type d'erreur de décalage d'une unité (erreur off-by-one).
Continuer : 9 autres questions sur Bases de la programmation (trace de pseudo-code)