\b;Funktionen
Mit Funktionen können Sie Ihr Programm in mehrere Abschnitte unterteilen, von denen jeder eine bestimmte Aufgabe hat. Nehmen wir folgendes Programm:
\c;
\s;extern void object::Remote( )
\s;{
\s;	send("order", 1, 100);
\s;	wait(5);
\s;	send("order", 3, 100);
\s;	wait(5);
\s;	send("order", 2, 100);
\s;	wait(5);
\s;	send("order", 4, 100);
\s;	wait(5);
\s;}
\n;
Die Anweisungen \c;send\n; und\c;wait\n; werden mehrere Male wiederholt. Es ist deshalb zweckmäßig, eine Funktion zu erstellen, die diese Anweisungen ausführt:
\c;
\s;void object::SendToPost( float op )
\s;{
\s;	send("order", op, 100);
\s;	wait(5);
\s;}
\s;extern void object::Remote( )
\s;{
\s;	SendToPost(1);
\s;	SendToPost(3);
\s;	SendToPost(2);
\s;	SendToPost(4);
\s;}
\n;
Eine Funktion kann mehrere Parameter erhalten:
\c;
\s;void Beispiel( int a, float x, string s )
\n;
Die Funktion \c;Beispiel\n; erhält folgende Parameter: einen Wert vom Typ \c;int\n; (ganze Zahl), der in die Variable\c;a\n; kommt; einen Wert vom Typ \c;float\n; (Fließkommazahl), der in die Variable \c;x\n; kommt, und einen Wert vom Typ \c;string\n; (Zeichenkette), der in die Variable \c;s\n; kommt.

Wenn Sie hingegen eine Instanz einer \l;Klasse\u cbot\class; oder ein \l;array\u cbot\Array; als Parameter übergeben, erhält die Funktion nur einen \l;Zeiger\u cbot\pointer; auf die Instanz oder das Array. Wenn der Inhalt der Instanz oder des Arrays verändert wird, wirkt sich das auch auf die Funktion aus, die den Parameter übergeben hat.

Mit der Anweisung \c;\l;return\u cbot\return;\n; kann die Funktion auch ein Ergebnis zurückgeben. In diesem Fall muss der Typ der Rückgabe anstelle des Typs \c;\l;void\u cbot\void;\n; bei der Deklaration der Funktion (erste Zeile) angegeben werden:
\c;
\s;float Mittel( float a, float b )
\s;{
\s;	return (a+b)/2;
\s;}
\s;
\s;extern void object::Test( )
\s;{
\s;	float value;
\s;	value = Mittel(2, 6);
\s;	message( value );  // wird 4 anzeigen
\s;}
\n;
Hier sind ein paar weitere Beispiele:
\c;
\s;float Pi( )
\s;{
\s;	return 3.1415;
\s;}
\s;
\s;string Sign( float a )
\s;{
\s;	if ( a > 0 )  return "positiv";
\s;	if ( a < 0 )  return "negativ";
\s;	return "null";
\s;}
\n;
Sie können mehrere Funktionen mit dem gleichen Namen, aber mit verschiedenen Parametern definieren:
\c;
\s;float Pythagoras( float a, float b )
\s;{
\s;	return sqrt((a*a)+(b*b));
\s;}
\s;
\s;float Pythagoras( float a, float b, float c )
\s;{
\s;	return sqrt((a*a)+(b*b)+(c*c));
\s;}
\n;
CBOT wird die eine oder andere Funktion aufrufen, je nach den gegebenen Parametern.

Sie können auch eine "öffentliche" Funktion mit dem Schlüsselwort \l;public\u cbot\public; deklarieren, so dass sie von anderen Robotern aus aufgerufen werden kann.

\t;Siehe auch
Die \l;CBOT-Sprache\u cbot;, \l;Variablentypen\u cbot\type; und \l;Kategorien\u cbot\category;.
