C Funktionen

schleife

Funktion

ein benannter Block von Code, der eine bestimmte Aufgabe ausführt

🡲 Funktionen verbessern:

Modularität

große Probleme in kleinere, leichter überschaubare und unabhängige Einheiten zu unterteilen

Wiederverwendbarkeit

Code kann mehrfach aufgerufen werden, ohne ihn neu schreiben zu müssen

einmal geschriebener Code kann bei Bedarf in neuen Programmen wiederverwendet werden

leichtere Fehlersuche

Fehler können in kleineren, spezifischen Code-Blöcken leichter isoliert und behoben werden

bessere Lesbarkeit und Wartbarkeit

gut strukturierter Code ist leichter zu verstehen und zu pflegen

Bestandteile einer Funktion

Funktionsdeklaration (Prototyp) teilt dem Compiler den Namen der Funktion,

den Rückgabetyp und die Parameter (falls vorhanden) mit

// funktiondeklaration, die zwei ganze zahlen addiert und eine ganze zahl zurueckgibt

int addiere(int num1, int num2);

Funktionsdefinition enthält den eigentlichen Code (Funktionskörper),

der ausgeführt wird, wenn die Funktion aufgerufen wird

int addiere(int num1, int num2) {   // funktionskopf

    return num1 + num2;             // funktionskoerper / funktionsrumpf

}

Funktionsaufruf führt die Funktion aus (übergibt Argumente)

int ergebnis = addiere(5, 3);

Aufbau / Syntax einer Funktion

return_type function_name(parameter_list) {

    // funktionskoerper 

}

return_type gibt den Datentyp des Wertes an, den die Funktion zurückgibt.

Wenn die Funktion nichts zurückgibt, wird void verwendet.

function_name, der Name der Funktion.

parameter_list, eine Liste der Parameter, die die Funktion als Eingabe akzeptiert.

Beispiel: einfache Funktion ohne Parameter \/ Rückgabewert (void)

#include <stdio.h>



// funktionsdeklaration

void grussNachricht();



int main() {

    grussNachricht(); // funktionsaufruf

    return 0;

}



// funktionsdefinition

void grussNachricht() {

    printf("Hallo von der Funktion!\n");

    // ohne return

}

Beispiel: Funktion mit Parametern und Rückgabewert

#include <stdio.h>



// funktionsdeklaration

int multipliziere(int a, int b);



int main() {

    int zahl1 = 10;

    int zahl2 = 5;

    int produkt = multipliziere(zahl1, zahl2); // funktionsaufruf mit argumenten

    printf("Das Produkt von %d und %d ist %d\n", zahl1, zahl2, produkt);

    return 0;

}



// funktionsdefinition

int multipliziere(int a, int b) {

    return a * b;

}

Parameterübergabe

Call by Value (Übergabe per Wert)

eine Kopie des Parameterwerts wird an die Funktion übergeben

Änderungen am Parameter innerhalb der Funktion

wirken sich nicht auf die ursprüngliche Variable außerhalb der Funktion aus

#include <stdio.h>



void verdoppeln(int num) {

    num = num * 2;

    printf("Wert in der Funktion: %d\n", num);

}



int main() {

    int originalZahl = 10;

    printf("Originalwert vor Aufruf: %d\n", originalZahl);

    verdoppeln(originalZahl);

    printf("Originalwert nach Aufruf: %d\n", originalZahl);

    return 0;

}

Call by Reference (Übergabe per Referenz/Zeiger)

...

Übungen:

📋 Umstrukturierung für "Fläche und Umfang eines Rechtecks"

Strukturiere dein erweitertes Programm zur Berechnung der Fläche und Umfang eines Rechtecks so um, dass

die Benutzereingabe, die Berechnung der Fläche und Umfang und die Ausgabe jeweils in einer eigenen Funktion ausgelagert wird.

📋 Exponentialfunktion

Schreibe eine Funktion die den Wert der natürlichen Exponentialfunktion e^x näherungsweise

berechnet, wobei x eine reelle Zahl ist. Grenze für n = 100 oder als Benutzereingabe.

Exponentialfunktion

📋 Primzahl

Schreibe eine Funktion, die kontrolliert, ob eine eingegebene Zahl eine Primzahl ist oder nicht.

Liste alle nicht Primzahlen bis zu der vom Benutzer eingegebenen Zahl n auf.

Arbeite dabei mit Funktionen und Übergabeparametern!

Versuche den Quellcode so einfach und übersichtlich wie möglich zu gestalten!