zwar richtig angezeigt wird, dann aber eine Fehlermeldung folgt, nämlich
6/100
Dieser Meldung sind wir schon einmal begegnet. Sie erinnern sich viel
leicht, daß die "6" anzeigt, der
omputer habe versucht, einen Rechenvorgang
auszuführen, der zu einem so großen Resultat führt, daß er es nicht bewältigen
kann, und daß die "100" die Zeilennummer angibt, wo das Problem entstanden
ist. Man darf also vermuten, daß das Programm, wie schon beim letztenmal, als
die Fehlermeldung auftauchte, versucht hat, durch Null zu teilen. Bevor wir uns
ernsthaft als Detektive betätigen, wollen wir noch ein paar Spuren sammeln.
Versuchen Sie es mit anderen Daten:
2
1
4
6
-1
Dabei kommen genau dieselben Meldungen heraus. Als Arbeitshypothese
scheint sich demnach anzubieten: "Gleichgültig, welche Daten eingegeben
werden, das Programm schließt mit einer Meldung über arithmetischen Über
lauf ab." Probieren Sie das Programm mit drei oder vier anderen Dateneingaben
aus, und Sie werden sehen, daß unsere Arbeitshypothese immer glaubhafter
wird.
Wo fangen wir mit dem Suchen also an? Ich habe vorhin von "Detektiv
arbeit" und "Spuren" gesprochen und das nicht leichtfertig getan. Programme
zu "entfehlern", hat durchaus Ähnlichkeit mit detektivischer Tätigkeit, und jeder
Detektiv wird Ihnen sagen, daß man, um Erfolg zu haben, wie ein Übeltäter
denken muß, nach dem Spruch: "Nur ein Dieb fängt einen Dieb." Der Übeltäter
ist in diesem Fall der ZX81 , also wird von uns der Versuch verlangt, so zu denken
wie der
omputer. Als erstes müssen Sie Ihre Gedankenabläufe verlangsamen.
Das hat Sie überrascht, nicht wahr? Sie standen unter dem Eindruck,
omputer
wären besonders schnell. Das sind sie auch, aber über ein Problem "denken" sie
in der Regel recht umständlich nach. Als nächstes nehmen Sie sich ein Modell
vom Speicher des omputers vor, oder wenigstens den Teil von ihm, der für das
vorliegende Problem von Belang ist. In unserem Beispiel sind fünf Speicherele
mente festgelegt worden und haben die Namen S,
, N, I und Z erhalten. Ein
geeignetes Modell wird also eine Tabelle sein, an der wir zeigen können, wie der
Inhalt dieser Elemente sich verändert, während das Programm ausgeführt wird.
Außerdem kann es nützlich sein, einen Hinweis auf die Zeilennummer zu haben,
wo eine Verzweigung stattfindet; das ist allerdings nicht unbedingt erforderlich.
Die Tabelle könnte also folgendes Aussehen haben:
56