Académique Documents
Professionnel Documents
Culture Documents
La troisième calcule la somme d’une suite de termes de la série suivante qui converge (très
lentement) vers Π/8 :
1/(1*3) + 1/(5*7) + 1/(9*11) + …
Pour Somme_pi :a :b
Si a>b rends 0
Rends ((1/( :a*( :a+2))) + (Somme_pi :a+4 :b))
Fin
Rq : b étant la borne supérieure de l’intervalle.
Ces trois procédures ont visiblement une structure commune. En grande partie identiques, elles
ne diffèrent que par le nom de procédure, la fonction de a utilisée pour calculer le terme courant
et la fonction qui fournit la valeur suivante de a.
Nous pouvons produire chacune de ces procédures en remplissant les cases d’un même gabarit :
Pour <nom> :a :b
Si a>b rends 0
Sinon Rends (<f> :a + (<nom> (<suivant> :a) :b))
Fin
Cette structure commune met en évidence l’existence d’une abstraction utile sous-jacente.
D’ailleurs, les mathématiciens ont depuis longtemps identifié l’abstraction « somme d’une
série » et inventé la notation « sigma » comme dans :
b
∑ f(n) = f(a) + … + f(b)
n=a
pour exprimer ce concept.
De la même façon, en tant que programmeurs, nous aimerions que notre langage soit assez
puissant pour pouvoir écrire une procédure exprimant l’idée de sommation elle-même et non
pas des procédures calculant des sommes particulières.
Pour Somme :f :a :suivant :b
Si a>b rends 0
Rends ( :f :a + Somme :f ( :suivant :a) :suivant :b)
Fin
Remarquons que Somme a pour arguments les bornes inférieure et supérieure a et b, ainsi que
les procédures f et suivant. Somme s’utilise comme n’importe quelle procédure, par exemple
pour définir Somme_cubes :
Pour Somme_cubes :a :b
Somme :cube :a :suivant :b
Fin
Nous pouvons définir Somme_pi de la même façon :
Pour Somme_pi :a :b
Somme :f_pi :a :suivant_pi :b
Fin
Pour f_pi :x
Rends 1/( :x * ( :x + 2))
Fin
Pour Suivant_pi :x
Rends :x + 4
Fin
Ces procédures nous permettent de calculer une valeur approchée de Π :
8 * Somme_pi 1 1000
Somme peut servir pour bâtir d’autres concepts. Par exemple, la valeur numérique approchée
de l’intégrale définie d’une fonction f entre les bornes a et b se calcule selon la formule :
b
∫ f(x) dx = [ f(a + dx/2) + f(a + dx +dx/2) + f(a + 2dx + dx/2) + …]dx
a
pour de petites valeurs de dx. Ce que nous pouvons exprimer directement dans une procédure :
Conclusion :
Nous avons introduit la procédure Somme qui prend une procédure que nous appellerons terme
comme paramètre et calcule la somme des valeurs de terme sur un intervalle spécifié.
Pour définir Somme, il est très important de pouvoir parler d’une procédure telle que terme
comme d’une entité de plein droit sans lien avec la façon d’exprimer terme par des opérations
plus primitives.