MINT üben

Methoden

Dreißig Übungen zu Methoden — von Kopf und Aufruf über Parameter und Rückgabe bis zur Wirkung auf main.

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
Zählwerke nach den Aufrufen
AFB IIMix

Werte das Programm aus und stelle jedes Zählwerk auf den Wert ein, der nach der Zeile in der Variablen steht.

static int zaehle(int von, int bis) {
    int n = 0;
    for (int i = von; i <= bis; i++) {
        if (i % 3 == 0) {
            n++;
        }
    }
    return n;
}

// in main:
int a = zaehle(1, 10);
int b = zaehle(7, 30);
int c = zaehle(a, b);
Drehe jede Ziffernrolle mit ▲/▼ oder ziehe sie mit Maus oder Finger nach oben bzw. unten. Mit der Tastatur: Tab zur Rolle, ↑/↓ dreht, ←/→ wechselt die Rolle, eine Zifferntaste setzt die Ziffer direkt. „Prüfen“ zeigt, ob der Stand stimmt.
Von 1 bis 10 sind 3, 6 und 9 durch 3 teilbar: a ist 3. Von 7 bis 30 sind es 9, 12, 15, 18, 21, 24, 27 und 30: b ist 8. Dann zählt zaehle(3, 8) die Zahlen 3 und 6: c ist 2.
Ansatz: Gehe den Rumpf mit den Argumenten durch: Welche Zahlen von bis liefern Rest 0?
Weiter: Die dritte Zeile benutzt die Ergebnisse der ersten beiden als Argumente.
A2
Was bewirkt der Aufruf?
AFB II

Interpretiere jeden Aufruf: Trage ein, was auf dem Bildschirm erscheint und welchen Wert die Variable x in main danach hat. Es gilt int x = 5; und:

static int plusEins(int n) { return n + 1; }
static void aendere(int n) { n = n + 1; }
static void zeige(int n) { System.out.println(n); }
Setze für jede Zeile die Ausgänge: Klick auf ein Feld schaltet ? → Zustand 1 → Zustand 2 … weiter. Tastatur: Enter/Leertaste schaltet, Pfeiltasten wandern durch die Tabelle.
AufrufAusgabex danach
plusEins(x);
x = plusEins(x);
aendere(x);
zeige(x);
zeige(plusEins(x));
System.out.println(plusEins(x));
Ohne Zuweisung geht der Rückgabewert verloren: x bleibt 5. Nur x = plusEins(x) schreibt ihn zurück. aendere verändert bloß den Parameter, eine Kopie. zeige schreibt auf den Bildschirm und liefert nichts.
Ansatz: Frage bei jeder Zeile: Wird der Rückgabewert gespeichert oder ausgegeben?
Weiter: Ein Parameter ist eine Kopie — auch wenn er n heißt, bleibt x unverändert.
A3
Balken im Raster
AFB I

Zeichne die Ausgabe des Programms ins Raster: ein Feld pro Zeichen, schwarz für #, leer für kein Zeichen.

static void balken(int n) {
    for (int i = 0; i < n; i++) {
        System.out.print("#");
    }
    System.out.println();
}

// in main:
balken(2);
balken(5);
balken(1);
balken(4);
Wähle Raute und klicke Felder an — Ziehen malt mehrere auf einmal. Jede Zeile des Rasters ist ein Aufruf von balken, von oben nach unten.
    Jeder Aufruf schreibt n Rauten und dann einen Zeilenumbruch. Die Zeilen sind also 2, 5, 1 und 4 Zeichen lang; der Rest der Zeile bleibt leer.
    Ansatz: Jeder Aufruf schreibt genau eine Zeile.
    Weiter: Das Argument gibt an, wie oft die Schleife ein # schreibt — println beendet dann die Zeile.