Vous êtes sur la page 1sur 13

Algorithmique et Langage C

Algorithmique et Langage C
www.polytech.unice.fr/žvg/index-xidian.html

Granet Vincent - vg@unice.fr

Xi’an - Octobre 2018 - Avril 2019


Algorithmique et Langage C
Routines

Routines

69/215
Algorithmique et Langage C
Routines

Introduction

En programmation procédurale, la notion de routine


(fonction/procédure) est l’outil fondamental de structuration des
programmes
Une déclaration de routines permet d’associer un nom à une suite
d’énoncés, et d’utiliser ce nom comme abréviation chaque fois que
la suite apparaît dans le programme : appel de routine
Un programme est, avant tout, un ensemble de déclarations de
routines
Les langages (comme C) qui suivent cette méthodologie
s’appellent des langages procéduraux

70/215
Algorithmique et Langage C
Routines

Intérêt

1 Structuration. Les routines définissent des composants


opérationnels fermés et cohérents qui représentent des parties ou
sous-parties du problème à résoudre et qui structurent ainsi
logiquement le programme
2 Localisation. ce sont des unités textuelles dans lesquelles sont
définies, non seulement les actions à exécuter, mais aussi des
données ou objets locaux dont l’existence est limitée à celle de la
procédure ou de la fonction dans laquelle ils sont définis.
3 Paramétrage. Grâce à la notion de paramètre, il sera possible
d’appeler une routine pour exécuter une même suite d’énoncés
sur des valeurs de données différentes

71/215
Algorithmique et Langage C
Routines

Déclaration d’une routine


routine = en-tête + corps
Rôle
associer un nom à une suite d’énoncés qui porte sur des objets formels
qui prendront des valeurs effectives lors de son appel

En-tête
le nom de la routine
le noms des paramètres formels et leurs types
le type du résultat (pour une fonction)

Corps

des déclarations locales


les énoncés 72/215
Algorithmique et Langage C
Routines

Exemple de fonction (1)

Déclaration

{antécédent : a, b, c ∈ Z}
{Rôle : renvoie minimum(minimum(a,b),c)}
f o n c t i o n min3(données a, b, c: entier): entier
v a r i a b l e min : entier
s i a<b a l o r s
min ← a
sinon
min ← b
finsi
{ min = minumum(a,b) }
s i c<min a l o r s min ← c f i n s i
{ min = minimum(min,c) = minimum(minimum(a,b),c) }
r e n d r e min
finfonc

73/215
Algorithmique et Langage C
Routines

Exemple de fonction (1)

Appel

x ← min3(y, 4, z)
{x = minimum(minimum(y,4),z)}
écrire(min3(2 x, 0, a b))
{le minimum(minimum(2 x,0), a b) est écrit sur SS}

74/215
Algorithmique et Langage C
Routines

Procédure

On déclare une procédure :


lorsqu’une routine doit renvoyer plusieurs résultats (mais aussi
aucun)
Une procédure est une routine avec laquelle les résultats calculés
sont obtenus par l’intermédiaire de paramètres formels résultats
nommés dans son en-tête

75/215
Algorithmique et Langage C
Routines

Exemple de procédure

Déclaration
{antécédent : a>0, b>0}
{conséquent : a = b q+r, 06r<b}
pr o c é d u r e divEnt(données a, b : naturels
r é s u l t a t s q, r : naturels)
q ← a div b
r ← a mod b
{a = b q+r, 06r<b}
finproc

Appel

v a r i a b l e x, y : naturel

divEnt(7,3, x, y)
{7 = x 3+y = 2 3+1}

76/215
Algorithmique et Langage C
Routines

Transmission des paramètres

Paramètre formel/effectif « donnée » et « résultat »

Règles

1 le nombre de paramètres effectifs est identique à celui des


paramètres formels
2 la correspondance entre les paramètres formels et effectifs se fait
sur la position
3 les paramètres effectifs et formels doivent être de type compatible
4 mode transmission : par valeur / par résultat

77/215
Algorithmique et Langage C
Routines

Modes de transmission des paramètres

Données
Transmission par valeur. elle a pour effet d’affecter au paramètre
formel la valeur du résultat de l’évaluation du paramètre effectif. Le
paramètre effectif sert à fournir une valeur initiale au paramètre
formel

Résultats
Transmission par résultat. elle a pour effet, à la fin de l’exécution de
la routine, d’affecter au paramètre effectif résultat la valeur du
paramètre formel. Les paramètres effectifs résultats sont
nécessairement des noms de variables.

Données/Résultats
Transmission par résultat.
78/215
Algorithmique et Langage C
Routines

Les routines en C (1)

Il n’y a que des fonctions ! Si pas de paramètre void


Une procédure est une fonction qui renvoie void.
Un seul mode de transmission : par valeur.

/ Rôle : renvoie la valeur absolue de x /


i n t abs( i n t x) {
i f (x<0) x = −x;
/ x>=0 /
r e t u r n x;
}

a = abs(y);
/ a == |y| /
b = abs(3 y);
/ b == |3 y| /
79/215
Algorithmique et Langage C
Routines

Les routines en C (2)

/ Rôle : échange les valeurs de a et b /


v o i d echanger( i n t a, i n t b) {
i n t aux = a;
a = b;
b = aux
}

i n t x=3, y=5;
echanger(x,y);
/ x=5 et y=3 ? non ! /

Ne fonctionne pas : a et b sont des paramètres données et résul-


tats, mais pas de transmission par résultat en C ! On verra plus tard
comment résoudre ce problème. 80/215

Vous aimerez peut-être aussi