Professional Documents
Culture Documents
Description du
Cours
Droulement du
Cours
Comptences
Attendues
Contenu du cours
- Introduction lAlgorithmique
- Les Objets et structures Algorithmiques
- Les fonctions et les procdures
- La rcursivit
- La complexit dun algorithme
- Les types complexes (Tableaux ou vecteurs, matrices, les chanes)
- Les algorithmes de Tri
- Les pointeurs
- Les listes simple chanage
- Les listes double chanage
- Les piles
- Les files
- Les arbres
Pr requis du Cours
Evaluation du
Cours
Support
- polycopies
A.RADOUANE
Chapitre 1 :
Introduction lalgorithmique
1. Dfinitions :
Un Algorithme est une spcification d'un schma de calcul, sous forme d'une suite
finie d'oprations lmentaires obissant un enchanement dtermin .
Un Algorithme est un ensemble de rgles opratoires dont l'application permet de
rsoudre un problme donn au moyen d'un nombre fini d'oprations .
2. Proprits d'un algorithme:
Un algorithme doit tre:
PRECIS:
Il doit indiquer:
- l'ordre des tapes qui le constituent
- quel moment il faut cesser une action
- quel moment il faut en commencer une autre
- comment choisir entre diffrentes possibilits
DETERMINISTE
- Une suite d'excutions partir des mmes donnes doit produire des rsultats
identiques.
FINI DANS LE TEMPS
Cest--dire s'arrter au bout d'un temps fini.
3. Les Phases de rsolution d'un problme informatique
La rsolution d'un problme informatique se dcompose en quatre phases:
Phase d'tude
Inventorier les paramtres connus ou observables et dfinir les objectifs
raliser.
Phase de ralisation du modle
Dterminer l'enchanement des oprations. Cette phase aboutit l'laboration
d'un schma de rsolution.
Phase de spcification
Exprimer le schma de rsolution de manire plus prcise en utilisant
ventuellement un pseudo-langage. Cette phase dbouche sur des algorithmes.
Phase de traduction
Mettre en uvre les algorithmes en les traduisant en un langage de programmation.
Algorithmique & Structures de Donnes
A.RADOUANE
4. Le Pseudo langage.
Il permet d'crire tout algorithme de faon formelle, c'est--dire suffisamment prcise,
tout en restant comprhensible pour l'ensemble des informaticiens.
La phase de programmation se trouvera ncessairement allge, puisqu'elle se
rsumera adapter l'ensemble des oprations dcrites aux spcificits du langage
utilis.
Il est bas sur les instructions disponibles dans la plupart des langages.
Exemple:
Calculer la factorielle de N (version itrative)
VAR
N, F: Entier
DEBUT
ECRIRE (Entrer un entier N=)
LIRE (N)
F1
POUR I allant de 1 N FAIRE
F F* I
FIN POUR
ECRIRE (la Factorielle de N est :, F)
FIN
5. Les Structures lmentaires:
Entres/Sorties: LIRE, ECRIRE
Exemple:
ECRIRE (Entrer un entier N=)
LIRE (N)
Affectation:
Exemple:
XY
X x+1
Instruction conditionnelle:
SI (Expression Vraie) ALORS instructions
SINON instructions
FINSI
Exemple:
Si (Somme<= Solde) Alors Retrait
Sinon Ecrire (Solde Insuffisant)
Rptition (boucles)
A.RADOUANE
6. LOrganigramme:
Il permet de reprsenter graphiquement un algorithme.
Test
(Alternative)
Instruction
6. METHODES D'ANALYSES
a. Types de mthodes d'analyse:
Analyse descendante
C'est une mthode de dcomposition des problmes (du gnral au particulier)
.
Analyse ascendante
Elle consiste identifier ds le dbut les actions lmentaires qu'il faudra
savoir rsoudre.
Les mthodes diriges par les donnes
A.RADOUANE
A.RADOUANE
Chapitre 2 :
Dfinition
entier
prend ses valeurs dans un sous-ensemble des entiers relatifs. C'est un ensemble fini
dans lequel chaque lment possde un successeur et un prdcesseur.
rel
prend ses valeurs dans un sous-ensemble de rels dcimaux signs. Dans la plupart
des langages, cet ensemble n'est pas un ensemble fini. On ne peut trouver de
successeur ou de prdcesseur un rel donn.
caractre
chane de
caractre
boolen
type logique qui peut prendre les valeurs VRAI (1) ou FAUX (0)
A.RADOUANE
Exemples:
25 DIV 3 =8 division entire
25 MOD 3 = 1 Reste de la division entire
Etat, Test: boolen
Etat 1
Test 0 (Etat OU Test) = Vraie.
3. Les Structures Fondamentales:
a-
T1
On utilise cette structure lorsqu'une action doit succder une autre (T1, T2)
T2
b-
Expression Vraie
ALORS
T1
SINON
T2
FINSI
Exemple :
Ecrire un algorithme permettant dditer de 2 nombres Entiers.
Algorithme Edition du Sup(X, Y)
Var X, Y : Entier
DEBUT
Ecrire (Entrer deux Entiers)
Lire(X, Y)
Si (X>Y) Alors Ecrire(X)
Sinon Ecrire(Y)
FINSI
FIN
Algorithmique & Structures de Donnes
A.RADOUANE
DEBUT
X>Y
Ecrire (X)
Ecrire (Y)
FIN
c-
Structure itrative
TANTQUE Expression Vraie
FAIRE
T1
FINTANTQUE
Le test (si lexpression est vraie) est effectu avant lexcution du bloc dinstructionsT1, il
est donc possible de navoir aucune excution du bloc.
Exemple :
Effectuer une multiplication de 2 Entiers positifs en utilisant que laddition.
P=A x B = A+A+A++A
B fois
Algorithme MULTI
Var P, A, B : Entier
BEBUT
P0
ECRIRE (Entrer deux entiers positifs)
LIRE (A, B)
Tant que (B<>0) FAIRE
P P+A
B B -1
FIN Tant que
ERIRE (P)
FIN
A.RADOUANE
DEBUT
P 0
Ecrire (Entrer deux Entiers Positifs)
Lire (A, B)
B<>0
P P+A
B B-1
Ecrire (P)
FIN
d- La rptition
REPETER T1 Tant que (Expression Vraie)
Le bloc dinstructions T1 est dabord excut puis on teste
(Si lexpression est toujours vraie).
Le bloc T1 est excut au moins une fois.
e- La Boucle :
Pour I allant de Val1 Val2
Faire T1
I I+1
FIN Pour
A.RADOUANE
Exemple : (Menu)
Ecrire un algorithme permettant dafficher un Jour selon sa position dans la semaine.
Algorithme CAS
Var Choix : Entier
DEBUT
ECRIRE (Entrer un entier entre 1 et 7)
LIRE (Choix)
Selon (Choix)
Cas 1 : ECRIRE (Lundi)
Cas 2 : ECRIRE (Mardi)
1
0
A.RADOUANE
FIN
3. Les Fonctions :
Lorsqu'un traitement peut tre rpt dans le programme et doit rendre un rsultat
unique de type simple, il est commode de le dfinir comme une fonction dont l'utilisation est
analogue celui des fonctions mathmatiques usuelles (SIN(x), TANG(x), COS(x) etc...).
Une fonction est caractris par :
o Son identificateur (Nom de La fonction)
o Sa liste darguments ou de paramtres (prcise lidentificateur et le type de
chacun deux)
o Le type du rsultat de retour.
FONCTION Id_Fonction ( parametre_formel : type du paramtre) : type_resultat
VAR
i : ENTIER
DEBUT
TRAITEMENT
RETOURNER (RESULTAT)
FIN
Remarque :
Une Fonction qui ralise un certain traitement et ne retourne pas de rsultat peut tre
nomm une Procdure.
Dans le programme principal, l'appel ce sous-programme se fera de la faon suivante:
ALGORITHME Nom_algo
VAR i, j, k : ENTIER
DEBUT
...
i Id_Fonction(j)
...
FIN
a) Exemple:
Ecrire une fonction qui calcule la somme des N premiers lments de la suite Un=3*n+1.
CL_Somme ( N :Entier) : Entier
VAR
S,U, I: ENTIER
DEBUT
S0
Pour I allant de 1 N Faire:
U 3*I + 1
S S+U
I I+1
Fin Pour
RETOURNER (S)
FIN
1
1
A.RADOUANE
Exercice 1:
Soit x un nombre reprsentant un temps exprim en secondes. crire un algorithme qui
transforme ce nombre en heures, minutes et secondes.
Exercice 2:
crire l'algorithme de rsolution d'une quation du second degr.
Exercice 3 :
crire un algorithme qui lit une suite de nombres non nuls termine par le marqueur 0 et affiche
la moyenne des nombres lus.
1
2
A.RADOUANE
La rcursivit
Chapitre 3 :
1. Dfinition:
Une fonction F, qui s'appelle elle-mme ou qui appelle une autre fonction F' contenant un
appel de F est une fonction rcursive.
F()
{
F();
}
Niveau 1
F()
{
F();
F()
{
F();
Niveau 2
Niveau 3
2. Proprits:
Une Fonction rcursive doit possder les deux proprits suivantes:
Existence des critres darrt pour lesquels les appels cessent.
Chaque fois que la fonction s'appelle, elle doit tre plus proche des ses critres d'arrt
Remarque:
On dit qu'il y a:
* Rcursivit simple lorsqu'une fonction sappelle elle-mme en cours d'excution.
* Rcursivit croise lorsqu'une fonction A appelle une fonction B qui elle-mme appelle
la fonction A.
3. Exemple:
Calcul de Factorielle de n(entier)
n! = n(n-1)(n-2) ... 2*1 si n > 0
n! = 1
1
3
A.RADOUANE
n n-1
FINTANTQUE
FIN
Connaissant la relation mathmatique:
N!=n*(n-1)!
On peut en dduire :
La Solution Rcursive :
FONCTION Fact(n : ENTIER):ENTIER
DEBUT
SI n=1 ALORS RETOURNER (1)
SINON RETOURNER (n*Fact(n-1))
FINSI
FIN
Lexistence dune partie auto imbrique conduit la ncessit de grer une pile
destine emmagasiner temporairement les informations relatives lexcution de la
fonction un certain niveau dimbrication.
Ainsi, le calcul de Fact(3), par exemple, s'effectue de la manire suivante:
Fact(3)=3*Fact(2)=3*2*Fact(1)=3*2*1=6
faire
instructions
x val1;
faire
x val1;
faire
instructions
1
4
instructions
A.RADOUANE
Exemple:
a et b tant deux entiers positifs ou nuls ,
On peut Calculer la somme a+b suivant le principe :
a+b=a+ (b-1) +1
FONCTION Somme(a,b : entiers) : retourne un entier
DEBUT
si b=0 alors retourner (a)
sinon retourner (1+Somme(a,b-1))
finsi
FIN
Ainsi:
Somme(4,3)=1+ Somme(4,2)= 1+(1+ Somme(4,1))=1+(1+(1+ Somme(4,0)))= 1+(1+(1+ Somme(4,0)))=7
Cet exemple montre que le choix d'une solution rcursive n'est pas toujours pertinent,
cependant ils existent des types de problmes o la rcursivit est la bonne solution.
5. Quelques algorithmes rcursifs:
Calcul des lments de la suite Fibonacci:
- Les deux premiers lments sont gaux 0 et 1
- Chaque lment de la suite est gal a la somme de ses deux prdcesseurs.
F(0) = 0; F(1) = 1
n > 1; F(n) = F(n-1)+ F(n-2)
1
5
A.RADOUANE
1
6
A.RADOUANE
1
7
A.RADOUANE
Chapitre 4 :
1) Introduction:
Pour rsoudre un problme la question du choix de lalgorithme se pose souvent.
Lalgorithme choisi doit satisfaire un compromis entre deux besoins souvent contradictoires:
3) La Notation en O :
Pour comparer les performances dalgorithmes, on peut considrer une mesure
base sur leur temps dexcution. On utilise la notion dite de Landau qui traite de
lordre de grandeur du nombre doprations effectues par un algorithme donn. Cest la
notation O qui donne une majoration de lordre de grandeur du nombre doprations.
Pour dterminer cette majoration, il faut:
Dfinition de la O-notation
Une fonction f(n) est O(g(n)) s'il existe deux constantes positives K et n0 tel que |
f(n)| K|g(n)| pour tout nn0
En dautres termes, f(n) est O(g(n)) si partir dune certaine valeur n0 de n
tous les f(n) sont infrieurs g(n) en valeur absolue.
1
8
A.RADOUANE
Algorithme 2:
Dbut
S1
I 1
P1
Tant que I <=n rpte
P P*x/I
S S+P
I I +1
Fin tant que
Fin
Le corps de la fonction nest excut que n fois
1
9
A.RADOUANE
Algorithme
Complexit
O(1)
O(log n)
O(n)
O(n log n)
O(n)
O(2^n)
O(n!)
Le tableau suivant donne les ordres de grandeurs des diffrentes complexits en fonction
de la taille de l'ensemble de donnes:
La complexit
N=4 n=16
n=64
O(1)
O(log n)
O(n)
O(n log n)
O(n)
O(2^n)
O(n!)
1
2
4
8
16
16
24
1
1
6
8
64
256
384
2048
4096
65536
18446744073709551616 .
.
..
1
4
16
64
256
65536
..
2
0
n=256 n=4096
1
12
4096
49152
16777216
..
..
A.RADOUANE