Académique Documents
Professionnel Documents
Culture Documents
Cours
Réalisé par :
Maroua BEN BELGACEM
Université de Monastir
Institut Supérieur d’informatique de Mahdia
1 LCE/LCS
AU. 2019/2020
Plan
1 Notions de base
4 Les tableaux
6 Les fonctions
2
Chapitre 6 :
Les FONTIONS
Programmation modulaire
Une fonction est un ensemble d’instructions structurées dans un bloc accessible via
un nom propre appelé le nom de la fonction.
Syntaxe :
6
DEFINITION
Les arguments d’une fonction sont appelés ses paramètres en langage C. Le nom de
la fonction est suivi de la liste des paramètres et de leurs types.
Il faut bien faire la différence entre les paramètres au moment de la définition d’une
fonction et les paramètres qui seront donnés lors de l’appel d’une fonction. Les
paramètres spécifiés lors de la définition d’une fonction sont qualifiés de paramètres
formels. Les paramètres transmis à la fonction lors de son appel de la fonction sont
appelés les paramètres effectifs. Un paramètre formel est une variable locale, connue
seulement à l’intérieur de la fonction pour laquelle est définie ce paramètre. Les
paramètres formels et effectifs doivent correspondre en nombre et en type ; par
contre les noms peuvent différer.
DEFINITION
NB :
La spécification du type de la valeur de retour est facultative. Si on ne précise
pas le type de valeur de retour, le type int est pris par défaut.
Il n’est pas nécessaire de spécifier le type de valeur de retour pour une fonction
qui ne renvoie pas un résultat. On peut à la limite lui associer le type void comme
type du résultat.
Le type de la valeur retournée par une fonction peut être n'importe quel type (un
type de base ou même une structure).
Une fonction peut ne pas contenir de paramètres. Dans ce cas, on peut déclarer
la liste des paramètres comme void ou simplement comme ().
8
DEFINITION
Exemple :
#include
void welcome (void) void main(void)
{ { char c;
printf ("Welcome to this fantastic program"); printf("Do you want to continue in");
printf ("\nwhich proves to you the power"); printf("\nEnglish or in French (E/F) ");
printf ("\nof the modularity. \n"); scanf("%c",&c);
} if (c == ’E’)
void bienvenue(void) welcome();
{ else
printf("Bienvenue dans ce merveilleux"); bienvenue();
printf("\nprogramme qui vous montre la");
printf("\npuissance de la modularite. \n");
}
Les fonctions welcome() et bienvenue() n’ont ni paramètre ni valeur de retour.
Remarquons cependant l’utilisation du type void et le couple de parenthèses pour l’appel
de ces fonctions. Le fait qu’il n’y ait pas de type de retour rend l’utilisation de return
superflue. 9
DEFINITION
NB :
En principe, l'ordre des définitions dans le texte du programme ne joue pas de
rôle, mais chaque fonction doit être déclarée ou définie avant d'être appelée.
Une fonction ne peut pas fournir comme résultat des tableaux, des chaînes de
caractères ou des fonctions
10
DECLARATION DES FONCTIONS
En C, il faut déclarer chaque fonction avant de pouvoir l'utiliser. La déclaration
informe le compilateur du type des paramètres et du résultat de la fonction.
A l'aide de ces données, le compilateur peut contrôler si le nombre et le type des
paramètres d'une fonction sont corrects.
Si dans le texte du programme la fonction est définie avant son premier appel,
elle n'a pas besoin d'être déclarée.
La déclaration d'une fonction se fait par un prototype de la fonction qui indique
uniquement le type des données transmises et reçues par la fonction.
Syntaxe :
11
DECLARATION DES FONCTIONS
Situation de la déclaration :
La déclaration locale d’une fonction se fait au début du bloc de la définition d’une
fonction, avant les déclarations de variables. La fonction ainsi déclarée n’est connue
que de la fonction dans laquelle elle est déclarée. On peut aussi utiliser une
déclaration globale d’une fonction avant toute définition de fonction.
12
DECLARATION DES FONCTIONS
Exemple de déclaration locale :
#include <stdio.h>
#include <math.h>
void main (void)
{
double f (double x);
float x, y;
printf ("x = ");
scanf ("%f",&x);
while (x != 1000)
{
y = f(x);
printf ("f(%f) = %f\n", x, y);
printf ("x = ");
scanf ("%f",&x);
}
}
double f(double x)
{ return ((sin(x) + log(x))/(exp(x) + 2));
}
13
DECLARATION DES FONCTIONS
Exemple de déclaration globale :
#include
#include
double f (double x);
void main (void)
{
float x, y;
printf ("x = ");
scanf ("%f",&x);
while (x != 1000)
{
y = f(x);
printf ("f(%f) = %f\n", x, y);
printf ("x = ");
scanf ("%f",&x);
}
}
double f (double x)
{
return ((sin(x) + log(x))/(exp(x) + 2)); 14
}
DECLARATION DES FONCTIONS
Nous pouvons distinguer les différents types de déclaration des fonctions comme
suit :
Déclaration locale: Une fonction peut être déclarée localement dans la fonction
qui l'appelle (avant la déclaration des variables).Elle est alors disponible à cette
fonction.
Remarques :
16
APPEL DES FONCTIONS
Pour appeler une fonction à l’intérieur d’une autre fonction, on fait référence à
son identificateur (nom) suivi éventuellement de la liste des paramètres.
17
APPEL DES FONCTIONS
Les paramètres d'une fonction sont à considérer comme des variables locales qui
sont initialisées automatiquement par les valeurs indiquées lors d'un appel.
18
APPEL DES FONCTIONS
Passage par valeur
Voyons sur deux exemples le comportement de la transmission par valeur.
Exemple 1 :
Considérons le programme suivant :
#include < stdio.h>
void affiche(int n)
{
printf("%d \n", n);
}
void main(void)
{ int n = 3;
affiche(n);
}
23
APPEL DES FONCTIONS
Il semble donc que la seule interaction que puisse avoir une fonction avec l'extérieur
est le renvoi de son résultat (ou l'utilisation de variables globales). Mais en fait, grâce
aux pointeurs, il est possible d'agir à distance. Il suffit pour cela d'envoyer non pas la
valeur d'une variable mais son adresse en mémoire (c'est à dire un pointeur sur cette
variable). La fonction appelée peut alors modifier le contenu de cet emplacement
mémoire (et donc le contenu de la variable elle-même).
24
EXERCICE
Enoncé :
Ecrire une fonction qui permet de convertir un caractère minuscule (s’il l’est) en
majuscule. Utiliser cette fonction pour convertir un texte en majuscule.
25
EXERCICE
Solution :
26
27