\b;Les fonctions
Lorsqu'un programme devient long, il est conseillé de le fragmenter en plusieurs fonctions, qui accompliront chacune une tâche bien précise. Imaginons le programe suivant¦:
\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;
On constate que les deux instructions \c;send\n; et \c;wait\n; sont répétées plusieurs fois. Il est donc judicieux de créer une fonction \c;SendToPost\n; qui effectue ces deux instructions¦:
\c;
\s;extern void object::Remote( )
\s;{
\s;	SendToPost(1);
\s;	SendToPost(3);
\s;	SendToPost(2);
\s;	SendToPost(4);
\s;}
\s;void object::SendToPost( float op )
\s;{
\s;	send("order", op, 100);
\s;	wait(5);
\s;}
\n;
Une fonction peut recevoir des données en entrée. Il faut en donner la liste, avec à chaque fois le type de la variable et le nom qui lui est donné¦:
\c;
\s;void Exemple( int a, float x, string s )
\n;
La fonction \c;Exemple\n; va recevoir un nombre entier \c;a\n;, un nombre réel \c;x\n; et une chaîne \c;s\n;.
Les \l;tableaux\u cbot\array; et les instances de \l;classes\u cbot\class; sont toujours passées par \l;référence\u cbot\pointer;.

Une fonction peut effectuer un calcul et retourner le résultat avec l'instruction \c;\l;return\u cbot\return;\n;¦:
\c;
\s;float Moyenne( float a, float b )
\s;{
\s;	return (a+b)/2;
\s;}
\s;extern void object::Essai( )
\s;{
\s;	float value;
\s;	value = Moyenne(2, 6);
\s;	message( value );  // affiche 4
\s;}
\n;
Voici d'autres exemples de fonctions¦:
\c;
\s;float Pi( )
\s;{
\s;	return 3.1415;
\s;}
\s;
\s;string Signe( float a )
\s;{
\s;	if ( a > 0 )  return "positif";
\s;	if ( a < 0 )  return "négatif";
\s;	return "nul";
\s;}
\n;
Il est autorisé de créer plusieurs fonctions ayant le même nom mais des paramètres différents¦:
\c;
\s;float Pythagore( float a, float b )
\s;{
\s;	return sqrt((a*a)+(b*b));
\s;}
\s;
\s;float Pythagore( float a, float b, float c )
\s;{
\s;	return sqrt((a*a)+(b*b)+(c*c));
\s;}
\n;
Lors de l'appel à la fonction, CBOT recherche la fonction dont les paramètres correspondent au mieux.

\t;Voir aussi
\l;Programmation\u cbot;, \l;types\u cbot\type; et \l;catégories\u cbot\category;.
