Vous êtes sur la page 1sur 8

Exemple introductif

Algorithmique  Supposons qu'on veut conserver les notes d'une classe de 30 étudiants
pour extraire quelques informations. Par exemple : calcul du nombre
d'étudiants ayant une note supérieure à 10

 Le seul moyen dont nous disposons actuellement consiste à déclarer 30


variables, par exemple Note1, Note2,…, Note30. Après 30 instructions lire,
on doit écrire 30 instructions Si pour faire le calcul
nbre ← 0
Si (Note1 >10) alors nbre ←nbre+1 FinSi
Les Tableaux Si (Note2 >10) alors nbre ←nbre+1 FinSi
….
Si (Note30 >10) alors nbre ←nbre+1 FinSi
Les langages de programmation offrent la possibilité de rassembler toutes
ces variables dans une seule structure de donnée appelée tableau

114 2022/2023 Algorithmique et structures de données ISIMA-1LBC. Enseignant : Soufien GDAIM 115

Tableaux : déclaration Tableaux : identification d’un élément du tableau


 Un tableau est un ensemble d'éléments de même type désignés • Exemple :
par un identificateur unique variable Tnotes : tableau [1..30] de réel
 Une variable entière nommée indice permet d'indiquer la position Schématiquement, ce tableau peut être représenté comme suit:
1 2 3 4 …............ 30
d'un élément donné au sein du tableau et de déterminer sa valeur
Tnotes 13 9 10 14 …............ 15
 La déclaration d'un tableau : pour définir une variable de type
tableau il faut préciser:  L'accès à un élément du tableau se fait au moyen de l'indice. Tnotes [i] donne
la valeur de l'élément i du tableau Tnotes
• Le nom (identifiant du tableau) • Exemple: Tnotes[3] désigne la note du 3éme étudiant
• L’indice (généralement de type entier) Tnotes[5] désigne la note du 5éme étudiant

• Le type des éléments (entier, réel, caractère, booléens chaine de  Selon les langages, le premier indice du tableau est soit 0, soit 1. Le plus
caractères). souvent c'est 0 (Langage C), dans ce cas, Tnotes[i] désigne l'élément i+1 du
tableau notes.
variable identificateur tableau [1..dimension] de type  En Algorithmique le premier indice du tableau est 1.

2022/2023 Algorithmique et structures de données ISIMA-1LBC. Enseignant : Soufien GDAIM 116 2022/2023 Algorithmique et structures de données ISIMA-1LBC. Enseignant : Soufien GDAIM 117
Tableaux : exemples (1)
Pour le calcul du nombre d'étudiants ayant une note supérieure à
Tableaux : remplissage d’un tableau

10 avec les tableaux, on peut écrire :
Algorithme Note_sup_Tableau  Un tableau peut être rempli élément par élément à l’aide d’une série
Variables i , nbre : entier d’affectation:
Tnotes : tableau [1..30] de réel
Début T[1]  valeur 1
Pour i de 1 à 30 faire T[2]  valeur 2
Ecrire ("donner une note ") ………..
Lire (Tnotes [ i ] ) T[n]  valeur n
FinPour
 Il est également possible de lire les éléments du tableau à partir du clavier à
nbre ← 0
l’aide de l’instruction Lire(T[i]).
Pour i de 1 à 30 faire
Si (Tnotes [ i ] >=10) alors  Exercice: écrire une procédure de remplissage d’un tableau T à partir du
nbre ← nbre + 1 clavier
FinSi
FinPour
écrire ("le nombre de notes supérieures à 10 est : ", nbre)
Fin
2022/2023 Algorithmique et structures de données ISIMA-1LBC. Enseignant : Soufien GDAIM 118 2022/2023 Algorithmique et structures de données ISIMA-1LBC. Enseignant : Soufien GDAIM 119

Tableaux : remplissage d’un tableau Tableaux : affichage des éléments d’un tableau
 L’affichage des éléments d’un tableau peut être affiché élément par élément à
Procédure SaisieTab (n : entier, var T: tableau [1..50] de réel ) l’aide d’une série d’affichage:
variable i: entier
écrire (T[1])
début écrire (T[2])
Pour i de de 1 à n faire ………..
écrire ("Saisie de l'élément ", i) écrire (T[n])
lire (T[i] )
 Exercice: écrire une procédure d’affichage d’un tableau T.
FinPour
Procédure AfficheTab (n : entier, T: tableau [1..50] de réel )
Fin Procédure
variable i: entier
début
Pour i de 1 à n faire
écrire (T[i])
FinPour
Fin Procédure

