Académique Documents
Professionnel Documents
Culture Documents
Les fonctions
I. Introduction
En langage C, les sous-programmes s’appellent des fonctions. L'imbrication de fonctions
n'est pas autorisée en C : une fonction ne peut pas être définie à l'intérieur d'une autre
fonction. Par contre, une fonction peut appeler une autre fonction.
Une variable connue uniquement d'une fonction ou de main() est une variable
locale.
Une variable connue de tout le programme est une variable globale.
Exemple :
#include <stdio.h>
#include <conio.h>
void main( ) /* programme principal */
{
void carre(void) ; /* déclaration de la procédure */
clrscr();
carre( ); /* appel de la procédure */
getch( );}
Exemple :
#include <stdio.h>
#include <conio.h>
void main()
{
int carre(int) ; /* ou aussi int carre(int x) ; */
int n1, n2, res1, res2;
clrscr();
printf("ENTRER UN NOMBRE: ");
scanf("%d",&n1);
res1 = carre(n1);
printf("ENTRER UN AUTRE NOMBRE: ");
scanf("%d",&n2);
res2 = carre(n2);
printf("LES CARRES SONT: %d %d",res1,res2);
getch();
}
int carre(int x)
{
int x2;
x2 = x*x;
return(x2);
}
V. Le passage de paramètres
Avec l’instruction return d’une part et la liste des paramètres d’autre part, une
fonction dispose de deux moyens pour communiquer ou pour échanger des données avec
d’autres fonctions.
Exemple :
Fonction permettant d'échanger la valeur de 2 variables :
Syntaxe qui conduit à une erreur : PASSAGE DES PARAMETRES PAR VALEUR
#include <stdio.h>
#include <conio.h>
void permuter(int x,int y)
{
int temp;
temp= x;
x = y;
y = temp;
}
void main()
{
int a = 5 , b = 8;
clrscr();
permuter(a,b);
printf(« a=%d\n », a) ;
printf(« b=%d\n », b) ;
getch();
}
Application : Soit un programme permettant de saisir une suite de caractères qui se termine
par ‘#’. La saisie est réalisée caractère par caractère. Le programme calcule et affiche ensuite
le nombre total associé aux séparateurs (un caractère est dit séparateur s’il est un des
caractères suivant : ‘.’, ‘,’, ‘ ;’, ‘ :’, ‘ ?’, ‘ !’), caractères numériques, caractères alphabétiques
minuscules, caractères alphabétiques majuscules, autres caractères.
Correction :
#include<stdio.h>
#include<conio.h>
int est_num(char);
int est_maj(char);
int est_min(char);
int est_sep(char);
void main()
{
char c;
int nb_sep=0,nb_num=0,nb_car_min=0,nb_car_maj=0,nb_aut=0 ;
clrscr();
c=getche();
while(c!='#')
{
if(est_num(c))
nb_num++;
else if (est_min(c))
nb_car_min++;
else if (est_maj(c))
nb_car_maj++;
else if(est_sep(c))
nb_sep++;
else
nb_aut++;
c=getche();
}
printf("Le nombre de séparateurs est : %d\n",nb_sep);
printf("Le nombre de caractères numériques est : %d\n",nb_num);
printf("Le nombre de caractères alphabétiques miniscules est : %d\n",nb_car_min);
printf("Le nombre de caractères alphabétiques majuscules est : %d\n",nb_car_maj);
printf("Le nombre de caractères autres est : %d\n",nb_aut);
getch();
}
int est_num(char c)
{
return((c>='0')&&(c<='9'));
}
int est_min(char c)
{
return((c>='a')&&(c<='z'));
}
int est_maj(char c)
{
return((c>='A')&&(c<='Z'));
}
int est_sep(char c)
{
return((c=='.')||(c==',')||(c==';')||(c==':')||(c=='!')||(c=='?'));
}