Vous êtes sur la page 1sur 8

Manuel d’Algorithmique et de

Programmation 1
Objectif Général 3 : Manipulation des Structures de Données Statiques

Support de Cours

Cet objectif vise à développer chez l’apprenant les capacités théoriques et pratiques lui
permettant de proposer correctement une solution algorithmique relative à un problème
structuré, en utilisant les structures de données statiques (Tableaux, Chaines, Enregistrements,
etc.).
.
Manuel d’Algorithmique et de Programmation 1


Chapitre 3 : Manipulation des Structures de Données Statiques

Objectif Général 3 : Ce cours vise à développer chez l’apprenant les capacités


théoriques et pratiques lui permettant de proposer une solution algorithmique de qualité
relative à un problème structuré, en utilisant les structures de données statiques.

Objectifs Spécifiques

Objectif spécifique 1 (OS-1) : Maitriser le type


Objectif Général 3 (OG 3) Tableau (Vecteurs et Matrices).
Objectif spécifique 2 (OS-2) : Distinguer entre
Développer chez l’apprenant les capacités Tableau de caractères et Chaine de caractères.
théoriques et pratiques lui permettant de Objectif spécifique 3 (OS-3) : Maîtriser le Type
proposer correctement une solution Enregistrement.
algorithmique relative à un problème Objectif spécifique 4 (OS-4) : S’initier au type
structuré, en utilisant les structures de Fichier.
données statiques (Tableaux, Chaines,
Enregistrements, etc.).

© B.G – Algorithmique & Programmation 1 – Version 4 – 2021 2


Manuel d’Algorithmique et de Programmation 1


Objectif Général 3 : Développer chez l’apprenant les capacités théoriques et pratiques lui
permettant de proposer une solution algorithmique de qualité relative à un problème structuré,
en utilisant les structures de données statiques.

Objectif spécifique 1 (OS-1.3) : Maîtriser le type tableau (Vecteur & Matrice).

Capacités Attendues
Id_Cap Intitulé de la Capacité
C1.1.3 Comprendre la notion de Structures de Données
C2.1.3 Comprendre l'utilité d'un Tableau à 1 dimension (Vecteur)
C3.1.3 Maîtriser les opérations de base sur un Vecteur
C4.1.3 Maîtriser l'algorithme de Recherche Séquentielle dans un vecteur
C5.1.3 Maîtriser l'algorithme de Recherche Dichotomique dans un vecteur
C6.1.3 Appliquer un algorithme de Tri sur un vecteur
C7.1.3 Évaluer la Complexité des algorithmes de recherche et de Tri
C8.1.3 Comprendre l'utilité d'une Matrice
C9.1.3 Maîtriser les opérations de base sur une Matrice
C10.1.3 Rechercher une valeur dans une Matrice
C11.1.3 Réaliser la Multiplication de deux Matrices
C12.1.3 Comparer algorithmiquement deux Matrices
C13.1.3 Implémenter les différents concepts sur les Vecteurs en Langage C
C14.1.3 Implémenter les différents concepts sur les Matrices en Langage C

Objectif spécifique 2 (OS-2.3) : Distinguer entre Tableau de caractères et Chaine de caractères.

Capacités Attendues
Id_Cap Intitulé de la Capacité
C1.2.3 Comprendre l’apport d'une Chaine par rapport à un Tableau de caractères
C2.2.3 Savoir déclarer une Chaine de caractères
C3.2.3 Maîtriser les opérations de base sur les Chaines de caractères
C4.2.3 Maîtriser l'utilisation des fonctions prédéfinies sur les Chaines de caractères
C5.2.3 Utiliser le type Chaine pour traiter le cas des Palindromes
C6.2.3 Implémenter les différents concepts sur les Chaines en Langage C

Objectif spécifique 3 (OS-3.3) : Maîtriser le type Enregistrement.

Capacités Attendues
Id_Cap Intitulé_Cap
C1.3.3 Comprendre la notion d'Enregistrement
C2.3.3 Savoir Définir et déclarer un Enregistrement
C3.3.3 Maîtriser les opérations de base sur les Enregistrements
C4.3.3 Savoir déclarer un Tableau d'Enregistrements
C5.3.3 Parcourir un Tableau d'Enregistrements
C6.3.3 Réaliser un Tri sur une des colonnes d'un Tableau d'Enregistrements
C7.3.3 Appliquer les concepts d'enregistrement et de Tableau d'Enregistrements en Langage C

© B.G – Algorithmique & Programmation 1 – Version 4 – 2021 3


Manuel d’Algorithmique et de Programmation 1


Objectif spécifique 4 (OS-4.3) : Comprendre le Concept fichier.

Capacités Attendues
Id_Cap Intitulé de la Capacité
C1.4.3 Comprendre l'utilité d'un Fichier de données
C2.4.3 Définir qu'est-ce qu'un Fichier de données
C3.4.3 Enumérer les caractéristiques de base d'un Fichier de données
C4.4.3 Représenter un Fichier d'Enregistrements
C5.4.3 Comprendre les rôles joués par un SGF
C10.4.3 Appliquer les primitives d’un fichier dont l’Organisation est Séquentielle
C12.4.3 Implémenter les primitives de l'Organisation Séquentielle en Langage C

