Vous êtes sur la page 1sur 3

Bases d'Algorithmique

Séquence 1 - Algorithmes

La chaîne des opérations nécessaires à la résolution automatique de problèmes est la suivante :

On ne s’intéressera ici qu’aux phases 1 à 5 et plus précisément aux phases 4 (algorithmique) et 5 (programmation).

Un algorithme est la description détaillée des opérations à effectuer pour résoudre un problème. Examinons tout d’abord
quelques algorithmes dont les détails seront donnés ci-après :

exemple 1 : calcul de la somme de deux nombres : x, y --------> x+y

Le problème est simple ; l’algorithme correspondant est :

fonction somme(x,y)
début
somme = x+y ;
fin

L'écriture de l'algorithme utilise un langage spécial appelé langage algorithmique. Il s'agit d'un langage possédant des
règles syntaxiques qui le rend proche d'un langage de programmation ; en fait le passage du langage algorithmique à un
langage de programmation n'est souvent qu'une simple traduction.

L'algorithme consiste ici en un seul module dont le nom est "fonction somme(x,y)". Le corps du module est délimité par
les mots "début" et "fin" et consiste ici en une seule instruction : somme = x+y ; . On notera qu'une instruction se termine
par un ";". Ce module est du type fonction car ce module restitue une valeur (et une seule), la somme de x et de y qui
figurent ici en paramètres d'entrée. Le résultat s'appelle somme, du nom de la fonction. Le signe "=" employé dans
l'unique instruction n'est pas, contrairement à ce que l'on peut penser, le signe d'égalité mathématique, mais représente
une affectation : la valeur x+y est affectée à la variable somme.

Ainsi, dans l'instruction "x = 3 ; ", la valeur 3 est affectée à la variable x. De même dans l'instruction "y = 2x - 1 ;", la variable
y reçoit le double de la valeur de x diminué de 1. Enfin, dans l'instruction "z = z + 1 ;", la nouvelle valeur de la variable z est
obtenue en augmentant de 1 l'ancienne valeur de z. On voit clairement sur cet exemple la différence entre l'égalité et
l'affectation.
exemple 2 : calcul de factorielle n : n! = 1.2.3.4......n (avec par convention 0! = 1) . On veut donc, à partir de n, obtenir n!. Il y
a plusieurs façons de procéder. L’algorithme ci-dessous décrit une solution :

fonction facto1(n)
début
facto1 = 1 ;
Si (n>0) alors
Pour i=2 à n faire
facto1 = facto1* i ;
FinPour
FinSi
fin

Comme on le verra ci-dessous, il existe d'autres façons de calculer la factorielle d'un nombre. Il existe en général, en effet,
plusieurs algorithmes pour résoudre le même problème. Le module est ici plus important que celui de l'exemple 1. Il
contient des structures conditionnelles et itératives que nous expliciterons plus loin. Comme dans le cas de l'exemple 1,
ce module est une fonction qui fournit un résultat : la factorielle de n (qui est un paramètre d'entrée). On notera, dans
l'instruction "facto1 = facto1*i ;"que la nouvelle valeur de facto1 est obtenue en multipliant l'ancienne valeur de facto1 par
la valeur de i.

exemple 3 : calcul de la somme de n nombres. Soit un tableau de n nombres :

x[1], x[2], x[3],........, x[n]

On désire obtenir la somme x[1] + x[2] + x[3] +........+ x[n]

L’algorithme correspondant peut s’écrire :

fonction somtab(x[ ], n)
début
somtab = 0 ;
Pour i = 1 à n faire
somtab = somtab + x[i] ;
FinPour
fin

On retrouve ici encore une fonction dont le corps contient une structure itérative.

Exercices

1 - Ecrire un algorithme donnant la moyenne de trois nombres.

2 - Ecrire un algorithme de résolution de l'équation du premier degré ax+b = 0

3 - Etant donné un tableau de nombres, déterminer quel est le plus petit. (On s'inspirera de l'exemple 3).

4 - Que fait l'algorithme suivant ?

fonction tagada (tsointsoin[ ], n)


début
tagada = 0
Pour i = 1 à n faire
tagada = tagada +
tsointsoin*tsointsoin
FinPour
fin
Solution des exercices

1 - Voici une proposition d'algorithme

moyenne(a,b,c)
début
moyenne =
(a+b+c)/3
fin

2 - Equation du premier degré ax+b =0

solution (a, b)
début
Si a = 0 alors
Si b = 0 alors
solution =
"indétermination"
Sinon
solution =
"impossiblité"
FinSi
Sinon
solution = -b/a
FinSi
fin

3 - Plus petit nombre d'un tableau de nombres

Minimum(tab[ ],n)
début
Minimum = tab[1]
Pour i = 1 à n faire
Si tab[i] < Minimum
alors
Minimum = tab[i]
FinSi
FinPour
fin

4 - Cet algorithme décrit la manière d'obtenir la somme des carrés des nombres du tableau.

Vous aimerez peut-être aussi