Lycée Route de la Plage Soliman Enseignant : M.
Riadh NACIRI
************* Classe : 4 SI 1 + 4 SI 2
Devoir de synthèse n°1
Algorithmique & programmation Date : 12/12/2023 Durée : 3heures
Exercice n°1 : (2 pts)
Travail demandé :
Ecrire une fonction récursive puissance permettant de calculer an en utilisant le principe décrit
précédemment.
Exercice n°2 : (3 pts)
Fonction Quoi(x : ………………………….): …………………..
Début
Si long(x)=0 alors
Retourner 0
Sinon si "0" ≤ x[ long(x)-1 ]≤ "9" alors
Retourner valeur(x[ long(x)-1 ]) + 10* ( Quoi (sous_chaine(x, 0, long(x)-1)) )
Sinon
Retourner Quoi (sous_chaine(x, 0, long(x)-1))
Fin si
Fin
Travail demandé :
1) Compléter les pointillés
2) Donner la trace d’exécution de la fonction Quoi pour chacune des cas suivants :
1er cas : x = "CA1920"
2ème cas : x = "20BAC24"
3) En déduire le rôle de la fonction Quoi.
Page 1 sur 4
Exercice n°3 : (6 pts)
Soit un tableau T de N lettres minuscules (6≤ N≤ 100) et D et N deux entiers qui répondent aux conditions
suivantes :
D est un entier diviseur de N strictement supérieur à 1
M est un entier tel que N = M*D
On se propose de trier les D éléments des M blocs disjoints qui constituent le tableau T.
Travail demandé :
Ecrire l’algorithme d’un module permettant de trier dans l'ordre croissant les éléments de chaque bloc du
tableau T en les plaçant dans un fichier d'enregistrement blocs.dat
NB : chaque enregistrement contient deux champs :
le numéro du bloc
les éléments du bloc
Page 2 sur 4
Exercice n°4 : (9 pts)
Rima envoie tous les temps des messages à son amie Ghofrane, mais vu que les messages transmis
contiennent des informations importantes, Elles sont peur du piratage pour cela elles décident de coder
leurs messages comme suit :
Etape 1 : choisir un nombre m entre 10 et 15
Etape 2 : a- Calculer le nombre de caractères dans le message (nbc) et le nombre de lignes dans les
messages (nbl)
b- calculer la valeur n = (nbc+nbl-1) DIV M
Si le reste de la division précédente est différent de zéro, ajouter 1 à n
Etape 3 :
Remplir une matrice T de taille n * m par les caractères du message à envoyer en parcourant la matrice
ligne par ligne, en remplaçant chaque retour à la ligne par le caractère « # » et en complétant la dernière
ligne par des étoiles. (Si nécessaire)
Etape 4 : construire un deuxième fichier texte structuré de la façon suivante :
- La 1ère ligne contiendra le caractère dont le code ascii est le nombre m saisi au début * 10.
- Chacune des lignes suivantes contiendra une chaine formée par la concaténation des caractères
d’une colonne de la matrice (dans l’ordre).
Le contenu de ce fichier (le fichier 2) est le message codé à envoyer.
Le but de Rima consiste à réaliser un programme permettant de construire, à partir du fichier
(«c:\bac2024\message.txt») contenant déjà le message à envoyer, un deuxième fichier
(« c:\bac2024\code.txt ») contenant le message codé obtenu suite à l’application du principe décrit ci-
dessus
Page 3 sur 4
Exemple : Soit le fichier texte contenant le message à coder suivant
On va choisir m = 10 nbc = 54 nbl = 3
n = ( nbc + nbl -1 ) DIV 10 = (54 + 3 -1) DIV 10 = 56 DIV 10 = 5 et le reste =6
Reste différent de 0 donc n = 5 + 1 = 6 Donc la matrice à construire sera de taille 6*10
Le retour à la ligne sera remplacé par le caractère « # » et en complétant la dernière ligne par des étoiles (‘*’).
B o n j o u r G h
o f r a n e , # C o
m p t e = R i m
a 6 6 # M o t d e
p a s s e = r
2 0 i m 9 * * * * *
Le fichier résultat (F2) sera :
10 *10 = 100 le caractère correspondant
au code Ascii 100 est le caractère ‘’d’’
Boma 2
ofp6p0
nrt6ai Travail demandé :
jae#sm On vous demande d’élaborer :
on Ms9 1) un algorithme d’un module permettant de déterminer la valeur de n
comme décrit ci-dessus
ue=oe*
r, t * 2) un algorithme d’un module permettant de remplir la matrice M
suivant le principe décrit précédemment.
#R = *
GCid * 3) Un algorithme d’un module permettant de Générer le fichier F2
(code.txt) suivant le principe décrit précédemment
homer*
Page 4 sur 4