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
Presenters
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