2022/2023 Algorithmique et structures de données ISIMA-1LBC. Enseignant : Soufien GDAIM 120 2022/2023 Algorithmique et structures de données ISIMA-1LBC. Enseignant : Soufien GDAIM 121
Tableaux : exemples d'appel Tableaux : exercice
 Algorithme principale où on fait l'appel des procédures SaisieTab et  Soit T un tableau contenant n éléments de type entier. Ecrire une fonction
AfficheTab : MinTab qui affiche le plus petit élément de ce tableau.
Fonction MinTab( n : entier, T: tableau [1..50] d’entier):entier
Algorithme Tableaux variable i: entier
variable p : entier m: entier
A: tableau [1..10] : réel début
m  T[1]  Principe : on suppose que le
Début premier élément est le plus petit
Pour i de 2 à n faire
écrire ("donner le nombre des étudiants" ) si (T[i]<m) alors élément du tableau, ensuite on
lire(p) m  T[i] cherche parmi les suivants s’il
SaisieTab(p, A) y a une valeur plus petite  on
FinSi
la sauvegarde
AfficheTab(p,A) FinPour
Fin Retourner(m)
Fin Fonction
2022/2023 Algorithmique et structures de données ISIMA-1LBC. Enseignant : Soufien GDAIM 122 2022/2023 Algorithmique et structures de données ISIMA-1LBC. Enseignant : Soufien GDAIM 123

Tableaux à deux dimensions Tableaux à deux dimensions


 On peut déclarer des tableaux dans lesquels les valeurs sont  En algorithmique, un tableau à deux dimensions se déclare ainsi :
repérées par deux indices. Ceci est utile par exemple pour variable identificateur :tableau [1..dimension1, 1..dimension2] de type
représenter des matrices.
• Exemple : une matrice M de 3 lignes et 4 colonnes dont les éléments sont
j=1 2 3 4 5 réels
i=1 variable M: tableau [1..3, 1..4] de réel
2 x
 M[i,j] permet d'accéder à l’élément de la matrice qui se trouve à
3
l’intersection de la ligne i et de la colonne j
4

M[2,3]

2022/2023 Algorithmique et structures de données ISIMA-1LBC. Enseignant : Soufien GDAIM 124 2022/2023 Algorithmique et structures de données ISIMA-1LBC. Enseignant : Soufien GDAIM 125
Tableaux à deux dimensions Exemples : lecture d'une matrice
 On peut déclarer des tableaux dans lesquels les valeurs sont  Procédure qui permet de saisir les éléments d'une matrice :
repérées par deux indices. Ceci est utile par exemple pour Procédure SaisieMatrice(L, C: entier; var A:tableau[1..50,1..50] : réel )
représenter des matrices. variables i,j : entier
Début
 En algorithmique, un tableau à deux dimensions se déclare ainsi : Pour i de 1 à L faire
variable identificateur :tableau [1..dimension1, 1..dimension2] de type écrire ("saisie de la ligne ", i )
Pour j de 1 à C faire
• Exemple : une matrice A de 3 lignes et 4 colonnes dont les éléments sont écrire ("Entrez l'élément de la ligne ", i , " et de la colonne ", j)
réels lire (A[i,j])
variable A: tableau [1..3, 1..4] de réel FinPour
FinPour
 A[i,j] permet d'accéder à l’élément de la matrice qui se trouve à Fin Procédure
l’intersection de la ligne i et de la colonne j

2022/2023 Algorithmique et structures de données ISIMA-1LBC. Enseignant : Soufien GDAIM 126 2022/2023 Algorithmique et structures de données ISIMA-1LBC. Enseignant : Soufien GDAIM 127

Exemples : affichage d'une matrice Exemples : somme de deux matrices


 Procédure qui permet d'afficher les éléments d'une matrice :  Procédure qui calcule la somme de deux matrices :

Procédure AfficheMatrice (L, C: entier; A:tableau[1..50,1..50] : réel ) Procédure SommeMatrices(L,C : entier, A,B: tableau [1..50,1..50] de reel;
variables i,j : entier var C: tableau [1..50,1..50] de réel )
variables i,j : entier
Début
Début
Pour i de 1 à L
Pour j de 1 à C Pour i de 1 à L faire
Pour j de 1 à C faire
écrire (A[i,j])
C[i,j] ← A[i,j]+B[i,j]
FinPour
FinPour
FinPour
FinPour
Fin Procédure
Fin Procédure

