Basis van programmeren (pseudocode traceren)
Het volgende programma zoekt de waarde x in de array a met n elementen en zet de index waar die wordt gevonden in i. Array-indexen beginnen bij 1. and en or evalueren hun rechterkant niet als de linkerkant alleen het resultaat al bepaalt. Welke voorwaarde op de plaats van 【a】 leest a[n + 1], buiten de array, als x niet in a voorkomt?
integer: i ← 1
while (【a】)
i ← i + 1
endwhile
- Aa[i] ≠ x and i ≦ n
- Bi ≦ n and a[i] ≠ x
- Cnot (i > n or a[i] = x)
Antwoord en toelichting tonen
Antwoord: A. a[i] ≠ x and i ≦ n
Als x niet in a voorkomt, groeit i tot n + 1 en wordt daarna de voorwaarde getest. In i ≦ n and a[i] ≠ x is de linkerkant i ≦ n false, dus a[i] aan de rechterkant wordt niet geëvalueerd en er wordt niets buiten de array gelezen. In not (i > n or a[i] = x) staat de uitkomst van or vast zodra i > n true is, dus ook daar wordt a[i] niet geëvalueerd. a[i] ≠ x and i ≦ n evalueert eerst a[n + 1]. Wie op kortsluitevaluatie vertrouwt, zet de bereikcontrole aan de linkerkant.
Verder: nog 9 vragen over Basis van programmeren (pseudocode traceren)