MINT üben

Lokale und globale Variablen

Dreißig interaktive Übungen zu lokalen und globalen Variablen, Verdecken und Seiteneffekten — von AFB I bis AFB III.

Dein Fortschritt:
0 / 0 Aufgaben
1

Übungsaufgaben

Dreißig interaktive Übungen zum Klicken, Ziehen und Knobeln — von AFB I bis AFB III. Jede Übung gibt dir sofort Rückmeldung.

A1
Eintritt und Gäste
AFB I

Ein Freibad zählt seine Gäste und berechnet den Eintritt:

Java
int gaeste = 2;          // Attribut

int eintritt(int gruppe) {
    int summe = gaeste + gruppe;
    gaeste = summe;
    return summe * 3;
}

Nacheinander werden eintritt(1), eintritt(3), eintritt(4) und eintritt(5) aufgerufen. Fasse den Ablauf in der Tabelle zusammen: Trage ein, wie viele Gäste danach gezählt sind und was der Aufruf zurückgibt. Die erste Zeile ist vorgegeben.

Fülle alle Felder aus und prüfe dann. Dezimalzahlen mit Komma oder Punkt; Enter prüft ebenfalls.
Aufrufgaeste danachRückgabe in €
eintritt(1)39
eintritt(3)
eintritt(4)
eintritt(5)
Das Attribut gaeste wächst bei jedem Aufruf um die Gruppe: 3, 6, 10, 15. summe ist lokal und entsteht neu; der Rückgabewert ist immer das Dreifache der neuen Gästezahl.
Gehe die Aufrufe der Reihe nach durch. Welche Zahl gilt jeweils vor dem Aufruf für gaeste?
Die neue Gästezahl ist die alte plus die Gruppe. Der Rückgabewert ist das Dreifache davon.
A2
Preis nach Maß
AFB II

Eine Kantine berechnet Preise für Menüs. Es gibt zwei Fassungen der Operation preis.

Fassung 1:

Java
double grund = 12;      // Attribut

double preis(int n) {
    double grund = 5 + 2 * n;
    return grund * 3;
}

Fassung 2:

Java
double grund = 12;      // Attribut

double preis(int n) {
    double grund = 5 + 2 * n;
    return grund * 3 + this.grund;
}

Ermittle mit dem Regler jeweils die kleinste Zahl n, für die der Preis mindestens 60 € beträgt.

Verschiebe den Regler (ziehen oder auf die Skala tippen) bzw. nutze die Knöpfe − und +; die Werte darüber laufen live mit. Tastatur: Tab zum Regler, ←/→ ein Schritt, Bild↑/Bild↓ zehn Schritte, Pos1/Ende Anfang/Ende, Enter prüft.

Fassung 1: grund ist 5 + 2 · n und verdeckt das Attribut 12. Der Preis ist 3 · (5 + 2 · n); n = 7 ergibt 57 €, n = 8 ergibt 63 €. Fassung 2: this.grund greift auf das Attribut 12 zu, der Preis ist 3 · (5 + 2 · n) + 12; n = 5 ergibt 57 €, n = 6 ergibt 63 €.
Frage dich in beiden Fassungen, welches grund an welcher Stelle gemeint ist: die lokale Variable oder das Attribut.
In Fassung 1 geht nur die lokale Variable in den Preis ein. In Fassung 2 kommt mit this.grund das Attribut 12 hinzu, deshalb genügt ein kleineres n.
A3
Die Operation setzeLimit
AFB II

Ein Navigationsgerät besitzt das Attribut limit (die erlaubte Höchstgeschwindigkeit). Erstelle die Operation setzeLimit: Sie soll den übergebenen Wert im Attribut speichern und den bisherigen Wert des Attributs zurückgeben. Drei Bausteine gehören nicht dazu.

Setze den Bauplan von links nach rechts zusammen. Ein Klick legt den Baustein auf den nächsten freien Platz, ein Klick im Bauplan legt ihn zurück. Enter funktioniert genauso.
Der Parameter limit verdeckt das Attribut. Der alte Wert muss mit this.limit gelesen werden, bevor er überschrieben wird (this.limit = limit). limit = limit weist dem Parameter sich selbst zu und ändert das Attribut nicht; int alt = limit würde den neuen Wert merken.
Der Parameter und das Attribut heißen gleich. Überlege, wie du in der Operation an das Attribut herankommst.
Zuerst den alten Wert des Attributs in einer lokalen Variable sichern, dann das Attribut überschreiben, am Ende die gesicherte Variable zurückgeben.