© B.G – Algorithmique & Programmation 1 – Version 4 – 2021 4


Manuel d’Algorithmique et de Programmation 1


Objectif Général 3 : Développer chez l’apprenant les capacités théoriques et pratiques lui
permettant de proposer une solution algorithmique de qualité relative à un problème structuré,
en utilisant les structures de données statiques.

Objectif spécifique 2 (OS-2.3) : Distinguer entre Tableau de caractères et Chaine de caractères.

 Comprendre l’apport d'une Chaine par rapport à un Tableau de caractères.


 Savoir déclarer une Chaine de caractères.
 Maîtriser les opérations de base sur les Chaines de caractères.
 Maîtriser l'utilisation des fonctions prédéfinies sur les Chaines de caractères.
 Utiliser le type Chaine pour traiter le cas des Palindromes.
 Implémenter les différents concepts sur les Chaines en Langage C.

1. PROBLEMATIQUE
On dispose d’un tableau de N caractères. On sait que cette structure est définie en mémoire à
l’avance : réservation de n cases en mémoire.
On peut être en présence de trois situations à problème :
- Si le tableau n’est pas bien exploité, c'est-à-dire plusieurs cases sont vides : Gaspillage de
l’espace mémoire ; chose qui n’est aimée en algorithmique.
- Si le tableau est insuffisant pour placer une information, c'est-à-dire qu’on risque d’avoir
une information dont sa taille est plus grande que celle du tableau T : Perte
d’informations ; ce qui est très grave.
- Au niveau exploitation, on doit faire n opérations d’E/S pour traiter tous les éléments du
tableau ; c’est très couteux !!
Que doit-on faire pour remédier aux limites du tableau de caractères ?
On doit utiliser une structure de données permettant regrouper sous un même nom de variable un
ensemble de caractères sans gaspillage et sans perte et avec la possibilité de la manipuler en une
seule opération d’E/S. Il s’agit du type CHAINE.

2. DEFINITION
Une chaîne de caractères est une structure de données permettant de regrouper sous un même
nom de variable, un ensemble de caractères pouvant être exploitée en une seule opération d’E/S.
Remarque :
Une chaîne de caractères peut être exploitée en tant que variable chaîne, dans ce cas on
manipule des variables chaînes : on peut lire un mot en un seul coup (Lire(nom)), ou bien en tant
que tableau de caractères : parcourir la chaîne caractère par caractère (compter le nombre
d’apparition de la lettre ‘A’ dans un nom).

3. REPRESENTATION

Type Nom_Chaine = Chaine[Taille_Maxi]


Variable Nom_Variable : Nom_Chaine

Remarque :
Taille_Maxi désigne la taille maximale que peut avoir une chaîne de caractères ; il doit être
strictement positif.
Exemple
Type Nom = Chaine[20]
Variable Nom1, Nom2 : Nom

On a déclaré une chaîne Nom qui est de taille maximale 20 et deux variables Nom1 et Nom2.

© B.G – Algorithmique & Programmation 1 – Version 4 – 2021 5


Manuel d’Algorithmique et de Programmation 1


Remarque : Dans certains langages de programmation et lors de la déclaration d’une chaîne de


caractères, on peut ne pas indiquer la taille maximale. En fait, c’est le langage qui s’en occupe
et affectera automatiquement la taille maximale qu’il puisse supporter. En Pascal, cette taille
est de 255.

4. LES OPERATIONS DE BASE SUR LES CHAINES

4.1. Lecture d’une chaîne


a-) En tant que Chaîne : Lire (Nom)
b-) En tant que tableau de caractères
Pour I allant de 1 à Taille_Maxi Faire
Lire (Nom(I))
Fin Pour
L’inconvénient dans cette lecture réside essentiellement dans la lecture de cases parfois
inutiles : imaginez que la taille maximale est de 50 et le nom qu’on va introduire est de
20 ; on est alors obligé de compléter la saisie par 30 espaces.

4.2. Affichage
a-) En tant que Chaîne : écrire (Nom1)
b-) En tant que tableau de caractères
Pour I allant de 1 à Taille_Maxi Faire
Écrire (Nom1(I))
Fin Pour

4.3. Initialisation
a-) En tant que Chaîne : Nom1  "" (* chaîne vide *)

b-) En tant que tableau de caractères


Pour I allant de 1 à Taille_Maxi Faire
Nom1(I)  "" (* soit le caractère vide soit le caractère espace *)
Fin Pour

5. LES FONCTIONS PREDEFINIES SUR LES CHAINES


