La conception structurée descendante est une méthodologie pour créer des programmes complexes. Le principe, relativement standard, est de décomposer un problème complexe en un ensemble de problèmes plus simples et de résoudre chacun de ces problèmes simples (en appliquant éventuellement le même principe). Cette méthodologie est appliquée dans un grand nombre de domaines et pour une grande variété de problèmes: gestion de projets, conduite de travaux, jeux, stratégies…
Les objectifs et intérêts d’une telle méthodologie sont multiples:
printf
, scanf
…).Pour cela, on introduit les fonctions paramétrées qui permettent de réaliser des tâches qui sont répétées fréquemment. Ces fonctions sont des sous-programmes qui peuvent être appelés par le programme principal ou par un autre sous-programme. Ces tâches peuvent modifier leur comportement suivant certaines valeurs: les paramètres (cf printf
, scanf
…).
Voici, à l’aide d’un exemple, la syntaxe de définition d’une fonction. La fonction détermine le maximum de deux entiers.
Un certain nombre d’éléments sont remarquables sur cet exemple:
int
) puisqu’une fonction fournit obligatoirement un résultat, quel est son nom et quels sont les paramètres de cette fonction ainsi que leur type. Tous les paramètres présents sur la première ligne (entre parenthèses) doivent obligatoirement être définis.return
suivi d’une variable ou d’une expression indique quelle valeur retourne la fonction. Bien entendu la variable / expression qui suit return
doit être du même type que celui spécifié sur la première ligne.Une fois définie cette fonction peut-être utilisée par un programme ou un sous-programme. Comme par exemple dans l’exemple suivant où la fonction max
est appelée avec différents jeux de paramètres:
L’appel de la fonction max
dans le programme ci-dessus implique un certain nombre d’étapes:
max
est successivement appelé avec (4, 7)
, (4, 5)
, (5, 19)
, (10, 19)
a
, la seconde pour b
. Ainsi pour le premier appel de max
, a
vaut 4
et b
vaut 7
.return
return
. Pour le premier appel de max
, la valeur retournée est 4
.z
).Dans certains cas, le sous-programme ne nécessite pas de retourner de valeur (par exemple pour imprimer des choses à l’écran). Dans ce cas on parle de procédures et en C
, la syntaxe est la même que pour une fonction sauf que:
void
return
ne sont suivis d’aucune valeur / variable / expressionPar exemple:
Le principe de fonctions en C
ne permet de retourner qu’au plus une valeur. Ceci est une limitation quand on souhaiterait retourner plusieurs valeurs avec une seule fonction. On verra dans un chapitre suivant (i.e. sur les pointeurs) comment contourner cette limitation. La solution proposée permettra en outre de régler un autre problème: certains types complexes ne peuvent pas / ne doivent pas être retournés.
Voici ce qu’il faut retenir sur les fonctions et procédures
Syntaxe: