Das Programm soll sich mit einem Begrüßungstext melden und dann wiederholt Zahlen vom Benutzer abrufen, deren Faktorzerlegung zu berechnen ist. Durch Eingabe einer Null als Abbruchkriterium soll der Benutzer anzeigen können, daß er keine weiteren Berechnungen wünscht; dann soll das Programm sich geordnet abmelden. Dieses Verhalten können wir jetzt bereits ausprogrammieren, wenn wir die eigentliche Berechnung an einen anderen Programmbaustein delegieren.
Die eigentliche Berechnung haben wir in ein noch zu definierendes Bibliotheks-Modul "Zahlen" abgeschoben. Das Programm selbst verwendet die Tatsache der Faktorisierung gar nicht und kann somit, mit den nötigen Anpassungen, für andere wiederholte Berechnungen wiederverwendet werden.MODULE Faktorisiere; (* Program zur Faktorisierung natuerlicher Zahlen *) (* Vorlesung EI1 WS 1999/2000 *) (* Klaus Lagally, 06.11.1999 *) FROM InOut IMPORT WriteLn, WriteString, ReadCard; FROM Zahlen IMPORT Zerlege; VAR Zahl: CARDINAL; (* zu faktorisieren *) PROCEDURE Prompt; (* fordert die naechste Eingabe vom Benutzer an *) (* und legt sie in die CARDINAL-Variable "Zahl" *) BEGIN WriteString("gib eine natuerliche Zahl oder 0 ein"); WriteLn; ReadCard(Zahl); END Prompt; BEGIN (* hier beginnt der Ablauf des Hauptprogramms *) WriteString("Faktorisieren von natuerlichen Zahlen"); WriteLn; WriteString("Eingabe von Null bewirkt: Programmende!"); WriteLn; Prompt; (* fordert naechste Eingabe nach "Zahl" an *) WHILE Zahl <> 0 DO Zerlege(Zahl); (* berechne und drucke die Zerlegung *) Prompt; (* naechste Eingabe nach "Zahl" anfordern *) END; WriteString("Auf Wiedersehen!"); WriteLn; END Faktorisiere.