• Aucun résultat trouvé

Déclaration d’une routine

N/A
N/A
Protected

Academic year: 2022

Partager "Déclaration d’une routine"

Copied!
13
0
0

Texte intégral

(1)

Algorithmique et Langage C

www.polytech.unice.fr/žvg/index-xidian.html

Granet Vincent - Vincent.Granet@univ-cotedazur.fr

Xi’an - Octobre 2019 - Avril 2020

(2)

Routines

(3)

69/214

Introduction

En programmation procédurale, la notion de routine

(fonction/procédure) est l’outil fondamentalde structuration des programmes

Une déclarationde routines permet d’associer un nomà unesuite 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 deslangages procéduraux

(4)

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

(5)

71/214

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

les noms desparamètres formelset leurs types le type du résultat (pour une fonction)

Corps

des déclarations locales les énoncés

(6)

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 s i n o n

min b f i n s i

{ 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

f i n f o n c

(7)

73/214

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}

(8)

Procédure

On déclare uneprocé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

(9)

75/214

Exemple de procédure

Déclaration

{antécédent : a>0, b>0}

{conséquent : a = b q+r, 06r<b}

p r 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 d i v b

r a mod b {a = b q+r, 06r<b}

f i n p r o c

Appel

v a r i a b l e x, y : naturel divEnt(7,3, x, y) {7 = x 3+y = 2 3+1}

(10)

Transmission des paramètres

Paramètreformel/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

(11)

77/214

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.

(12)

Les routines en C (1)

Il n’y a que desfonctions! Si pas de paramètrevoid Une procédureest une fonction qui renvoievoid. 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| /

(13)

79/214

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, maispas de transmission par résultat en C ! On verra plus tard comment résoudre ce problème.

Références

Documents relatifs

Bien souvent les réponses sont orientées par des explications présentes dans le sujet et qui ne sont pas prises en compte:. Ou encore, des réponses

La norme XP 07- 020 n'impose pas un nombre de chiffres significatifs pour l'expression de l'incertitude mais précise que compte tenu des conditions d'évaluation

Un bon praticien réflexif sait qu'une partie de son action lui échappe, qu'il faut un travail de prise de conscience.. Un bon praticien réflexif se caractérise aussi par son

Dans cette situation, quels sont les signes corporels annonciateurs.. Qu’est-ce qui dépend de l’environnement et n’est pas sous

The UNIVAC 418-111 Real-Time Operating System File Control Routine provides preprogrammed methods of handling files on rna gnetic tape and mass storage sub-

Mais si nous pouvions alors, en interrogeant les élèves, mesurer le volume de ceux qui étaient touchés par ces sanctions, il était plus difficile de dépasser ce

 2 camions réfrigérés. Les véhicules sont utilisés pour le transport de personnes et de biens à Luxembourg-Ville ainsi que pour des missions plus longues, principalement

Fig::res f, fI and IIf sh.ow by histogran the prevalence rates of blindness estimated with and without the results of visual field test for comparisorr in 1J