Télécharger Imprimer la page

Sinclair ZX81 Mode D'emploi page 90

Publicité

DEBUGGING IV
Läuft das Programm wirklich?
Wie können wir schlüssig beweisen, daß ein Programm genau das tut, was zu
leisten es geschrieben worden ist? Ich möchte mich nicht auf eine allzu kom ­
plizierte philosophische Diskussion einlassen (wir wären auf dem besten Weg
dazu), aber grob gesprochen ist das so ähnlich, als wollte man einen Astronom
fragen, ob morgen die Sonne aufgehen wird. Wenn er sehr pedantisch ist,
antwortet er vielleicht, die Erde bewege sich schon lange Zeit um die Sonne,
und wir besäßen ein System physikalischer Gesetze, die nahelegten, daß sie das
regelmäßig weiterhin tun wird, so daß man einiges darauf verwetten könne, es
werde auch morgen noch der Fall sein; er würde aber hinzufügen, daß er nicht
wissen könne, ob unsere physikalischen Gesetze richtig sind und das, was wir
Jahrtausende hindurch beobachtet haben, nicht in Wahrheit die Manifestation
eines viel komplexeren Gesetzes sei, dessen Wirkung morgen darin bestehen
könne, daß die Richtung der Erdrotation umgekehrt oder die Erde ganz aus ihrer
Bahn geholt wird.
Analog: Weil ein Programm sich bei der Eingabe der ersten tausend
Datenmengen richtig verhalten hat, heißt das noch nicht mit absoluter Gewiß ­
heit, daß es das auch beim eintausendunderstenmal tun wird. In der Tat werden
Fehler oft erst Monate oder sogar Jahre, nachdem ein Programm scheinbar
erfolgreich abgeschlossen wurde und mehrere dutzendmal oder sogar mehrere
hundertmal ohne Probleme gelaufen ist, erkennbar. Das ist im Grunde auch kein
Wunder; schließlich übersieht auch der Programmierer am ehesten das, was am
seltensten vorkommt.
Hier ein Beispiel:
Wir schreiben eine Reihe von Programmen für die E-Werke Nieder und Hoch,
um ihre Kundenkonten zu verwalten. Man teilt uns mit, es gäbe zwei Tarife, A
und B. Beim Tarif A zahle der Kunde im Vierteljahr eine Grundgebühr von 60
Mark und pro Einheit dann 10 Pfennig. Bei Tarif B sei keine Grundgebühr fällig,
dafür koste die Einheit 70 Pfennig. Wir verfassen also ein Programm, das
folgendermaßen aussieht:
100
INPUT T$
105
INPUTEINHEITEN
110
IF T$ = "A" THEN GOTO 300
120
IF T$ = "B" THEN GOTO 140
130
GOTO 5000
140
LET RE HNUNG = 70*EINHEITEN /100
150
PRINT RE HNUNG
160
GOTO 100
88

Publicité

loading

Produits Connexes pour Sinclair ZX81