Beide Seiten, vorherige Überarbeitung Vorherige Überarbeitung Nächste Überarbeitung | Vorherige Überarbeitung Nächste ÜberarbeitungBeide Seiten, nächste Überarbeitung |
faecher:informatik:oberstufe:algorithmen:rekursion:programmaufrufstack:start [13.01.2022 09:28] – sbel | faecher:informatik:oberstufe:algorithmen:rekursion:programmaufrufstack:start [13.01.2022 10:11] – sbel |
---|
{{ :faecher:informatik:oberstufe:algorithmen:rekursion:programmaufrufstack:stack01.drawio.png |}} | {{ :faecher:informatik:oberstufe:algorithmen:rekursion:programmaufrufstack:stack01.drawio.png |}} |
| |
Dabei fällt auf, dass der Programmablauf nach jedem Aufruf eines Unterprogramms zu der Stelle zurückkehren muss,, von der dieses aufgerufen wurde. | Dabei fällt auf, dass der Programmablauf nach jedem Aufruf eines Unterprogramms zu der Stelle zurückkehren muss, von der dieses aufgerufen wurde. Das wird dadurch realisiert, dass beim Aufruf einer Methode/Funktion auf dem **Programmaufrufstack** für jede Methode ein Speicherbereich reserviert wird, in dem alle relevanten Infos festgehalten werden, unter anderem auch die Rücksprungadresse, also die Stelle, von der aus die Methode gestartet wurde. |
| |
| ^ Was passiert ^ Wie sieht der Stack aus? ^ |
| |\\ || |
| | Der Konstruktor wird mit dem Argument ''name'' aufgerufen.\\ Auf dem Stack wird Speicher für den \\ Konstruktoraufruf reserviert. Es gibt keine Rücksprungadresse | {{ :faecher:informatik:oberstufe:algorithmen:rekursion:programmaufrufstack:stack001.drawio.png |}} | |
| |\\ || |
| | Aus dem Konstruktor heraus wird die Methode ''GruessGott'' mit dem\\ Argument ''name'' aufgerufen.\\ Die Stelle für die Rückkehr nach Bearbeitung von ''GruessGott'' wird vermerkt.| {{ :faecher:informatik:oberstufe:algorithmen:rekursion:programmaufrufstack:stack002.drawio.png |}} | |
| |\\ || |
| | Die Bearbeitung von ''GruessGott'' ist beendet.\\ Der zugehörige Speicherbereich im Call-Stack wird freigegeben.\\ Im Konstruktor wird die Verabschiedung angekündigt. | {{ :faecher:informatik:oberstufe:algorithmen:rekursion:programmaufrufstack:stack001.drawio.png |}} | |
| |\\ || |
| | Aus dem Konstruktor heraus wird die Methode ''AufWiedersehen'' aufgerufen.\\ Keine Argumente, Rücksprungadresse wird vermerkt. | {{ :faecher:informatik:oberstufe:algorithmen:rekursion:programmaufrufstack:stack003.drawio.png |}} | |
| |\\ || |
| | Der erste Aufruf von ''AufWiedersehen'' ist beendet.\\ Der Programmablauf kehrt zum Konstruktor zurück. | {{ :faecher:informatik:oberstufe:algorithmen:rekursion:programmaufrufstack:stack001.drawio.png |}} | |
| |\\ || |
| | Aus dem Konstruktor heraus wird die Methode ''AufWiedersehen'' erneut aufgerufen.\\ Keine Argumente, Die **neue** Rücksprungadresse wird vermerkt. | {{ :faecher:informatik:oberstufe:algorithmen:rekursion:programmaufrufstack:stack004.drawio.png |}} | |
| |\\ || |
| | Der zweite Aufruf von ''AufWiedersehen'' ist beendet.\\ Der Programmablauf kehrt zum Konstruktor zurück. | {{ :faecher:informatik:oberstufe:algorithmen:rekursion:programmaufrufstack:stack001.drawio.png |}} | |
| |\\ || |
| |Der Konstruktoraufruf ist beendet.\\ Der Call-Stack ist leer. | {{ :faecher:informatik:oberstufe:algorithmen:rekursion:programmaufrufstack:stack000.drawio.png |}} | |