MINT üben

Funktionen und Header

Dreißig Übungen zu Funktionen und Headern — von Parametern über Kopien bis zur Aufteilung auf mehrere Dateien.

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
Je …, desto …
AFB II

Erläutere die Zusammenhänge rund um Funktionen, indem du jeden Satz durch Klicken auf die farbigen Wörter richtig einstellst.

Klicke auf die farbig hinterlegten Wörter: Jeder Klick schaltet zur nächsten Möglichkeit weiter. Stelle jeden Satz so ein, dass er stimmt. Tastatur: Tab zum Wort, Enter/Leertaste oder ↑/↓ schaltet um.

Je Parameter eine Funktion hat, desto Argumente braucht jeder Aufruf.

Eine Funktion mit dem Rückgabetyp liefert Wert, den man .

Wird eine Funktion main definiert, braucht sie Prototyp.

Die Zahl der Parameter bestimmt die Zahl der Argumente. void bedeutet: kein Rückgabewert. Steht die Definition vor main, kennt der Compiler die Funktion schon; steht sie danach, braucht er den Prototyp vorab.
Ansatz: Setze kleine Beispiele ein: eine Funktion mit einem Parameter, eine mit dreien.
Weiter: Bei den Sätzen mit zwei zusammenhängenden Wörtern gibt es zwei richtige Einstellungen — beide Hälften müssen zueinander passen.
A2
Verschachtelte Aufrufe
AFB II
C · Funktionen
int plus_eins(int x) { return x + 1; }
int doppelt(int x) { return 2 * x; }

// in main:
printf("%d\n", doppelt(plus_eins(doppelt(3))) - plus_eins(4));

Berechne, welche Zahl ausgegeben wird.

Rechne selbst und trage das Ergebnis ein — Enter prüft direkt.
Von innen nach außen: doppelt(3) = 6, plus_eins(6) = 7, doppelt(7) = 14. Dann 14 − plus_eins(4) = 14 − 5 = 9. Typischer Fehler: von außen nach innen rechnen und doppelt zuerst auf 3 und dann erst plus_eins anwenden — oder die Klammern falsch zuordnen.
Ansatz: Werte immer den innersten Aufruf zuerst aus — sein Ergebnis ist das Argument des nächsten.
Weiter: doppelt(3) ist 6. Welcher Aufruf umschließt ihn direkt?
A3
Funktion malt Zeilen
AFB IMix

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

C · linien.c (Ausschnitt)
void linie(int punkte, int leer) {
    for (int i = 0; i < punkte; i++) printf("#");
    for (int i = 0; i < leer; i++) printf(".");
    printf("\n");
}

int main(void) {
    linie(3, 5);
    linie(5, 3);
    linie(1, 7);
    linie(8, 0);
    return 0;
}
Wähle Raute und klicke Felder an — Ziehen malt mehrere auf einmal. Jede Zeile des Rasters ist ein Aufruf von linie, von oben nach unten.
    Jeder Aufruf liefert eine Zeile aus 8 Zeichen: zuerst punkte Rauten, dann leer Punkte. Bei linie(8, 0) bleibt kein Punkt übrig.
    Ansatz: Jeder Aufruf schreibt genau eine Zeile; die erste Schleife druckt die Rauten.
    Weiter: Die Zahl punkte steht zuerst, danach kommen leer Punkte — die Summe ist immer 8.