Lycée Farhat Hached M'saken Classe : 4ème Sciences de l’informatique 2
Epreuve : Algorithmique et Programmation
Corrigé du devoir Enseignant : Mr GHARBI M.
de contrôle théorique N°1 A.S. : 2023-2024.
1) Algorithme du Programme Principal
ALGORITHME Gestion_Des_Eleves T.D.N.T. du P.P.
Début Nouveau Types
Copier_FE_TE (FE , TE , n) E_Elv = Enregistrement
Copier_FM_TM (FM , TM) Id : Entier
Nom_Prn : Chaine de caractères
Remplir_FB(TE , TM , n , FB)
Cl : Entier
Fin Fin
T.D.O.G. E_Moy = Enregistrement
Objet Type / Nature Id : Entier
Copier_FE_TE Procédure Moy : Réel
Copier_FM_TM Procédure dn : Chaine de caractères
Remplir_FB Procédure Fin
E_FB = Enregistrement
TE TabE
Id : Entier
TM TabM Pre : Chaine de caractères
N Entier Nom : Chaine de caractères
FE , FM Fichier Texte dn : Enregistrement
FB F_FB J , M , A : Entier
Fin
Classe : Entier
Moy : Réel
Fin
TabE = Tableau de n E_Elv
TabM = Tableau de n E_Moy
FE = Fichier de E_Elv
F_FB = Fichier de E_FB
2) Les algorithmes des modules envisagés
Procédure Copier_FE_TE ( @ FE : Fichier Texte ; @ TE : TabE ; @ n : Entier)
Début
Ouvrir ("C:\Eleves_3SI_2022_2023.txt" , FE , "r") Lire_Ligne (FE , Ch)
n0 T[n].Cl Valeur(Ch)
Tant Que Non ( FinFichier(FE) ) Faire Nn+1
Lire_Ligne (FE , Ch) Fin Tant Que
T[n].Id Valeur(Ch) Fermer(FE)
Lire_Ligne (FE , Prn) Fin
Lire_Ligne (FE , Nom) T.D.O.L.
T[n].Nom_Prn Nom + " " + Prn Objet Type / Nature
Ch , Nom , Prn Chaine de caractères
Page 1 sur 4
Procédure Copier_FM_TM ( @ FM : Fichier Texte ; @ TM : TabM)
Début
Ouvrir ("C:\Moy_3SI_2022_2023.txt" , FM , "r")
n0
Tant Que Non ( FinFichier(FM) ) Faire
Lire_Ligne (FM , Ch)
p Pos("#" , Ch)
TM[n].Id Valeur(SousChaine(Ch , 0 , p))
Ch Effacer(Ch , 0 , p + 1)
p Pos("#" , Ch)
TM[n].Moy Valeur(SousChaine(Ch , 0 , p))
Ch Effacer(Ch , 0 , p + 1)
Ch[4] "-" # en Python est une erreur syntaxique
Ch[6] "-" # alors on passe à la concaténation dans une autre chaine
TM[n].dn Ch
Nn+1
Fin Tant Que
Fermer(FE)
Fin
T.D.O.L.
Objet Type / Nature
Ch Chaine de caractères
P Entier
Page 2 sur 4
Procédure Remplir_FB( @ TE : TabE ; TM : TabM ; n : Entier ; @
FB : F_F_FB)
Début
Ouvrir ("D:\Eleves_4SI_2023_2024.dat" , FB , "wb")
Pour i De 0 à n – 1 Faire
Si TM[i].Moy 10 Alors
[Link] TM[i].Id
[Link] TM[i].Moy
T.D.O.L.
Ch TM[i].dn Objet Type / Nature
[Link].A Valeur(SousChaine(Ch , 0 , 4)) Ch Chaine de caractères
[Link].M Valeur(SousChaine(Ch , 5 , 7)) P,i Entier
[Link].J Valeur(SousChaine(Ch , 8 , 10)) E E_FB
Indice Fonction
j Indice(TM[i].Id , TE , n)
Ch TE[j].Nom_Prn
p Pos(" " , Ch)
[Link] SousChaine(Ch , p + 1 , Long(Ch))
[Link] SousChaine(Ch , 0 , p)
[Link] TE[j].Cl
Ecrire(FB , e)
Fin Si
Fin Tant Que
Fermer(F)
Fin
Fonction Indice ( x : Entier , TE , n) : Entier
Début
j 0 ; test Faux
Tant Que j < n Et Test = Faux Faire
Si TE[j].Id = x Alors
Test Vrai
Sinon T.D.O.L.
jj+1 Objet Type / Nature
Fin Si P,j Entier
Fin Tant Que
P -1
Si j < n Alors
pj
Fin Si
Retourner p
Fin
Page 3 sur 4
Barème :
Décomposition du problème en modules 0.75
Cohérence : appel, entête, conformité et passage des paramètres 0.75
T.D.N.T. 1.00
T.D.O.G. 1.00
T.D.O.L. 1.00
Copie du fichier FE au tableau TE 4.75
Ouverture du fichier 0.50
Initialisation du compteur 0.25
Parcours du fichier texte 0.50
Lecture à partir du fichier texte : 4 fois 1.00
Remplissage des champs : 0.50 * 4 2.00
Incrémentation du compteur 0.25
Fermeture du fichier : 0.25 0.25
Copie du fichier FM au tableau TM 3.50
Ouverture du fichier 0.50
Initialisation du compteur 0.25
Parcours du fichier texte 0.50
Lecture à partir du fichier texte 0.25
Extraction et Remplissage des champs : 0.5 * 3 1.50
Incrémentation du compteur 0.25
Fermeture du fichier : 0.25 0.25
Remplissage du fichier binaire 7.25
Ouverture du fichier 0.25
Parcours du tableau 0.50
Vérification si la moyenne sup à 10 1.00
Recherche de l'indice dans l'autre tableau 2.00
Remplissage des champs : 6 * 0.5 3.00
Ecriture dans le fichier 0.25
Fermeture du fichier 0.25
Total 20.00
Page 4 sur 4