Basis van programmeren (pseudocode traceren)

Reële waarden worden voorgesteld in IEEE 754 dubbele precisie (binary64), en elke som wordt afgerond naar de dichtstbijzijnde voorstelbare waarde. Wat is de waarde van c nadat het volgende programma is uitgevoerd?

real: x ← 0.0
integer: c ← 0
while (x < 1.0)
  x ← x + 0.1
  c ← c + 1
endwhile
  1. A9
  2. B10
  3. C11
Antwoord en toelichting tonen

Antwoord: C. 11

0,1 is binair een repeterende breuk en wordt in dubbele precisie opgeslagen als een benadering die iets groter is dan 0,1. Elke optelling voegt een afrondingsfout toe, en het resultaat van 10 keer optellen is niet 1,0 maar 0,9999999999999999. Die waarde is kleiner dan 1,0 en voldoet dus aan de lusvoorwaarde, zodat er een 11e optelling volgt; x wordt ongeveer 1,1 en de lus eindigt met c = 11. Tel lusdoorgangen met een variabele van het type integer en vergelijk reële getallen niet met = of ≠. Als de voorwaarde met ≠ op ongelijkheid aan 1,0 test, wordt x nooit precies 1,0 en eindigt de lus nooit.

Dit onderwerp oefenen Naar de onderwerppagina

Meer vragen over Basis van programmeren (pseudocode traceren)

  1. De klasse Counter geeft elke instantie een eigen variabele count van het type integer (een lidvariabele, 0 bij het aanmaken), en haar methode inc() telt 1 op bij de eigen count. Wat is de waarde van x nadat het volgende programma is uitgevoerd?
  2. De klasse Counter geeft elke instantie een eigen variabele count van het type integer (een lidvariabele, 0 bij het aanmaken), en haar methode inc() telt 1 op bij de eigen count. Een variabele van het type Counter bevat een verwijzing naar een instantie, niet de instantie zelf. Wat is de waarde van x nadat het volgende programma is uitgevoerd?
  3. In het volgende programma zijn twee toekenningen geschreven met de bedoeling de waarden van x en y te verwisselen. Welke waarden hebben x en y nadat het is uitgevoerd?
  4. Het volgende programma schuift waarden door over drie variabelen. Welke waarden hebben a, b en c nadat het is uitgevoerd?
  5. Het volgende programma vermenigvuldigt x herhaaldelijk met 3. Wat is de waarde van n nadat het is uitgevoerd?