faecher:informatik:oberstufe:algorithmen:rekursion:programmaufrufstack:start

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen Revision Vorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
faecher:informatik:oberstufe:algorithmen:rekursion:programmaufrufstack:start [13.01.2022 10:19] sbelfaecher:informatik:oberstufe:algorithmen:rekursion:programmaufrufstack:start [Unbekanntes Datum] (aktuell) – gelöscht - Externe Bearbeitung (Unbekanntes Datum) 127.0.0.1
Zeile 1: Zeile 1:
-====== Der Programmaufrufstack ====== 
  
-Unter dem (Programm)Aufrufstapel (englisch call stack, procedure stack) versteht man einen besonders genutzten Stapelspeicher, der zur Laufzeit eines Programms den Zustand der gerade aufgerufenen Unterprogramme enthält.  
- 
-Was bedeutet das? Wir betrachten ein Beispiel: 
- 
-<code java> 
-public class Hallo 
-{ 
-    public Hallo(String name) 
-    { 
-        System.out.println("Hallo " + name + "!"); 
-        GruessGott(name); 
-        System.out.println("Ich glaube, gleich verabschiede ich mich..."); 
-        AufWiedersehen();  
-        AufWiedersehen(); 
-    } 
-     
-    public void GruessGott(String name) { 
-        System.out.println("Grueß Gott, " + name + "!"); 
- 
-    } 
-     
-    public void AufWiedersehen() { 
-        System.out.println("Ciao!"); 
-    } 
- 
-} 
-</code> 
- 
-Beim Aufruf des Konstruktors werden also zwei weitere Methoden, also "Unterprogramme", aufgerufen, der Ablauf sieht etwa wie folgt aus. 
- 
-{{ :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. 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 |}}                 | 
- 
----- 
-{{: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 |}} 
  • faecher/informatik/oberstufe/algorithmen/rekursion/programmaufrufstack/start.1642065549.txt.gz
  • Zuletzt geändert: 13.01.2022 10:19
  • von sbel