Beide Seiten, vorherige Überarbeitung Vorherige Überarbeitung Nächste Überarbeitung | Vorherige Überarbeitung |
faecher:informatik:oberstufe:algorithmen:rekursion:programmaufrufstack:start [13.01.2022 08:28] – sbel | faecher:informatik:oberstufe:algorithmen:rekursion:programmaufrufstack:start [13.01.2022 11:40] (aktuell) – 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 | {{ .: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.| {{ .: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. | {{ .:stack001.drawio.png |}} | |
| |\\ || |
| | Aus dem Konstruktor heraus wird die Methode ''AufWiedersehen'' aufgerufen.\\ Keine Argumente, Rücksprungadresse wird vermerkt. | {{ .:stack003.drawio.png |}} | |
| |\\ || |
| | Der erste Aufruf von ''AufWiedersehen'' ist beendet.\\ Der Programmablauf kehrt zum Konstruktor zurück. | {{ .:stack001.drawio.png |}} | |
| |\\ || |
| | Aus dem Konstruktor heraus wird die Methode ''AufWiedersehen'' erneut aufgerufen.\\ Keine Argumente, Die **neue** Rücksprungadresse wird vermerkt. | {{ .:stack004.drawio.png |}} | |
| |\\ || |
| | Der zweite Aufruf von ''AufWiedersehen'' ist beendet.\\ Der Programmablauf kehrt zum Konstruktor zurück. | {{ .:stack001.drawio.png |}} | |
| |\\ || |
| |Der Konstruktoraufruf ist beendet.\\ Der Call-Stack ist leer. | {{ .:stack000.drawio.png |}} | |
| |
| ---- |
| {{:aufgabe.png?nolink |}} |
| === (A1) === |
| |
| Welche Informationen kannst du den folgenden Darstellungen des Programmaufrufstacks entnehmen? Welche Informationen kannst du den Darstellungen des Stacks nicht entnehmen? |
| |
| {{ :faecher:informatik:oberstufe:algorithmen:rekursion:programmaufrufstack:stack02.drawio.png |}} |
| |
| ---- |
| |
| {{ :faecher:informatik:oberstufe:algorithmen:rekursion:programmaufrufstack:stack03.drawio.png |}} |