Vous êtes sur la page 1sur 5

ISET GAFSA TP 7 : LES FONCTIONS EN C

TP VII: LES FONCTIONS EN C

OBJECTIFS :

o Comprendre le concept de la programmation procédurale


o Savoir déclarer, programmer et utiliser les fonctions.

NOTIONS THEORIQUES :

o Notion Procédurale.
o Variable locales
o Variables globales
o Définition d’une fonction
o Déclaration d’une fonction
o Appel d’une fonction
o Passage des paramètres par valeur
o Passage de l’adresse d’une variable
o Passage de l’adresse d’un tableau

Durée:

6H
ISET GAFSA TP 7 : LES FONCTIONS EN C

1. Définition
Un module désigne une entité de données et d'instructions qui fournissent une solution à une
partie bien définie d'un problème plus complexe. Un module peut faire appel à d'autres
modules, leur transmettre des données et recevoir des données en retour.

2. La notion de blocs et la portée des identificateurs


Les fonctions en C sont définies à l'aide de blocs d'instructions. Un bloc d'instructions est
encadré d'accolades et composé de deux parties: partie déclaration est partie instruction.

a) Variables locales
Les variables déclarées dans un bloc d'instructions sont uniquement visibles à l'intérieur de ce
bloc. On dit que ce sont des variables locales à ce bloc.

b) Variables globales
Les variables déclarées au début du fichier, à l'extérieur de toutes les fonctions sont
disponibles à toutes les fonctions du programme. Ce sont alors des variables globales.

3. Déclaration, définition et appel des fonctions


En général, le nom d'une fonction apparaît à trois endroits dans un programme:

lors de la déclaration
lors de la définition
lors de l'appel
a) Définition d'une fonction
<TypeRes> <NomFonct> (<TypePar1> <NomPar1>,
<TypePar2> <NomPar2>, ...)
{
<Déclarations locales>
<Instructions>
}
Exemple
La fonction CARRE du type double calcule et fournit comme résultat le carré d'un réel fourni
comme paramètre.
double CARRE(double X)
{
return X*X;
ISET GAFSA TP 7 : LES FONCTIONS EN C

}
b) Déclaration d'une fonction
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.

<TypeRes> <NomFonct> (<TypePar1>, <TypePar2>, ...);

ou bien
<TypeRés> <NomFonct> (<TypePar1> <NomPar1>,
<TypePar2> <NomPar2>, ...);

c) Appel d’une fonction

- Les fonctions ne retournant rien : Il faut écrire le nom de la fonction, suivi de, entre
parenthèses, les différents paramètres, s'il y en a. Naturellement, on fait suivre d'un
point-virgule si on est en fin d'instruction.

Exemple:

fonction 1();
int a = 12;
fonction2(a, 345); // Il faut, naturellement, que le paramètre passé
// soit du type attendu par la fonction.

- Les fonctions retournant une valeur : Si l'on souhaite récupérer le résultat renvoyé
par une fonction, on peut tout à fait déclarer une variable du type de la donnée renvoyée par la
fonction, et lui affecter le résultat renvoyé.

Ou alors, on peut utiliser directement le résultat renvoyé, que ce soit dans un calcul, dans un
autre appel de fonction

4. Paramètres d'une fonction


Les paramètres ou arguments sont les 'boîtes aux lettres' d'une fonction. Elles acceptent les
données de l'extérieur et déterminent les actions et le résultat de la fonction.
ISET GAFSA TP 7 : LES FONCTIONS EN C

a) Passage des paramètres par valeur

En C, le passage des paramètres se fait toujours par la valeur, c.-à-d. les fonctions
n'obtiennent que les valeurs de leurs paramètres et n'ont pas d'accès aux variables elles-
mêmes.
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.
b) Passage de l'adresse d'une variable

Comme nous l'avons constaté ci-dessus, une fonction n'obtient que les valeurs de ses
paramètres.
Pour changer la valeur d'une variable de la fonction appelante, nous allons procéder comme
suit:
- la fonction appelante doit fournir l'adresse de la variable et
- la fonction appelée doit déclarer le paramètre comme pointeur.
On peut alors atteindre la variable à l'aide du pointeur.
c) Passage de l'adresse d'un tableau à une dimension

Comme il est impossible de passer 'la valeur' de tout un tableau à une fonction, on fournit
l'adresse d'un élément du tableau.
En général, on fournit l'adresse du premier élément du tableau, qui est donnée par le nom du
tableau.
Déclaration
Dans la liste des paramètres d'une fonction, on peut déclarer un tableau par le nom suivi de
crochets,
<type> <nom>[]

ou simplement par un pointeur sur le type des éléments du tableau:


<type> *<nom>
ISET GAFSA TP 7 : LES FONCTIONS EN C

Exercice 1:

Écrire un programme se servant d'une fonction MOYENNE du type float pour afficher la
moyenne arithmétique de deux nombres réels entrés au clavier.

Exercice 2:

Écrire une fonction MIN et une fonction MAX qui déterminent le minimum et le maximum
de deux nombres réel

Écrire un programme se servant des fonctions MIN et MAX pour déterminer le minimum et
le maximum de quatre nombres réels entrés au clavier

Exercice 3:

Écrire la fonction AJOUTE_CH à deux paramètres CH1et CH2qui copie la chaîne de


caractères CH2à la fin de la chaîne CH1 sans utiliser de variable d'aide

Écrire le programme principal permettant de saisir deux chaînes et de faire appel à la fonction
AJOUT_CH

Exercice 4:

Écrire la fonction IsPalindrome qui permet de vérifier si le nom en paramètre est palindrome
ou non. La fonction retourne vrai si c'est le cas et faux sinon

Écrire le programme principal permettant de saisir un nom et de faire appel à la fonction


IsPalindrome

Exercice 5:

Écrire un programme qui permet de remplir un tableau d’entiers de dimension N (tel que
N≤50) et d’afficher les nombres impairs.

NB: Le programme doit comporter au minimum une fonction et deux procédures.