C-Programmierung
Stapelbeispiel
← Stapelmaschine | ● | Rekursion →
Ein einfaches Beispiel anhand der geometrischen Reihe:
∞∑n=0cn=11−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 →