Cours_Algo_Ch4_2021_Cne2
Cours_Algo_Ch4_2021_Cne2
Cours_Algo_Ch4_2021_Cne2
ère
Dr. Mohamed BADECHE Tronc Commun – MI,, Faculté NTIC – 1 Année (2021-2022)
Initiation à l’algorithmique
Chargé de cours
Nom Grade Faculté/Institut Adresse e-mail
e
BADECHE Mohamed MCB Nouvelles Technologies [email protected]
algo.assistance
Etudiants concernés
Faculté/Institut Département Année Spécialité
Nouvelles Technologies MI Licence 1 Tronc commun
Objectifs :
Introduire la notion de tableaux.
Apprendre à déclarer et manipuler un tableau.
tableau
Apprendre à déclarer et manipuler une matrice.
matrice
Introduire la notion de constantes et de nouveaux types.
Présenter la notion de structure ‘statique’ d’un tableau.
Cours : Initiation à l’algorithmique Université Constantine 2 – Abdelhamid Mehri
ère
Dr. Mohamed BADECHE Tronc Commun – MI, Faculté NTIC – 1 Année (2021-2022)
Sommaire
Chapitre 4 : Tableaux et Matrices ........................................................................................................................................... 1
4.1. Tableaux ....................................................................................................................................................................... 1
4.1.1. Introduction à la notion de tableaux .................................................................................................................... 1
4.1.2. Déclaration d’un tableau ...................................................................................................................................... 3
4.1.3. Lecture, écriture et parcours d’un tableau ........................................................................................................... 4
4.1.4. Notion de structure ‘statique’ d’un tableau ......................................................................................................... 5
4.1.5. Tableaux en langage C .......................................................................................................................................... 5
4.1.6. Exercices ............................................................................................................................................................... 6
4.2. Matrices ....................................................................................................................................................................... 7
4.2.1. Introduction à la notion de matrices .................................................................................................................... 7
4.2.2. Déclaration d’une matrice .................................................................................................................................... 8
4.2.3. Lecture, écriture et parcours d’une matrice ......................................................................................................... 9
4.2.4. Matrices en langage C ......................................................................................................................................... 10
4.2.5. Exercices ............................................................................................................................................................. 10
Cours : Initiation à l’algorithmique Université Constantine 2 – Abdelhamid Mehri
ère
Dr. Mohamed BADECHE Tronc Commun – MI, Faculté NTIC – 1 Année (2021-2022)
4.1. Tableaux
Algo Moy
Variables
a, b, c, d, e, Moy : Réel
Début
Lire(a,b,c,d,e)
Moy (a+b+c+d+e)/5
Si a ≥ Moy :
Ecrire(a)
FSi
Si b ≥ Moy :
Ecrire(b)
FSi
Si c ≥ Moy :
Ecrire(c)
FSi
Si d ≥ Moy :
Ecrire(d)
FSi
Si e ≥ Moy :
Ecrire(e)
FSi
Fin
Imaginons qu’on veut faire le même traitement, mais sur 100 notes au lieu de 5. Dans ce cas, il sera
pratiquement impossible de travailler avec 100 variables. La solution est d’utiliser une nouvelle structure de
donnée, à savoir le Tableau1, qui permet la sauvegarde de 100 notes dans une même variable composée T :
1
Aussi appelé ‘Vecteur’ dans certaines références bibliographiques.
1
Cours : Initiation à l’algorithmique Université Constantine 2 – Abdelhamid Mehri
ère
Dr. Mohamed BADECHE Tronc Commun – MI, Faculté NTIC – 1 Année (2021-2022)
Algo Moy_Tab
Variables
T : Tableau de 100 Réel
i : Entier
Moy : Réel
Début
Pour i 1 à 100 :
Lire(T(i))
FPour
Moy 0
Pour i 1 à 100 :
Moy Moy + T(i)
FPour
Moy Moy / 100
Ecrire(Moy)
Pour i 1 à 100 :
Si T(i) ≥ Moy :
Ecrire(T(i))
FSi
FPour
Fin
Un tableau à une dimension est donc, une variable composée de plusieurs éléments repérés par des indices :
T indices 1 2 3 4 5 6 7 8 9 10
Éléments 11.5 13.25 10 8.75 15 9 7.5 12 14 10.25
Le tableau précédent appelé T, se compose de dix (10) éléments (cases) repérés par des indices (de 1 à 10)2,
chaque élément contient une valeur réelle. T(1) par exemple, est le premier élément du tableau, il contient la
valeur 11.5, T(2) est le deuxième, il contient la valeur 13.25 et T(10) quant à lui, est le dixième élément, il
contient 10.25. Le nombre d’éléments, ici 10, représente la taille du tableau.
Il faut donc différencier entre l’indice d’un élément (son numéro) et l’élément lui-même qui contient la valeur
proprement dite.
L’élément
2
De 0 à 9 dans certains langages de programmation comme le langage C
2
Cours : Initiation à l’algorithmique Université Constantine 2 – Abdelhamid Mehri
ère
Dr. Mohamed BADECHE Tronc Commun – MI, Faculté NTIC – 1 Année (2021-2022)
Taille du tableau
Nom de la variable tableau
T : Tableau de 100 Réel Type des éléments du tableau
Un tableau donné peut contenir des éléments de n’importe quel type, mais d’un seul type à la fois ; on ne peut
pas avoir des éléments de différents types dans le même tableau.
a. Notion de ‘Constante’
L’un des avantages de cette structure de données (les tableaux) est que les algorithmes écrits pour un tableau de
100 éléments par exemple, peuvent facilement être modifiés pour fonctionner avec un tableau d’une autre taille,
il suffit de remplacer toute occurrence de la taille 100 par sa nouvelle valeur.
Afin de rendre cette tâche de modification plus simple, on fait recours à la notion de déclaration de constantes.
A la différence d’une variable, une constante est déclarée pour ne pas être modifiée par la suite dans le corps de
l’algorithme. On la déclare dans un bloc à part comme suit :
Algo Moy_Tab_Cons
Constantes
D = 100
Variables
T : Tableau de D Réel
i : Entier
Moy : Réel
Début
Pour i 1 à D :
Lire(T(i))
FPour
Moy 0
Pour i 1àD:
Moy Moy + T(i)
FPour
Moy Moy / D
Ecrire(Moy)
Pour i 1àD:
Si T(i) ≥ Moy :
Ecrire(T(i))
FSi
FPour
Fin
Par la suite, si on veut modifier l’algorithme pour fonctionner sur un tableau de 1000 éléments, il suffit de
remplacer la valeur de D dans le bloc Constantes par 1000.
3
Cours : Initiation à l’algorithmique Université Constantine 2 – Abdelhamid Mehri
ère
Dr. Mohamed BADECHE Tronc Commun – MI, Faculté NTIC – 1 Année (2021-2022)
Dans le cas, où on prévoit un tableau pour contenir un nombre de données inconnu préalablement, comme pour
le nom de l’utilisateur par exemple, on peut déclarer un tableau avec une taille maximale possible pour contenir
un nom, et ne pas utiliser par la suite, toutes les cases du tableau dans le cas de noms plus courts.
Moy 0 Moy = 0;
for(i=0;i<D;i++)
Pour i 1àD:
{
Moy Moy + T(i)
FPour Moy = Moy + T[i];
Moy Moy / D }
Ecrire(Moy) Moy = Moy / D;
printf("%f\n",Moy);
5
Cours : Initiation à l’algorithmique Université Constantine 2 – Abdelhamid Mehri
ère
Dr. Mohamed BADECHE Tronc Commun – MI, Faculté NTIC – 1 Année (2021-2022)
4.1.6. Exercices
Exercice 01:
a- Écrire un algorithme qui permet à l’utilisateur de remplir un tableau de 30 caractères (dans une boucle à
part), et affiche le nombre de voyelles de ce tableau. Note : les voyelles sont : a, e, i, o, u, y.
b- Écrire un algorithme qui permet à l’utilisateur de remplir un tableau de 25 entiers (dans une boucle à part), et
affiche le nombre, la somme et le pourcentage d’éléments impairs du tableau.
Exercice 02:
Écrire un algorithme qui permet à l’utilisateur de remplir un tableau de 50 réels (dans une boucle à part), et
d’afficher :
a- la plus grande valeur.
b- la plus grande valeur et son indice. S’il y a plusieurs éléments qui donnent la même plus grande valeur,
l’algorithme devra afficher le plus petit indice.
c- la plus grande valeur et son indice. S’il y a plusieurs éléments qui donnent la même plus grande valeur,
l’algorithme devra afficher tous les indices correspondants.
Exercice 03:
Écrire un algorithme qui demande de remplir deux tableaux A et B, de 45 réels chacun (dans deux boucles à
part), et de les additionner dans un troisième tableau C, élément par élément, d’afficher le contenu de C, puis de
calculer et d’afficher leur produit scalaire.
Exercice 04:
Écrire un algorithme qui demande de remplir un tableau de 30 caractères (dans une boucle à part), et faire un
décalage circulaire du tableau :
a- vers la gauche d’une position.
b- vers la droite d’une position.
c- vers la droite de K positions.
d- vers la gauche d’une position à partir du nème élément.
On doit à la fin, afficher pour chaque cas le contenu du tableau après décalage.
Exercice 05:
Écrire un algorithme qui demande de remplir un tableau de 20 chaines de caractères (dans une boucle à part), et
d’inverser les valeurs de ce tableau (la valeur du 1ère élément sera rangée dans le dernier, celle du 2ème élément
sera rangée dans l’avant dernier et ainsi de suite):
a- dans un autre tableau.
b- dans le même tableau initial, sans utiliser aucun autre tableau intermédiaire.
L’algorithme doit à la fin, afficher le tableau résultant.
6
Cours : Initiation à l’algorithmique Université Constantine 2 – Abdelhamid Mehri
ère
Dr. Mohamed BADECHE Tronc Commun – MI, Faculté NTIC – 1 Année (2021-2022)
4.2. Matrices
Pour i 1à4:
Moy 0
Pour j 1 à 100 :
Moy Moy + M(i,j) /100
FPour
Ecrire(Moy)
FPour
Fin
Une matrice à deux dimensions est donc, une variable composée de plusieurs éléments repérés chacun par deux
indices.
M Colonnes
lignes 1 2 3 4 5 6 7 8 9 10
1 11.5 13.25 10 8.75 15 9 7.5 12 14 10.25
2 10.75 10.5 7.25 6.25 11.25 15.75 2 11.25 17.75 4
3 9 17.25 5 7 16.5 2.75 9.5 17.25 14.5 8.5
4 8.25 6.75 3.75 11 13.75 9 10.25 9.5 12.75 13.75
La matrice précédente appelée M, se compose de quatre (4) lignes et dix (10) colonnes, soit en tout 40 éléments
(cases) repérés chacun par deux indices à la fois, le premier représente le numéro de ligne et le deuxième
représente le numéro de colonne. M(1,1) par exemple, est le premier élément de la matrice, il contient la valeur
11.5, M(1,10) est le dernier élément de la première ligne, il contient la valeur 10.25, M(2,9) est l’élément situé
sur la deuxième ligne et la neuvième colonne, il contient la valeur 17.75, et M(5,10) quant à lui, est le dernier
élément de la matrice, il contient 13.75.
7
Cours : Initiation à l’algorithmique Université Constantine 2 – Abdelhamid Mehri
ère
Dr. Mohamed BADECHE Tronc Commun – MI, Faculté NTIC – 1 Année (2021-2022)
Remarquez que dans la déclaration d’une matrice, on écrit le mot clé ‘tableau’ et non pas ‘matrice’, puisque
cette dernière n’est autre qu’un tableau à deux dimensions3.
Dans ce cours, quand on parle de ‘tableau’, on veut dire tableau à une dimension (l’équivalent de ‘vecteur’ dans
certaines références), et on désigne par ‘matrices’, les tableaux à plusieurs dimensions.
De la même manière qu’un tableau, une matrice donnée peut contenir des éléments de n’importe quel type,
mais d’un seul type à la fois, et on peut utiliser des constantes qui représentent les dimensions de la matrice.
Algo Moy_Mat_Cons
Constantes
D1 = 5
D2 = 100
Variables
M : Tableau de D1 * D2 Réel
i, j : Entier
Moy : Réel
Début
Pour i 1 à D1 :
Pour j 1 à D2 :
Lire(M(i,j))
FPour
FPour
Pour i 1 à D1 :
Moy 0
Pour j 1 à D2 :
Moy Moy + M(i,j) /D2
FPour
Ecrire(Moy)
FPour
Fin
3
Ou plusieurs dimensions de façon générale.
8
Cours : Initiation à l’algorithmique Université Constantine 2 – Abdelhamid Mehri
ère
Dr. Mohamed BADECHE Tronc Commun – MI, Faculté NTIC – 1 Année (2021-2022)
Pour i 1 à D1 :
Pour j 1 à D2 :
Ecrire(M(i,j))
FPour
FPour
Lecture d’une matrice Exemple de traitement d’une matrice Affichage d’une matrice
Pour i 1 à D1 : Pour i 1 à D1 : Pour i 1 à D1 :
Pour j 1 à D2 : Moy 0 Pour j 1 à D2 :
Lire(M(i,j)) Pour j 1 à D2 : Ecrire(M(i,j))
FPour Moy Moy + M(i,j) /D2 FPour
FPour FPour FPour
Ecrire(Moy)
FPour
Le parcours d’une matrice se fait ligne par ligne si on commence par la boucle qui parcourt les lignes (comme
dans l’exemple précédent), ou colonne par colonne, si on commence par la boucle qui parcourt les colonnes.
9
Cours : Initiation à l’algorithmique Université Constantine 2 – Abdelhamid Mehri
ère
Dr. Mohamed BADECHE Tronc Commun – MI, Faculté NTIC – 1 Année (2021-2022)
Début for(i=0;i<D1;i++)
Pour i 1 à D1 : {
Pour j 1 à D2 : for(j=0;j<D2;j++)
Lire(M(i,j)) {
FPour scanf("%f",&M[i][j]);
FPour
}
}
Pour i 1 à D1 : for(i=0;i<D1;i++)
Moy 0 {
Moy = 0;
Pour j 1 à D2 : for(j=0;j<D2;j++)
Moy Moy + M(i,j) /D2 {
FPour Moy = Moy + M[i][j]/D2;
}
Ecrire(Moy) printf("%f\n",Moy);
FPour }
Fin }
4.2.5. Exercices
Exercice 01:
Écrire un algorithme qui demande de remplir une matrice de 5×3 réels, et met Zéro dans tous les éléments de la
ligne 4 et la colonne 2, puis affiche la matrice résultante.
Exercice 02:
a- Écrire un algorithme qui demande de remplir un tableau de 25 réels et vérifie s’il est trié dans l’ordre
croissant ou pas.
b- Écrire un algorithme qui demande de remplir une matrice de 25×5 réels et vérifie si elle est triée dans l’ordre
décroissant ou pas. Note : pour qu’une matrice soit triée, il faut que les lignes soient triées et que le dernier
élément d’une ligne soit trié par rapport au premier élément de la ligne suivante.
Exercice 03:
Écrire un algorithme qui demande de remplir deux matrices A de 4×2 réels, et B de 2×3 réels, et calcule le
produit matriciel dans une troisième matrice C, dont il affiche le contenu à la fin.
10