You are on page 1of 4

Département 

: Technologies de l’Informatique
DEVOIR DE SYNTHESE
ECUE : Algorithmique & SD 1 Classe(s) : L1-INFO 1 à 9
Enseignant(s) : H. Elouedi, S. Kacem, A. Khélifa, B. Guettat Documents Non Autorisés
Date : 02/01/2014 Durée : 1h30 Nombre de pages : 3 Calculatrice Non Autorisée
La propreté et la clarté des réponses seront tenues en considération (1 point)

Exercice 1 : Traitement sur les matrices 6 points


1- Écrivez la procédure suivante :
Procédure Remplir_Contour (DonRes M : Matrice, Don d, f : Entier) permettant de
remplir le contour d’une matrice M (d et f représentent respectivement les indices du
début et de la fin du contour de la matrice). (3 points)
Procédure Remplir_contour (DonRes M : Matrice, Don d, f : Entier)
Variable
i : Entier
Début
Pour i de d à f Faire 1 point (avec la déclaration)
M[i,d]  d 0.5
M[i,f]  d 0.5
M[d,i]  d 0.5
M[f,i]  d 0.5
FinPour
Fin

2- Écrivez la procédure suivante :


ProcéJdure Remplir_Matrice (DonRes M : Matrice, Don n : Entier) permettant de remplir
toute la matrice carrée M de dimension n de la manière décrite ci-dessus en utilisant la
procédure Remplir_Contour. (3 points)
Procédure Remplir_matrice (DonRes M : Matrice, Don n : Entier)
Variable
d, f : Entier
Début
d1 0.5 (pour les initialisations)
f n
Tant Que (d <= f) Faire 0.5
Remplir_contour (M,d,f) 1 point
d  d +1 0.5
ff–1 0.5
FinTanQue
Fin

1/4
Département : Technologies de l’Informatique

Exercice 2 : Trace d’exécution 4 points


On dispose de deux procédures Un et Deux et d’un algorithme DeuxAppels qui les appelle :
1- Expliquez ce que font les procédures Un et Deux. (1.5 points)
i- La procédure Un permet d’éclater un tableau T de dimension n en deux tableaux T1 et
T2 dont les nombres d’éléments respectifs sont n1 et n2 rendus comme résultats. Cet
éclatement consiste à mettre les éléments d’indices impairs du tableau T dans le tableau
T1, les autres dans le tableau T2.
ii- La procédure Deux permet de fusionner deux tableaux T1 et T2 de dimensions
respectives n1 et n2 en un seul tableau T en plaçant tout d’abord les éléments du tableau
T2 puis ceux du tableau T1.
2- Faites l’exécution de cet algorithme en utilisant le tableau suivant: (2 points)
7 6 5 4 3 2 1
7 26 3 9 43 4 13
Pour chaque appel des procédures Un et Deux au niveau de l’algorithme principal,
donnez le contenu des tableaux T, T1 et T2.
 1er éclatement et fusion
Eclatement: Appel de Un
T1 13 43 3 7 T2 4 9 26

Fusion: Appel de Deux


T 4 9 26 13 43 3 7

 2ème éclatement et fusion:


Eclatement: Appel de Un
T1 4 26 43 7 T2 9 13 3

Fusion: Appel de Deux


T 9 13 3 4 26 43 7

 3ème éclatement et fusion


Eclatement: Appel de Un
T1 9 3 26 7 T2 13 4 43

Fusion: Appel de Deux


T 13 4 43 9 3 26 7
3- Que remarquez-vous ? (0.5 point)
On remarque qu’à la fin de l’exécution, on retrouve le même tableau de départ, ceci après
3 tours (on s’arrête lorsque T[1] = D et T[n] = F).

2/4
Département : Technologies de l’Informatique

Problème : Gestion de livres 9 points


