Partie 3 CC
Partie 3 CC
Partie 3 CC
1
Fonctions en C
Les principes
◼ En C, tout est fonction (Définition, Déclaration et Appel).
◼ Une fonction peut avoir autant de paramètres que l’on veut, même
aucun (comme void main(void))
◼ Les variables déclarées dans une fonction sont locales à cette fonction
printf("Celsius\tFarenheit\n");
for(d = start; d <= end; d += step, lines++)
printf("%.1lf\t%.1lf\n", d, d * 1.8 + 32);
return lines;
}
Valeur renvoyée
3
Appeler une fonction
IMPORTANT: cette instruction spécifie comment la fonction est définie,
c’est la déclaration
#include <stdio.h>
4
#include <stdio.h>
float calcule(float, float);
int addition();
main()
{
int Val ;
Val = addition();
printf(“ %d”, Val);
}
int addition()
{
float tmp;
tmp = calcule(2.5,3) + calcule(5,7.2);
return (int)tmp;
}
6
Passage des paramètres par valeur
7
Passage des paramètres par valeur
#include <stdio.h>
main()
{
int var = 5;
void change(int v)
{
v *= 100;
printf("change: v = %d\n", v);
}
8
FONCTION RENVOYANT UNE VALEUR AU
PROGRAMME
#include <stdio.h>
main()
{
int var = 5;
int valeur;
valeur = change(var); change: v = 500
main: var = 5
printf("main: var = %d\n", var); main: valeur = 501
printf("main: valeur = %d\n", valeur);
}
int change(int v)
{
v *= 100;
printf("change: v = %d\n", v);
return (v+1);
}
9
Une fonction se termine et « rend la main » au code appelant lorsque son
exécution rencontre l’instruction : return expression; ou return;
#include <stdio.h>
main(){
int var = 5;
int valeur;
valeur = return_Val(var);
main: var = 5
printf("main: var = %d\n", var); main: valeur = 15
printf("main: valeur = %d\n", valeur);
}
int return_Val(int v)
{
if (v == 10) return (2*v);
else return (3*v);
}
10
#include <stdio.h>
int max (int a, int b) {
if (a > b) return a ;
else return b ;
}
int min (int a, int b) {
if (a < b) return a ;
else return b ;
}
int difference (int a, int b, int c) {
return (max (a, max(b,c)) - min (a, min (b, c))) ;
}
main ()
{
printf ("%d", difference (10, 4, 7)) ;
} 11
L’opérateur ternaire “?:”
return(n<2?1:((int)n*fact(n-1));
if (n<2 ) {
return 1;
} return(n<2?1:((int)n*fact(n-1));
else {
return ((int)n*fact(n-1));
}
12
Passer des tableaux aux fonctions
◼ Les tableaux peuvent être passés comme paramètres d'une fonction.
◼ Ils ne peuvent pas être retournés comme résultat d'une fonction. !
◼ La longueur du tableau ne doit pas être définie à la déclaration de la fonction.
◼ Un tableau peut être modifié dans une fonction. Il est passé par référence
(adresse) et non par valeur.
#include <stdio.h>
void somme(int x[], int n); p avant somme p après somme
main(){
int i; 1 1
int p[6] = { 1, 2,3, 5, 7, 11 };
somme(p, 6); 2 3
for (i=0;i<6;i++) 3 5
printf("%d ", p[i]);
} 5 8
7 12
void somme(int a[], int n){
11 18
int i;
for(i = n-1; i >0 ; i--)
a[i] += a[i-1];
}
13
Exemple: transposition d'une matrice
#include <stdio.h>
void transpose ( float a[][20], int n);
main()
{float matrice [20][20]; /* matrice (20,20) */
/*…*/
transpose (matrice, 3,3);
}
void transpose ( float a[][20], int n)
{ int i,j;
float tmp;
for (i=0;i<n;i++)
for(j=0;j<i;j++) {
tmp = a[i][j];
a[i][j]=a[j][i];
a[j][i]=tmp;
}
}
}
14