C Funktionen
Das Erfolgsrezept der Software-Industrie liegt traditionell
darin, alten Code aus dem Internet zu klauen, die Hintergrundfarbe aller
Buttons und Fenster zu ändern und den doppelten Preis des alten Produkts zu
verlangen. Damit wir auch was von dem fetten Kuchen dieser florierenden
Wirtschaft abbekommen geht es in diesem Part um das Feature, das mehr Zeit, Geld
und Sex für alle verspricht: Funktionen.
Wenn bestimmt Abläufe in einem Programm öfter gebraucht
werden, wie z.B. das Anzeigen von Text auf der Konsole, werden Funktionen wie printf(" ... ") geschrieben, um nicht an jeder fünften Zeile den
Selben Code zu schreiben.
Eine Funktion sieht so aus:
/*
* Berechnet die potenz base ^ exp
*/
double pow(double base, int exp)
{
double result = 1;
if(exp >= 0)
{
// exp >= 0 => berechne
base * .... * base
for(int i = 0; i < exp; i++)
result *= base;
}
else
{
// exp < 0 => berechne
base : .... : base
for(int i = 0; i < -exp; i++)
result /= base;
}
return result;
}
Allgemein haben Funktionen folgendes Schema:
Rückgabetyp Name(Datentyp Argument 1, Datentyp Argument 2,...)
{
// ...
return Ergebnis vom Datentyp, des Rückgabetyps;
}
Die obige Funktion führt Potenzberechnungen durch. Der Input
der Funktion sind Basis und Exponent: double base, int exp und als Ergebnis
wird eine Variable vom Rückgabetyp double zurückgegeben.
Die Funktion kann nun wie folgt eingesetzt werden: double nine = pow(3.0, 3);
// 3^3.
#include <stdio.h>
/*
* Berechnet die potenz base ^ exp
*/
double pow(double base, int exp)
{
double result = 1;
if(exp >= 0)
{
// exp >= 0 => base *
.... * base
for(int i = 0; i < exp; i++)
result *= base;
}
else
{
// exp >= 0 =>
berechnet base : .... : base
for(int i = 0; i < -exp; i++)
result /= base;
}
return result;
}
int main(void)
{
for(int exp = -3; exp <= 3; exp += 3) // iteriere über die
exponenten -3, 0, 3
for(double base = -3; base <= 3; base += 2) // und
basen -3, -1, 1, 3
{
double result = pow(base, exp); // rufe pow auf
printf("%f^%d = %f
\n\n", base, exp, result);
}
getchar();
return 0;
}
Das Schlüsselwort return bricht die Funktion ab und gibt das Ergebnis
zurück:
int signum(int value)
{
if(value == 0)
return 0; // brich ab und gibt 0 zurückif(value < 0)
return -1; // brich ab und gibt -1 zurück
return 1; // nur fall value > 0 übrig!
// dieser code wird nie ausgeführt:
printf("signum wurde aufgerufen");
}
signum(0); // == 0
signum(-5); // == -1
signum(5); // == 5
void draw_smiley(void)
{printf(":-)");
}
Alternativ
void draw_smiley()
{printf(":-)");
}
Eine Funktion mit Rückgabetyp void braucht kein return, kann
aber wie folgt abgebrochen werden:
void void_func(int value)
{if(value == 0)
return;
// an dieser stelle ist value
!= 0
printf("Der von Null
verschiedene Wert ist %d", value);}
Keine Kommentare:
Kommentar veröffentlichen