On veut gérer les livres d’une bibliothèque. Ces livres sont représentés à l’aide d’un tableau à une
dimension. Chaque élément de ce tableau est un livre, décrit par son titre et le nom de son auteur. La
déclaration de ce tableau est la suivante :
Constante
MaxLivre (Entier) = 200
Type
Livre = Enregistrement
Nom_Aut : Chaîne[20]
Titre : Chaîne[20]
Fin Enregistrement
Tab_Bibli = Tableau[1..MaxLivre] de Livre
Variable
TB : Tab_Bibli
On suppose que le tableau TB est déjà rempli et trié par ordre alphabétique selon le nom de l’auteur et le
titre (on suppose que pour un auteur, on peut trouver un ou plusieurs livres dans la bibliothèque).

Travail à faire:
1- Écrivez une fonction Nb_Auteur qui retourne le nombre d’auteurs présents dans la bibliothèque
(représentée par le tableau TB). (2 points)
Fonction Nb_Auteur (Don TB : Tab_Bibli, Don n : Entier) : Entier
Variable
nb,i : Entier
Début
nb  1
Pour i de 2 à n Faire
Si (TB[i].Nom_Aut <> TB[i-1].Nom_Aut) Alors
nb  nb + 1
FinSi
FinPour
Retourner(nb)
Fin

2- Écrivez une fonction Rech_Auteur qui retourne l’indice de la première apparition d’un auteur
donné dans la bibliothèque, si l’auteur n’existe pas elle retourne 0. (2 points)
Fonction Rech_Auteur (Don TB : Tab_Bibli, Don n : Entier, Don noma :Chaîne[20]) : Entier
Variable
i,pos : Entier
Début
pos  0 i  1
Tant Que (TB[i].Nom_Aut  noma) Faire
ii+1
FinTantQue
Si (TB[i].Nom_Aut = noma) Alors
pos  i
FinSi
Rech_Auteur  pos
Fin

3/4
Département : Technologies de l’Informatique
3- Écrivez une fonction Nb_Livre_Auteur qui permet de retourner pour un auteur
donné le nombre de ses livres dans la bibliothèque (Vérifiez si l’auteur donné comme paramètre
existe ou non dans la bibliothèque). (2 points)
Fonction Nb_Livre_Auteur (Don TB : Tab_Bibli, Don n : Entier, Don noma :Chaîne[20]) : Entier
Variable
r,nbl,i : Entier
Début
nbl  0
r  Rech_Auteur (TB, n, noma)
Si (r <> 0)
Alors
ir
Tant Que (TB[i].Nom_Aut = noma) et (i  n)
Faire
nbl  nbl + 1
ii+1
FinTantQue
FinSi
Nb_Livre_Auteur  nbl
Fin
4- Proposez une modification au niveau de l’enregistrement Livre afin d’ajouter pour chaque
livre 3 mots clés. Puis écrivez une procédure Rech_MotClé qui affiche tous les livres qui ont un
mot clé donné MotC. (3 points)
Remarque : Exemples de mots clés : Algorithmique, Système, Architecture, Web, etc.
Modification de l’enregistrement : 1 point
Type Type
Tab= Tableau [1..3] de Chaine[15] Livre = Enregistrement
Livre = Enregistrement Ou Nom_Aut : Chaîne[20]
Nom_Aut : Chaîne[20] Titre : Chaîne[20]
Titre : Chaîne[20] MotC1 :Chaine[15]
Tcle : Tab MotC2 :Chaine[15]
Fin Enregistrement MotC3 :Chaine[15]
Fin Enregistrement

Procédure RechMotClé : 2 point


Procédure RechMotClé (Don TB : Tab_Bibli, Don n : Entier, Don MotC : Chaine[15])
Variable
i : Entier
Début
Pour i de 1 à n Faire
Si (TB[i].Tcle[1] = MotC Ou TB[i].Tcle[2] = MotC Ou TB[i].Tcle[3] = MotC) Alors
Ecrire (TB[i].Nom_Aut, " ", TB[i].Titre)
FinSi
FinPour
Fin

4/4

You might also like