Funktionen und Aufrufstapel – Parameter, Rückgabewerte und Gültigkeitsbereich

InformatikAlgorithmen und ProblemlösenAlter 15–16

Wird geladen …

Mit meiner Klasse nutzen ✨ Mit KI anpassen Problem melden

Führen Sie Programme mit Prozeduren und Funktionen schrittweise aus und sehen Sie, wie jeder Aufruf einen Rahmen auf den Stapel legt: Argumente werden an Parameter gebunden, lokale Variablen entstehen, und der Rückgabewert geht an die aufrufende Zeile zurück. Vergleichen Sie lokale und globale Variablen, Wert- und Referenzübergabe sowie Rekursion in Python oder Pseudocode. Im Bibliotheksmodus rufen Sie fertige Routinen auf und erkunden Signaturen und Abstraktion.

Lektion: Unterprogramme: Prozeduren, Funktionen, Parameter und Gültigkeitsbereich

Was sie zeigt

Ein Unterprogramm ist ein benannter Codeblock, der beliebig oft aufgerufen werden kann. Bei jedem Aufruf legt der Computer einen Rahmen mit den Parametern und lokalen Variablen auf den Stapel; die Argumente werden an die Parameter gebunden, und return gibt einen Wert zurück und entfernt den Rahmen. Lokale Variablen existieren nur während des Aufrufs und können gleichnamige globale Variablen verdecken. Rekursion stapelt viele Rahmen derselben Funktion. Bibliotheksroutinen verbergen ihren Code hinter einer Signatur – so werden Programme in Module und APIs zerlegt.

So funktioniert es

Wählen Sie ein Beispiel und eine Sprache und klicken Sie auf Schritt, um jeweils eine Zeile auszuführen, oder auf Starten, um das Programm mit dem gewählten Tempo ablaufen zu lassen. Beobachten Sie den Aufrufstapel, die Hinweise unter Was in diesem Schritt geschah und das Tiefendiagramm. Mit Bearbeiten ändern Sie den Code. Wechseln Sie zu Bibliotheksroutinen, wählen Sie eine Routine, geben Sie die Argumente ein und klicken Sie auf Aufrufen.

Einstellbare Parameter

  • Modus Programm verfolgen, Bibliotheksroutinen
  • Beispiel Parameter und Rückgabewerte, Lokale und globale Variablen, Funktionen rufen Funktionen auf, Prozeduren und Funktionen, Rekursion (Fakultät), Wert- und Referenzübergabe
  • Sprache Python, Pseudocode
  • Tempo 0,5–10 Schritte/s

Fragen zum Erkunden

  1. Welche Werte sind im Aufruf area(w, 3) die Argumente und welche Namen die Parameter?
  2. Warum zeigt print(count) im Hauptprogramm nach dem Aufruf double(3) immer noch 10?
  3. Wie viele Rahmen liegen auf dem Aufrufstapel, wenn factorial(4) seinen Basisfall erreicht?