Vous êtes sur la page 1sur 4

LYCEE DE TATAOUINE Classe : 4èmeSI

DEVOIR DE CONTROLE (théorique) Epreuve: Algorithmique


Date : 08 novembre 2023
Prof. :Adel GAJA
Durée: 1 Heure 30 mn

Nom : ………………………………………. Prénom: ………………………………………….

EXERCICE N°1 : (4 PTS)

Soient les tableaux de déclaration des types et des objets suivants :

Type Objet Nat/Type


Article = Enregistrement T Tab
Code : entier E Article
Lib : chaîne F1 Fiche
Qte : réel F2 Fichier texte
Fin Test Booléen
Fiche= fichier de Article
Tab = tableau de 10 Article

Question :
Compléter le tableau suivant en mettant une croix ( X ) dans la 2ème colonne (si l’instruction donnée
dans la 1ère colonne est valide) ou la 3ème colonne (si l’instruction donnée dans la 1ère colonne 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[5])

Ecrire(F2, E.Code)

Lire_ligne(F2, T[2].Lib)

Lire(F1,T[2].Lib)

Test  T[1].Qte > T[2].Qte

Test  Fin_fichier(F1)

EXERCICE N°2 : (4 PTS)

1
Soit l’algortithme de la fonction suivante

Fonction inconnue (ch :chaine,c :caractère) :entier

Debut

Nb ← 0

Tant que pos( majus( c ), majus( ch ) ) ≠ -1 Faire

Nb ← Nb+1

ch ← sous_chaine(ch , pos( c , ch )+1 , long( ch ))

Fin Tant que

Retourner Nb

Fin

Questions :

1. Remplir le tableau de déclaration des objets locaux ci-dessous

objet Type

2. Quel est le résultat retourné par cette fonction pour l’appel suivant
Inconnue( "Eventuellement" , "E" )
…………………………………………………………………………………………………………………………………………………
3. Quand un module est dit récursif
…………………………………………………………………………………………………………………………………………………
4. Ecrire une version récursive de cette fonction
…………………………………………………………………………………………………………………………………………………
…………………………………………………………………………………………………………………………………………………
…………………………………………………………………………………………………………………………………………………
…………………………………………………………………………………………………………………………………………………
…………………………………………………………………………………………………………………………………………………
………………………………………………………………………………………………………………………………………………..
………………………………………………………………………………………………………………………………………………..
………………………………………………………………………………………………………………………………………………..
………………………………………………………………………………………………………………………………………………..
………………………………………………………………………………………………………………………………………………..
………………………………………………………………………………………………………………………………………………..
………………………………………………………………………………………………………………………………………………..
………………………………………………………………………………………………………………………………………………..
………………………………………………………………………………………………………………………………………………..

EXERCICE N°3 : (12 PTS)

2
Une agence de voyage, dans le cadre de mieux gérer les frais(dépenses) liées au transport de ses
clients, décide de charger chaque conducteur d’autobus de noter les informations liées à ses trajets
effectués durant l’année dans un fichier texte nommé "carnet_de_bord.txt" dont la structure est la
suivante :

 La 1ère ligne contient le kilométrage initial (à chaque début d’année) de l’autobus


 Les lignes suivantes (une ligne pour chaque mois) contiennent les informations sur les trajets
comme le mois concerné puis le symbole : puis pour chaque trajet le nombre de passagers
transportés et la valeur du compteur à la fin du trajet séparés par le symbole #
il faut noter également que les informations de deux trajets seront séparées par le symbole -
Exemple :

Travail Demandé :

Afin de valoriser et exploiter les informations contenues dans le fichier "carnet_de_bord.txt" on se


propose d’écrire un algorithme qui permet de :

1. Générer à partir de ce fichier un autre fichier binaire "trajets.dat" qui récapitule tous les
trajets réalisés et dont chaque trajet est caractérisé par :
 Mois : mois dans lequel le trajet est réalisé
 Nbpr : nombre de personnes transportés
 Dist : distance parcourue (depuis la dernière valeur du compteur)
 Cper : coût par personne (sachant que la consommation moyenne d’un autobus est
de 30L au 100 km et que le litre de carburant coûte 1.985 dt)
2. Déterminer et afficher le cumul (total) de personnes transportées et celui des distances
parcourues pour chaque mois
3. Déterminer et afficher le mois ayant le plus faible coût de transport par personne et celui
ayant le coût le plus élevé

Développez l’algorithme du programme principal ainsi que ses modules associés en précisant les
structures des données utilisées

Exemple d’exécution :

3
Janvier : nombre de personnes tranportés=182 nombres de Km parcourus=1210

Février : nombre de personnes tranportés=77 nombres de Km parcourus=450

Mars : nombre de personnes tranportés=112 nombres de Km parcourus=740

Avril : nombre de personnes tranportés=116 nombres de Km parcourus=1003

Mai : nombre de personnes tranportés=184 nombres de Km parcourus=1139

Juin : nombre de personnes tranportés=235 nombres de Km parcourus=2023

Juillet : nombre de personnes tranportés=462 nombres de Km parcourus=3757

Aout : nombre de personnes tranportés=464 nombres de Km parcourus=3540

Septembre : nombre de personnes tranportés=146 nombres de Km parcourus=998

Octobre: nombre de personnes tranportés=124 nombres de Km parcourus=864

Novembre : nombre de personnes tranportés=112 nombres de Km parcourus=732

Décembre : nombre de personnes tranportés=294 nombres de Km parcourus=2112

Le mois de Février est celui ayant le cout de transport le plus faible à savoir 3.480 dt/personne

Le mois de Avril est celui ayant le cout de transport le plus élevé à savoir 5.149 dt/personne

Vous aimerez peut-être aussi