Académique Documents
Professionnel Documents
Culture Documents
Cour Algorithme PDF
Cour Algorithme PDF
1
>> for r =1.1:-0.1:0.75
disp(['r = ', num2str(r)]);
end
r = 1.1
r=1
r = 0.9
r = 0.8
>>
Voici un exemple d'utilisation d'une boucle pour calculer n! (le lecteur attentif sait calculer n!
plus simplement ... par exemple en exécutant prod([1:n])).
>> n = 4;
>> nfac = 1;
>> for k = 1:n
nfac = nfac*k;
end
>> nfac
nfac =
24
>>
b- Boucle WHILE : tant que . . . faire
Une seconde possibilité pour exécuter une séquence d'instructions de manière répétée consiste
à effectuer une boucle tant qu'une condition reste vérifiée. On arrête de boucler dès que cette
condition n'est plus satisfaite. Ce processus est mis en œuvre par la boucle while. c.-à-d.
l’instruction While répète l’exécution d’un groupe d’instruction un nombre indéterminé de fois
selon la valeur d’une condition logique. Elle a la forme générale suivante :
Syntaxe :
While expression logique (condition)
Séquence d'instructions
end
où
expression logique : est une expression dont le résultat peut être vrai ou faux;
séquence d'instructions : est le traitement à effectuer tant que expression logique est
vraie.
2
Interprétation :
Tant que expression logique est vraie le traitement séquence d'instructions est exécuté sous
forme d'une boucle. Lorsque expression logique devient faux, on passe à l'instruction qui suit
immédiatement l'instruction de fin de boucle (end).
Remarque :
expression logique est en général le résultat d'un test (par exemple i < Imax) ou le résultat d'une
fonction logique (par exemple all(x)). Il est impératif que le traitement de la séquence
d'instructions agisse sur le résultat de expression logique sans quoi on boucle indéfiniment (-:.
Voici comment calculer n! avec une boucle while:
>> n = 4;
>> k = 1; nfac = 1; % nfac : n factoriel
>> while k <= n
nfac = nfac*k;
k = k+1;
end
>> nfac
nfac =
24
>>
II.1.2. Structures conditionnelles
a- L'instruction conditionnée « IF »
On a parfois besoin d'exécuter une séquence d'instructions seulement dans le cas où une
condition donnée est vérifiée au préalable. Différentes formes d'instruction conditionnée
existent sous MATLAB.
L'instruction conditionnée la plus simple a la forme suivante:
Syntaxe :
If expression logique
séquence d'instructions
end
où
expression logique est une expression dont le résultat peut être vrai ou faux;
séquence d'instructions est le traitement à effectuer si expression logique est vraie.
3
Interprétation:
Syntaxe :
If expression logique
séquence d'instructions 1
else
séquence d'instructions 2
end
où
expression logique est une expression dont le résultat peut être vrai ou faux;
séquence d'instructions 1 est la séquence d'instructions à exécuter dans le cas
où expression logique est vraie et séquence d'instructions 2 est la séquence d'instructions
à exécuter dans le cas où expression logique est faux.
Interprétation :
Si expression logique est vraie la séquence d'instructions 1 est exécutée, sinon c'est la séquence
d'instructions 2 qui est exécutée. Le déroulement du programme reprend ensuite à la première
instruction suivant le mot clé end.
Il est bien entendu possible d'imbriquer des séquences d'instructions conditionnées (au sens où
la séquence d'instruction conditionnée contient des séquences d'instructions conditionnée). Pour
une meilleure lisibilité, il est recommandé d'utiliser des indentations afin de mettre en évidence
l'imbrication des séquences d'instructions conditionnées.
4
Il est possible d'effectuer un choix en cascade:
Syntaxe :
If expression logique 1
séquence d'instructions 1
else if expression logique 2
séquence d'instructions 2
...
else if expression logique N
séquence d'instructions N
else
séquence d'instructions par défaut
end
Interprétation :
5
II.2. Algorithme
II.2.1. Introduction : qu’est-ce que un Algorithme
Un algorithme est une suite ordonnée d’instructions qui indique la démarche à suivre pour
résoudre une série de problèmes équivalents, d’autres part, Un algorithme est une suite
d'instructions séquentielles, éventuellement structurées par des conditionnelles et des boucles..
Ainsi quand on définit un algorithme, celui-ci ne doit contenir que des instructions
compréhensibles par celui qui devra l’exécuter. Dans ce cours, nous devrons donc apprendre à
définir des algorithmes pour qu’ils soient compréhensibles — et donc exécutables — par un
ordinateur.
Exemples : suivre une recette de cuisine, suivre un plan, faire une division euclidienne à la
main sont des exemples d’algorithme.
Voici, ci-contre, un exemple d’algorithme rédigé en langage courant. Si on applique cet
algorithme au nombre 3, on a :
On peut chercher à savoir quel nombre a donné 0 par exemple. Il faut alors remonter
l’algorithme, on a alors :
6
syntaxe. Ce pseudo-code est susceptible de varier légèrement d’un livre (ou d’un enseignant) à
un autre.
Les quatre phases d’un algorithme sont, dans l’ordre: la déclaration des variables, les entrées et
l’initialisation, le traitement, les sorties.
Exemple : Les deux algorithmes précédents peuvent s’écrire en pseudo-code comme ci-dessous
Exemple d’application N° 01 :
1- Bien comprendre le problème et, si le principe de l'algorithme n'est pas donné, trouver un
principe de résolution.
Méthode d'Euclide (~300 av. JC) : soient deux nombres entiers positifs A et B tels que A >= B.
Si le reste R de la division de A par B est 0, le PGCD de A et B est B. Sinon, le PGCD de A et
B est le PGCD de B et de R.
7
2- Si on ne comprend pas bien le principe, l'utiliser sur un exemple. Soit à calculer le PGCD
de 123 et 27.
4- Ecrire l'algorithme
Exemple d’application N° 02 :
Algorithme de la méthode de Dichotomie : sous l’hypothèse que la fonction f(c) soit
déterminable, voici une représentation de la méthode en pseudo-code.
Paramètres d’entrées : f, a, b, ε.
f fonction continue sur un intervalle I.
a et b deux réels de I tels que f(a)*f(b) < 0.
Ε tolérance de précision.
Paramètres de sorties : c, n.
8
c approximation en zéro de la fonction f
n nombre d’itérations nécessaires pour atteindre c.
1. a0 ← a, b0 ← b
2. c0 ← (a+b)/2
3. tant que (bn-an) > ε Faire
4. si f(an)*f(bn) > 0 alors
5. an+1 ← cn, bn+1 ← bn
6. cn+1 ← (cn + bn)/2
7. Sinon
8. an+1 ← an, bn+1 ← cn
9. cn+1 ← (cn + an)/2
10. Fin si
11. Fin tant que