Académique Documents
Professionnel Documents
Culture Documents
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
Objectifs Spécifiques
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.
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
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
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
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
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.
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
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.
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 *)
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.
Exemple :
CH ‘ISET de Radès’
CH1 SUBSTR(CH,7,4) dans CH1 on va trouver la sous-chaîne ‘e Ra’.
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