Les langages de programmation comportent un jeu de fonctions prédéfinies sur le type Chaîne de
caractères. On cite principalement les fonctions suivantes :
- La fonction LONG qui retourne la longueur d’une chaîne.
- La fonction CONCAT qui rassemble plusieurs chaînes en une seule.
- La fonction POS qui retourne la position d’une sous chaîne dans une chaîne.
- La fonction MAJ qui rend une chaîne en Majuscules
- La fonction MIN qui rend une chaîne en minuscules
- La fonction SOUS_CHAINE qui permet d’extraire une sous-chaîne à partir d’une chaîne.

© B.G – Algorithmique & Programmation 1 – Version 4 – 2021 6


Manuel d’Algorithmique et de Programmation 1


5.1. La fonction LONG


Cette fonction lorsqu’elle est appliquée à une chaîne de caractères, retourne sa taille
réelle et non pas la taille maximale. Algorithmiquement, elle est notée LONG(nom_chaine).
Exemple :
CH : chaine
X : entier
-------------------------------
CH ‘ISET de Radès’
X  LONG(CH)
Écrire (LONG(CH))
------------------------------
Dans la variable X, on va trouver la valeur 13.

Remarque :
La longueur d’une chaîne étant un entier, on ne peut pas la mettre de façon isolée dans un
algorithme ; on doit l’affecter à une variable de type entier ou on doit le mettre dans une
primitive d’écriture.
5.2. La fonction CONCAT
Cette fonction permet de concaténer plusieurs chaînes non nécessairement de même
taille, en une seule. Algorithmiquement, elle est notée CONCAT(CH1,CH2,…,CHN) où les CHI sont
des chaînes.

Exemple :
Nom : Chaîne
Prenom : Chaîne
Etudiant : Chaîne
-----------------------------------------------------
Etudiant  CONCAT(Nom, Prenom)
Écrire (CONCAT(Nom, Prenom))
------------------------------------------------------

Dans la variable Etudiant, on va trouver une chaîne contenant le nom et le prénom ensemble.
Remarque :
La concaténation de plusieurs chaîne est une chaîne, on ne peut pas la mettre isolée dans un
algorithme ; on doit l’affecter à une variable de type Chaîne ou on doit la mettre dans une
primitive d’écriture.
5.3. La fonction POS
La fonction POS retourne la position à partir de laquelle une sous-chaîne apparaisse dans
une chaîne. Dans le cas où cette sous-chaîne n’existe pas, elle retourne la valeur zéro.
Algorithmiquement, cette fonction est notée POS et le résultat est un entier.
X  POS(nom_chaîne, nom_sous_chaîne)
X prendre pour valeur, la position à partir de laquelle la sous_chaîne apparaîsse dans la chaîne.

Exemple :
CH ‘ISET de Radès’
CH1  ‘Radès’
X POS(CH, CH1) on trouvera dans X la valeur 9 ; de même pour
X POS(CH,’Radès’), on trouvera le même résultat.

Remarque :
La position étant un entier, on ne peut pas la mettre isolée dans un algorithme ; on doit
l’affecter à une variable de type entier ou on doit la mettre dans une primitive d’écriture.

© B.G – Algorithmique & Programmation 1 – Version 4 – 2021 7


Manuel d’Algorithmique et de Programmation 1


5.4. Les fonctions MAJ et MIN


Ces fonctions permettent de transformer une chaîne en majuscules, respectivement en
minuscules, en une chaîne en minuscules, respectivement en majuscules. Algorithmiquement, on
les note par MAJ(CH) ou MIN(CH).
Exemple :
CH ‘Iset’
CH MAJ(CH) dans ce cas CH prendra la valeur ‘ISET’
CH MIN(CH), on aura dans CH la valeur ‘iset’.

5.5. La fonction SOUS_CHAINE


Il s’agit d’extraire une sous-chaîne de taille p à partir d’une position pos dans une chaîne.
Algorithmiquement, elle est notée Sous_Chaine. Cette fonction retourne une chaîne de
caractères.
CH1 Sous_Chaine(CH, pos, p)

- CH étant la chaîne principale à partir de laquelle on va faire l’extraction.
- pos est la position à partir de laquelle on va procéder l’extraction.
- p est la taille de la sous-chaîne à extraire.

Exemple :
CH  ‘ISET de Radès’
CH1 SUBSTR(CH,7,4) dans CH1 on va trouver la sous-chaîne ‘e Ra’.

6. APPLICATION : CAS DU PALINDROME


On va reprendre l’exercice du palindrome en utilisant les chaînes de caractères.

Solution
Algorithme Palindr
Type mot = chaine
Variable CH1,CH2 : Chaine
Début
Lire(CH1) (* lecture du mot en un seul coup *)
Pour I allant de 1 à LONG(CH1) Faire
CH2(I)CH1(LONG(CH)-I+1)
Fin Pour
(* exploitation du mot caractère par caractère *)
Si (CH1=CH2) Alors écrire (CH1, ‘est un Palindrome’)
Sinon écrire (CH1, ‘n’’est pas un palindrome’)
Fin Si
Fin

© B.G – Algorithmique & Programmation 1 – Version 4 – 2021 8

Vous aimerez peut-être aussi