Funktionen I
Vorbemerkungen
Für dieses Kapitel (und alle folgenden) ist es sehr wichtig, dass die Vorkenntnisse sicher sitzen. Die Anzahl Begriffe und Fachwörter, die hier verwendet werden, greifen auf das bisherige Vorwissen zurück.
Sinn und Zweck
Ich bemühe wieder einmal ein alltägliches Beispiel, um zu erklären was man eigentlich mit Funktionen erreichen will.
Nehmen wir das Beispiel Wörterbuch. Was ist eigentlich eine Wörterbuch?
Ein Wörterbuch besteht aus vielen, vielen Worten.
Wenn man nun aber etwas sucht, beispielsweise Klobürste, wo fängt man an zu suchen?
Offensichtlich nicht am Anfang des Buches und nicht am Ende. Aber warum tut man das?
Weil das Wörterbuch so organisiert ist, dass Wörter nach ihren Anfangsbuchstaben gruppiert werden. Also kleinere Einheiten gebildet werden, damit man schnell das findet was man sucht.
Genauso ist es bei Computer-Programmen. Es gibt ein großes Ganzes
"Das Programm", und dieses Programm zerlegt man in kleine sinnvolle Einzelteile
"Funktionen".
Modularisierung von Programmen
Wir können in unser Programm bisher untereinander sehr, sehr, sehr viele Befehle untereinanderschreiben. Dann haben wir ein langes Programm, aber wenn wir einen bestimmten Fehler suchen, dann finden wir den vielleicht nie, weil wir keine Unterteilung haben.
Hier kommen jetzt Funktionen ins Spiel. Mit Hilfe von Funktionen kann ein Progamm in verschiedene kleinere Einheiten zerlegt werde (Fachbegriff:
Modularisierung).
Beispiel
Wir haben ein langes Programm, bei dem am Anfang dem Benutzer eine Anleitung angezeigt werden soll, anschließend soll der Benutzer eine Eingabe machen und ein Ergebnis angezeigt werden.
Ohne Funktionen sähe das dann so aus:
int main(){
//20 Anweisungen zur Anleitung
//10 Anweisungen zur Eingabe
//20 Anweisungen zur Berechnung
//10 Anweisungen zur Ausgabe
}
insgesamt sehr lang und unübersichtlich. Viel schöner wäre doch sowas:
int main(){
//1 Anweisung "zeige Anleitung an"
//1 Anweisung "führe Berechnung durch"
}
dann würde das Programm in zwei kleinere Einheiten zerlegt.
Wie kann man nun in C ein Programm in kleinere Einheiten zerlegen:
Syntax von Funktionen in C
[Datentyp] Name_der_Funktion()
{
// Befehle, die innerhalb der Funktion ausgeführt werden
}
Jede Funktion muss einen Datentyp haben, dieser kann jeder normale Datentyp sein, aber es ist zusätzlich auch void möglich.
void (engl. = nichts) bedeutet, dass die Funktion keinen Datentyp hat. Die Bedeutung des Datentyps wird in
Funktionen Teil II erklärt.
Code Beispiel
Ein ganz einfaches Beispiel für eine Programm mit einer Funktion sieht dann so aus:
void MyFirstFunction(){ //<--
Funktionsdeklaration printf("Hallo Welt");
}
int main(){
MyFirstFunction(); //<-- dies ist ein
function call }
Man erkennt, dass eine Funktion oberhalb unseres main-Programmteils stehen muss. Das ist auch logisch, weil man (wie bei Variablen) erst etwas deklarieren muss, bevor man es verwenden kann.
Der gesamte Teil von void bis } nennt man eine
Funktionsdeklaration. Damit man diese Funktion verwenden kann, muss man sie im Hauptprogramm aufrufen.
Dies geschieht mit Hilfe eines
function calls. Dieser besteht nur aus dem Namen der Funktion und den () dahinter.
Vorteile durch Modularisierung
- Das Hauptprogramm wird übersichtlicher
- Bestimmte Teile des Programms sind leichter zu finden
- Fehler lassen sich einschränken, wo sie möglicherweise sind.
- Funktionen lassen sich mehrfach verwenden!
Insbesondere der letzte Punkt ist wichtig, weil man kann eine Funktion
mit einem function call mehrfach aufrufen. z.B.:
int main(){
MyFirstFunction();
MyFirstFunction();
MyFirstFunction();
}
Hier wird die Funktion MyFirstFunction 3x aufgerufen und alles was in MyFirstFunction drinsteht wird hintereinander immer wieder ausgeführt.
Infoblätter und Arbeitsblätter
Modularisierung mit FunktionenInfo: Ein Programm kann sehr schnell unübersichtlich werden, daher muss man es in kleine Teile (
Module) zerlegen. Dies nennt man
Modularisieren eines
Programms. In C steht einem z.B. die Funktion zur Verfügung. Dieses
Infoblatt erklärt die Verwendung einer ganz einfachen Funktion in C.
Übungen zu Funktionen
Info: Ein paar ganz einfache Aufgaben zum Erstellen von Funktionen ohne Datentyp und ohne Parameter.