![]() |
![]() |
C++ |
G.Eichelsdörfer - Staatliche Technikerschule Weilburg |
Am folgenden Auftrag 7 soll die Wirkungsweise einer zählergesteuerten Schleife erarbeitet werden:
Erstellen Sie ein Programm, welches eine natürliche Zahl (positive ganze Zahl) einliest,
deren Fakultät berechnet und ausgibt!
Projekt: fakultaet
Was, bitteschön, ist bei Zahlen eine Fakultät?
Die Fakultät einer natürlichen Zahl n ist das Produkt (Multiplikation) aller natürlichen Zahlen
von 1 bis n. Sie finden dafür auf ihrem Taschenrechner höchstwahrscheinlich eine Taste, welche
mit dem Ausrufezeichen (!) beschriftet ist.
Definition: n! = 1 * 2 * 3 * ... * n
oder rekursiv: 0! = 1, n! = (n-1)! * n
Beispiel: 6! = 1 * 2 * 3 * 4 * 5 * 6 = 720
In der Bearbeitung dieses Auftrags spielt somit das Zählen eine wesentliche Rolle. Ein Faktor muss mit 1 beginnend alle natürlichen Zahlen bis zum Endwert n durchlaufen. Das Verfahren kann etwa so beschrieben werden:
Initialisiere das Ergebnis mit 1.
Initialisiere den Zähler mit 2.
Solange der Zähler kleiner oder gleich n ist, tue folgendes:
Weise Ergebnis das Produkt aus Ergebnis und Zähler zu.
Ergebnis = Ergebnis * Zähler
Erhöhe den Zählerwert um 1 (Inkrementieren).
Nach den Wiederholungen von a und b beinhaltet das Ergebnis die Fakultät von n (n!).
Setzen Sie dieses Verfahren für den obigen Auftrag in ein Struktogramm und einen C++-Quelltext um!
Verwenden Sie dafür auschließlich bisher behandelte Ablaufstrukturen!
Sie kennen bereits den Anfügeoperator += für string-Objekte. Dieser besitzt bei Zahlenoperanden eine andere Bedeutung:
var += 3
ist gleichbedeutend mit var = var + 3
.
Bevorzugen Sie die kurze Form!
Zum Inkrementieren (Erhöhen um 1) gibt es in C++ den Inkrementieroperator ++.
Das ++ im Namen dieser Programmiersprache wurde gewählt, weil C++ (etwas scherzhaft)
der Nachfolger von C sein sollte.
Um eine ganzzahlige Variable i (von int) zu inkrementieren können Sie folgende Schreibweisen
verwenden, die alle das Gleiche bewirken:
i = i + 1 |
i += 1 |
++i |
i++ |
Die beiden unterstrichenen Ausdrücke verwenden den Inkrementieroperator. Man unterscheidet noch feiner in
Preinkrementieroperator (++i)
Hier wird vor der Verwendung des Wertes in i dieser Wert erhöht,
also zuerst Wert inkrementieren, dann Wert verwenden. Dieser Operator sollte im
Zweifelsfall bevorzugt werden, weil seine Übersetzung eine weniger aufwändige
Befehlssequenz ergibt.
Beispiel: a = ++i;
Erst inkrementieren, dann zuweisen.
Postinkrementieroperator (i++)
Hier wird nach der Verwendung des Wertes in i dieser Wert erhöht,
also zuerst Wert verwenden, dann Wert inkrementieren.
Beispiel: b = i++;
Erst zuweisen, dann inkrementieren.