Wir nehmen an, wir sind in der achten Klasse und können etwas Delphi.
Wir werden nun vom Mathelehrer beauftragt ein Programm zu schreiben,
welches uns einfach die Fakultät einer Zahl.
Für alle, die an dem Tag, als "Fakultät" erklärt wurde, womöglich gerade nicht anwesend waren:
Fakultät bedeutet, dass die angegebene Zahl immer wieder weiter mit dem Vorgänger der Zahl multipliziert
wird, bis zur Zahl 1. Man schreibt das, indem man die Zahl mit einem Ausrufezeichen dahinter darstellt.
Also
x := 5!
bedeutet das gleiche, wie
x := 5*4*3*2*1;
x := 5!
bedeutet das gleiche, wie
x := 5*4*3*2*1;
Und es geht weiter...
Bei den ersten Tests funktioniert alles. Damals wissen wir noch nichts von Planung und
so kommt es, dass wir - schließlich haben unsere letzten Tests funktioniert -
ganz unvorhergesehen von unseren Eltern gerufen werden, dass wir doch endlich den Abwasch machen!
Jeder der auf sich gestellt ist, weiß nun was passiert. Schnell ändert man noch etwas,
was einem selbst aufgefallen ist, und dann verlässt man den PC.
Wir kommen zurück, in Erinnerung, dass ja alles funktioniert hat, schauen wir nochmal ob es compiliert...
PRIMA! Werfen das Programm auf den USB-Stick (naja, früher hat man das noch so gemacht) für morgen
und gehen an die übrigen Hausaufgaben.
Am Nächsten Tag, Beamer eingeschaltet, Schul-PC hochgefahren, wir starten das Programm Fakultaet.exe,
doch egal welche Zahl wir eingeben, es kommt genau die Zahl wieder als Ergebnis.
Was ist hier passiert?
Zuhause sitzen wir nun vor dem Source, ignorieren unsere Eltern, die uns zum Essen rufen,
und suchen den Fehler...
procedure TfmHomework.BtnCalcFacClick( Sender: TObject); var i, f, res : Integer; begin f := StrToInt( edFAK.Text); res := 1; for i:=1 to f do; begin res := res*i; end; ShowMessage( 'Fakultät von ' + IntToStr( f) + 'Fakultät von '' = ' + IntToStr( res)); end; |
Habt ihr den Fehler gefunden?