Grundlagen der Programmierung (Pseudocode nachverfolgen)

Reelle Werte werden im Format IEEE 754 mit doppelter Genauigkeit (binary64) dargestellt, und jede Summe wird auf den nächstgelegenen darstellbaren Wert gerundet. Welchen Wert hat c, nachdem das folgende Programm ausgeführt wurde?

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
Antwort und Erläuterung anzeigen

Antwort: C. 11

0,1 ist im Binärsystem ein periodischer Bruch und wird bei doppelter Genauigkeit als Näherungswert gespeichert, der etwas größer als 0,1 ist. Jede Addition fügt einen Rundungsfehler hinzu, und nach 10 Additionen ergibt sich nicht 1,0, sondern 0,9999999999999999. Dieser Wert ist kleiner als 1,0 und erfüllt die Schleifenbedingung, daher folgt eine 11. Addition; x wird etwa 1,1, und die Schleife endet mit c = 11. Schleifendurchläufe werden mit einer ganzzahligen Variablen gezählt, und reelle Zahlen werden nicht mit = oder ≠ verglichen. Prüft die Bedingung stattdessen mit ≠ auf Ungleichheit mit 1,0, wird x nie genau 1,0, und die Schleife endet nie.

Dieses Thema üben Zur Themenseite

Weitere Fragen zu Grundlagen der Programmierung (Pseudocode nachverfolgen)

  1. Die Klasse Counter gibt jeder Instanz eine eigene ganzzahlige Membervariable count (beim Erzeugen 0), und ihre Methode inc() addiert 1 zum eigenen count. Welchen Wert hat x, nachdem das folgende Programm ausgeführt wurde?
  2. Die Klasse Counter gibt jeder Instanz eine eigene ganzzahlige Membervariable count (beim Erzeugen 0), und ihre Methode inc() addiert 1 zum eigenen count. Eine Variable vom Typ Counter enthält eine Referenz auf eine Instanz, nicht die Instanz selbst. Welchen Wert hat x, nachdem das folgende Programm ausgeführt wurde?
  3. Mit den beiden Zuweisungen im folgenden Programm sollten die Werte von x und y vertauscht werden. Welche Werte haben x und y nach der Ausführung?
  4. Das folgende Programm reicht Werte über drei Variablen weiter. Welche Werte haben a, b und c nach der Ausführung?
  5. Das folgende Programm multipliziert x wiederholt mit 3. Welchen Wert hat n nach der Ausführung?