Fonctions

Chaque tâche peut être divisée en sous-tâches, dont chacune peut être soit directement représentée sous la forme de code, ou divisée en sous-tâches plus petites. Cette méthode est appelée raffinement par étapes. Les fonctions sont utilisées pour écrire le code des sous-tâches à résoudre. Le code décrivant ce qu'une fonction effectue est appelé la définition de la fonction :

en-tête_de_la_fonction
  {
   instructions
  }

Tout ce qui se trouve avant la première accolade est l'en-tête de la définition de fonction, et tout ce qui est entre les accolades correspond au corps de la définition de la fonction. L'en-tête de la fonction inclut une description du type de la valeur de retour, le nom de la fonction (identifiant) et les paramètres formels.  Le nombre de paramètres passés à la fonction est limité et ne peut pas être supérieur à 64.

La fonction peut être appelée depuis d'autres parties du programmes et autant de fois que nécessaire. En fait, le type de retour, l'identifiant de la fonction et les types des paramètres constituent le prototype de la fonction.

Le prototype de la fonction est la déclaration de la fonction, mais pas sa définition. En raison de la déclaration explicite du type de retour et de la liste des types des arguments, la vérification stricte du type et le casting de type implicite sont possibles pendant les appels à la fonction. Très souvent, les déclarations de fonctions sont utilisées dans les classes pour améliorer la lisibilité du code.

La définition de la fonction doit correspondre exactement à sa déclaration. Chaque fonction déclarée doit être définie.

Exemple :

double                       // type de la valeur de retour
linfunc (double a, double b) // nom de la fonction et liste de paramètres
  {
                             // opérateur composite
   return (a + b);           // valeur de retour
  }

 

L'opérateur return peut retourner la valeur d'une expression située dans cet opérateur. Si nécessaire, la valeur de l'expression est convertie dans le type du résultat de la fonction. Ce qui peut être retourné : types simples, structures simples, pointeurs d'objets. Avec l'opérateur return, il n'est pas possible de retourner des tableaux, des objets classe, des variables de type structure composée.

Une fonction qui ne retourne aucune valeur doit être décrite comme retournant le type void.

Exemple :

void errmesg(string s)
  {
   Print("erreur : "+s);
  }

 

Les paramètres passés à la fonction peuvent avoir des valeurs par défaut, qui sont définies par des constantes du même type.

Exemple :

int somefunc(double a,
             double d=0.0001,
             int n=5,
             bool b=true,
             string s="string passée")
  {
   Print("Paramètre requis a = ",a);
   Print("Passe les paramètres suivants : d = ",d," n = ",n," b = ",b," s = ",s);
   return(0);
  }

 

Si l'un des paramètres a une valeur par défaut, tous les paramètres suivants doivent également avoir des valeurs par défaut.

Exemple de déclaration incorrecte :

int somefunc(double a,
             double d=0.0001,    // valeur par défaut déclarée: 0.0001
             int n,              // la valeur par défaut n'est pas spécifiée !
             bool b,             // la valeur par défaut n'est pas spécifiée !
             string s="string passée")
  {                                          
  }           

Voir aussi

Surcharge, Fonctions Virtuelles, Polymorphisme