Vous êtes sur la page 1sur 5

Devoir De Synthèse Trimestre 1

Lycée Hannibal Ariana Professeur : Mr Riadh Ben Zekri

Matière : Algorithme et Programmation nombre de feuilles : 4 Durée : 3 H

Nom & Prénom :………………………………………………………………….…….Classe : 4 SI Note : ……... /20

Le candidat est appelé à répondre sur cette même feuille d’examen qui sera remise à la fin de l’épreuve

Exercice 1 (7 points)
Soit le tableau de déclaration des nouveaux types suivant : Soit le tableau de déclaration des objets
suivant :
Type
Objets Type/nature
article= enregistrement
F1 Fiche_article
Code: entier
F2 Fichier Texte
Dispo: chaine Ar , E article
Fin ch Chaine
Fiche_article = fichier d’article Test Booléen
Tab =tableau de 100 article T Tab
NB. Le champ Dispo désigne la disponibilité de l’article
Soit le contenu du fichier F1 : Soit le contenu du fichier F2 :
500*PC_ASUS
Code 100 200 300 400 500 200*PC_DELL
Dispo Oui Non Non Oui Oui 100*PC_HP 104
Bloc0 Bloc1 Bloc2 Bloc3 Bloc4 400*PC_LENOVO 101
300*PC_SAMSUNG 102
Travail demandé :
1) Pour chacune des propositions ci-dessous, mettre V(vrai), si la réponse est correcte, et F(Faux) sinon.
a) Soit la séquence des instructions suivante :
Ouvrir("Article.dat",F1,"rb")
Lire(F1,Ar)
Lire(F1,Ar)
Fermer(F1)
Après l’exécution de la séquence ci-dessus, le contenu de la variable Ar sera
Code : 100 Code :200 Code : 300 Code : 400
Dispo : "Oui" Dispo : "Non" Dispo : "Non" Dispo : Oui"
Après l’exécution de la séquence ci-dessus, la fonction fin_fichier (F1) retourne la valeur :
Faux Vrai 1 2
b) Soit la séquence des instructions suivante :
Ouvrir("Article.txt", F2,"r")
Pour i de 1 à 3 faire
Lire_ligne(F2,ch)
chsouschaine(ch, pos("*",ch), long(ch))
Fin pour
Fermer(F2)
Après l’exécution de la séquence ci-dessus, le contenu de la variable ch sera
PC_LENOVO 101 *PC_DELL *PC_HP 10 *PC_HP 104

c) Compléter le tableau suivant en mettant une croix dans la 2ème colonne (si l’instruction donnée est
valide) ou la 3ème colonne (si l’instruction est invalide), tout en justifiant la réponse si l’instruction
est non valide.

Instruction Valide Non valide Justification (si non valide)


Ecrire(F1,T[2])
Ecrire_nl(F2,E.Code)
Test  fin_fichier(F1) et fin_fichier(F2)
Test  T[1] > T[2]

d) Le pas du tri Shell est déterminé en utilisant la suite :


U0=0 U0 = 1 U0 = 0
U0 = 0 Un = 3*Un-1 -1 Un = 3*Un-1 +1 Un = 3*Un-1 +1
Un = 3 +Un-1

2) Soit F un fichier « C:\nombres.dat » contenant des entiers et soit la séquence suivante :


y 2 ch1convch(y) nb  0
Ouvrir("C:\Nombres.dat",F,"rb")
Pour i de 1 à n faire
Lire(F,x)
ch2 convch(x)
Si pos(ch1,ch2) > -1 alors
nb  nb + 1
Fin si
Fin pour
Ecrire(nb)
Fermer(F)
Donner la trace d’exécution de la boucle Pour pour le fichier F suivant : 25
i 236
x 548