2022/2023 Algorithmique et structures de données ISIMA-1LBC. Enseignant : Soufien GDAIM 128 2022/2023 Algorithmique et structures de données ISIMA-1LBC. Enseignant : Soufien GDAIM 129
Tableaux : trouver et corriger
Appel des procédures définies sur les matrices l’erreur
Exemple d'algorithme principale où on fait l'appel des procédures définies
précédemment pour la saisie, l'affichage et la somme des matrices : Algorithme 1 Algorithme 2
Essai de tableau 1 Essai de tableau 2
Algorithme Matrices Variables Variables
variables M1,M2,M3 : tableau[1..10,1..10] de réel i : entier i, aux : entiers
Début Tab : tableau[1..10] d’entiers Tab : tableau[1..10] d’entiers
Début Début
SaisieMatrice(3, 4, M1)
tant que (i <= 10) faire pour i de 1 à 10 faire
SaisieMatrice(3, 4, M2) lire (tab[i]) Si Tab[i+1] < Tab[i] alors
AfficheMatrice(3,4, M1) i ← i+1 aux  Tab[i]
AfficheMatrice(3,4, M2) Fin de tant que Tab[i]  Tab[i+1]
Fin Tab[i+1]  aux
SommeMatrice(3, 4, M1,M2,M3)
Fin Si
AfficheMatrice(3,4, M3) Fin de pour
Fin Fin

2022/2023 Algorithmique et structures de données ISIMA-1LBC. Enseignant : Soufien GDAIM 130 2022/2023 Algorithmique et structures de données ISIMA-1LBC. Enseignant : Soufien GDAIM 131

Tableaux : Exercices Tableaux : Chaine de caractères

 Dans un programme informatique, les chaînes de caractères


 Exercice 1
servent à stocker les informations non numériques comme
Ecrire un algorithme permettant de saisir un tableau d’entiers et de retourner par exemple :
le plus petit et le plus grand élément de ce tableau.
 une liste de nom de personne
 Exercice 2  des adresses
Ecrire un algorithme qui permet de calculer la somme des cases paires d’un  etc
tableau d’entiers.  Il n'existe pas de type spécial chaîne. Une chaîne de
 Exercice 3 caractères est traitée comme un tableau à une dimension de
Ecrire un algorithme permettant de convertir un nombre entier positif inferieur caractères.
à 255 en binaire.
 Il existe des notations particulières et des fonctions spéciales
pour le traitement de tableaux de caractères.

2022/2023 Algorithmique et structures de données ISIMA-1LBC. Enseignant : Soufien GDAIM 132 2022/2023 Algorithmique et structures de données ISIMA-1LBC. Enseignant : Soufien GDAIM 133
Tableaux : Accéder à une chaîne et à ses
Tableaux : déclaration d’une Chaine éléments

 Une chaîne de caractères est un tableau de type caractère.  Une chaîne de caractères est une variable comme une autre
La déclaration est identique à un tableau normal: pour un programme: on y accède en l’appelant par son nom
de variable.
<nom_chaine> : Tableau [<dimension>] de caractère
 Une chaîne est un tableau de caractères: pour accéder a ses
 La représentation interne d'une chaîne de caractères est éléments on suit la logique d’un tableau.
terminée par le symbole '\0' (NULL). Ainsi, pour un texte de
n caractères, on doit prévoir n+1 octets.  Exemple:

 Le compilateur C ne contrôle pas si on a réservé un octet Nom : Tableau [1..20] de caractère


pour le symbole de fin de chaîne; l'erreur se fera seulement Nom = "Ahmed"
remarquer lors de l'exécution du programme ...
-> Nom[1] contient ‘A’, Nom[2] contient ‘h’, Nom[3] contient ‘m’,
Nom[4] contient ‘e’, Nom[5] contient ‘d’ , Nom[6] contient ‘\0’.

2022/2023 Algorithmique et structures de données ISIMA-1LBC. Enseignant : Soufien GDAIM 134 2022/2023 Algorithmique et structures de données ISIMA-1LBC. Enseignant : Soufien GDAIM 135

Tableaux : Précédence et opérations Tableaux : Précédence et opérations


 Une chaîne de caractères est une variable : on peut utiliser  Précédence alphabétique des caractères induit une relation
des opérations logiques et mathématiques. de précédence 'est inférieur à' sur l'ensemble des
caractères. (idem pour les autres relations logiques)
 La précédence des caractères dans l'alphabet d'une
 on peut dire que '0' est inférieur à 'Z‘ et on note '0' < 'Z’
machine est dépendante du code de caractères utilisé.
 Ceci est possible car le code du caractère '0' (ASCII: 48) est
 Pour le code ASCII, on peut constater l'ordre croissant inférieur au code du caractère 'Z' (ASCII: 90).
