81 lines
2.2 KiB
Plaintext
81 lines
2.2 KiB
Plaintext
\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;.
|