Académique Documents
Professionnel Documents
Culture Documents
Algorithmique
1. Introduction
2. Qu’est ce qu’un algorithme ?
L’origine du mot algorithme vient de Khawarizm (El khawarizmi célèbre mathématicien
musulman, né à Khawarizm ville de l’ex-URSS).
Un algorithme est une suite d’instructions élémentaires à exécuter pour résoudre un problème
posé. C’est une procédure de calcul bien définie qui prend en entrée une ou plusieurs valeurs
et qui délivre en sortie un résultat.
Exemple :
Algorithme d’Euclide
Algorithme de tri
Etc.…
Symbole Rôle
C’est un ensemble de mots et symboles utilisés pour exprimer des opérations, quel que soit
leur type.
C’est un programme qui sert à traduire le code source (écrit par le programmeur dans un
langage évolué tels que C, Perl, Java etc..) en code objet, et à effectuer une analyse afin de
déceler d’éventuelles erreurs de syntaxe.
1. Le problème :
Soit à écrire l’algorithme qui permet de calculer la moyenne d’un étudiant de 1ere année ST
dans un module d’informatique.
3. L’algorithme :
Algorithme Moyenne ;
Début
Lire (T) ;
Lire (X) ;
M (T+X)/2 ; Partie corps du programme
Ecrire ("La moyenne est :" M) ;
Fin.
4. Organigramme correspondant
Début
Lire (T,X)
M (T+X)/2
Ecrire (M)
Fin
Figure 1:Organigramme du programme Moyenne
5. Le programme
Le programme se fait en choisissant un langage de programmation approprié.
Algorithme :<Nom de l’algorithme> ;
<Partie Déclaration>
Début
<Corps de l’algorithme>
Fin.
Les mots en Gras sont des mots clé, on doit respecter leur syntaxe. Le nom de l’algorithme
(identifiant) ne doit pas commencer par un chiffre ou caractère spécial et doit être différent
d’un mot clé.
Variables, constantes
Algorithme Test1 ;
Var A, B : Entier ;
Début
A ← 1 ;
B ← A + 3 ;
A ← 3 ;
Fin.
Solution1 :
Exercie2 :
Que vaut Δ dans l’algorithme suivant ?
Algorithme Test2 ;
Var A, B, C, Δ : Caractère ;
Début
A ←1 ;
B ← 2 ;
C ← 1 ;
Δ ←B*B- 4*A*C
Fin.
Solution2
Δ=0
7.3. Expressions et opérateurs
Une expression est un ensemble de valeurs, reliées par des opérateurs, et équivalent à une
seule valeur.
Exemple : 123-45+844
Un opérateur est un signe qui relie deux valeurs, pour produire un résultat.
Opérateurs numériques :
Ce sont les opérations arithmétiques habituelles.
Exemple :
+ : addition
- : soustraction
* : multiplication
/ : Division
^ : Puissance, 45 au carré s’écrira donc 45 ^ 2
Mod: modulo (donne le reste de la division euclidienne)
Enfin, on a le droit d’utiliser les parenthèses (), avec les mêmes règles qu’en mathématiques.
La multiplication et la division ont « naturellement » priorité sur l’addition et la soustraction.
Les parenthèses ne sont ainsi utiles que pour modifier cette priorité naturelle.
Algorithme Test4 ;
Var A, B, C : Caractère ;
Début
A ← "423" ;
B ← "12" ;
C ← A & B ;
Fin.
Solution 4 :
C="42312"
Opérateurs de comparaisons ;
= (égal),
< (strictement inferieur),
> (strictement supérieur),
<= (inferieur ou égal),
>= (strictement inférieur),
< > (différent)
7.4. Lecture et écriture
Il y a des instructions qui permettent à l’utilisateur de rentrer des valeurs au clavier pour
qu’elles soient utilisées par le programme. Cette opération est la lecture.
Dans l’autre sens, d’autres instructions permettent au programme de communiquer des
valeurs à l’utilisateur en les affichant à l’écran. Cette opération est l’écriture.
Remarque :
L’opération de lecture ou d’écriture c’est vis-à-vis de la machine et non de l’utilisateur.
Exemple :
Lire(A,X) ;
Ecrire(B,Y) ;
Ecriture de message :
Ecrire "Tapez votre nom : " (c’est l’ordinateur qui affiche cette phrase à l’écran)
Lire Benali (c’est l’utilisateur qui doit taper son nom, à la suite de la phrase précédente)
Des que le programme rencontre une instruction Lire, l’exécution s’interrompt, attendant la
frappe d’une valeur au clavier (ici Benali).
Exercice :
Ecrire un programme qui demande un nombre à l’utilisateur, puis qui calcule et affiche le
carré de ce nombre.
Solution :
Algorithme Calcul ;
Var Nb, Carr : reel;
Début
Ecrire( "Entrez un nombre:");
Lire (Nb) ;
carr ← Nb * Nb ;
Ecrire( "Son carré est : ", Carr) ;
Fin.
7.5. Structure d’un test
Remarque :
Un booléen est une expression dont la valeur est VRAI ou FAUX.
Exemple1 :
Si test Alors instruction1 ;
Finsi ;
(Ici test est une variable de type booléen, elle prend la valeur vrai ou faux).
Exemple2 :
Soit à écrire l’algorithme qui donne les solutions si elles existent.
Algorithme Equation_Second_Ordre ;
Var a, b, c, Δ, x1, x2 : Réel ;
Début
Lire (a, b, c) ;
Δ b2-4ac ;
Si Δ< 0 Alors
Ecrire ("L’équation n’admet pas de solutions") ;
Sinon Si Δ= 0 Alors
Début
x1 -b/2a ;
Ecrire("L’équation admet une racine double x1=x2= " , x1) ;
Finsi ;
Sinon
Début
x1 (-b+√ Δ) /2a ;
x2 (-b-√ Δ) /2a ;
Ecrire(" L’équation admet deux racines distinctes x1 et x2") ;
Ecrire(x1) ;
Ecrire(x2) ;
Fin ;
FinSi ;
Exercice1 : établir l’organigramme de cet algorithme.
Exercice2 :
Ecrire un algorithme qui demande l’âge d’un enfant à l’utilisateur. Ensuite, il l’informe de sa
catégorie :
Les catégories sont :
"Poussin" de 6 à 7 ans
"Pupille" de 8 à 9 ans
"Minime" de 10 à 11 ans
Solution :
Algorithme Catégorie ;
Exercice :
Algorithme Factorielle ;
Algorithme Factorielle ;
Les tableaux permettent de mémoriser dans une même structure différente valeurs de même
type. Ils sont utiles pour représenter les listes, les vecteurs et les matrices, par exemple pour
représenter les mois d’une année, on a besoin d’espace contigu en mémoire qu’on appelle
vecteur ou tableau.
1 2 3 4 5 6 7 8 9 10 11 12
Janvier Février Mars Avril Mai Juin Juillet Aout Septembre Octobre Novembre Décembre
Si nous appelons ce tableau Mois, alors Mois[1]= "Janvier" et Mois [12]= "Décembre".
Janvier et Décembre sont de type caractere.
On a coutume d'appeler le 1, 2,….., 12 des indices, ils indiquent l’emplacement de la donnée
dans le tableau. 12 est aussi la taille du tableau, qui est ici de dimension 1.
Chaque fois que l’on doit désigner un élément du tableau, on fait figurer le nom du tableau,
suivi de l’indice de l’élément, entre crochets, on l’appelle une variable indicée.
On déclare un tableau de la manière suivante :
Var <Nom du tableau> : Tableau [1...Taille] de <Type>;
Exemple1 :
Algorithme LectureTab ;
Var Mois : Tableau [1...12] de Char ;
I : Entier ;
I 1 ;
Début
Tant que I<= 12 Faire
Début
Lire (Mois [I]) ;
I I+1 ;
Fin ;
FinTantQue ;
Fin.
Exemple2 :
Algorithme EcritureTab ;
Var Mois : Tableau [1...12] de Char ;
I : Entier ;
I 1 ;
Début
Tant que I<= 12 Faire
Début
Ecrire (Mois [I]) ;
I I+1 ;
Fin ;
FinTantQue ;
Fin.
Le tri par sélection
Le principe de l'algorithme de tri par sélection consiste à fixer le premier élément du vecteur
comme minimum, puis le comparer aux autres éléments du tableau, s’il existe un élément
inferieur au minimum fixé alors on fait la permutation, on recommence jusqu’à arriver au
dernier élément du tableau.
Algorithme Tri_selection
i, j, Temp : entier ;
Début
Finpour ;
Début
Temp T[j] ;
T[j] T[i] ;
T[i] Temp ;
Fin ;
Finpour ;
Finpour ;
Fin.
Il existe d’autres algorithmes de tri, comme le tri par bulle, le tri par comptage etc.
o Les Matrices
Les matrices sont des tableaux à deux dimensions (les tableaux à plus de 2 dimensions sont
rares d’utilisation), Prenons le cas de la modélisation d’un jeu d’échec, et du déplacement des
pions sur un échiquier. L’informatique nous offre la possibilité de déclarer des tableaux dans
lesquels les valeurs ne sont pas repérées par une seule, mais par deux coordonnées.
1 2 3 4 5 6 7 8 9
1 56 2 22 78 4 12 32 7 1
2 14 5 32 7 33 40 91 66 2
3 28 98 31 74 20 9 10 57 6
4 33 65 0 86 66 90 77 1 9
5 6 8 22 36 91 28 37 97 1
6 0 1 5 9 6 55 4 7 4
7 0 1 5 9 52 78 5 4 55
8 0 1 5 97 1 5 9 33 3
On écrira MAT [5,4] = 36, le premier indice (5) indique la 5eme ligne et le deuxième (4)
indique la 4eme colonne.
Exercice
Ecrire un algorithme qui calcule la différence de deux matrices (MAT1 - MAT2), MAT1 et
MAT2 étant deux matrices carrées de taille 3.
MAT1 - MAT2 = MAT3
12 5 9 4 5 8 8 0 1
3 4 1 5 6 3 -2 -2 -2
0 7 1 1 5 6 -1 2 -5
Algorithme DifferenceMat ;
Var MAT1, MAT2, MAT3 : Tableau [1..3, 1..3] de Entier ;
I, J : Entier ;
Pour I allant de 1 jusqu’à 3 Pas de 1 Faire
Début
Pour J allant de 1 jusqu’à 3 Pas de 1 Faire
Début
MAT3 [I,J] MAT1[I, J]- MAT2[I, J] ;
Fin ;
FinPour ;
Fin ;
FinPour ;
Fin.
o Les enregistrements
Un enregistrement est un ensemble d’éléments regroupant des informations sur une entité ou
une personne, pouvant être de type différent mais référencés par la même variable.
Imaginons que l’on veuille écrire un programme gérant un carnet d’adresses. Les informations
s’y trouvant ne sont pas de même type. Nous pouvons utiliser un enregistrement. Nous avons
le nom, le prénom, le numéro de téléphone et l’email. Les enregistrements sont stockés dans
des fichiers.
Déclaration d’un enregistrement :
Type < Nom variable > = Enregistrement
Info1 :< type> ;
Info2 :< type> ;
.
.
InfoN :< type> ;
Exemple :
Prenons toujours le cas classique, du carnet d'adresses. Le fichier est destiné à mémoriser les
coordonnées d'un certain nombre de personnes. Pour chacune, il faudra noter le nom, le
prénom, le numéro de téléphone et l'email. Dans ce cas, il peut paraître plus simple de stocker
une personne par ligne du fichier (par enregistrement). Autrement dit, quand on prendra une
ligne, on sera sûr qu'elle contient les informations concernant une personne, et uniquement
cela.
Type Personne = Enregistrement
Nom : chaine ;
Prénom : chaine ;
Mobile : entier ;
Email : chaine ;
Fin ;
8. Références et bibliographie
Données et Algorithmique : Patrick Trau, entre autres nombreux
cours, propose cet exposé riche et pédagogique. Peut être un peu difficile
d'accès pour les vrais débutants, surtout s'ils ne sont pas matheux.
www.pagesbleues-rims.com