Algorithmique
Algorithmique
Algorithmique
Algorithmique et programmation
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.
Exemple :
a) Le problème :
Soit à écrire l’algorithme qui permet de calculer la moyenne d’un étudiant de 1ere année ST
dans le module d’informatique.
c) L’algorithme :
Algorithme Moyenne ;
Début
Lire (T) ;
Lire (X) ;
M (T+X)/2 ; Partie corps du programme
Ecrire ("La moyenne est : "M) ;
Fin.
d) Organigramme correspondant
Début
Lire (T,X)
M (T+X)/2
Ecrire (M)
Fin
Figure 1:Organigramme de l’algorithme Moyenne
e) Le programme
<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 et doit être différent d’un mot clé.
Variables, constantes
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
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.
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.
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 prénom : ") (c’est l’ordinateur qui affiche cette phrase à l’écran)
L’utilisateur doit taper son prénom, à la suite de la phrase précédente.
L’utilisateur tape par exemple Mohamed
Lire(Prénom) ;
Dès que le programme rencontre une instruction Lire, l’exécution s’interrompt, attendant la
frappe d’une valeur au clavier (ici la valeur est Mohamed, elle sera stockée dans la variable
Prénom).
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 : Entier ;
Début
Ecrire( "Entrez un nombre :");
Lire (Nb) ;
carr ← Nb * Nb ;
Ecrire( "Son carré est : ", Carr) ;
Fin.
6.5. Structure d’un test
Remarque :
Un booléen est une expression dont la valeur est VRAI ou FAUX.
Exemple1 :
Si test Alors
(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 d’une équation du second degré si elles
existent.
Algorithme EquationSecondOrdre ;
Var a, b, c, Δ, x1, x2 : Réel ;
Début
Ecrire (" taper trois nombres a,b,c ") ;
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=", x1) ;
Ecrire("x2=", x2) ;
Finsi ;
FinSi ;
Exercice : établir l’organigramme de cet algorithme.
Exercice :
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
"Cadet" après 12 ans
Solution :
Algorithme Catégorie ;
Il arrive que dans certains problème on a besoin de réitérer un certain nombre d’instructions
tant qu’une condition est vérifiée, on appelle ce genre d’itération une boucle.
Pour réaliser une boucle on peut utiliser : tant que, Pour, etc.
Nous donnerons la syntaxe des deux cas.
Les boucles avec tant que
TantQue booléen(ou condition) Faire
…
Instructions
…
FinTantQue
Le principe est simple : le programme arrive sur la ligne du TantQue. Il examine alors la
valeur du booléen (qui, il faut le rappeller, peut être une variable booléenne ou, plus
fréquemment, une condition). Si cette valeur est VRAI, le programme exécute les instructions
qui suivent, jusqu’à ce qu’il rencontre la ligne FinTantQue. Il retourne ensuite sur la ligne du
TantQue, procède au même examen, et ainsi de suite. On sort de la boucle lorsque le booléen
prend la valeur FAUX.
Exercice :
Algorithme Factorielle ;
Var N, i, F : Entier ;
Début
Ecrire ("Entrez un nombre : ") ;
Lire (N );
F←1;
i←2;
TantQue i<=N Faire
Début
F←F*i;
i ←i+1 ;
Fin ;
FinTantQue
Ecrire ( "La factorielle est : ", F) ;
Fin.
Les boucles avec POUR
Algorithme Factorielle ;
Var N, i, F : Entier ;
Début
Ecrire ("Entrez un nombre : ") ;
Lire (N );
F←1;
Pour i allant de 2 jusqu’à N Pas de 1 Faire
F←F*i;
FinPour ;
Ecrire ("La factorielle est : ", F) ;
Fin.
Les structures Pour sont employées dans les situations où l’on doit procéder à un traitement
systématique sur les éléments d’un ensemble dont le programmeur connaît d’avance la
quantité.
Janvier Février Mars Avril Mai Juin Juillet Aout Sept Oct Nov Déc
Si nous appelons ce tableau mois, alors Mois[1]= "Janvier" et Mois [12]= "Décembre".
Janvier et Décembre sont de type Char.
On a coutume d'appeler le 1, 2,….., 12 les 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 est de parcourir le tableau dans la recherche de
l'élément le plus petit et le placer à sa position ;
N est supposé être déclaré comme une constante dans l’algorithme principal qui fait appel à la
procédure de Tri par sélection.
Algorithme Tri_selection
Début
Pour i de 1 à (N - 1) faire
imin <-- i
Pour j de (i + 1) à N faire
Alors
imin <-- j
Fin si
Fin pour
Si imin <> i
Fin si
Fin pour
Fin
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.
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 M1-M2, M1 et M2 étant deux matrices carrées de taille 3.
M1 - M2 = M3
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 SoustractionMat ;
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
Donc 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 ;
Nom Prénom mobile Email
BenAli Mohamed 213666666666 Benali@gmail.com
www.pagesbleues-rims.com