Vous êtes sur la page 1sur 16

1/Définitions :

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).

1.3. Définition de l’algorithme

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).

Algorithme Programme Résultat


Analyse de
Problème

L’algorithme suit les étapes suivantes :

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).

Nom : le nom de l’algorithme


Variable : déclaration des variables
Début
Instruction 1
Instruction2
.
.
..
Instruction N
Fin

2/Quelque algorithme on pascal :

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 :

L(1) L(2) L(3) L(4) …………………………………. L(n)

- Dimension du tableau : 1

2
- Taille du tableau : n
- Les L(i), i=1, 2, …, n doivent être de même type

2-1-2/Déclaration des tableaux :


Comme pour les variables simples se pose le problème du type du tableau, c’est-à-dire de ses
éléments. Tous les éléments du tableau sont de même type. Si le nom du tableau apparait dans un
ordre type (REAL, INTEGER, ….) le problème est résolu. Sinon c’est que le tableau est apparu dans
un ordre DIMENSION, et la première lettre lève toute confusion, si cette lettre est I, j, K, L, M
ou n le tableau est entier, sinon réel.

Examples:
REAL A (10), B (15, 5), I, C (3, 7, 9)
INTEGER X, Y (0:3)
DIMENSION Z (7, 3), K (12)

Ces déclarations indiquent :

A est un tableau réel à 1 dimension, de 10 éléments


B est un tableau réel à 2 dimensions, de 15 lignes et 5 colonnes.
I est une variable simple réelle
J est un tableau réel à 3 dimensions égales à 3, 7 et 9
X est une variable simple entière
Y est un tableau entier à 1 dimension de 4 éléments
Z est un tableau réel à 2 dimensions, de 7 lignes et 3 colonnes
K est un tableau entier à 1 dimension de 12 éléments

2-1-3/Terminologie des tableaux :


– rang d’un tableau : nombre de ses dimensions
– étendue (extent) d’un tableau selon une de ses dimensions : nombre d’éléments dans cette
dimension
– bornes (bounds) d’un tableau selon une de ses dimensions : limites inférieure et supérieure des
indices dans cette dimension. La borne inférieure par défaut vaut 1. – profil (shape) d’un tableau
: vecteur dont les composantes sont les étendues du tableau selon ses dimensions ; sa taille est
le rang du tableau.
– taille (size) d’un tableau : nombre total des éléments qui le constituent, c’est-à-dire le produit
des éléments du vecteur que constitue son profil.
– deux tableaux sont dits conformants (conformable) s’ils ont le même profil La déclaration d’un
tableau s’effectue grâce à l’attribut DIMENSION qui indique le profil du tableau, mais aussi
éventuellement les bornes, séparées par le symbole « : ».

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.

2-1-4/Manipulation d’un tableau:


Une fois déclaré, un tableau peut être utilisé comme un ensemble de variables simples. Les trois
manipulations de base sont l’affectation, la lecture et l’écriture.

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.

2-1-5/Quelques des exemple :


Exemple 1:
Ecrire un algorithme qui déclare et remplisse un tableau de 7 valeurs numériques réels en les
mettant toutes à zéro.

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

2- Peut-on simplifier cet algorithme avec le même résultat ?


3- Traduire l’algorithme en programme fortran puis exécuter et affichés l’état de l’écran.

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

3-2/Quelque des exemple :


Exemple 1:
Lecture et affichage d'une matrice
É crire un algorithme/programme PASCAL qui permet de lire et afficher une matrice de type réel A de
N lignes et M colonnes.
Solution

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

Pour i←1 à N faire


Pour j←1 à M faire
Écrire( A[i,j] )
Fin-Pour
Fin-Pour
Fin Le programme PASCAL
01 Program exP1_lecture_ecriture;
02 Uses wincrt ;
03 var
04 A : array[1..10, 1..10] of Real;
05 i, j, N, M : integer;
06 Begin
07 {Les entrées}
08 Write('Donner les dimensions de la Matrice A : ');
09 Read(N, M);
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
17 {Les sorties}
18 Writeln('L''affichage de la matrice A : ');
19 For i:=1 to N do

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
…...

+ A[N, 1]+A[N, 2]+ … + A[N,M] //La somme de la dernière


ligne
Ça devient :
M M M M

Som = ∑ A[1, j] + ∑ A[2, j] + … + ∑ A[i, j] + ... + ∑ A[N , j]


j=1 j=1
j=1 j=1
N M

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

Pour i←1 à N faire


Pour j←1 à M faire
Si A[i, j] < Min alors
Min ← A[i, j]
imin ← i jmin
← j
Fin-Si
Fin-Pour
Fin-Pour

Écrire( Min, imin, jmin)


Fin

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.

1 Recherche du max et sa position dans une matrice:

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

Pour i←1 à N faire


Pour j←1 à M faire
Si A[i, j] > Max alors
Max ← A[i, j]
imax ← i jmax
← j
Fin-Si
Fin-Pour
Fin-Pour

Écrire( Max, imax, jmax)


Fin

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

Vous aimerez peut-être aussi