Académique Documents
Professionnel Documents
Culture Documents
1.1. Algorithmique :
Désigne la science des algorithmes, le premier livre qui a été apparu au (780-850) par Al Khawarizmi qui
décrive des méthodes de calculs algébriques.
1.2. Programmation :
Et un lien intermédiaire entre le langage machine le langage humain, qui permet de traiter les données
pour obtenir des résultats. Est un ensemble des règles traduit dans un langage de programmation
compréhensible et lisible par la machine (ordinateur).
Est une suite ordonnée ou est une séquence finie des opérations(ou instructions) assimilé ou exécute
pour résoudre un problème donné.
Est une suite des instructions élémentaire réalisée pour restitue en sortie des résultats.
a- Instruction : est une action élémentaire exécutable par l’ordinateur.
b- Un programme :
Est un algorithme lisible de tout écrit ou saisie dans un langage de programmation (durant cette année on
étudier le langage pascal) afin que la machine puisse de l’exécuter d’une manière efficace (donne des bons
résultats) et rapide (prendre moins de temps).
1- Saisir les données déterminées d’une manière très précise nécessaires pour la résolution un
problème donné.
1
2- Le traitement de données saisis pour résoudre le problème.
3- L’affichage des résultats obtenus après le traitement.
Un algorithme se compose d’un entête(le nom, déclarations, et d’un corps (Début, suite instruction, fin).
2-1/Les tableau :
Objectif
Développer des algorithmes de traitement de tableaux.
2-1-1/Définition :
Un tableau est un ensemble d’éléments de même type, repérés au moyen d’indices entiers. Les
éléments d’un tableau sont rangés selon un ou plusieurs axes appelés dimensions du tableau. Dans
les tableaux à une dimension (qui permettent de représenter par exemple des vecteurs au sens
mathématique du terme), chaque élément est repéré par un seul entier, mais le fortran accepte
des tableaux jusqu’à 7 dimensions, où chaque élément est désigné par un 7 indices.
Un tableau à une dimension est parfois appelé vecteur. Il peut être représenté sous la forme
suivante :
- Dimension du tableau : 1
2
- Taille du tableau : n
- Les L(i), i=1, 2, …, n doivent être de même type
Examples:
REAL A (10), B (15, 5), I, C (3, 7, 9)
INTEGER X, Y (0:3)
DIMENSION Z (7, 3), K (12)
Exemples :
3
REAL, DIMENSION X(15)
REAL, DIMENSION Y (1:5,1:3)
REAL, DIMENSION Z (-1:3,0:2)
Le tableau X est de rang 1, Y et Z sont de rang 2.
L’étendue de X est 15, Y et Z ont une étendue de 5 et 3.
Le profil de X est le vecteur (/ 15 /), celui de Y et Z est le vecteur (/ 5,3 /).
La taille des tableaux X, Y et Z est 15.
Les tableaux Y et Z sont conformants.
a- L’affectation :
Pour affecter une valeur à un élément i d’un tableau nommé par exemple A, on écrira :
A(i) ← valeur.
Par exemple, l’instruction : A(0) ← 20 ; affecte au premier élément du tableau A la valeur 20.
Pour affecter la même valeur à tous les éléments d’un tableau A de type numérique et de
dimension 100, on utilise une boucle.
b- La lecture :
Comme les variables simples, il est possible aussi d’assigner des valeurs aux éléments d’un tableau
lors de l’exécution c.-à-d. les valeurs sont saisies par l’utilisateur à la demande du programme.
Exemple :
Écrire "Enter une note :"
Lire A(6)
Dans cet exemple, la valeur saisie est affectée au sixième (6ème) élément du tableau A.
c- L’écriture :
De façon analogue à la lecture, l’écriture de la valeur d’un élément donné d’un tableau s’écrira
comme suit : écrire A(i) Cette instruction permet d’afficher la valeur de l’élément i du tableau A.
Solution :
4
Algorithme :
Algorithme remplissage
Tableau A(7) : réel
Variable i : entier
Début
Pour i = 1 à 7
A(i) = 0
Fin Pour
Fin
Programme Fortran:
Program remplissage
Dimension A (7)
INTEGER I
Do I=1, 7
A(i) = 0
Enddo
END
Exemple 2:
Ecrire un algorithme qui calcule le plus grand écart dans un tableau d’entiers. Rappel : l’écart entre
deux entiers x et y est la valeur absolue de leur différence |x − y
Solution :
Algorithme écart
Entier tableau(n), i, Min, Max
Début
Pour i=0, n −1
Lire tableau(i)
Fin Pour
Min = tableau(i)
Max = tableau (i) Pour i=0, n −1
Si (tableau(i)) < min) alors
Min = tableau (i)
Fin si
Si (tableau(i)> max) alors
Max = tableau(i)
Fin si
Ecrire (max – min)
Fin
Exemple 3:
1- Que produit l’algorithme suivant ?
5
Tableau Nb(5) en Entier
Variable i en Entier
Début
Pour i ← 0 à 5
Nb(i) ← i * i
Fin pour
Pour i ← 0 à 5
Ecrire Nb(i)
Fin pour
Fin
Solution :
1- Cet algorithme remplit un tableau avec six valeurs : 0, 1, 4, 9, 16, 25. Il les écrit ensuite à
l’écran.
2- Simplification :
Tableau Nb(5) en Numérique
Variable i en Numérique
Début
Pour i = 0 à 5
Nb(i) = i * i
Ecrire Nb(i)
Fin pour
Fin
Program fortrant :
INTEGER I
DIMENSION NB(10)
DO I=1,5
NB(i)=i*i
WRITE(*,*)NB(i)
ENDDO
END
Exécution du programme :
1
4
9
16
25
Press any key to continue
6
3/les matrices :
3-1/Definition:
Une matrice est un tableau à deux dimensions L et C avec L constitue le nombre de lignes de la
matrice et C le nombre de colonnes de la matrice. On dit qu’une matrice est une matrice carrée
d’ordre n si L=C=n
Algorithme exP1_lecture_ecriture
Variables
A:Tableau [1..10,1..10] de Réel NM A(i=1..N, j=1..M)
i,j, N, M : entier
Début
Lire(N, M)
Pour i←1 à N faire
Pour j←1 à M faire
Lire( A[i,j] )
Fin-Pour A
Fin-Pour
7
20 begin
21 For j:=1 to M do
22 Write( V[i]:8:2 );
23
24 Writeln; {Sauter la ligne}
end;
25 End.
26
27
Explication
Ce programme illustre comment déclarer, lire et écrire une matrice d'ordre N*M. Pour lire ou
écrire une matrice, on aura besoin de deux boucles imbriqués, la boucle externe pour les
lignes (For i) et la boucle interne pour les colonnes (For j).
Exemple 2:
Somme, Moyenne et Produit des éléments d'une matrice
Soit une matrice A réelle d'ordre NxM.
1 É crire un algorithme/programme PASCAL qui calcule la somme et la moyenne des
éléments de la matrice A.
2 É crire un algorithme/programme PASCAL qui permet de calculer la somme de chaque ligne et le
produit de chaque colonne.
Solution
1 Somme et la moyenne des éléments de la matrice A
Algorithme exP2_1
Variables
A:Tableau [1..10,1..10] de Réel
i,j, N, M : entier
Som, Moy : réel
NM
dsDébut
Lire(N, M) A(i=1..N, j=1..M)
Pour i←1 à N faire Som
Pour j←1 à M faire
Lire( A[i,j] )
Moy
Fin-Pour
Fin-Pour
Som ← 0
Pour i←1 à N faire
Pour j←1 à M faire
Som ← Som + A[i, j]
Fin-Pour
Fin-Pour
Moy 01 Program
← Som / (N*M)exP2_1;
02 Uses wincrt ;
03 var
Écrire (Som, Moy);
A : array[1..10, 1..10] of Real;
Fin 04
05 i, j, N, M : integer;
06 Som, Moy:real;
07 Begin
08 {Les entrées}
09 Write('Donner les dimensions de la Matrice A : ');
Read(N, M);
8
10 Writeln('Donner les composantes de la matrice A : ');
11 For i:=1 to N do
12 For j:=1 to M do
13 Read( A[i, j] );
14
15 {Les traitements}
16 Som:=0; {Initialiser toujours la somme à ZÉRO}
17 For i:=1 to N do
18 For j:=1 to M do
19 Som := Som + A[i, j];
20 Moy := Som / (N*M); {La moyenne égale à la somme sur nombre d'éléments}
21
22 {Les sorties}
23 Write('La somme est : ',Som:2:2,' La Moyenne est : ',Moy:2:2);
24 End.
25
26
27
Explication
La somme des éléments d''une matrices est donnée par la formule : A[1, 1]+A[1, 2]+ … +
A[1,M]+ A[2, 1]+A[2, 2]+ … + A[2,M]+ … …. … + A[N, 1]+A[N, 2]+ … + A[N,M]. On peut écrire
cette formule comme suit :
Som = A[1, 1]+A[1, 2]+ … + A[1,M] //La somme de la première
ligne
+ A[2, 1]+A[2, 2]+ … + A[2,M] //La somme de la deuxième
ligne
+ A[3, 1]+A[3, 2]+ … + A[3,M] …... //La somme de la troisième
ligne
…...
Som = ∑∑ A[i, j]
i=1 j=1
Chaque symbole de somme sera replacé par une boucle POUR, donc, on aura deux boucles
imbriquées, qui permettent de répéter l'instruction : Som ← Som + A[i, j]
Exemple 3:
Min et le Max dans une matrice et leurs positions
Soit A une matrice réelle d'ordre NxM.
1 É crire un algorithme/programme PASCAL qui permet de rechercher le plus petit élément dans
la matrice A ainsi que sa position.
9
2 É crire un algorithme/programme PASCAL qui permet de rechercher le plus grand élément dans
la matrice A ainsi que sa position.
Solution
1 Recherche du min et sa position dans une matrice
Algorithme exP3_1_Min
Variables
A : Tableau [1..10, 1..10] de Réel
i, j, N, M, imin, jmin : entier
Min:Réel
Début
Lire(N, M)
Pour i←1 à N faire
Pour j←1 à M faire
Lire( A[i, j] )
Fin-Pour
Fin-Pour
Min ← A[1, 1]
imin ← 1 jmin
← 1
Le programme PASCAL
0 Program exP3_1_Min;
1 Uses wincrt ;
0 var
2 A : array[1..10, 1..10] of Real;
0 i, j, N, M, imin, jmin : integer;
3 Min : real;
0 Begin
4 {Les entrées}
0 Write('Donner les dimensions de la Matrice A : ');
5 Read(N, M);
0 Writeln('Donner les composantes de la matrice A : ');
6 For i:=1 to N do
0 For j:=1 to M do
7 Read( A[i, j] );
10
0 {Les traitements}
8 Min := A[1,
0 1]; imin:= 1;
jmin := 1;
9
1 For i:=1 to N do
0 For j:=1 to M do
1 if A[i, j] < Min Then
1 begin
1 Min :=
2 A[i,j];
imin := 1;
1 jmin := 1;
3 end;
1
4 {Les sorties}
1 Write('Min=', Min:2:2, 'Et sa position est : ', imin,' ',jmin);
5 End.
1
6
1
7
1
8
1
9
2
0
2
1
2
2
2
3
2
4
2
5
2
6
2
7
2
8
2
9
3
0
3
1
3
2
11
Explication
La solution consiste aux parcours des éléments de la matrice pour les comparer un à un à la
valeur supposée minimale de la matrice (la ligne N° 23), dés qu'un élément est inférieur au
minimum, ce dernier sera mis à jour ainsi que sa position imin (la ligne) et jmin (la colonne)
(les lignes N° 25, 26 et 27). La valeur initiale du Min et la première case de la matrice, c'est à
dire A[1,1], par conséquent, sa position est : imin=1 et jmin=1.
Algorithme exP3_2_Max
Variables
A : Tableau [1..10, 1..10] de Réel
i, j, N, M, imax, jmax : entier
Max:Réel
Début
Lire(N, M)
Pour i←1 à N faire
Pour j←1 à M faire
Lire( A[i, j] )
Fin-Pour
Fin-Pour
Max ← A[1, 1]
imax ← 1 jmax
← 1
Le programme PASCAL
0 Program exp3_2_Max;
1 Uses wincrt ;
0 var
2 A : array[1..10, 1..10] of Real;
0 i, j, N, M, imax, jmax : integer;
3 Max : real;
0 Begin
4 {Les entrées}
0 Write('Donner les dimensions de la Matrice A : ');
5 Read(N, M);
0 Writeln('Donner les composantes de la matrice A : ');
6 For i:=1 to N do
12
0 For j:=1 to M do
7 Read( A[i, j] );
0
8 {Les traitements}
0 Max := A[1, 1];{On suppose que la première case est la max}
9 imax:= 1; {Donc sa position est la ligne 1}
jmax := 1; {et la colonne 1}
1
0 For i:=1 to N do {Pour toute ligne i}
1 For j:=1 to M do {Pour toute colonne j}
1 if A[i, j] > Max Then {Si la case A[i, j] est > au Max}
1 begin
2 Max := A[i,j]; {On actualise le Max}
1 imax := 1; {sa ligne imax}
3 jmax := 1; {sa colonne jmax}
1 end;
4 {Les sorties}
1 Write('Max=', Max:2:2, 'Et sa position est : ', imax,' ',jmax);
5 End.
1
6
1
7
1
8
1
9
2
0
2
1
2
2
2
3
2
4
2
5
2
6
2
7
2
8
2
9
3
0
3
1
3
13
2
Explication
Le même principe que le min et sa position
14
15
16