9 - 2.2.1 C-Kurzeinführung: Funktionen [ID:14050]
50 von 165 angezeigt

Datentypen, Variablen, einfache Kontrollstrukturen, Anweisungen, Ausdrücke. Das waren alles Dinge,

die wir uns bisher angeschaut haben, die die Programmiersprache C eigentlich nicht sehr von

anderen Programmiersprachen so wie ihr sie bisher im Studium kennengelernt habt unterscheiden. Wir

kommen jetzt zum Abschnitt über Funktionen und das ist etwas worin sich C von einer Sprache wie

Java durchaus unterscheidet. So ein Stück weit kennt man es natürlich trotzdem. In Java gibt es

Methoden. Methoden ist letztendlich eine Kombination aus einem Funktionalen Teil und einem Zustand und

letztendlich beschreibt eine Methode eine Menge von Operationen auf einem Zustand. Eine Funktion ist

was ähnliches, es fehlt eigentlich nur so dieser Zustand, die Menge der Instanzvariablen. Eine Funktion

ist letztendlich einfach ein Programmstück, ein Block von Anweisungen, das mit einem Namen versehen

ist, den man zum Ablauf Parameter übergeben kann und das wenn es fertig ist bei der Rückkehr ein

Rückgabewert zurückliefern kann. Und damit sind Funktionen die ganzen elementaren Baustandes für

Programme im Bereich der nicht objektorientierten Welt, also im Bereich der prozeduralen oder

imperativen Programmierung. Sie verringern letztendlich auch die Komplexität durch zerteilen

umfangreicher schwer überblickbarer Aufgaben in kleine Komponenten. Sie erlauben die Wiederverwendung

von Programmkomponenten. Sie verbergen Implementierungsdetail von anderen Programmenteilen.

Letztendlich muss man nicht wissen wie eine Funktion in ihrem Inneren genau aufgebaut ist.

Es reicht eigentlich wenn man die Schnittstelle kennt, wenn man weiß was übergibt man der Funktion

und was bekommt man zurück, wenn man also letztendlich diese Symantec das Ganze beschrieben hat.

Ähnlich wie bei Variablen muss man Funktionen auch als erstes mal definieren bevor man sie

verwenden kann und zu einer Funktionsdefinition gehört an der Stelle jetzt nicht einfach nur

ein Name oder ein Datentyp, sondern ein bisschen mehr. Es gehört letztendlich die Schnittstelle dazu.

Die Schnittstelle besteht aus dem Ergebnistyp, also dem Datentyp den die Funktion zurück liefert,

dem Namen der Funktion und einer Liste der Parameter, der sogenannten formalen Parameter,

also der Parameter Namen, die in der Funktionsimplementierung benutzt werden um

auf die übergebenen Parameter zuzugreifen. Ja und dann gehört natürlich noch die Funktionsimplementierung

dazu, also letztendlich eine Menge von Anweisungen, die auf diesen formalen Parameter irgendwelche

Operationen ausführen oder vielleicht auch die einfach nur so irgendwelche Operationen ausführen

und die dann eben das Ergebnis berechnen, das am Schluss zurückgegeben wird. Schauen wir uns

einfach mal ein kleines Beispiel an. Eine Funktion die einen Sinus berechnet, also mathematische Funktionen

sind natürlich so der Klassiker für Funktionen. Diese Sinusfunktion ist in diesem Abschnitt hier

beschrieben. Sie liefert als Ergebnis ein Double zurück, das sehen wir hier und der Name der Funktion

ist Sinus und sie hat einen Parameter auch vom Typ Double und der Name dieses formalen Parameters ist X.

Und dann berechnet diese Sinusfunktion nach einem Algorithmus irgendwie, den können wir uns jetzt nicht

in Detail anschauen, auf der Basis von diesem X irgendwie ein Ergebnis und dieses Ergebnis wird

in dieser lokalen Variabelsumme, die diese Funktion Sinus hier definiert hat, berechnet und am Schluss,

wenn eben das Ergebnis vorliegt, dann wird dieser Wert zurückgeliefert. Diese Funktion Sinus kann

dann zum Beispiel hier in der Funktion Main aufgerufen werden. Die Funktion Main gibt als

erstes mal Ausberechnung des Sinus von als Text und mit dieser ScanF Funktion liest diese Main

Funktion jetzt ein Wert ein. Was hier als Prozent dasteht, das ist letztendlich ein Formatangabe für

den Wert da eingelesen wird. Lf steht für Long Float. Long Float ist im Endeffekt das was dann am Ende

eben den Double ergibt. Jetzt wird man sich vielleicht sagen, warum steht da nicht d für Double da.

Problem ist, dass das Prozent d für ein Integer in dezimaler Schreibweise bei diesem Format und

Beschreibung bereits benutzt wird und deswegen hat man dann also irgendwie sich für dieses Lf bei der

Entwicklung der Sprache oder der Ausgabefunktion entschieden. Und dieser Double Wert wird in der

viablen Wert abgespeichert und von ScanF dort zurückgegeben. Dieses Unsymbol des vor dem Wert

steht, das ignorieren wir jetzt momentan mal in einem späteren Kapitel. Ich werde zeigen, welchen dann noch

erzählen, was es damit auf sich hat. Also jedenfalls die ScanF Funktion liest einfach ein Double ein und

speichert ihn in der viablen Werte. So und jetzt kann die Sinus Funktion aufgerufen werden und die

Sinus Funktion wird jetzt hier im Kontext von der PrintF Funktion gleich mit aufgerufen. Das heißt, ich

mache hier ein PrintF, übergebe hier erstmal eine Zeichenkette, das ist quasi das, was ausgegeben

Teil einer Videoserie :

Zugänglich über

Offener Zugang

Dauer

00:17:24 Min

Aufnahmedatum

2020-04-24

Hochgeladen am

2020-04-25 13:06:08

Sprache

de-DE

Einbetten
Wordpress FAU Plugin
iFrame
Teilen