C-Programmierung
Stapelbeispiel
← Stapelmaschine | ● | Rekursion →
Ein einfaches Beispiel anhand der geometrischen Reihe:
$ \displaystyle{ \sum_{n=0}^\infty c^n = \frac{1}{1-c} } $
double geo_sum(double c)
{
return(1.0/(1.0-c));
}
s=geo_sum(1.0/2);
{
return(1.0/(1.0-c));
}
s=geo_sum(1.0/2);
Beim Aufruf der Funktion geo_sum mit dem Parameter 0.5 geschieht folgendes:
- Evaluation des Argumentausdrucks 1.0/2 zu 0.5 mit Hilfe der Rechenregister
- Ablegen des Parameterwerts 0.5 auf dem Stapel
- Ablegen der RĂĽcksprungadresse adr auf dem Stapel
- Der Stapel enthält jetzt zwei Einträge: 0.5 adr
- Sprung an die Adresse von geo_sum
- Laden des Parameterwertes 0.5 in Register
- AusfĂĽhrung der Berechnung von 1/(1–0.5) mit Hilfe der Rechenregister
- Entfernen des Parameters 0.5 vom Stapel
- Entfernen der RĂĽcksprungadresse adr vom Stapel
- Ablegen des Funktionswertes 2.0 auf dem Stapel
- Der Stapel enthält jetzt einen Eintrag: 2.0
- RĂĽcksprung an die Adresse adr
- Abholen des Funktionswertes vom Stapel
- Speichern des Funktionswertes 2.0 in Variable s
- Der Stapel enthält jetzt keinen Eintrag mehr: leer
← Stapelmaschine | ● | Rekursion →