suivant:  Exemples
. . . ,0,1,2, ... ,9, . . . ,A,B,C, ... ,Z, . . . ,a,b,c, ... ,z, . . .  "ABC" précède "BCD” car 'A'<'B'
 Les symboles spéciaux (' ,+ ,- ,/ ,{ ,] , ...) et les lettres  "ABC" précède "B” car 'A'<'B'
accentuées (é ,è ,à ,û , ...) se trouvent répartis autour des  "Abc" précède "abc” car 'A'<'a'
trois grands groupes de caractères (chiffres, majuscules,  "ab" précède "abcd” car "" < "cd"
minuscules).
 " ab" précède "ab” car ' '<'a'
2022/2023 Algorithmique et structures de données ISIMA-1LBC. Enseignant : Soufien GDAIM 136 2022/2023 Algorithmique et structures de données ISIMA-1LBC. Enseignant : Soufien GDAIM 137
Tableaux : Tests logiques Tableaux : Tableaux de chaînes
 En tenant compte de l'ordre alphabétique des caractères,  Une chaîne de caractères est un tableau à 1 dimension de
on peut contrôler le type du caractère (chiffre, majuscule, caractères.
minuscule). Exemples  On peut également définir des tableaux à plusieurs
dimensions qui peuvent contenir des mots:
 Si (C>='0' et C<='9') alors Ecrire ("Chiffre ", C);
 Si (C>='A' et C<='Z') alors Ecrire ("Majuscule ", C); JOUR[7,9] = {“lundi” , ”mardi” , ”mercredi” , ”jeudi” ,

 Si (C>='a' et C<='z') alors Ecrire ("Minuscule ", C); ”vendredi”,”samedi”,”dimanche”};

 On peut convertir des lettres majuscules en des lettres  on peut accéder à ces mots en utilisant la syntaxe suivante:
minuscules: Ecrire(“Aujourd’hui c’est ”,JOUR[3]);
 Si (C>='A' && C<='Z') alors C = C+('a‘-'A‘); qui affichera “Aujourd’hui c’est mercredi”.

ou vice-versa:  pour accéder à une lettre dans un mot:


 Si(C>='a' && C<='z') alors C = C-('a‘-'A‘); JOUR[i,j]

2022/2023 Algorithmique et structures de données ISIMA-1LBC. Enseignant : Soufien GDAIM 138 2022/2023 Algorithmique et structures de données ISIMA-1LBC. Enseignant : Soufien GDAIM 139

Exercices : Chaine de caractères Exercices : Tableaux


 Exercice 1:
 Exercice 1
Ecrire une fonction Long_CH qui retourne comme résultat le nombre
de caractères contenus dans une chaîne de caractères CH. Ecrire une fonction nbOccurrences qui retourne le nombre
 Exercice 2: d’occurrences d’un entier elt donné dans un tableau contenant nbElts
Ecrire une fonction NMOTS_CH qui retourne comme résultat le entiers.
nombre de mots contenus dans une chaîne de caractères CH. Les  Exercice 2
mots de cette chaîne sont séparés par un seul espace.
 Exercice 3:
Ecrire un algorithme qui lit la dimension N d'un tableau T du type entier,
remplit le tableau par des valeurs entrées au clavier. Copiez ensuite
Ecrire une procédure qui inverse l’ordre d’apparition des lettres
dans une chaîne de caractères. toutes les composantes strictement positives dans un deuxième tableau
 Ainsi, FOOT devient TOOF. TPOS et toutes les valeurs strictement négatives dans un troisième
tableau TNEG. Afficher les tableaux TPOS et TNEG.

2022/2023 Algorithmique et structures de données ISIMA-1LBC. Enseignant : Soufien GDAIM 140 2022/2023 Algorithmique et structures de données ISIMA-1LBC. Enseignant : Soufien GDAIM 141
Exercices : Tableaux
Exercice 3
Ecrire une fonction SuiteArithm à valeur booléenne, qui permet de
déterminer si un tableau d’entiers représente une suite arithmétique, en
arrêtant le parcours dès que la réponse est trouvée.
 Un tableau d'entiers représente une suite arithmétique si chaque case de ce
tableau (sauf la première) est égale à la précédente plus une certaine valeur,
cette valeur restant constante pour tout le tableau.

 Par exemple, un tableau contenant les valeurs 5, 11, 17, 23 et 29 contient


une suite arithmétique car chaque case est égale à la précédente plus 6.

2022/2023 Algorithmique et structures de données ISIMA-1LBC. Enseignant : Soufien GDAIM 142

Vous aimerez peut-être aussi