MINT üben

Lokale und globale Variablen

Dreißig Übungen zu lokalen und globalen Variablen: Gültigkeit, Lebensdauer, Verdecken und Seiteneffekte.

Dein Fortschritt:
0 / 0 Aufgaben
1

Übungsaufgaben

Dreißig Übungen in gemischter Reihenfolge — du klickst, ziehst, ordnest, rechnest und knobelst. Jede Übung gibt dir sofort eine Rückmeldung, und zu jeder Aufgabe gibt es zwei gestufte Tipps: Der erste zeigt die Richtung, der zweite den entscheidenden Schritt. Die Chips zeigen das Anforderungsniveau: AFB I heißt wiedergeben und direkt anwenden, AFB II selbst entscheiden und verknüpfen, AFB III begründen, beurteilen oder eine Falle durchschauen. Aufgaben mit dem Chip Mix verbinden Wissen aus früheren Unterkapiteln, bei Trick steckt eine Falle drin. Fährst du über ein unterstrichenes Arbeitswort, siehst du, was es genau von dir verlangt.

A1
Variablen im Thermostat
AFB I

Im Bild siehst du den Quelltext einer Klasse. Nenne die Art der markierten Variablen und die Bedeutung der Klammer: Hefte jedes Etikett an den passenden Marker. Ein Etikett bleibt übrig.

Wähle oben ein Etikett und klicke dann auf den passenden Marker im Bild oder in der Liste darunter. Mit der Tastatur: Tab zum Etikett, dann die Ziffer des Markers (1–4) drücken. Ein Klick auf einen beschrifteten Marker löst sein Etikett wieder. Nicht jedes Etikett wird gebraucht.
class Thermostat {int soll = 20;void an(int ziel) {int diff = ziel - soll;soll = soll + diff;}}
    soll steht außerhalb aller Operationen und ist ein Attribut (global). ziel steht im Kopf von heizen und ist ein Parameter. diff wird im Rumpf deklariert und ist lokal. An der schließenden Klammer endet der Rumpf — ziel und diff verschwinden. Einen Rückgabewert gibt es nicht (void).
    Frage bei jedem Marker: Steht die Variable in der Klasse, im Kopf der Operation oder im Rumpf?
    Die Variablen in den Klammern des Kopfs sind Parameter. Mit der schließenden Klammer des Rumpfs endet der Gültigkeitsbereich der Parameter und der lokalen Variablen.
    A2
    this und das Verdecken
    AFB III

    Zeige durch schrittweises Auswerten, welchen Wert r nach der letzten Zeile hat. Java wertet die Summe von links nach rechts aus.

    Java
    int gesamt = 0;      // Attribut
    
    int schritt(int k) {
        int gesamt = k * 2;
        this.gesamt = this.gesamt + k;
        return gesamt + this.gesamt;
    }
    
    int r = schritt(1) + schritt(2) + schritt(3) + schritt(4);
    Schiebe den Regler auf deine Antwort — Pfeiltasten bewegen ihn feiner. Nach dem Prüfen siehst du den Trefferbereich.
    080
    Die lokale Variable gesamt ist jedes Mal 2k, das Attribut this.gesamt wächst über alle Aufrufe: 1, 3, 6, 10. Rückgaben: 2 + 1 = 3, 4 + 3 = 7, 6 + 6 = 12, 8 + 10 = 18. Summe: 3 + 7 + 12 + 18 = 40.
    Rechne jeden Aufruf einzeln: Die lokale Variable gesamt ist immer 2k, das Attribut this.gesamt wächst von Aufruf zu Aufruf.
    Der Rückgabewert ist gesamt + this.gesamt. Schreibe die vier Rückgaben untereinander auf und addiere sie.
    A3
    Lebenslauf einer lokalen Variable
    AFB II

    Gegeben ist ein Ausschnitt einer Java-Klasse; danach werden bonus(3) und bonus(5) aufgerufen.

    Java
    int gesamt = 0;          // Attribut
    
    int bonus(int stufe) {
        int extra = stufe * 10;
        gesamt = gesamt + extra;
        return extra;
    }

    Erläutere den Ablauf der beiden Aufrufe, indem du die Vorgänge in die richtige Reihenfolge bringst.

    Ziehe die Karten in die richtige Reihenfolge — mit der Tastatur: ↑/↓ verschiebt, Shift+↑/↓ wechselt nur den Fokus.
    1Aufruf bonus(5): stufe und extra entstehen neu — ohne alte Werte; gesamt wird 80.
    2Das Attribut gesamt wird auf 30 erhöht.
    3Aufruf bonus(3): Der Parameter stufe entsteht mit dem Wert 3.
    4bonus endet: stufe und extra werden gelöscht, gesamt bleibt 30.
    5Die lokale Variable extra entsteht mit dem Wert 30.
    6return liefert 30 an den Aufrufer.
    Parameter und lokale Variablen leben nur während eines Aufrufs. Das Attribut überdauert alle Aufrufe und sammelt: 30 + 50 = 80.
    Beginne mit dem ersten Aufruf: Was entsteht beim Start von bonus(3), und was verschwindet an seinem Ende?
    Das Attribut gesamt überlebt das Ende des ersten Aufrufs, extra und stufe nicht. Der zweite Aufruf beginnt mit neuen lokalen Variablen.