Correction de l'Examen de Passage - Théorie 2013 - TDI
Dossier 1 (13pts) 1. Il s’agit de vérifier les connaissances générales du stagiaire dans le domaine de l’informatique. Le correcteur saura apprécier la pertinence des réponses. (2pts) 2.
a. Représenter la fonction F sur une table de vérité. (1 ,5pt)
b. Simplifier graphiquement la fonction F. (1,5pt)
Réunir les éléments de la première colonne et de la dernière colonne : ¯B. Puis réunir les éléments de la première ligne et de la dernière ligne :
3. Au parlement, il y a 300 représentants qui tentent de voter une loi. Un vote peut se traduire par l’un des trois cas suivants : Oui, Non et Abstention. Abstention signifie refus de participer au vote. a. Nombre de résultats coïncide avec le nombre d’applications d’un ensemble ayant 300 éléments (les votants) vers un ensemble de 3 éléments (Oui, Non, Abstention) puisque chaque votant choisira une de ces trois options. Donc le nombre de résultats est égal à 3300. (2pts) b. D’abord on va compter le nombre de cas favorables. Chaque fois que nous fixons un groupe de 120 représentants parmi les 300 votants qui vont choisir l’option « Oui », nous devrons choisir 120 autres représentants parmi les 180 (=300-120) restants qui vont choisir l’option « Non ». Nous avons donc fixé 240 (=120+120) représentants et donc il nous reste à choisir 60 représentants parmi les 60 (=300-240) restants qui vont « s’abstenir ».
Tous les cas sont équiprobables. Donc, la probabilité est égale au résultat de la division du nombre des cas favorables par le nombre des cas possibles. Donc le résultat cherché est : (2pts)
4. Convertir en octal et en décimal les nombres suivants : il est plus simple de passer de la base 16 à la base 2 et puis de cette dernière vers la base 8 : a. (1001,1)16 = (1 0000 0000 0001,0001 0000)2 = (001 000 000 000 001,000 100)2 = (10001,04)8. (2pt)
(1001,1)16 = (1 * 163 + 1 * 160 + 1 * 16-1)10 = (4097,0625)10 b. (1000)16 = (10000)8 : il suffit de soustraire un du résultat précédent. (2pts)
(0,01)16 = (0,0000 0001)2 = (0,000 000 010)2 = (0,002)8
Donc (1000,01)16 = (10000,002)8
De même, (1000)16 = (4096)10
(0,01)16 = 1 * 16-2 = (0,00390625)10
(1000,01)16 = (4096, 00390625)10
Rappel : le stagiaire doit fournir plus de détails au niveau des calculs. Attribuez la note Zéro (0) si un résultat est fourni directement sans détails.
Dossier 2 (12pts)
Soon...
Dossier 3 (6pts) a. MCD
b. MLD
Dossier 4 (9pts)
La solution proposée plus bas, vise surtout à montrer le caractère « récursif » de la méthode ToString.
class Personne
{
public string Nom, Prenom;
public Personne Père, Mère;
public Personne(string Nom, string Prenom) {
this.Nom = Nom;
this.Prenom = Prenom;
// Les deux instructions ci-dessous ne sont pas vraiment nécessaires :
Pere = null;
Mere = null;
}
public Personne(string Nom, string Prénom, Personne P, Personne M) {
this.Nom = Nom;
this.Prenom = Prenom;
Pere = P;
Mere = M;
}
public string NomComplet() { return Nom + "\t" + Prenom; }
public override string ToString() {
if (Pere != null)
return Pere.ToString() + Environment.NewLine + Pere.NomComplet();
elsereturn "";
}
public void affiche() {
string ch=ToString();
Console.WriteLine("Cette personne se nomme : " + NomComplet());
if(ch!="") Console.WriteLine("Liste des ancêtres à partir du plus ancien :" + Environment.NewLine + "Nom\tPrénom" + ch);
}
}
Télécharger la correction de l'examen de passage - Théorie 2013 :
Soon ...
Exercice 1 : Techniques de programmation : (16Pts)
La séquence de mots de Fibonacci Binaire (chaînes de bits représentés par le caractère ‘0’ ou ‘1’) est définie comme suit:
F(0)= ‘0’
F(1)= ‘1’
F(N)=F(N-1)+F(N-2)
Ici + représente la concaténation de chaînes. Les premiers éléments sont les suivants :
1- Ecrire une fonction en C qui reçoit comme paramètre une chaine de caractères S et retourne vrai si la chaine S est composée que des caractères ‘0’ ou ‘1’, retourne faux dans le cas contraire. (6pts) 2- Ecrire une fonction C qui reçoit comme paramètres un entier N et une chaine de caractère S composée que des 0 et des 1 et qui retourne le nombre de fois S se trouve dans F(N). (6pts) 3- Créer un programme principal qui saisit un entier N et une chaine S et affiche le nombre d’occurrence de S dans F(N). Le programme doit utiliser les deux fonctions précédentes. (4pts)
Exercice 2 : Programmation orientée objet :
On souhaite développer une application en C# qui permet de gérer la matière d’œuvre et le petit outillage utilisés et consommés par les groupes des stagiaires en formation lors de la réalisation de leurs travaux pratiques. Les articles sont soient de la matière d’œuvre (papier, stylo, câble, …) ou le petit outillage (pince, marteau, scie …) demandé par les formateurs pour la réalisation des Travaux Pratiques dans le cadre de la formation des stagiaires. A- La classe Article est caractérisée par un code, une désignation, un prix unitaire d’achat et une quantité en stock. (12pts) 1- Créer la classe virtuelle Article avec un constructeur sans paramètre et un constructeur avec paramètres. (2pts) 2- Écrire les méthodes d’accès (accesseurs) pour toutes les propriétés de cette classe ainsi que la méthode toString() qui renvoie toutes les propriétés séparées par un point-virgule. (2pts) 3- Implémenter la méthode polymorphique CalculerValue() qui calcule et affiche la valeur de l’article qui est le produit de la quantité en stock par le prix unitaire d’achat. (2pts) 4- Créer la classe MyDate caractérisée par le jour, le mois et l’année de type entier avec un constructeur par défaut et d’initialisation et les accesseurs pour les trois propriétés de la classe. (3pts) 5- Gérer une exception pour cette classe (MyDate) au moment de l’initialisation de l’objet ou de sa modification de manière à excepter que des valeurs pour des dates valides. Seulement les dates supérieures à 01/01/1971 qui doivent être acceptées. (3pts) B- La Classe MatiereOeuvre représente la famille d’articles consommés par les stagiaires lors de leur Travaux Pratiques qui sont caractérisés par une date de péremption. Cette classe hérite de la classe Article. (7pts) 6- Implémenter la classe dérivée MatiereOeuvre en dotant cette classe par les constructeurs par défaut et d’initialisation. (3pts) 7- Doter cette classe par les accesseurs et la méthode toString() ; (2pts) 8- Surdéfinir la méthode CalculerValue() pour afficher la date de péremption de l’article. (2pts) C- Afin de pouvoir gérer les consommations en matière d’œuvre des groupes en formation par établissement, une classe appelée PointConsommation regroupe toutes les consommations en matière d’œuvre sous forme de collection utilisées par un groupe en formation appartenant à un établissement donné durant une année de formation. (19pts) 9- Créer la classe PointConsommation caractérisée par le nom d’établissement de formation, le nom du groupe de formation, l’année de formation et une liste des articles de type Matière d’ouvre consommés. La classe doit être implémentée avec un constructeur et les accesseurs. (3pts) 10- Ajouter à cette classe la méthode AjouterMo permettant d’ajouter un objet de la classe MatiereOeuvre à la collection (3pts) 11- Doter la classe PointConsommation par une méthode pour sauvegarder l’objet dans un fichier dont le chemin d’accès est passé comme argument. (5pts) 12- Doter la classe PointConsommation par une méthode pour restaurer l’objet à partir d’un fichier dont le chemin d’accès est passé comme argument. (5pts) 13- Créer une classe programme principal permettant d’instancier deux objets P1 et P2 de la classe PointConsommation pour le groupe de formation «TDI» de «L’ISTA NTIC». Le code de la fonction principale doit saisir l’objet P1 et insérer dans la collection trois objets de la classe MatiereOeuvre à créer et enfin l’objet P1 doit être sérialisé dans un fichier externe. A la fin le code doit restaurer le contenu de ce fichier dans l’objet P2 et puis l’afficher sur écran pour vérification. (3pts)
1- Créer la feuille selon le modèle présenté ci-dessus. Ajouter le code qui permet sur clique du bouton d’option Petit Outillage de changer le texte de l’étiquette « Matière d’œuvre » en « Durée de Vie » (3pts) 2- Créer le code qui permet sur clic du bouton Enregistrer de sauvegarder l’article dans le fichier binaire MatireOeuvre.dat ou dans le fichier binaire PetitOutillage.dat en fonction du bouton d’option choisi par l’utilisateur. L’article doit être enregistré sans écraser l’ancien contenu des fichiers. (8pts)
Les Examens de Passage 2013 - TDI - Épreuve Pratique - Jour 3 - Variantes (7, 8, 9)
Variante2
Exercice 1 : Techniques de programmation :
Un Triplet d’entier (A,B,C) est dit carré de Pythagore si et seulement si A2 + B2 = C2
Exemple : 32 + 42 = 52
(3, 4, 5) est un Triplet de carré de Pythagore 1- Écrire une fonction qui reçoit comme paramètre trois entiers positifs (A,B,C) et retourne vrai si les trois entiers vérifient l’équation du carré de Pythagore, dans le cas contraire la fonction doit retourner faux. (6pts) 2- Écrire une procédure qui reçoit comme paramètre un entier N et qui affiche tous les Triplets (A,B,C) de Pythagore tels que A<=N, B<=N et C<=N. (6pts) 3-Créer un programme principal qui saisit un entier N et affiche tous les Triplets (A,B,C) de Pythagore vérifiant la condition A<=N, B<=N et C<=N. Le programme doit utiliser la fonction et la procédure précédentes. (4pts)
Exercice 2 : Programmation orientée objet :
Le but de cet exercice est de développer une application en C# ou Java qui permet de gérer les consommations des articles pendant les travaux pratiques réalisés par les groupes des stagiaires en formation. Les articles sont soient de la matière d’œuvre (papier, stylo, câble, …) ou le petit outillage (pince, marteau, scie …) demandés par les formateurs pour la réalisation des Travaux Pratiques dans le cadre de la formation des stagiaires. A- La classe Article est caractérisée par un code, une désignation, un prix unitaire de vente et une quantité en stock. 1- Créer la classe virtuelle Article avec un constructeur sans paramètre et un constructeur avec paramètres. (2pts) 2- Écrire les méthodes d’accès (accesseurs) pour toutes les propriétés de cette classe ainsi que la méthode toString() qui renvoie toutes les propriétés séparées par un point-virgule. (2pts) 3- Écrire la méthode Equal qui permet de tester l’égalité de l’objet courant avec l’objet passé comme paramètre de la même classe. Les deux objets ne sont égaux que s’ils ont les mêmes propriétés. (2pts) 4- Implémenter la méthode polymorphique CalculerValue() qui calcule et affiche la valeur de l’article qui est le produit de la quantité en stock par le prix unitaire d’achat. (2pts) B- La Classe PetitOutillage représente la famille d’articles utilisés par les stagiaires lors de leur Travaux Pratiques qui sont caractérisés par une durée de vie (entier) et un numéro de série (chaine). Cette classe hérite de la classe Article. 5- Implémenter la classe dérivée PetitOutillage en dotant cette classe par les constructeurs par défaut et d’initialisation. (2pts) 6- Créer pour la classe les accesseurs et la méthode toString() ; (2pts) 7- Surdéfinir la méthode polymorphique CalculerValue() pour afficher la durée de vie de l’article et la méthode Equal pour cette classe (2pts) 8- Ajouter une exception pour la classe PetitOutillage de manière que le numéro de série possède le format suivant XX-XXXXXX-XXXXXX ou X représente un chiffre de 0 à 9. (4pts) C- Les articles sont stockés dans un magasin. Chaque Magasin est caractérisé par un code, un libellé et la liste (collection) d’articles qui y sont stockés. 9- Créer la classe Magasin avec un constructeur et les accesseurs. (2pts) 10- Ajouter à cette classe la méthode AjouterArticle permettant d’ajouter un objet de la classe Article dans la collection. (4pts) 11- Ajouter à cette classe la méthode SupprimerArticle qui permet de supprimer un article du Magasin connaissant son code. (5pts) 12- Doter la classe Magasin par une méthode pour sauvegarder l’objet dans un fichier dont le chemin d’accès est passé comme argument. (5pts) 13- Créer une classe programme principal permettant d’instancier trois articles P1, P2 et P3 de la classe PetitOutillage et un objet M1 de la classe Magasin. Vous devez insérer les trois objets P1, P2 et P3 dans la collection M1 et sérialiser M1 dans un fichier externe. (4pts)
Exercice 3 : Programmation Événementielle :
1- Créer la feuille selon le modèle présenté ci-dessous. Ajouter le code qui permet de remplir la liste code groupe sur chargement de la feuille à partir du fichier groupe.dat comportant les codes et les intitulés des groupes en formation. Sur sélection du code du groupe vous devez rechercher son intitulé et de l’afficher dans la zone correspondante. Idem pour la liste de sélection «Code Article». (8pts) 2- Créer le code qui permet sur clique du bouton Enregistrer de sauvegarder la consommation dans le fichier binaire consommation.dat composée du code du groupe, code de l’article et l’année de formation. L’enregistrement doit être effectué sans écraser le contenu du fichier. (6pts)
3- Créer le code qui permet de remplir la liste des codes d’article à partir du fichier PetitOutillage.dat sur chargement de la feuille et sur choix du code d’un article dans la liste de le rechercher à partir du fichier et de l’afficher sur la feuille ci-dessous. (6pts) 4- Écrire le code qui permet de supprimer l’article sélectionné du fichier sur clic du bouton « supprimer » (6pts)
Les diviseurs propres d’un entier N sont tous les entiers autres que N qui le divisent.
Exemple les diviseurs propres de 10 sont 1, 2 et 5
Un Triplet d’entiers (A, B, C) est dit amiables si et seulement si la somme des diviseurs propres de l’un est égale à la somme des diviseurs propres des deux autres.
Exemple : Le Triplet (5, 8, 10) est un Triplet d’entier amiables, en effet :
1- Ecrire une fonction qui reçoit comme paramètre trois entiers positifs (A,B,C) et retourne vrai si les trois entiers forment un Triplet d’entiers Amiables, dans le cas contraire la fonction doit retourner faux. (6pts) 2- Ecrire une procédure qui reçoit comme paramètre un entier N et qui affiche tous les Triplets (A,B,C) d’entiers Amiables tels que A<=N, B<=N et C<=N. (6pts) 3- Créer un programme principal qui saisit un entier N et qui affiche tous les Triplets (A,B,C) d’entiers amiables vérifiant la condition A<=N, B<=N et C<=N. Le programme doit utiliser la fonction et la procédure précédentes. (4pts)
Exercice 2 : Programmation orientée objet :
Une grande entreprise de bâtiment et de génie civil souhaite automatiser la gestion de son parc auto. Les véhicules sont répartis en deux catégories : les véhicules destinés pour le transport du personnel et les engins destinés pour les chantiers (Camion, bulldozer, ..). A- Chaque véhicule possède un numéro d’immatriculation, une marque, date de mise en service et le kilométrage parcouru. 1- Créer la classe virtuelle Vehicule avec un constructeur sans paramètre et un constructeur avec paramètres. (2pts) 2- Écrire les méthodes d’accès (accesseurs) pour toutes les propriétés de cette classe ainsi que la méthode toString() qui renvoie toutes les propriétés séparées par un point-virgule. (2pts) 3- Écrire la méthode Equal qui permet de tester l’égalité de l’objet courant avec l’objet passé comme paramètre de la même classe. Les deux objets ne sont égaux que s’ils ont les mêmes propriétés. (2pts) 4- Ajouter une exception pour la classe Vehicule de manière que numéro de série possède le format suivant XXXXX-XX-XX ou X représente un chiffre de 0 à 9. (4pts) B- La Classe Engin représente les véhicules destinés pour les chantiers comme les camions les bulldozers …etc. Ces engins sont caractérisés par le chantier d’affectation (chaine) et le matricule du chauffeur chargé de leur conduite (entier). Cette classe hérite de la classe Véhicule. 5- Implémenter la classe dérivée Engin en dotant cette classe par les constructeurs par défaut et d’initialisation. (2pts) 6- Créer pour la classe les accesseurs et la méthode toString(); (2pts) 7- Surdéfinir la méthode Equal pour cette classe (2pts) C- L’entreprise possède plusieurs sites répartis sur plusieurs régions. Chaque site gère son parc de véhicules et d’engins. La classe ParcVehicule est caractérisée par le code du site, son nom et la liste de véhicules gérés par le site. 8- Créer la classe ParcVehicule avec un constructeur et les accesseurs. (3pts) 9- Ajouter à cette classe la méthode InsererVehicule permettant d’ajouter un objet de la classe Vehicule dans la collection. (3pts) 10- Ajouter à cette classe la méthode RechercherVehicule qui permet de rechercher un Véhicule du parc connaissant son code. (4pts) 11- Doter la classe ParcVehicule par la méthode CalculKilometrage qui permet de calculer la somme du kilométrage de tous les véhicules et engins du parc. (3pts) 12- Doter la classe ParcVehicule par une méthode pour sauvegarder l’objet dans un fichier dont le chemin d’accès est passé comme argument. (5pts) 13- Créer une classe programme principal permettant d’instancier un objet P1 de la classe ParcVehicule et d’y insérer trois objets V1, V2 et V3 de la classe Vehicule puis le sérialiser dans un fichier externe. Enfin afficher le total du kilométrage des trois véhicules. (4pts)
Exercice 3 : Programmation Événementielle :
1- Créer la feuille selon le modèle présenté ci-dessus. Ajouter le code qui permet de : - Sur clic du bouton ”>” la valeur saisie dans la zone de texte N° Immatriculation doit être ajoutée à la liste ”Véhicules à supprimer”. - Sur clic du bouton ”<” la valeur sélectionnée dans la liste ”Véhicules à supprimer” doit être retirée de cette liste. - Sur clic du bouton ”<<” la liste ”Véhicules à supprimer” doit être vidée. - Sur clic du bouton la liste ”Véhicules à supprimer” doit être complétement vidée. (10pts)
2- Créer le code qui permet sur clique du bouton Supprimer de supprimer du fichier vehicules.txt tous les véhicules dont leur N° d’immatriculation figurent sur la liste ”Véhicules à supprimer”. Le fichier est en format texte composé des infos des véhicules séparées par des points virgules, véhicule par ligne :
12540-12-7 ; Renault Megane ; 12/01/2005 ; 38450
24876-96-7 ; Citroën C15 ; 02/04/2008 ; 45620
45782-15-8 ; Renault Logane ; 04/08/2009 ; 40120
24587-69-1 ; Citroën C15 ; 12/08/2007 ; 37850
21478-25-1 ; Renault Logane ; 14/12/2006 ; 60820
35416-14-4 ; Renault Logane ; 24/02/2004 ; 55780 (6pts)
3- Créer le code qui permet de sur clic du bouton Rechercher de sélectionner à partir du fichier Vehicules.txt tous les véhicules qui sont de même Marque que la valeur saisie dans la zone de texte Marque. La 1ere occurrence trouvée doit être affichée à la feuille. (6pts) 4- Créer le code relatif aux boutons Précédent et Suivant qui permet de naviguer entre les occurrences trouvées. (4pts)
Télécharger Les Examens Passage 2013 - TDI - Ep Pratique - J3 - Variantes (7, 8, 9) :
Les Examens de Passage - Pratique 2013 - Les Variantes (3, 4, 6)
Variante 4
:
Partie 1 : Programmation Structurée : (20pts)
Exercice 1 : (6 points) Ecrivez une fonction qui calcul le nième terme de
la suite suivante : U0 = 1 ; U1 = 1 ; Un +1 = (Un + (n+1)) /
Un-1 Exploiter cette fonction dans un
programme pour placer les dix premiers termes de la suite précédente
dans un tableau. Exercice 2 :
(6 points) Soit T un tableau d’entiers.
Ecrivez un sous-programme qui permet de créer un deuxième tableau S ou
chaque case S[i] est la somme des éléments de T [0] à T[i]. Créer un
programme de test. Exemple :
Exercice 3 : (8 points) a. Ecrire la fonction
int EstFacteurGauche(chat * f, char *s) qui vérifie si le mot f est un
facteur gauche de s. Par exemple « poly » est
un facteur gauche de « polycopie ». Tester cette fonction dans un
programme. (4points) b.
Ecrire la fonction int EstFacteur(char *f, char *s)
qui vérifier si le mot f est un facteur de s. Par
exemple « poly », « cop », « polycop » sont des facteurs de « polycopie ».
Tester cette fonction dans un programme. (4points)
Partie 2 : Programmation Orientée Objet : (30
pts)
L’objet de cette application est la gestion informatisée d’une agence de
location de voiture. L’agence possède un parc de voiture, chaque
voiture est caractérisée par un numéro de châssis, matricule, la marque, le
carburant utilisé, nombre de chevaux, et la puissance fiscale. 1. Créer la classe voiture. Prévoir un
constructeur sans paramètre et un constructeur qui reçoit tous les
paramètres. Créer les méthodes d’accès (les get et les set) pour l’ensemble
des propriétés. (2pts) 2. Le
carburant ne peut prendre pour valeur que « essence » ou « diesel». Créer
une exception ExpIllegalleCarburant qui sera déclenchée si on veut
affecter à la propriété carburant une valeur autre que « essence » ou «
diesel». (1,5pts) 3. Le
numéro de matricule est composé de six chiffres au maximum suivies d’
espace, suivi d’une lettre majuscule suivi d’espace suivi de deux chiffres au
maximum (exp 333333 A 11, 666 B 2). Créer une expression
régulière qui permet de vérifier si le matricule d’une voiture respecte ce
modèle dans ce cas on accepte la valeur sinon une exception
ExpIllegalleMatricule (que vous devez créer) doit être déclenchée. (2pts)
4. Prévoir une méthode
toString() pour afficher l’ensemble des propriétés d’une voiture. (0,5pt)
Un client est identifié
par son téléphone, adresse et adresse mail. Dans le cas d’un client
particulier on ajoute CIN, nom et prénom. Pour le cas d’une entreprise on
ajoute le numéro de registre de commerce. 5. Créer une classe abstraite client. Prévoir un
constructeur sans paramètres, un autre qui reçoit tous les paramètres.
Ajouter la méthode toString(). (2pt) 6. Créer les deux classes ClientParticulier et
ClientEntreprise par héritage de la classe client. Ajouter toString() a ces
deux classes. (1,5pts) 7.
Créer une expression régulière pour vérifier que le champ AdresseMail
vérifier le modèle d’une adresse mail (exemple :
aaaaaaa@bbbbb.ccc ). (1pt)
Une location est effectuée par un client (particulier
ou entreprise) elle concerne une voiture. Chaque location est identifiée par
un numéro (un champ compteur qui s’incrémente automatiquement), le
client ayant effectué la location, la voiture concernée, date début et
date fin de la location, le montant journalier de la location ainsi qu’un
champ retour de type booléen qui prend true lorsque le client retourne la
voiture auprès de l’agence de location, par défaut ce champ est initialisé a
false. 8. Créer la classe
location. Prévoir un constructeur sans paramètre et un autre avec tous les
paramètres. Ajouter toString() (2pts) 9. Créer une exception qui sera déclenchée si la durée
de la location ne dépasse pas une journée. (1,5pts) 10. Créer une méthode qui permet de
calculer le montant d’une location. (2pts) 11. Créer une méthode qui permet de faire passer la
valeur de champ retour à true lorsque la voiture est retournée par le client.
(1pt) Pour gérer les
locations on propose de créer la classe EnsembleLocation qui
contient une liste des locations L. 12. Créer la classe EnsembleLocation. (1pt) 13. Prévoir une méthode pour
ajouter une location a la liste L, vérifié que la voiture est disponible pour la
période demandée, sinon il faut refuser l’ajout. (3pts) 14. Créer une méthode qui permet d’
afficher, pour un client donné, les locations qu’il a effectuées, le montant
de chaque location ainsi que le montant global. (3pts) 15. Créer une méthode qui permet de
sérialiser dans un fichier les clients n’ayant pas encore retourné les
voitures loues malgré que la date fin de location est expire. (3pts) 16. Créer le main de test prévoir
une liste de 5 voitures, une liste de 3 clients, effectuer un ensemble de
location. Vérifier le cas de la question 15. (3pts)
Partie 3 : Programmation Événementielle :
(30pts)
Dans cette partie on va exploiter les classes de la partie II, on va créer une
interface graphique pour l’application. 1. Créer une feuille MDI avec un menu qui contient
un élément pour chacune des questions suivantes. (3pts) 2. Créer une feuille qui permet d’ajouter
une voiture a la liste des voitures. (3pts) 3. Créer une feuille qui permet d’ajouter un client a la
liste des clients. (3pts) 4.
Créer une feuille qui permet d’effectuer une location. L’utilisateur
effectuera les tâches suivantes : (8pts) a. Sélectionner le client dans une liste
déroulante. b. Choisir date début de location et date fin de
location. c. Le programme va remplir une liste des voitures
disponibles pour la période choisie. d. Une fois la voiture est sélectionnée un
bouton « confirmer » s’active sur lequel on peut cliquer pour
valider la location. 5. Créer
une feuille contenant une dataGridView dans laquelle on peut charger le
contenu de fichier de la question 15 de la partie II. (5pts) 6. Créer une interface pour effectuer des
recherches multicritères sur des voitures en respectant le modèle suivant
(8pts)
L’utilisateur
peut activer un ou plusieurs critères de recherches dans la zone « critères
de recherche ». Une fois un critère activé sa zone de texte pour saisir la
valeur ou la liste déroulante pour le cas de carburant doit être activé. Le contrôle dataGridView contient le résultat de
recherche, ce résultat change chaque fois qu’on modifie la valeur d’un
critère.
Les Examens de Passage - Pratique 2013 -
Les Variantes (3, 4, 6)
Variante 5 :
Partie 1 : Programmation Structurée : (20pts)
Exercice 1 : (6 points) Ecrivez une fonction qui calcul le nième terme de
la suite suivante : U0 = 1 ; U1 = 1 ; Un +1 = 3*Un - 2*Un-1 Exploiter cette fonction dans un programme pour placer les dix
premiers termes de la suite précédente dans un tableau. Exercice 2 : (8 points) Ecrire une fonction qui reçoit un tableau d’
entiers strictement positifs de taille n et vérifie que chaque élément sauf le
premier est la somme d’un certain nombre d’éléments consécutifs de t qui
le précèdent immédiatement. Exemple : Pour le tableau
suivant :
La fonction retourne 0. La condition n’est pas vérifier pour
28. 28 ≠ 15 ; 28 ≠ 15 + 9 ; 28 ≠ (15 + 9 + 6 = 30)
> 28 on peut arrêter la vérification. Exercice 3 : (6 points) Le javanais était une « langue » parlée, par
certains jeunes qui voulaient utiliser un langage secret entre eux. Pour
parler javanais on rajoute « av » après une consonne
lorsque elle est suivie d’une voyelle. Exemple : Le mot
bonjour devient bavonjavour.
Ecrire la fonction void Javanais(char *m)
qui permet de traduire le mot m en javanais. Tester la fonction.
Partie 2 : Programmation Orientée Objet :
(30pts)
L’objet de cette application est la gestion informatisée d’une bibliothèque
universitaire qui emprunte des documents à des étudiants. Les Documents
sont soit des livres, ou des Revues spécialisés (Médecine, Mathématiques,
Informatiques, ….). Chaque document est identifié par un numéro
d’exemplaire et une date d’achat. En plus pour les livres on mémorise le
numéro d’ISBN le nom de l’auteur, la maison d’édition, et le nombre de
pages. Pour le cas d’une revue on mémorise le nom de la revue la spécialité
et le numéro d’édition. 1.
Créer la classe Abstraite « Document ». Prévoir un constructeur sans
paramètres, un constructeur avec tous les paramètres, les méthodes d’
accès (les get et set ) ainsi que la méthode toString() (2pts) 2. Créer les deux classes Livre
et Revue par héritage de la classe document. Ajouter toString() a ces deux
classes. (1,5pt) 3. Créer une
nouvelle exception ExpIllegalleSpecialite qui sera déclenchée si on veut
affecter à la propriété spécialité une valeur autre que Médecine,
Mathématique ou Informatique. (1pts) 4. L’ISBN est un numéro à 10 chiffres ou 13 chiffres.
Créer une expression régulière qui permet de vérifier si L’ISBN d’un livre
respecte ce modèle dans ce cas on accepte la valeur sinon une exception
ExpIllegalleISBN (que vous devez créer) doit être déclenchée. (2pts) Un emprunteur est
identifié par son CIN, téléphone, adresse, adresse mail. Dans le cas d’un
étudiant on ajoute le niveau d’étude et spécialité étudier. Pour le cas d’un
professeur on ajoute la spécialité enseignée. 5. Créer une classe abstraite emprunteur. Prévoir un
constructeur sans paramètres, un autre qui reçoit tous les paramètres.
Ajouter la méthode toString(). (2pt) 6. Créer les deux classes Etudiant et Professeur par
héritage de la classe emprunteur. Ajouter toString() a ces deux classes.
(1,5pts) 7. Créer une
expression régulière pour vérifier que le champ CIN commence par une ou
deux lettres majuscules suivie de six chiffres au maximum. (1pt) Un Emprunt est effectuée
par un emprunteur (étudiant ou professeur) il concerne un
Document. Chaque emprunt est identifiée par un numéro (un champ
compteur qui s’incrémente automatiquement), l’emprunteur, le document
concerne, date début, date fin, un montant symbolique de 2Dh par jour
pour le cas d’un étudiant et de 5Dh par jour pour le cas d’un professeur et
un champ retour de type booléen qui prend true lorsque l’emprunteur
retourne le document, par défaut ce champ est initialiser a false. 8. Créer la classe Emprunt.
Prévoir un constructeur sans paramètre et un autre avec tous les
paramètres. Ajouter toString(). (2 pts) 9. Créer une exception qui sera déclenchée si la durée
de l’emprunt dépasse cinq jours pour le cas d’un livre. (1pts) 10. Créer une méthode qui permet de
calculer le montant d’un emprunt. (2pts) 11. Créer une méthode qui permet de faire passer la
valeur de champ retour à true lorsque le document est retourné par l’
emprunteur. (1pt)
Pour gérer les emprunts on propose de créer la classe
EnsembleEmprunt qui contient une liste des emprunts L. 12. Créer la classe EnsembleEmprunt.
(1pt) 13. Prévoir une
méthode pour ajouter un emprunt a la liste L, vérifié que le document est
disponible pour la période demandée, sinon il faut refuser l’ajout. (3pts)
14. Créer une méthode qui
permet d’afficher, pour un emprunteur donné, les emprunts qu’il a
effectués le montant de chaque emprunt ainsi que le montant global.
(3pts) 15. Créer une
méthode qui permet de sérialiser dans un fichier les emprunteurs n’ayant
pas encore retourné les documents empruntés malgré que la date fin d’
emprunt est expire. (3pts) 16. Créer un main de test prévoir une liste de 8
documents, une liste de 3 emprunteurs, effectuer un ensemble d’emprunt.
Vérifier le cas de la question 15. (3pts).
Partie 3 : Programmation Événementielle :
(30pts)
Dans cette partie on va exploiter les classes de la partie II, on va créer une
interface graphique pour l’application. 1. Créer une feuille MDI avec un menu qui contient
un élément pour chacune des questions suivantes (3pts) 2. Créer une feuille qui permet d’ajouter
un document a la liste des documents. (3pts) 3. Créer une feuille qui permet d’ajouter un
emprunteur a la liste des emprunteurs. (3pts) 4. Créer une feuille qui permet d’effectuer un
emprunt. L’utilisateur doit effectuer les tâches suivantes : (8pts) a.
Sélectionner l’emprunteur dans une liste déroulante. b.
Choisir date début et date fin de l’emprunt. c. Le programme va remplir une
liste des documents disponible pour la période choisie. d. Une
fois le document est sélectionné un bouton « confirmer » s’active
sur lequel on peut cliquer pour valider l’emprunt. 5. Créer une feuille contenant une
dataGridView dans laquelle on peut charger le contenu de fichier de la
question 15 de la partie II. (5pts) 6. Créer une interface pour effectuer des recherches
multicritères sur des documents en respectant le modèle suivant
(8pts)
L’utilisateur
peut activer un ou plusieurs critères de recherches dans la zone « critères
de recherche ». Une fois un critère activé sa zone de texte pour saisir la
valeur ou la liste déroulante pour le cas de Spécialité doit être activé. Le contrôle dataGridView contient le résultat de
recherche, ce résultat change chaque fois qu’on modifier la valeur d’un
critère.
Les Examens de Passage - Pratique 2013 -
Les Variantes (3, 4, 6)
Variante 6 :
Partie 1 : Programmation Structurée : (20pts)
Exercice 1 : (6 points) Ecrivez une fonction qui calcul le nième terme de
la suite suivante : U0 = 1 ; U1 = 1 ; Un +1 = Un + (Un-1)/n Exploiter cette fonction dans un programme
pour placer les dix premiers termes de la suite précédente dans un
tableau.
Exercice 2 : (6
points) Ecrire une
fonction qui remplace dans un tableau chaque entier par la plus
grande valeur qui le précède dans le tableau, si cette valeur existe. Si ce n’
est pas le cas, la nouvelle valeur sera la même que l’ancienne. Par exemple
si la fonction reçoit le tableau suivant :
Exercice 3 :(8
points) Rot13 est une technique de cryptage
dont le principe consiste à exercer une rotation de l’alphabet de 13
positions vers l’avant. Cette transformation ne concerne que les
majuscules et minuscules non accentuées. Les lettres accentuées, les
nombres et tous les autres signes demeurent inchangés. Par exemple
‘a’ est transformé en ‘n’, ‘g’ en ‘t’, ‘z’ en ‘m’ etc … Une transformation similaire s’applique aux majuscules : ‘A’ en ‘N’
etc… 1. Ecrire la fonction char *
Crypter(char *s) qui permet de retourner le résultat de
cryptage de la chaine s selon le principe de Rot13. Tester cette
fonction. 2. Ecrire la fonction char *
Decrypter(char *s) qui permet de décrypter un message s. Tester
cette fonction.
Partie 2 : Programmation Orientée Objet :
(30pts)
L’objet de cette application est la gestion informatisée d’une entreprise de
location de matériels informatiques. La location concerne soit des
Ordinateurs ou des imprimantes. Chaque matériel est identifié par
une référence, marque et une date d’achat. En plus pour les Ordinateurs
on mémorise type de microprocesseur, capacité de disque dur, et la
capacité de la RAM. Pour le cas d’une imprimante on mémorise la vitesse
d’impression, technique d’impression utilise (jet d’encre, laser, …) 1. Créer la classe Abstraite «
Materiel ». Prévoir un constructeur sans paramètres, un constructeur avec
tous les paramètres, les méthodes d’accès (les get et set ) ainsi que la
méthode toString(). (2pts) 2.
Créer les deux classes Ordinateur et Imprimante par héritage de la classe
Materiel . Ajouter toString() a ces deux classes. (1,5pt) 3. Créer une nouvelle exception
ExpIllegalleMicroPro qui sera déclenchée si on veut affecter à la propriété
microprocesseur une valeur autre que i3, i5 ou i7. (1pts) 4. La référence d’un matériel
contient deux lettres (PC : pour ordinateur et PR pour imprimante) suivi
de huit chiffres. Créer une expression régulière qui permet de vérifier si la
référence respecte ce modèle dans ce cas on accepte la valeur sinon une
exception ExpIllegalleReference (que vous devez créer) doit être
déclenchée. (2pts) Un
organisme qui loue le matériel informatique est identifié par son
téléphone, adresse, adresse mail.
Dans le cas d’un organisme à but non lucratif
comme des écoles ou des associations on ajoute une propriété qui indique
l’activité de l’organisme. Pour le cas d’une entreprise on ajoute le numéro
de registre de commerce. 5.
Créer une classe abstraite Organisme. Prévoir un constructeur sans
paramètres, un autre qui reçoit tous les paramètres. Ajouter la méthode
toString(). (2pt) 6. Créer les
deux classes OrganismeNonLucratif et OrganismeEntreprise par héritage
de la classe Organisme. Ajouter toString() a ces deux classes. (1,5pts) 7. Créer une expression
régulière pour vérifier que le champ numero de regitre de commerce
commence par une lettre majuscule suivie d’exactement neuf chiffres.
(1pt) Une location est
effectuée par un organisme elle concerne un matériel. Chaque location est
identifiée par un numéro (un champ compteur qui s’incrémente
automatiquement), l’organisme ayant effectué la location, le matériel
concerne, date début, date fin, le montant de location par jour, et un
champ retour de type booléen qui prend true lorsque l’organisme retourne
la matériel, par défaut ce champ est initialiser a false. 8. Créer la classe location. Prévoir un
constructeur sans paramètre et un autre avec tous les paramètres. Ajouter
toString(). (2pts) 9. Créer
une exception qui sera déclenchée si la durée de la location ne dépasse pas
sept jours. (1pts) 10. Créer
une méthode qui permet de calculer le montant d’une location. (2pts) 11. Créer une méthode qui
permet de faire passer la valeur de champ retour à true lorsque le materiel
est retournée par l’organisme. (1pt)
Pour gérer les locations on propose de créer
la classe EnsembleLocation qui contient une liste des locations L. 12. Créer la classe
EnsembleLocation. (1pt) 13.
Prévoir une méthode pour ajouter une location a la liste L, vérifié
que le matériel objet de la location est disponible pour la période
demandée, sinon il faut refuser l’ajout. (3pts) 14. Créer une méthode qui permet d’afficher, pour un
organisme donné, les locations qu’il a effectuées, le montant de chaque
location ainsi que le montant global. (3pts) 15. Créer une méthode qui permet de sérialiser dans
un fichier les organismes n’ayant pas encore retourné le matériel loues
malgré que la date fin de location est expire. (3pts) 16. Créer un main de test prévoir une
liste de 6 ordinateurs, 3 imprimantes une liste de 3 organismes, effectuer
un ensemble de location. Vérifier le cas de la question 15. (3pts).
Partie 3 : Programmation Événementielle :
(30pts)
Dans cette partie on va exploiter les classes de la partie II, on va créer une
interface graphique pour l’application. 1. Créer une feuille MDI avec un menu qui contient
un élément pour chacune des questions suivantes.(3pts) 2. Créer une feuille qui permet d’ajouter
un matériel à la liste du matériel. (3pts) 3. Créer une feuille qui permet d’ajouter un
organisme à la liste des organismes. (3 pts) 4. Créer une feuille qui permet d’effectuer une
location. L’utilisateur effectuer les tâches suivantes : (8pts) a.
Sélectionner l’organisme dans une liste déroulante. b.
Choisir date début et date fin de la location. c. Le programme va remplir une
liste du matériel disponible pour la période choisie. d. Une
fois le matériel est sélectionné un bouton « confirmer » s’active sur
lequel on peut cliquer pour valider la location. 5. Créer une feuille contenant une dataGridView dans
laquelle on peut charger le contenu de fichier de la question 15 de la partie
II. (5pts) 6. Créer une
interface pour effectuer des recherches multicritères sur du matériel en
respectant le modèle suivant. (8pts)
Categories peut prendre soit ordinateur ou imprimante. L’utilisateur peut activer un ou plusieurs critères
de recherches dans la zone « critères de recherche ». Une fois un critère
activé sa zone de texte pour saisir la valeur ou la liste déroulante pour le
cas de Categories doit être activé. Le contrôle
dataGridView contient le résultat de recherche, ce résultat change chaque
fois qu’on modifier la valeur d’un critère.
Télécharger Les Examens de Passage - Pratique 2013 - Les Variantes (4, 5, 6) :
On souhaite développer un programme de gestion des comptes bancaires, pour cela on vous demande d’écrire un programme dans un langage structuré qui permet de créer:
1. la structure suivante : (1pt)
struct ComptClient { int numCmpt, char nom[30] ; char prenom[30] ; float solde ; } 2. la procédure SaisirCompt( struct ComptClient TabCompt[ ], int n ) qui permet de remplir le tableau de structure ComptClient «TabCompt » passé en paramètre. (4pts) 3. la procédure TrierCompt( struct ComptClient TabCompt[ ], int n ) qui permet de trier, le tableau de structure ComptClient «TabCompt » passé en paramètre, selon le solde du compte client. (4pts) 4. la procédure AfficherCompt( struct ComptClient TabCompt[ ], int n ) qui permet d'afficher les comptes clients du tableau de structure ComptClient «TabCompt » passé en paramètre. (3 pts) 5. Le programme principal dans lequel on déclare un tableau ( struct ComptClient TabCompt[10] ; ) et on fait appel aux procédures SaisirCompt(TabCompt, 4) ; TrierCompt(TabCompt, 4) ; AfficherCompt(TabCompt, 4); (4pts)
En 2012 l’OFPPT a signé un contrat de partenariat avec Microsoft, parmi les services intégrés dans cet accord figure l’instauration des centres des examens de certifications. Dans l’objectif de faire le suivi de ces centres il vous est demandé de développer une application orientée objet afin de satisfaire cet objectif.
NB : les classes seront définis dans une application console.
1- Classe Etablissement : (6pts) a. Définir une classe Etablissement dont les caractéristiques sont : (1pt) • codeEtablissement de type entier, • désignationEtablissement de type chaine de caractère, • nombreStagiaires de type entier. b. Écrire un constructeur avec tous les paramètres. (1pt) c. Écrire les accesseurs et modificateurs des champs. (1pt) d. Ajouter au modificateur précédent du champ nombreStagiaires, et au constructeur le test nécessaire pour lever une exception lorsque le champ et inferieur ou égale à 0. Dans ce cas, un message adéquat doit être affiché. Il doit signaler que le nombre doit être strictement positif. (2pts) e. Écrire la méthode AfficherInformation( ) qui permet d’afficher les informations de l’objet concerné (1pt) 2- Classe Région : (5pts) a. Définir une classe Région dont les caractéristiques sont : (1pt) • codeRégion un champ de type entier • désignationRégion de type chaine de caractère, • nombreEtablissements de type entier, • listEtablissement qui est une collection générique de type (classe) Etablissement et qui représente les établissements de la région concernée, ce champ est public. b. Écrire un constructeur avec tous les paramètres à l’exception de nombreEtablissements qui est initialisé à 0 et listEtablissement qu’on doit instancier à l’intérieur du constructeur. (1pt) c. Écrire les accesseurs et modificateurs de tous les champs à l’exception du champ listEtablissement qui est public et le champ nombreEtablissements
Pour le champ nombreEtablissements, qui s’alimente automatiquement (voir la question suivante), on doit écrire que son accesseur (en lecture seul). (1pt) d. Écrire la méthode AjouterEtablissement( ) qui permet d’ajouter à la listEtablissement de l’objet concerné, un objet Etablissement passé comme paramètre, et d’incrémenter le champ nombreEtablissements. (2pts) 3- Classe CentreExamen : (4pts) a. Définir une classe CentreExamen dont les caractéristiques sont : • codeCentre de type entier, • etablissementDuCentre qui est un champ public de type (classe) Etablissement. Il s'agit de l’établissement qui hébergé le centre d’examen concerné. (1pt) b. Écrire un constructeur avec tous les paramètres. (1pt) c. Écrire les accesseurs et modificateurs de tous les champs à l’exception du champ etablissementDuCentre qui est public. (1pt)
d. Écrire la méthode AfficherInformation( ) qui permet d’afficher les informations de l’objet concerné. (1pt) 4- Classe Prometric : (7pts) a. Définir une classe Prometric, qui hérite de la classe précédente CentreExamen, et qui possède les caractéristiques supplémentaires suivantes : • nombreDePoste de type entier, • administrateurPrometric ce champ est une chaine de caractère formée par la concaténation du nom et prénom de l’administrateur concerné, séparés par un tiret «-». (1pt) b. Écrire un constructeur avec tous les paramètres à l’exception de administrateurPrometric, et au lieu de passé ce champ comme paramètre on passe le nom et prénom de l’administrateur comme paramètres, on doit respecter la contrainte de la question précédente (la concaténation du nom et prénom séparés par un tiret «-»). (2pts)
NB : vous devez utiliser le constructeur de la classe mère c. Écrire les accesseurs et modificateurs des champs. (1pt) d. Ajouter au modificateur précédent du champ administrateurPrometric le test nécessaire pour lever une exception lorsque la contrainte de la question «a» n’est pas respectée. Dans ce cas, un message adéquat doit être affiché. Il doit signaler que le nom et prénom doivent être séparés par un tiret «-». (2pts) e. Redéfinir la méthode AfficherInformation( ) de la classe mère qui permet d’afficher les informations de l’objet concerné. (1pt) 5- Programme principal: (16pts) N.B. :vous aurez à sauvegarder et à récupérer, une liste de régions et une liste de centres prometric, dans et à partir de deux fichiers différents (sérialisations). a. Déclarer une collection ListeRégion et une collection ListePrometric, accessibles par toutes les méthodes du programme principal, utiliser la collection ou table de votre choix. (1pt) b. Ajouter une méthode AfficherEtablissement() qui recherche, dans la collection ListeRégion, l’objet région passé comme paramètre et affiche tous ses établissements après avoir affiché le code et la désignation de la région, dans le cas où la région n’existe pas afficher un message d’erreur. Utiliser la méthode AfficherInformation() de la classe établissement. (3pts) c. Ajouter une méthode InformationPrometric() qui recherche, dans la collection ListePrometric, un objet prometric dont l’établissement est passé comme paramètre et qui affiche le nom et prénom de l’administrateur ainsi que le nombre de poste du centre prometric concerné, dans le cas où le centre n’existe pas afficher un message d’erreur. (3pts) d. Concevoir le menu suivant : 1- Récupérer les données : il s’agit de remplir les 2 listes ListeRégion et ListePrometric à partir des deux fichiers. (1,5pt) 2- Ajouter une région à la ListeRégion. (1pt) 3- Ajouter un centre prometric a la ListePrometric. (1pt) 4- Ajouter un établissement à une région de la ListeRégion. (1pt) 5- Sauvegarder les données : il s’agit d’enregistre les 2 listes dans les 2 fichiers (de sauvegarde). (1,5pt) 6- Rechercher et afficher les établissement d’une région donnée, utiliser AfficherEtablissement() (1pts) 7- Rechercher et afficher les informations du centre prometric d’un établissement donné, utiliser InformationPrometric() (1pts) 8- Fin. (1pt)
Après avoir développé les classes du dossier2 vous devez compléter ce travail par la réalisation d’une application de type Windows (programmation événementielle) qui contient un ensemble de formulaires pour la mise à jour et la consultation de différentes informations concernant le suivi des centres prométric. a. Déclarer une collection ListeRégion et une collection ListePrometric, dans le programme principale, faites le nécessaire pour qu’elles soient accessibles par tous les Formulaires de cet application, utiliser la collection ou table de votre choix. (1pts) b. Créer une feuille MDI qui vous permet d’accéder aux autres formulaires de cette application en lui ajoutant un menu dont la dernière commande est « Quitter ». Un message de confirmation pour la fermeture de l’application s’affiche avant de quitter l’application (voulez-vous vraiment quitter cette application) dans le cas affirmatif les données des 2 listes seront automatiquement enregistrées dans les 2 fichiers de sauvegardes de la partie Dossier2. (4pts) c. Au chargement de la feuille MDI, les 2 listes doivent être automatiquement remplies à partir des données des 2 fichiers de sauvegardes de la partie Dossier2. (2pts) d. Concevoir un formulaire (interface et code) qui comportera toutes les étiquettes (les labels) et les zones de texte nécessaires pour la mise à jour et la consultation de la liste des centres prométric. Il contiendra aussi les boutons suivants : Nouveau, Ajouter, Modifier, Supprimer, les 4 boutons de navigation (suivant, précédent, début et fin), et Fermer. - Interface. (2pts) - Les 4 boutons de navigation. (2pts) - Les boutons Nouveau et Ajouter. L'ajout dans la ListePrometric sera effectué que si toutes les données sont remplies. (2pts) - Le bouton Modifier. La modification d'un ou plusieurs champs du centre prometric (2pts) - Le bouton Supprimer. Prévoir un message de confirmation. (2pts) - Le bouton Fermer. (0,5pt) e. Ajouter un formulaire, contenant une liste déroulante (ComboBox ou autre), les zones de texte(TextBox) et les étiquètes (Label) nécessaires, et une grille (objet contenant des lignes et des colonnes avec une ligne d’entête) qui affiche la liste des établissements d’une région sélectionnée à partir de la liste déroulante.
Au chargement du formulaire la liste déroulante sera remplie automatiquement par les codes des régions à partir de la liste ListeRégion. Ensuite les informations de la région s’afficheront automatiquement dans les zones de texte précités et en fin les établissement de la région s’afficheront dans la grille. - Interface. (2pts) - Le remplissage du Combo Box. (2pts) - Le remplissage des zones de texte. (2pts) - Le remplissage de la grille (2pts) - Le bouton Fermer. (0,5pt)
Examen Passage Épreuve : Pratique 2013 Variante 2
Dossier 1 : Programmations Structurée: (16Pts)
On souhaite développer un programme de gestion des notes stagiaires (Moyenne des notes), pour cela on vous demande d’écrire un programme dans un langage structuré qui permet de créer: 1. la structure suivante : (1pt)
struct MoyenneStagiaire { int matricule , char nom[30] ; char prenom[30] ; float moyenne ; } 2. la procédure SaisirMoyenne( struct MoyenneStagiaire TabMoyen[ ], int n ) qui permet de remplir le tableau «TabMoyen » passé en paramètre. (4pts) 3. la procédure TrierMoyenne( struct MoyenneStagiaire TabMoyen[ ], int n ) qui permet de trier, le tableau «TabMoyen » passé en paramètre, selon la moyenne du stagiaire (4pts) 4. la procédure AfficherMoyenne( struct MoyenneStagiaire TabMoyen[ ], int n ) qui permet d'afficher le tableau « TabMoyen » passé en paramètre. (3pts) 5. Le programme principal dans lequel on déclare un tableau (struct MoyenneStagiaire TabMoyen[10] ; ) et on fait appel aux procédures : SaisirMoyenne(TabMoyen, 4) ; TrierMoyenne(TabMoyen, 4) ; et AfficherMoyenne(TabMoyen, 4) ;.(4pts)
Après l’instauration des centres des examens de certifications au sein des établissements de la formation professionnelle, votre région souhaite informatisée le suivi des examens de certification (MCP et MOS) elle vous a demandé de développer une application orientée objet afin de satisfaire cet objectif.
NB :les classes seront définis dans une application console. 1- Classe Efp : Etablissement de Formation Professionnelle. (4 pts) a. Définir une classe Efp dont les caractéristiques sont : (1pt) • codEfp de type entier. Il s'agit du code d’un établissement • désEfp de type chaine de caractère. Il s'agit de la désignation d’un établissement • nbStag de type entier. Il s'agit du nombre des stagiaires d’un établissement b. Écrire un constructeur avec tous les paramètres. (1pt) c. Écrire les accesseurs et modificateurs des champs. (1pt) d. Écrire la méthode InformationEfp( ) qui permet d’afficher les informations, séparées par des tabulation, de l’objet concerné. (1pt) 2- Classe SuiviStat : Le suivi des statistiques des certifications. (7pts) a. Définir une classe SuiviStat dont les caractéristiques sont : (1pt) • codExam de type chaine de caractère. Il s'agit du code d’un examen de certification • nbrMcp de type entier. Il s'agit du nombre des examens MCP passés par les stagiaires d’un établissement. • etabOrg qui est un champ public de type (classe) Efp. Il s'agit de l’établissement d’origine des stagiaires qui ont passé l’examen MCP. b. Écrire un constructeur avec tous les paramètres. (1pt) c. Écrire les accesseurs et modificateurs des champs à l’exception du champ etabOrg qui est public. (1pt) d. Ajouter aux modificateurs précédents des champs nbrMcp et codExam, et au constructeur : • le test nécessaire pour lever une exception lorsque le champ et inferieur strictement à 0. Dans ce cas, un message adéquat doit être affiché. Il doit signaler que le nombre doit être positif ou nul. • le test nécessaire pour lever une exception lorsque le champ codExam ne respecte pas le format suivant (le code doit commencer par 73- suivi de 3 chiffres : exemple 73-640 ou 73-433). Dans ce cas, un message adéquat doit être affiché. Il doit signaler que le code ne respecte pas la norme. (3pts)
Remarque : utiliser les fonctions prédéfinis de string e. Écrire la méthode AfficherLeSuivi( ) qui permet d’afficher les informations, séparées par des espaces, de l’objet concerné. (1pt) 3- Classe CentreExamen : (4pts) a. Définir une classe CentreExamen dont les caractéristiques sont : (1pt) • codCentre de type entier. Il s'agit du code du centre d’examen • etabCentre qui est un champ public de type (classe) Efp. Il s'agit de l’établissement qui hébergé le centre d’examen concerné. • listEtabAservi qui est une collection générique de type (classe) Efp et qui représente les établissements de la région qui sont affectés à ce centre pour passer les examens de certification, ce champ est public. b. Écrire un constructeur avec tous les paramètres. (1pt) c. Écrire les accesseurs et modificateurs de tous les champs à l’exception du champ etabCentre qui est public. (1pt) d. Écrire la méthode Afficher( ) qui permet d’afficher les informations de l’objet concerné. (1pt) 4- Classe Prometric : (7pts) a. Définir une classe Prometric, qui hérite de la classe précédente CentreExamen, et qui possède les caractéristiques supplémentaires suivantes : (1pt) • nbMcpEffectif de type entier initialisé à 0. Il s'agit du nombre des certifications MCP passé réellement dans le centre concerné. • nbMcpPrévu de type entier initialisé à 10. Il s'agit du nombre des certifications MCP prévue annuellement dans le centre concerné. • listSuiviStat qui est une collection générique de type (classe) SuiviStat et qui représente les statistiques par établissement du centre concerné, ce champ est public. b. Écrire un constructeur avec tous les paramètres à l’exception de listSuiviStat cette collection doit être instanciée à l’intérieur du constructeur en lui ajoutant l’établissement du centre (etabCentre). (1pt)
NB : vous devez utiliser le constructeur de la classe mère c. Écrire les accesseurs et modificateurs des champs à l’exception de listSuiviStat qui est public. (1pt) d. Ajouter aux modificateurs précédents des champs nbMcpPrévu et nbMcpEffectif et au constructeur le test nécessaire pour lever une exception lorsque nbMcpEffectif est supérieur au nbMcpPrévu. Dans ce cas, un message adéquat doit être affiché. Il doit signaler que le nombre des examens MCP effectif doit être inferieur ou égale au nombre des examens MCP prévu. (2pts) e. Créer la méthode AjouterStat() qui permet d’ajouter un objet SuiviStat passé comme paramètre au centre prométric concerné. (1pt) f. Redéfinir la méthode Afficher( ) de la classe mère qui permet d’afficher les informations de l’objet concerné. (1pt) 5- Programme principal: (16pts) N.B. : vous aurez à sauvegarder et à récupérer, une liste des établissements et une liste de centres prometric, dans et à partir de deux fichiers différents (sérialisations). a. Déclarer une collection ListeEtablissement et une collection ListePrometric, accessibles par toutes les méthodes du programme principal, utiliser la collection ou table de votre choix. (1pt) b. Ajouter une méthode EtablissementAservi() qui recherche, dans la collection ListePrometric, l’objet prometric dont l’établissement du centre est passé comme paramètre et affiche tous les établissements affectés à ce centre prometric après avoir affiché le code centre et l’établissement d’origine, dans le cas où le centre prometric n’existe pas afficher un message d’erreur. Utiliser les méthodes des classes déjà définies. (2pts) c. Ajouter une méthode Etablissement() qui affiche pour un établissement passé comme paramètre : le code, la désignation, le nombre des stagiaires , le code d’examen et le nombre des examens MCP concerné. (2pts)
Remarque : pour chaque objet établissement dans ListeEtablissement vous devez chercher le code examen et le nombre des examens MCP dans ListePrometric d. Concevoir le menu suivant : 1- Récupérer les données : il s’agit de remplir les 2 listes ListeEtablissement et ListePrometric à partir des deux fichiers. (2pts) 2- Ajouter un établissement à ListeEtablissement. (1pt) 3- Ajouter un centre prometric à ListePrometric. (1 pt) 4- Sauvegarder les données : il s’agit d’enregistrer les 2 listes dans les 2 fichiers (de sauvegarde). (2pts) 5- Rechercher et afficher les établissements affectés à un centre prometric d’un établissement donné, utiliser EtablissementAservi(). (2pts) 6- Afficher les informations des établissements : il s’agit d’afficher le code, la désignation, le nombre des stagiaires, le code d’examen et le nombre des examens MCP d’un établissement donné, utiliser Etablissement() (2pts) 7- Fin. (1pt)
Après avoir développé les classes du dossier2 vous devez compléter ce travail par la réalisation d’une application de type Windows (programmation événementielle) qui contient un ensemble de formulaires pour la mise à jour et la consultation de différentes informations concernant le suivi des examens de certification. a. Déclarer une collection ListeEtablissement et une collection ListePrometric, dans le programme principale, faites le nécessaire pour qu’elles soient accessibles par tous les Formulaires de cet application, utiliser la collection ou table de votre choix. (1pt) b. Créer une feuille MDI qui vous permet d’accéder aux autres formulaires de cette application en lui ajoutant un menu dont la dernière commande est « Quitter ». Un message de confirmation pour la fermeture de l’application s’affiche avant de quitter l’application (voulez-vous vraiment quitter cette application) dans le cas affirmatif les données des 2 listes seront automatiquement enregistrées dans les 2 fichiers de sauvegardes de la partie Dossier2. (4pts) c. Au chargement de la feuille MDI, les 2 listes doivent être automatiquement remplies à partir des données des 2 fichiers de sauvegardes de la partie Dossier2. (2pts) d. Concevoir un formulaire (interface et code) qui comportera toutes les étiquettes (les labels) et les zones de texte nécessaires pour la mise à jour et la consultation de la liste des centres prometric (on ne tient pas compte de listSuiviStat).
Ce formulaire contiendra aussi les boutons suivants : Nouveau, Ajouter, Modifier, Supprimer, les 4 boutons de navigation (suivant, précédent, début et fin), et Fermer. - Interface. (2pts) - Les 4 boutons de navigation. (2pts) - Les boutons Nouveau et Ajouter. L'ajout dans la ListeEtablissement sera effectué que si toutes les données sont remplies. (1,5pts) - Le bouton Modifier. La modification d'un ou plusieurs champs de l’établissement (2pts) - Le bouton Supprimer. Prévoir un message de confirmation. (1,5pts) - Le bouton Fermer. (1pt) e. Ajouter un formulaire, contenant une liste déroulante (ComboBox ou autre), les zones de texte(TextBox) et les étiquètes (Label) nécessaires, et une grille (objet contenant des lignes et des colonnes avec une ligne d’entête) qui affiche la liste des établissements affecter à un centre prometric donné ce dernier est identifié par son établissement (voir classe Prometric) sélectionnée à partir de la liste déroulante.
Au chargement du formulaire la liste déroulante sera remplie automatiquement par les codes des établissements de votre région à partir de la liste ListeEtablissement. les informations (codEfp et désEfp) de l’établissement choisi s’afficheront automatiquement dans les zones de texte précités ainsi que le codCentre nbMcpEffectif nbMcpPrévu ensuite les établissements affectés au centre prometric (l’établissement sélectionné) s’afficheront dans la grille à partir de ListePrometric (on n’affichera pas les objets SuiviStat de listSuiviStat du centre prométric). - Interface. (2pts) - Le remplissage du Combo Box. (2pts) - Le remplissage des zones de texte. (2pts) - Le remplissage de la grille. (2pts) - Le bouton Fermer. (1pt)
Examen de Passage Pratique 2013 Variante 3
Dossier 1 : Programmations Structurée: (16Pts)
On souhaite développer un programme de gestion des salaires du personnel de lOfppt, pour cela on vous demande d’écrire un programme dans un langage structuré qui permet de créer: 1. la structure suivante : (1pt)
struct SalairePerso { int matricule , char nom[30] ; char prenom[30] ; float salaire ; } 2. la procédure SaisirSalaire( struct SalairePerso TabSalaire [ ], int n ) qui permet de remplir le tableau «TabSalaire » passé en paramètre. (4pts) 3. la procédure TrierSalaire ( struct SalairePerso TabSalaire [ ], int n ) qui permet de trier, le tableau «TabSalaire » passé en paramètre, selon le salaire du personnel. (4pts) 4. la procédure AfficherSalaire ( struct SalairePerso TabSalaire [ ], int n ) qui permet d'afficher le tableau « TabSalaire » passé en paramètre. (3pts) 5. Le programme principal dans lequel on déclare un tableau (struct SalairePerso TabSalaire [10] ; ) et on fait appel aux procédures : SaisirSalaire (TabSalaire, 4) ; TrierSalaire (TabSalaire, 4) ; et AfficherSalaire (TabMoyen, 4) ; (4pts)
2013 est l’année de démarrage des certifications Microsoft, et afin de prendre des décisions pertinentes et de mieux préparer les stagiaires, concernant ces examens pour l’année 2014, votre établissement souhaite informatiser le suivi des scores des stagiaires pour les examens de certification (MCP et MOS). Il vous est demandé de développer une application orientée objet pour satisfaire cet objectif.
NB : les classes seront définis dans une application console. 1- Classe Statistique : Statistiques permettant de faire le suivi des scores de certifications. (6pts) a. Définir une classe Statistique dont les caractéristiques sont : (1pt) • codExm de type chaine de caractère. Il s'agit du code d’un examen de certification • datExm de type date. Il s'agit de la date dont laquelle un stagiaires de votre établissement a passé l’examen concerné. • scorExm de type entier. Il s'agit du score qu’un stagiaire de votre établissement a eu pour cet examen de certification. b. Écrire un constructeur avec tous les paramètres. (1pt) c. Écrire les accesseurs et modificateurs des champs. (1pt) d. Ajouter aux modificateurs précédents des champs scorExm et codExam, et au constructeur : • le test nécessaire pour lever une exception lorsque le champ scorExm et supérieur à 1000. Dans ce cas, un message adéquat doit être affiché. Il doit signaler que le score doit être inférieur à 1000. • le test nécessaire pour lever une exception lorsque le champ codExam ne respecte pas le format suivant (le code doit commencer par 73- suivi de 3 chiffres : exemple 73-640 ou 73-433). Dans ce cas, un message adéquat doit être affiché. Il doit signaler que le code ne respecte pas la norme. (2pts)
Remarque : utiliser les fonctions prédéfinis de string e. Écrire la méthode AfficherStatistique( ) qui permet d’afficher les informations, séparées par des espaces, de l’objet concerné. (1pt) 2- Classe Stagiaire : Stagiaire de votre établissement. (8pts) a. Définir une classe Stagiaire dont les caractéristiques sont : (1pt) • matStag de type entier. Il s'agit du matricule d’un stagiaire de votre établissement • nomPrenStag de type chaine de caractère. Il s'agit de la concaténation du nom et prénom du stagiaire concerné, séparés par le caractère «_». • listStat qui est une collection générique de type (classe) Statistique et qui représente les statistiques des scores réalisés par le stagiaire concerné, ce champ est public. b. Écrire un constructeur avec tous les paramètres à l’exception de : (2pts) • nomPrenStag, et au lieu de passé ce champ comme paramètre on passe le nom et prénom du stagiaire comme paramètres, on doit respecter la contrainte de la question précédente (nomPrenStag est la concaténation du nom et prénom séparés par un tiret «_»). • listStat qu’on doit instancier à l’intérieur du constructeur c. Écrire les accesseurs et modificateurs des champs à l’exception de listStat qui est public. (1pt) d. Ajouter au modificateur précédent du champ nomPrenStag le test nécessaire pour lever une exception lorsque la contrainte de la question «a» (nomPrenStag est la concaténation du nom et prénom séparés par un tiret «_») n’est pas respectée. Dans ce cas, un message adéquat doit être affiché. Il doit signaler que le nom et prénom doivent être séparés par un tiret «_». (2pts) e. Créer la méthode AjouterStat() qui permet d’ajouter un objet Statistique passé comme paramètre au stagiaire concerné. (1pt) f. Écrire la méthode AfficherStag( ) qui permet d’afficher les informations, séparées par des tabulation, de l’objet concerné. (1pt) 3- Classe Examen : (4pts) a. Définir une classe Examen dont les caractéristiques sont : (1pt) • codExm de type chaine de caractère. Il s'agit du code du centre d’examen • intituExm de type chaine de caractère. Il s'agit de l’intitulé de l’examen concerné. b. Écrire un constructeur avec tous les paramètres. (1pt) c. Écrire les accesseurs et modificateurs de tous les champs. (1pt) d. Écrire la méthode Afficher( ) qui permet d’afficher les informations de l’objet concerné. (1pt) 4- Classe Mcp : certification professionnelle de Microsoft (Microsoft Certified Professional). (5pts) a. Définir une classe Mcp, qui hérite de la classe précédente Examen, et qui possède les caractéristiques supplémentaires suivantes : (1pt) • nbQuest de type entier. Il s'agit du nombre de questions contenues dans l’examen de certification concerné. • dtSortbatri de type date. Il s'agit de la date de sorti de la pile (batterie) de l’examen de certification concerné. b. Écrire un constructeur avec tous les paramètres. (1pt)
NB : vous devez utiliser le constructeur de la classe mère c. Écrire les accesseurs et modificateurs des champs. (1pt) d. Ajouter aux modificateurs précédents du champ dtSortbatri et au constructeur le test nécessaire pour lever une exception lorsque dtSortbatri est inférieur à l’année courante (année système). Dans ce cas, un message adéquat doit être affiché. Il doit signaler que la date de la pile doit être de cette année. (1pt) e. Redéfinir la méthode Afficher( ) de la classe mère qui permet d’afficher les informations de l’objet concerné. (1pt) 5- Programme principal: (15pts) N.B. : vous aurez à sauvegarder et à récupérer, une liste des établissements et une liste de centres prometric, dans et à partir de deux fichiers différents (sérialisations). a. Déclarer une collection ListeStagiaires et une collection ListeMcp, accessibles par toutes les méthodes du programme principal, utiliser la collection ou table de votre choix. (0,5pt) b. Ajouter une méthode StatistiqueStag() qui recherche, dans la collection ListeStagiaires, l’objet stagiaire dont le matricule est passé comme paramètre, et affiche le nom et prénom du stagiaire ainsi que le code examen, l’intitulé d’examen, date examen et le score pour tous les examens que ce stagiaire a passé, dans le cas où le matricule n’existe pas afficher un message d’erreur.
Remarque : l’intitulé d’examen se trouve dans ListeMcp. (2pts) c. Ajouter une méthode MeilleurScore() qui affiche les information du stagiaire qui a le score le plus élevé. (2pts) d. Concevoir le menu suivant : 1- Récupérer les données : il s’agit de remplir les 2 listes ListeStagiaires et ListeMcp à partir des deux fichiers. (2pts) 2- Ajouter un stagiaire à ListeStagiaires. (1pt) 3- Ajouter un objet Statistique à ListeStat d’un stagiaire se trouvant dans ListeStagiaires. (1pt) 4- Ajouter un objet Mcp à ListeMcp. (0,5pt) 5- Sauvegarder les données : il s’agit d’enregistrer les 2 listes dans les 2 fichiers (de sauvegarde). (2pts) 6- Rechercher et afficher les statistiques des stagiaires de ListeStagiaires. Utiliser la méthode StatistiqueStag(). (2pts) 7- Afficher les informations du stagiaire qui a le meilleur score. Utiliser la méthode MeilleurScore(). (1pt) 8- Fin. (1pt)
Après avoir développé les classes du dossier2 vous devez compléter ce travail par la réalisation d’une application de type Windows (programmation événementielle) qui contient un ensemble de formulaires pour la mise à jour et la consultation de différentes informations concernant le suivi des scores des stagiaires. a. Déclarer une collection ListeStagiaire et une collection ListeMcp, dans le programme principale, faites le nécessaire pour qu’elles soient accessibles par tous les Formulaires de cet application, utiliser la collection ou table de votre choix. (1pt) b. Créer une feuille MDI qui vous permet d’accéder aux autres formulaires de cette application en lui ajoutant un menu dont la dernière commande est « Quitter ». Un message de confirmation pour la fermeture de l’application s’affiche avant de quitter l’application (voulez-vous vraiment quitter cette application) dans le cas affirmatif les données des 2 listes seront automatiquement enregistrées dans les 2 fichiers de sauvegardes de la partie Dossier2. (3,5pts) c. Au chargement de la feuille MDI, les 2 listes ListeStagiaire et ListeMcp doivent être automatiquement remplies à partir des données des 2 fichiers de sauvegardes de la partie Dossier2. (2pts) d. Concevoir un formulaire (interface et code) qui comportera toutes les étiquettes (les labels) et les zones de texte nécessaires pour la mise à jour et la consultation de la liste des stagiaires ListeStagiaire.
Ce formulaire contiendra aussi les boutons suivants : Nouveau, Ajouter, Modifier, Supprimer, les 4 boutons de navigation (suivant, précédent, début et fin), et Fermer.
Vous pouvez isoler la partie (zones de texte, labels et boutons) concernant les statistiques du stagiaire dans un groupe box. (1pt) - Interface. (2pts) - Les 4 boutons de navigation. (2pts) - Les boutons Nouveau et Ajouter. L'ajout dans la ListeStagiaire sera effectué que si toutes les données sont remplies. (2pts) - Le bouton Modifier. La modification d'un ou plusieurs champs du stagiaire. (2pts) - Le bouton Supprimer. Prévoir un message de confirmation. (1,5pts) - Le bouton Fermer. (0,5pt) e. Ajouter un formulaire, contenant une liste déroulante (ComboBox ou autre), les zones de texte (TextBox) et les étiquètes (Label) nécessaires, et une grille (objet contenant des lignes et des colonnes avec une ligne d’entête) qui affiche la liste des scores d’un stagiaire sélectionné à partir de la liste déroulante.
Au chargement du formulaire la liste déroulante sera remplie automatiquement par les matricules des stagiaires de votre établissement à partir de la liste ListeStagiaires. Les informations (nom et prénom) du stagiaire choisi s’afficheront automatiquement dans les zones de texte précités ensuite les informations (code examen, date examen et score), du stagiaire sélectionné, s’afficheront dans la grille à partir de listStat du stagiaire concerné. - Interface. (2pts) - Le remplissage du Combo Box. (2pts) - Le remplissage des zones de texte. (2pts) - Le remplissage de la grille. (2pts) - Le bouton Fermer. (0,5pt)