nb 987
635
Exercice n°2 : (2 points) 284
Soit l’algorithme, de la fonction inconnue, suivant :
Fonction Inconnue (x, n : Entier) : Entier
Début
i 1
Tant que ( (x*i) MOD n ≠0 ) Faire
i  i +1
Fin Tant que
Retourner (x * i)
Fin
Questions:
1- Exécuter manuellement inconnue (10, 8) puis inconnue (5, 4)
2- Déduire le rôle de cette fonction.
Problème : (11 points)
A l’occasion des élections présidentielles, les électeurs se présentent au jour du vote au centre électoral dont
ils sont inscrits. Chaque électeur doit présenter une pièce d’identité (CIN ou NP) prouve qu’il est bien inscrit
dans ce centre.

En effet, l’ensemble des électeurs inscrits à un centre électoral donné sont sauvegardés dans un fichier
«C:\electeur.dat ». Pour chaque électeur on retient :

✓ Le numéro d’ordre dans la liste.


✓ Le numéro de sa carte d’identité nationale CIN (8 chiffres) ou le numéro de son passeport NP
(chaine alphanumérique de 10 caractères)
✓ Son nom complet
✓ Mention : 0 ou 1 (0 : pas encore voté ; 1 : Déjà vote) sachant que ce champ est initialement à
zéro.
Exemple :

1 2
09876543 TW01234567
Ala Salem Amal Ali …
0 0

Les électeurs devront choisir un seul candidat parmi ceux enregistrés dans le fichier «C:\Candidat.dat »
suivant cette structure :
✓ Numéro du candidat
✓ Nom et prénom du candidat
✓ Nombre de vote attribués

1 2 3
Foulen Fouleni Foulena Ben Foulen Falten Ben Allen
0 0 0 …

On se propose dans la suite d’écrire un programme qui permet d’afficher le menu suivant :

Election présidentielle 2022

1 : Voter
2 : Clôturer
3 : Réinitialiser
Remarques importantes :

1) L’appui sur la touche 1 implique un nouveau vote. Pour cela, il faut en premier lieu vérifier l’existence
de l’identité de l’électeur (numéro de CIN ou NP) dans le fichier et vérifier aussi qu’il n’a pas voté
(mention = 0).
✓ Si le numéro d’identité n’existe pas afficher le message suivant « Vous n’êtes pas inscrit »
✓ Sinon Si la mention concernée = 1, afficher le message suivant « Vous avez déjà voté »
✓ Sinon :
- Demander le numéro du candidat auquel l’électeur veut voter et vérifier sa validité
(existence dans le fichier « candidat.dat »)
- Incrémenter par 1 le nombre de votes du candidat concerné
2) L’appui sur la touche 2 implique la clôture de la journée de vote. L’agent est appelé à créer un fichier «
C:\Statistiques.txt » dans lequel, on inscrit chaque candidat suivit par le pourcentage de votes qui lui
est attribué
- Dans le cas où un candidat aura 51 % ou plus, il est déclaré gagnant
- Dans le cas contraire, on passe au deuxième tour avec les deux candidats ayant les
pourcentages les plus élevées.
La dernière ligne du fichier « statistique.txt » doit contenir un des deux messages suivants :
❖ ″« Nom » a gagné avec un score de « Score »″ : si un candidat a atteint plus que 51%
❖ ″ On passe au deuxième tour avec :
« Nom1 » : « score 1»

« Nom2 » : « score 2» ″
NB : le pourcentage est calculé comme suit :

(Nombre de vote pour un candidat / nombre total des électeurs qui ont voté) *100

Foulen Fouleni : 17,41 %


Exemple : Foulena Ben Foulen : 34,64%
Falten Ben Allen : 30,11%

On passe au deuxième tour avec :


Foulena Ben Foulen : 34,64%
Falten Ben Allen : 30,11%

3) L’appui sur la touche 3 implique la remise à l’état initial du fichier «C:\electeur.dat »(mention à zéro)
à fin de pouvoir voter le second tour des élections présidentielles.
NB : les deux fichiers électeur et candidat sont déjà rempli.
Travail demandé :
1. Ecrire l’algorithme du programme principal qui permet d’effectuer les tâches décrites
précédemment ainsi que TDOG et TDNT.
2. Ecrire les algorithmes des modules envisagés et leurs TDOL.

Vous aimerez peut-être aussi