Les procédures et les fonctions ont pour objectif d'éviter les répétitions de suite d'instructions mais en ayant l'avantage de voir définir des paramètres pouvant changer dans cette suite d'instructions. Il va de soit, que bien que la chose soit autorisé par la syntaxe du langage de programmation C, il est rarement efficace de définir une fonction avec une seule instruction et des paramètres identiques au paramètres appelant. Si cette situation se produit, on utilisera plutôt la directive de compilation «#define» par exemple. Par contre, si vous souhaitez écrire des procédures et des fonctions, dans le langage de programmation C, il n'y a pas vraiment de différence dans la façon de les écrire. Ainsi, la seule façon de distinguer une fonction d'une procédure c'est la présence ou l'absence d'une valeur de retour.
Procédure
Voici tout d'abord la syntaxe d'une procédure :
void nomdeprocédure(paramètres) { instruction_exécuté1; instruction_exécuté2; instruction_exécuté3; ...; } |
Remarque
- Officiellement, en langage de programmation C, une procédure s'appelle une fonction, et une fonction s'appelle aussi une fonction. Donc, toute en C, est une fonction ! Toutefois, à titre uniquement de compréhension, dans les faits, on peut appeler une fonction avec un type de données de retour «void» une procédure, mais dans le vocabulaire du C ça n'existe pas.
Exemple
Cet exemple permet de montrer un appel d'une fonction ne retournant aucune valeur :
Essayer maintenant !
on obtiendra le résultat suivant :
Fonction sans retour de valeur !Fonction
La fonction de son côté nécessite l'utilisation d'au moins un mot réservé «return» contenu dans le corps de la routine. Il n'y a pas de position obligatoire n'y de nombre limite d'utilisation de l'instruction «return». Voici sa syntaxe :
typederetour nomdefonction(paramètres) { instruction_exécuté1; ...; return valeurderetour } |
Exemple
Cet exemple permet de montrer un simple retour de fonction :
Essayer maintenant !
on obtiendra le résultat suivant :
Valeur retourner = 144Remarques
- La fonction principale d'un programme écrit en langage de programmation C s'appelle «main». Ainsi, un programme en langage de programmation C lancera d'abord et avant tout la fonction «main» et s'il ne trouve pas de fonction avec se nom, il ne pourra pas exécuter le programme. La fonction main peut retourner le type «void» ou «int» et peut avoir des paramètres ou non. Si vous définissez une bibliothèque de fonctions, il n'est pas nécessaire de définir une fonction main.
- Vous ne pouvez pas définir 2 fois la fonction main dans le même corps du programme. Si vous le faite, vous aurez une erreur ressemblant à ceci :
- Un des aspects des fonctions C pouvant ne pas être familier aux programmeurs habitués aux autres langages de programmation, en particulier Fortran. En langage de programmation C, tous les paramètres de fonction sont passés «par valeur». Cette situation signifie que la fonction appelée reçoit les valeurs de ses paramètres dans des variables temporaires plutôt que dans les originaux. Elle conduit à des propriétés différentes de celles observées avec un langage «appel par référence» comme Fortran ou avec des paramètres VAR en Pascal, dans lesquels la routine appelée a accès au paramètre d'origine, pas à une copie locale. La principale distinction est que dans C la fonction appelée ne peut pas modifier directement une variable dans la fonction appelante; il ne peut modifier que sa copie privée et temporaire. L'appel par valeur est un atout, mais pas un passif. Elle conduit généralement à des programmes plus compacts avec moins de variables étrangères, car les paramètres peuvent être traités comme des variables locales conventionnellement initialisées dans la routine appelée.
error: redefinition of 'main' note: previous definition of 'main' was here |