Kapitel 4 Unit 2 von 5 Theorie + Übungen Dauer: ~45 Min.
Ömer
Ömer sagt:

Eine Funktion ohne Parameter ist wie ein Taschenrechner ohne Tasten. Mit Parametern kannst du Werte übergeben und mit Rückgabewerten das Ergebnis zurückbekommen. Das macht Funktionen erst wirklich mächtig! ⚡

Parameter definieren Argumente übergeben Rückgabewert mit return Mehrere Parameter Rückgabetyp wählen

📥 Parameter – Eingaben übergeben

Parameter sind Variablen in der Funktionsdefinition, die beim Aufruf mit konkreten Argumenten gefüllt werden:

parameter.cC
/* Funktion mit einem Parameter */
void begruesse_person(char initial) {
    printf("Hallo, %c!\n", initial);
}

/* Funktion mit mehreren Parametern */
void addiere_und_zeige(int a, int b) {
    printf("%d + %d = %d\n", a, b, a+b);
}

int main() {
    begruesse_person('Ö');    // Argument: 'Ö'
    begruesse_person('A');    // Argument: 'A'
    addiere_und_zeige(5, 3); // a=5, b=3
    return 0;
}
▶ Ausgabe
Hallo, Ö!
Hallo, A!
5 + 3 = 8

📤 Rückgabewerte – return

Mit return gibt eine Funktion einen Wert zurück. Der Rückgabetyp muss vor dem Funktionsnamen stehen:

return_wert.cC
#include <stdio.h>

/* Gibt das Maximum von zwei Zahlen zurück */
int maximum(int a, int b) {
    if (a > b) return a;
    else        return b;
}

/* Berechnet Flächeninhalt eines Rechtecks */
float flaeche(float breite, float hoehe) {
    return breite * hoehe;
}

int main() {
    int   m = maximum(17, 42);
    float f = flaeche(4.5f, 3.0f);
    printf("Max: %d\n", m);
    printf("Fläche: %.1f\n", f);
    return 0;
}
▶ Ausgabe
Max: 42
Fläche: 13.5

📊 Übersicht: Funktionstypen

RückgabetypParameterBeispielEinsatz
voidKeinevoid zeige()Ausgabe, Initialisierung
voidJavoid zeige(int n)Formatierte Ausgabe
intJaint max(int a, int b)Berechnung zurückgeben
floatJafloat flaeche(float b, float h)Kommarechnung
intJaint ist_gerade(int n)Ja/Nein (1/0)

✏️ Übungen

Übung 1

Funktionskopf schreiben

Schreibe den Funktionskopf (ohne Körper) für folgende Beschreibungen:

„Gibt das Minimum von zwei int-Zahlen zurück":

___ minimum(___, ___) { ... }

„Gibt 1 zurück wenn n durch 3 teilbar ist, sonst 0":

___ ist_durch3_teilbar(___) { ... }

„Gibt nichts zurück, nimmt float Celsius und gibt Fahrenheit-Umrechnung aus":

___ celsius_zu_fahrenheit(___) { ... }
Übung 2

Funktion lesen

Was gibt diese Funktion bei Aufruf ergebnis(3, 4) zurück?

int ergebnis(int x, int y) {
    int r = x * x + y * y;
    return r;
}

Rückgabewert:

3² + 4² = 9 + 16 = ?
Übung 3 – Funktionen schreiben

Grundrechenarten als Funktionen

Schreibe vier Funktionen: addiere, subtrahiere, multipliziere, dividiere – alle nehmen zwei float-Parameter und geben float zurück. Teste sie in main().

#include <stdio.h> float addiere(float a, float b) { return ___; } float subtrahiere(float a, float b) { return ___; } float multipliziere(float a, float b){ return ___; } float dividiere(float a, float b) { return ___; } int main() { printf("5.0 + 3.0 = %.1f\n", addiere(5.0f, 3.0f)); /* weitere Tests */ return 0; }
Übung 4 – Programm

BMI-Rechner als Funktion

Schreibe eine Funktion berechne_bmi(float gewicht, float groesse), die den BMI zurückgibt. Rufe sie in main() auf und gib das Ergebnis aus.

#include <stdio.h> float berechne_bmi(float gewicht, float groesse) { /* BMI = gewicht / (groesse * groesse) */ } int main() { float bmi = berechne_bmi(70.0f, 1.78f); printf("BMI: %.1f\n", bmi); return 0; }
Übung 5 – Bonus

Maximum von drei Zahlen

Schreibe eine Funktion max3(int a, int b, int c), die das Maximum von drei Zahlen zurückgibt. Nutze dabei eine bereits vorhandene max2-Hilfsfunktion:

#include <stdio.h> int max2(int a, int b) { return (a > b) ? a : b; } int max3(int a, int b, int c) { return max2(a, max2(b, c)); /* Funktionen kombinieren! */ } int main() { printf("max(3,7,5) = %d\n", max3(3, 7, 5)); /* 7 */ printf("max(9,2,9) = %d\n", max3(9, 2, 9)); /* 9 */ printf("max(1,1,1) = %d\n", max3(1, 1, 1)); /* 1 */ return 0; }
(a > b) ? a : b ist der ternäre Operator – kurz für: wenn a>b dann a, sonst b. Funktionen dürfen andere Funktionen aufrufen!