Showing posts with label POO. Show all posts
Showing posts with label POO. Show all posts

Correction Complet d'Examen Théorique De Fin De Formation 2012

 

 Voir l'énoncé d'EFF Théorique 2012 sur le lien suivant : Examen de Fin de Formation - Théorique Session Juillet 2012 - TDI  

 

  Correction Complet d'Examen Théorique De Fin De Formation 2012 - UML - Merise - SQL Server - POO - HTML - JavaScript - Réseaux

Dossier 1 : UML - Merise :

Voir le lien suivant : Correction EFF Théorie 2012 Partie UML et Merise

Dossier 2 : SQL Server :

Q 1 : Écrire une requête qui affiche le nombre de matchs joués dans la journée n°12.
     SELECT count(*)
     from Match
     Where numJournee=12
Q 2 : Écrire une requête qui affiche le nombre de matchs joués par journée.
     SELECT numJournee, Count(numMatch)
     From Match
     Group By numJournee
Q 3 : Écrire une requête qui affiche le match qui a compté le plus grand nombre de spectateurs..
     Select numMatch, dateMatch, numJournee
     From Match
     Where nombreSpectateur = (Select Max(nombreSpectateur) From Match)
Q 4 : Écrire une requête qui affiche le nombre de points de l’équipe de code 112 ; le nombre de
points se calcule de la façon suivante : une victoire donne 3 points, une égalité donne 1 point
et une défaite donne 0 point.

Solution 1 :
     Declare @nbVictoirs int , @nbEgalite int , @totalPoints int
     Select @nbVictoirs = Count(numMatch)
     From Match
     Where (nombreButLocaux > nombreButVisiteurs and codeEquipeLocaux=112) OR (nombreButLocaux < nombreButVisiteurs and codeEquipeVisiteurs=112)
     Select @nbEgalite = Count(numMatch)
     From Match
     Where (nombreButLocaux = nombreButVisiteurs) and (codeEquipeLocaux=112 OR codeEquipeVisiteurs=112)
     Set @totalPoints = @nbVictoirs * 3 + @nbEgalite
     Select @totalPoints
Solution 2 :
     SELECT SUM(MyTable.resultat) FROM
     (SELECT resultat=COUNT(numMatch)*3 FROM Match
     WHERE (nombreButLocaux > nombreButVisiteurs and codeEquipeLocaux=112)
     OR (nombreButLocaux < nombreButVisiteurs and codeEquipeVisiteurs=112)
     UNION
     SELECT Count(numMatch)  FROM Match
     WHERE (nombreButLocaux = nombreButVisiteurs)
     and (codeEquipeLocaux=112 OR codeEquipeVisiteurs=112)) MyTable

Q 5 : Écrire une procédure stockée qui affiche les équipes qui ont gagné leur match dans une
journée dont le numéro est donné comme paramètre.

     CREATE PROC Q5 @nbrjour int
     AS
     BEGIN
          SELECT codeEquipeLocaux AS 'Code Equipe' FROM Match
          WHERE nombreButLocaux > nombreButVisiteurs AND numJournee = @nbrjour
          UNION
          SELECT codeEquipeVisiteurs AS 'Code Equipe' FROM Match
          WHERE nombreButLocaux < nombreButVisiteurs AND numJournee = @nbrjour
     END
     EXEC Q5 1;
Q 6 : Écrire un trigger qui refuse l’ajout d’une ligne à la table Match pour laquelle la colonne
codeEquipeLocaux est égale à la colonne codeEquipeVisiteurs..

     CREATE TRIGGER question6 ON Match2 AFTER INSERT
     AS
     DECLARE @loc int , @vis int
     SELECT @loc= codeEquipeLocaux, @vis= codeEquipeVisiteurs FROM Inserted
     IF (@loc=@vis)
     BEGIN
          RAISERROR ('ATTENTION: codeEquipeLocaux == codeEquipeVisiteurs :p', 16, 1);
          Rollback
     END

Dossier 3 : POO - Programmation Orientée Objet :

Solution 1 : en Java Par : AJDI Yassin:
 Q 1 & Q 2 :
public class Camera {
     protected int code;
     protected String type;
     protected int orientation;
     public Camera() {
     super();
     }
     public Camera(int code, String type) {
     super();
     this.code = code;
     this.type = type;
     }
     public int getCode() {
     return code;
     }
     public void setCode(int code) {
     this.code = code;
     }
     public String getType() {
     return type;
     }
     public void setType(String type) {
     this.type = type;
     }
     public int getOrientation() {
     return orientation;
     }
     public void setOrientation(int orientation) {
     this.orientation = orientation;
     }
     public void tourner(int sens) {
     this.orientation = sens;
     }
     public void afficher() {
     System.out.println("-Code: " + this.code + " Orientation:"
     + this.orientation);
     }
}

Q3 - Q4 - Q5 :
public class CameraMobile extends Camera {
     private int abs;
     private int ord;
     public CameraMobile(String type, int code, int abs, int ord) {
     super(code, type);
     this.abs = abs;
     this.ord = ord;
     }
     public CameraMobile() {
     super();
     }
}
public int getAbs() {
     return abs;
}
public void setAbs(int abs) {
     this.abs = abs;
}
public int getOrd() {
     return ord;
}
public void setOrd(int ord) {
     this.ord = ord;
}
public void avancer(int d) {
     switch (this.orientation) {
     case 1:
     this.ord += d;break;
     case 2:
     this.abs += d;break;
     case 3:
     this.ord -= d;break;
     case 4:
     this.abs -= d;break;
     }
}
public void afficherPosition() {
     System.out.println("-position: abs=" + this.abs + " ord=" + this.ord);
}
public void afficher() {
     super.afficher();
     this.afficherPosition();
     }
}

Q 6 :
public class classTest {
     public static void main(String[] args) {
     // TODO Auto-generated method stub
     CameraMobile cm1 = new CameraMobile("SUMSUNG", 213, 0, 0);
     cm1.afficher();
     // a
     cm1.setOrientation(2);
     cm1.afficher();
     // b
     cm1.setOrientation(4);
     cm1.avancer(10);
     cm1.afficher();
     // c
     cm1.setOrientation(1);
     cm1.avancer(16);
     cm1.afficher();
     // d
     cm1.setOrientation(2);
     cm1.avancer(5);
     cm1.afficher();
     // e
     cm1.setOrientation(3);
     cm1.avancer(12);
     cm1.afficher();
     }
}


Solution 2 : en C# :

Q 1 - Q 2 :
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
Public class Camera
{
     private int code;
     private string type;
     private int orientation;
     public Camera()
     { }
     public Camera(int code, string type, int orientation) {
          this.code = code;
          this.type = type;
           if (orientation >= 1 && orientation <= 4)
               this.orientation = orientation;
          else throw new Exception("valeur incorrecte");
     }
     public int Code {
          get { return code; }
          set { code = value; }
     }
     public string Type {
          get { return type; }
          set { type = value; }
     }
     public int Orientation {
          get { return orientation; }
          set {
          if (value >= 1 && value <= 4)
          orientation = value;
          else throw new Exception("valeur incorrecte");
          }
     }
     public void tourner(int sens){
          if (sens >= 1 && sens <= 4)
          orientation = sens;
          else throw new Exception("valeur incorrecte");
     }
     public virtual void afficher(){
          Console.WriteLine("La caméra {0} a l'orientation {1}",code,orientation);
     }
}

Q 3 - Q 4 - Q 5 :
Public class CameraMobile:Camera
{
     private int abs;
     private int ord;
     public CameraMobile():base()
     { }
     public CameraMobile(int code, string type, int orientation,int abs,int ord) :base(code,type,orientation){
          this.abs = abs;
          this.ord = ord;
     }
     public void afficherPosition(){
          Console.WriteLine("Abscisse={0}-Ordonnée={1}",abs,ord);
     }
     public override void afficher()
     {
          base.afficher();
          afficherPosition();
     }
     public void avancer(int d){
          switch (this.Orientation){
          case 1: ord += d; break;
          case 2: abs += d; break;
          case 3: ord -= d; break;
          case 4: abs -= d; break;
          }
     }
}

Q 6 :
Public class Test
{
     static void Main(string[] args){
          CameraMobile cm = new CameraMobile(125, "Sony FX30", 1, 0, 0);
          cm.afficher();
          cm.tourner(2); cm.afficher();
          cm.tourner(4); cm.avancer(10); cm.afficher();
          cm.tourner(1); cm.avancer(16); cm.afficher();
          cm.tourner(2); cm.avancer(5); cm.afficher();
          cm.tourner(3); cm.avancer(12); cm.afficher();
          Console.ReadLine();
     }
}

Dossier 3 : HTML - JavaScript - Réseaux:


Exercice 1 : HTML - JavaScript :
Q 1 - Q 2 :
    <html >
        <head>
            <script type="text/javascript">
                function ChangeEtat(f) {
                    if(f.accepter.checked == true) {f.validation.disabled = false }
                    if(f.accepter.checked == false) {f.validation.disabled = true }
                }
                function valForm (f) {
                    if(f.nom.value == "" || f.prenom.value == "" || f.jour.value == "" || f.mois.value == "" || f.an.value == "" || f.pass.value == "" || f.confpass.value == "")
                        alert('Remplir tous les champs!!');
                    else
                        if(f.jour.value <=0 || f.jour.value >31|| f.mois.value <=0 || f.mois.value <=0 || f.mois.value>12 || f.an.value<1900)
                            alert('Date incorrecte!!');
                        else
                            if (f.pass.value != f.confpass.value)
                                alert('Le mot de passe et sa confirmation ne coïncident pas !! ');
                            else
                                f.submit();
                }
            </script>
        </head>
        <body >
            Pour s’inscrire, remplir le formulaire :< br >
            <form Action=" inscr.html" Method="Post" name="f1">
            Nom:<br>
            <input name="nom" size="30" ><br /><br />
            Prénom:<br>
            <input name="prenom" size="30" ><br /><br />
            Date de naissance:<br>
            <input name="jour" size="6" > <input name="mois" size="6" > <input name="an" size="6" ><br /><br />
            Mot de passe : <br />
            <input type="password" name="pass" size="30" >
            <br /><br />
            Confirmer mot de passe :<br>
            <input type="password" name="confpass" size="30" /><br /><br />
            <p><input type="checkbox" name="accepter" onClick=" ChangeEtat (this.form)" >J'accepte les conditions</p>
            <p>
            <input type="button" name="validation" value="Valider" disabled onClick="valForm(this.form)" >
            <input type="reset" value="Annuler" ></p>
            </form>
        </body>
    </html>


Q 3 :
On ajoute aux scripts, la fonction :
    function start() {
        setTimeout(window.close, 8000);
    }

La function start s’éxécute au chargement de la page par :
    <body onload="start()">

 Exercice 2 : Réseaux :
 De Q1 à Q4 voir cours.
 Q5 :
   a - Donner les adresses IP et les masques de chaque machine.
        - les adresses autorisées sont (192.168.79.2 jusqu'à 192.168.79.254) sous un masque 255.255.255.0

   b - Donner le type de câble utilisé pour connecter les équipements entre eux.

       
   c - Donner la commande MSDOS pour tester si la machine 1 est connectée à Internet.
        - La commande MSDOS : ping 42.42.6.6
   d - On souhaite que la machine 1 joue le rôle d’un serveur Web (IIS ou Apache), donner les
étapes d’installation et de configuration de ce serveur.

        - Voir cours.

EP - Examen Passage 2011 - TDI -Théorie - Algo - C - POO - Merise


EP - Examen Passage  2011 - TDI -Théorie - Algo - C - POO - Merise

Partie 1: Connaissances générales et logique :

1- Définissez brièvement les termes suivants:
     ROM
     UAL
     MIPS
     CMOS
2- Quelle est la différence entre les deux mémoires vives DRAM et SRAM?
3- Remplir les cases du tableau suivant par les nombres correspondants, écrits dans les systèmes de numération spécifiés.



EP - Examen   Passage 2011 - TDI -Théorie - Algo - C - POO - Merise
EP - Examen Passage 2011 - TDI -Théorie - Algo - C - POO - Merise


Chaque colonne correspondant au système spécifié; et chaque ligne au même nombre.
4- Soit la table de vérité suivante :



EP -   Examen Passage 2011 - TDI -Théorie - Algo - C - POO - Merise
EP - Examen Passage 2011 - TDI -Théorie - Algo - C - POO - Merise


a- Donner les expressions algébriques des deux fonctions logiques F1 et F2.
b- Simplifier, par la méthode de Karnaugh, la fonction F2.

Partie 2: Techniques et langages de programmation structurée:

Exercice 1:
Donner la syntaxe du schéma itératif "Tanque"; et expliquer son fonctionnement
Exercice 2:
Pour chaque des deux séquences algorithmiques suivantes, dire s'il est possible de simplifier son écriture. Si oui, comment; et sinon pourquoi?



EP - Examen   Passage 2011 - TDI -Théorie - Algo - C - POO - Merise
EP - Examen Passage 2011 - TDI -Théorie - Algo - C - POO - Merise

Exercice 3:
une matrice carrée est un tableau à deux dimensions dont le nombre de lignes est égale au nombre de colonnes.
Une matrice est dite équilibrée si la somme de éléments de chaque ligne est égale à zéro, la somme des éléments de chaque colonne est égale à zéro et la somme de éléments de deux diagonales est égale à zéro aussi.
Écrire un algorithme qui lit une matrice carrée d'entiers et vérifie si elle est équilibrée ou non.
Vous devez afficher soit la mention "Votre matrice et équilibrée" ou la mention "Votre matrice est non équilibrée".
Exercice 4:
Écrire un programme dans un langage de programmation structurée, qui permet de trouver les nombres premiers inférieurs ou égaux à un entier N donné par l'utilisateur.
La méthode consiste à remplir un tableau, dans l'ordre du plus petit au plus grand, par les entiers compris entre 2 et N (N étant l'entier limite précisé par l'utilisateur); puis de parcourir le tableau depuis le début, en gardant un entier rencontré et éliminant tous les multiples, par leur mise à zéro par exemple. A la fin du parcours, tous les entier restants (non nuls) ont des nombres premiers.

Partie 3: Programmation orientée objet:

Dan une application Windows tous les contrôles (fenêtres, bouton, zones de texte, cases à cocher ...) sont caractérisés par un nom (de type chaine de caractères), une position haut et une position gauche (de type entier) de l'objet sur l'écran. Une fenêtre et un contrôle comme les autres, caractérisée en plu d'un titre et d'une couleur d'arrière plan (de type entier).
1- Créer les classe Contrôle et Fenêtre avec un constructeur d'initialisation, un constructeur de copier, sachant que la classe Fenêtre hérite de la classe Contrôle.
2- Doter la classe Contrôle par la méthode Display qui permet d'afficher la mention suivante:
"Le contrôle Texte1 et situé à la position 12x25"
Avec Texte1 est le nom du contrôle et 12,25 représentent respectivement la position gauche, haut du contrôle sur l'écran.
3- Redéfinir la méthode Display pour la classe Fenêtre pour afficher la mention suivante:
"Le contrôle Text1 est situé à la position 12x25, ayant comme titre "titre1" et une couleur d'arrière plan de 240".
On souhaite ajouter à la classe Fenêtre une propriété type collection qui permet de gérer une liste de contrôles que l’utilisateur peut ajouter sur une fenêtre (zones de texte, lite déroulante, ...).
4- Donner le modifications à apporter à la classe Fenêtre et la méthode AjoutControle qui permet d'ajouter un contrôle à la collection.
5- Implémenter pour la classe Fenêtre la méthode RetireControle qui permet du supprimer un contrôle de la collection connaissant son nom.
6- Implémenter pour le classe Fenêtre la méthode DisplayTout qui permet d'afficher tous les contrôles ajouté à la fenêtre.

Partie 4: Conception de Systèmes d'informations:

Gestion d'un cabinet d'architecture
Vous êtes appelé à concevoir un système de gestion pour un cabinet d'architecture, au sein duquel on réalise de projets architecturaux. l'étude préalable résulte des contacts suivants :
Le personnel du cabinet est constitué de plusieurs architectes, dessinateurs et du personnel administratifs, pour lesquels on enregistre un matricule, un nom, un prénom, une fonction, et une date d'embauche.
La cabinet et chargé par le client, appelé maître d'ouvrage, de concevoir le projet architectural. les maître d'ouvrage peuvent être des particuliers, des institutions publiques et privées, des promoteurs, entre autre. Pour le uns, comme pour les autres, on affecte une référence; et on enregistre le nom ou l'intitulé, l'adresse et le numéro de téléphone.
Un maître d'ouvrage, et enregistré lors de son première contact avec le cabinet, et il garde la référence, qui lui est affectée au début pour tous le projets qu'il a passé au cabinet.
Un projet est caractérisé par un numéro de référence, une date de dépôt, une date de remise prévisionnelle, un type (maison, immeuble, ...), une adresse, une superficie totale et bâtie, le type des travaux envisagés (construction ou aménagement), et une rémunération (prix du projet).
Un seul architecte est chargé du projet, mais plusieurs dessinateurs peuvent intervenir dans la réalisation du projet. le personnel administratif du cabinet intervient dan le projet au niveau de la constitution du dossier auprès des autorités sous les directives de l'architecte considéré comme chef du projet.
A la remise du projet, la date de fin effective de sa réalisation est enregistrée.

Travail à faire :
1- Donner un modèle conceptuel de données.
2- Déduire le modèle logique de données.

Télécharger L'Examen Passage 2011 - TDI -Théorie - Algo - C - POO - Merise :
en format .pdf sur le lien suivant :

EP - Examen Passage 2011 - TDI -Théorie - Algo - C - POO - Merise


Examens de Passage - Pratique - TDI - 2010 - Jour 1 - V1 - V2 - V3


Examens de Passage - Pratique - TDI - 2010 - Jour 1 - Variante 1


PARTIE I :  PROGRAMMATION STRUCTUREE EN C OU C++


1. La  Direction d’un supermarché  a décidé d’accorder des réductions à ses clients selon le montant d’achat      
 La réduction est calculée selon les règles suivantes :
      - 20% pour un montant d’achat de plus de 5000 dhs
      - 15% pour un montant d’achat entre  3000 dhs < MonantAchat ≤5000 dhs  
      - 10% pour un montant d’achat entre  1000 dhs  < MonantAchat ≤3000 dhs
      - Aucune réduction pour un montant d’achat inférieur à 1000 dhs
Ecrire un programme qui permet de calculer et d’afficher la réduction et montant à payer. (1 Pt)     
2. La Direction d’une entreprise désire automatiser le calcul de l’indemnité à verser aux cadres en cas de licenciement.
Après un an d’ancienneté dans l’entreprise, il sera alloué aux cadres licenciés une indemnité tenant compte de  leur ancienneté et s’établissant comme suit :
      - la moitié du salaire d’un mois par année d’ancienneté : pour la tranche d’ancienneté entre 1 et 10 ans
      - au delà de 10 ans un mois de salaire par année d’ancienneté
      - une indemnité supplémentaire serait allouée aux cadres âgés de plus de 45 ans de :
      - 2 mois si le cadre est âgé de 46 à 49 ans
      - 5 mois si le cadre est âgé de plus de 50 ans.
Ecrire un programme qui permet de saisir l’âge, l’ancienneté et le dernier salaire et d’afficher l’indemnité du cadre.  (1.5 pts)

PARTIE II :  PROGRAMMATION ORIENTEE OBJET EN VB.NET, C# OU JAVA

On souhaite gérer la répartition des modules entre les formateurs d’un institut de formation professionnelle.
Soit la classe module qui modélise un module et qui comportera les attributs suivants :
      reference
      intitule 
      formateur  (matricule du Formateur qui enseigne ce module)
Soit la classe Formateur qui modélise un Formateur et qui comportera les attributs suivants :
       matricule
       nom  
       prenom 
       echelle 
      listeModule  

Travail à faire :
1- Codage de la classe Module
      a. Ecrire la classe Module avec un compteur des objets créés. (1pt)
2- Codage de la classe Formateur
      a. Ecrire la classe Formateur avec un compteur des objets créés. (1pt)
3- Ajouter la méthode compare qui teste l’égalité de 2 objets Formateur (2 objets Formateur sont égaux s’ils ont le même matricule). (1pt)
4- Créer une exception nommée erreurEchelle qui se déclenche lors de la saisie d’une échelle de formateur qui n’est pas comprise entre 1 et 20. (1pt)
5- Ajouter une méthode choixEnseignant qui désigne l’enseignant d’un module. (1pt)
6- Ajouter une méthode supprimerFormateur qui annule le choix de l’enseignant d’un module. (1pt)
7- Ajouter une méthode ajouterFormateur qui ajoute un module à la liste des modules pris en charge un formateur. (1pt)
8- Ajouter une méthode  supprimerModule qui supprime un module de la liste des modules d’un formateur. (1pt)
9- Ecrire un programme de test qui crée 4 formateurs et 5 modules : (1pt)
10-  Ecrire un programme permettant d’enregistrer les objets crées dans deux fichiers texte : Formateurs.txt et Modules.txt (1pt)

PARTIE III :  PROGRAMMATION ÉVÉNEMENTIELLE EN VB.NET, C# OU JAVA

Pour plus convivialité, on souhaite développer quelques fonctionnalités de l’application de gestion de la répartition des modules en mode graphique.
1- Créer une interface qui permet la gestion des modules.
      a. Ajouter un module (0.5pt)
      b. Supprimer un module selon sa référence. (0.5pt)
      c. Modifier un module selon sa référence. (0.5pt)
      d. Rechercher un module selon sa référence ou son intitulé. (1pt)
      e. Afficher dans un label le nombre des modules créés (0.5pt)
2- Créer une interface qui permet la gestion des formateurs.
      a. Ajouter un formateur. (0.5pt)
      b. Supprimer un formateur selon son matricule. (0.5pt)
      c. Modifier les informations d’identité d’un formateur. (0.5pt)
      d. Rechercher un formateur selon son matricule. (0.5pt)
      e. Afficher l’ensemble des formateurs dans une grille (0.5pt)
3- Créer un menu permettant d’accéder à ces différentes fonctionnalités. (0.5pt)

Examens de Passage - Pratique - TDI - 2010 - Jour 1 - Variante 2

PARTIE I :  PROGRAMMATION STRUCTUREE EN C OU C++

1. La Direction d’une entreprise désire automatiser le calcul de l’indemnité à verser aux cadres en cas de licenciement.
Après un an d’ancienneté dans l’entreprise, il sera alloué aux cadres licenciés une indemnité tenant compte de  leur ancienneté et s’établissant comme suit :
      - la moitié du salaire d’un mois par année d’ancienneté : pour la tranche d’ancienneté entre 1 et 10 ans
      - au delà de 10 ans un mois de salaire par année d’ancienneté
      - une indemnité supplémentaire serait allouée aux cadres âgés de plus de 45 ans de :
      - 2 mois si le cadre est âgé de 46 à 49 ans
      - 5 mois si le cadre est âgé de plus de 50 ans.
Ecrire un programme qui permet de saisir l’âge, l’ancienneté et le dernier salaire et d’afficher l’indemnité du cadre.  (1.5 pts)
2. Ecrire un programme permettant de trier un tableau de n réels dans un ordre croissant en utilisant la méthode de tri bulle (1 pt)
3. Ecrire un algorithme qui effectue la lecture d’une matrice carrée A ainsi que sa taille n et affiche la trace de A. (1 pt)
      (Pour une matrice A(ai,j), Trace(A)=Σai,i la somme des éléments sur la diagonale).
4. Ecrire un programme qui demande à l'utilisateur de saisir un entier N et qui affiche la figure suivante sous forme des étoiles. (0.5 pt)
N=3
      ***
      **
      *

PARTIE II :  PROGRAMMATION ORIENTEE OBJET EN VB.NET, C# OU JAVA

On souhaite développer une application pour la gestion des modules enseignés par des professeurs dans une Ecole privée.
Soit la classe module qui modélise un module et qui comportera les attributs suivants :
      reference
      intitule 
      professeur   (matricule du Professeur qui enseigne ce module)
Soit la classe Professeur qui modélise un Professeur et qui comportera les attributs suivants :
      matricule
      nom  
      prenom 
      echelle 
      listeModule   

Travail à faire :
1- Codage de la classe Module
      a. Ecrire la classe Module avec un compteur des objets créés. (1pt)
2- Codage de la classe Professeur
      a. Ecrire la classe Professeur avec un compteur des objets créés. (1pt)
3- Ajouter la méthode compare qui teste l’égalité de 2 objets Professeur (2 objets Professeur sont égaux s’ils ont le même matricule). (1pt)
4- Créer une exception nommée erreurEchelle qui se déclenche lors de la saisie d’une échelle de professeur qui n’est pas comprise entre 8 et 11. (1pt)
5- Ajouter une méthode choixProfesseur qui désigne l’enseignant d’un module. (1pt)
6- Ajouter une méthode supprimerProfesseur qui annule le choix de l’enseignant d’un module. (1pt)
7- Ajouter une méthode ajouterModule qui ajoute un module à la liste des modules pris en charge par un professeur. (1pt)
8- Ajouter une méthode  supprimerModule qui supprime un module de la liste des modules d’un professeur. (1pt)
9- Ecrire un programme de test qui crée 4 professeurs et 5 modules : (1pt)
10- Ecrire un programme permettant d’enregistrer les objets crées dans deux fichiers texte : Professeurs.txt et Modules.txt (1pt)

PARTIE III :  PROGRAMMATION EVENEMENTIELLE EN VB.NET, C# OU JAVA

Pour plus de convivialité, on souhaite développer quelques fonctionnalités de l’application de gestion de la répartition des modules en mode graphique.
1- Créer une interface qui permet la gestion des modules.
      a. Ajouter un module (0.5pt)
      b. Supprimer un module selon sa référence. (0.5pt)
      c. Modifier un module selon sa référence. (0.5pt)
      d. Rechercher un module selon sa référence ou son intitulé. (1pt)
      e. Afficher dans un label le nombre des modules créés (0.5pt)
2- Créer une interface qui permet la gestion des professeurs.
      a. Ajouter un professeur. (0.5pt)
      b. Supprimer un professeur selon son matricule. (0.5pt)
      c. Modifier les informations d’identité d’un professeur. (0.5pt)
      d. Rechercher un professeur selon son matricule. (0.5pt)
      e. Afficher l’ensemble des professeurs dans une grille (0.5pt)
3- Créer un menu permettant d’accéder à ces différentes fonctionnalités. (0.5pt)

Examens de Passage - Pratique - TDI - 2010 - Jour 1 - Variante 3

PARTIE I :  PROGRAMMATION STRUCTUREE EN C OU C++

1. Ecrire un programme permettant de saisir le prix unitaire  et la quantité commandée d’un article. Le programme affichera le prix à payer, le port, et la remise sachant que :
      -Le port est gratuit si le montant hors taxe est supérieur à 1000 dh
      -Le port est 3%  dans le cas contraire
      -la remise est de 5 % si le  montant hors taxe  est compris entre 300 et 1000 et de 10% au      -delà de 1000 (1 pt)
NB : Montant hors Taxe = prix unitaire  x  quantité commandée                  
2. Ecrire un algorithme qui effectue la lecture d’une matrice carrée A ainsi que sa taille n et affiche la trace de A. (1 pt)
      (Pour une matrice A(ai,j), Trace(A)=Σai,i la somme des éléments sur la diagonale).
3. Ecrire un programme qui demande un entier N positif, et deux entiers Bd et Ba (compris entre 2 et 10) et convertit N de la base Bd en base Ba. (2 pts)

PARTIE II :  PROGRAMMATION ORIENTEE OBJET EN VB.NET, C# OU JAVA

On souhaite développer une application pour la gestion des modules enseignés par des enseignants dans une Ecole privée.
Soit la classe module qui modélise un module et qui comportera les attributs suivants :
      reference
      intitule 
      enseignant   (matricule de l’enseignant qui enseigne ce module)
Soit la classe Enseignant qui modélise un Enseignant et qui comportera les attributs suivants :
      matricule
      nom  
      prenom 
      echelle 
      listeModule   

Travail à faire :
1- Codage de la classe Module
      a. Ecrire la classe Module avec un compteur des objets créés. (1pt)
2- Codage de la classe Enseignant
      a. Ecrire la classe Enseignant avec un compteur des objets créés. (1pt)
3- Ajouter la méthode compare qui teste l’égalité de 2 objets Enseignant (2 objets Enseignant sont égaux s’ils ont le même matricule). (1pt)
4- Créer une exception nommée erreurEchelle qui se déclenche lors de la saisie d’une échelle de enseignant qui n’est pas comprise entre 8 et 11. (1pt)
5- Ajouter une méthode choixEnseignant qui désigne l’enseignant d’un module. (1pt)
6- Ajouter une méthode supprimerEnseignant qui annule le choix de l’enseignant d’un module. (1pt)
7- Ajouter une méthode ajouterModule qui ajoute un module à la liste des modules pris en charge par un enseignant. (1pt)
8- Ajouter une méthode  supprimerModule qui supprime un module de la liste des modules d’un enseignant. (1pt)
9- Ecrire un programme de test qui crée 4 enseignants et 5 modules : (1pt)
10-  Ecrire un programme permettant d’enregistrer les objets crées dans deux fichiers texte : Enseignants.txt et Modules.txt (1pt)

PARTIE III :  PROGRAMMATION EVENEMENTIELLE EN VB.NET, C# OU JAVA

Pour plus de convivialité, on souhaite développer quelques fonctionnalités de l’application de gestion de la répartition des modules en mode graphique.
1- Créer une interface qui permet la gestion des modules.
      a. Ajouter un module (0.5pt)
      b. Supprimer un module selon sa référence. (0.5pt)
      c. Modifier un module selon sa référence. (0.5pt)
      d. Rechercher un module selon sa référence ou son intitulé. (1pt)
      e. Afficher dans un label le nombre des modules créés (0.5pt)
2- Créer une interface qui permet la gestion des enseignants.
      a. Ajouter un enseignant. (0.5pt)
      b. Supprimer un enseignant selon son matricule. (0.5pt)
      c. Modifier les informations d’identité d’un enseignant. (0.5pt)
      d. Rechercher un enseignant selon son matricule. (0.5pt)
      e. Afficher l’ensemble des enseignants dans une grille (0.5pt)
3- Créer un menu permettant d’accéder à ces différentes fonctionnalités. (0.5pt)

Télécharger Les Examens de Passage - Pratique - TDI - 2010 - Jour 1 - V1 - V2 - V3 :
en format .pdf sur le lien suivant :

Examens de Passage - Pratique - TDI - 2010 - Jour 1 - V1 - V2 - V3


Examen de Fin de Formation Théorie 2010 - TDI


Examen de Fin de Formation Théorie 2010 - TDI 

I – MODELISATION DE SI :

SupTIC est une école supérieure délocalisée au Maroc, spécialisée dans  la formation pointue dans le secteur des IT.
Les inscriptions fonctionnent de la façon suivante. :
Au début de chaque semestre, un catalogue des cours proposés est fourni par la Direction aux étudiants. Chaque cours est décrit par un certain nombre d'informations, en particulier : l'enseignant, le cursus et les prérequis.
Ce catalogue ne peut être créé avant que tous les cours ne soient affectés à des enseignants. Pour cela, chaque enseignant accède au système d'inscription pour indiquer les cours qu'il prévoit d'enseigner.
Les étudiants doivent remplir des fiches d'enregistrement qui indiquent leurs choix de cours. L'étudiant standard doit suivre 4 enseignements choisis dans le catalogue. Il devra indiquer aussi deux cours supplémentaires. En effet, il se peut que, parmi les 4 cours choisis, l'un des cours soit trop plein ou abandonné par manque d'étudiants. Chaque cours doit en effet être dispensé à au moins 5 étudiants et au plus 30 étudiants. Si un cours est choisi par moins de 5 étudiants, il est supprimé.
Ces fiches sont gérées par la scolarité. Une fois la période d’inscription terminée, un programme est exécuté pour affecter les étudiants aux cours. Dans la plupart des cas, les étudiants obtiennent ce qu’ils ont choisi. Après que tous les étudiants aient été correctement affectés aux différents cours, un listing est imprimé pour chaque étudiant pour vérification.
Une fois la sélection de cours d'un étudiant validée, l'information est transmise au système de facturation qui facturera l'étudiant pour son semestre.

1. Donner un diagramme des cas d'utilisation du système. (1.5 Pts)
2. Décrire un scénario principal par un diagramme de séquence. (2 Pts)
3. Donner un diagramme de classes (2 Pts)
4. Déduire un MCD (1.5 Pts)


II – SGBDR :

Une compagnie aérienne désire gérer l’ensemble de ses vols qu’elle met en service ainsi que les pilotes et les avions qui effectuent ces vols.
Le schéma de la base de données vous a été fournit comme suit :
Donner le code SQL permettant de :


Examen de Fin de Formation Théorie 2010 - TDI
Examen de Fin de Formation Théorie 2010 - TDI


1. Ajouter le champs Ville à la table PILOTE.  (0,25 pt)
2. Donner le nom des pilotes planifiés pour des vols sur A320. (0,25 pt)
3. Donner le nom des pilotes planifiés pour des vols sur A320, qui habitent dans la ville de localisation d’un A320. (0,25 pt)
4. Pour chaque ville desservie, donner la moyenne, le minimum et le maximum des capacités des avions qui sont localisés dans un aéroport desservant cette ville. (0,25 pt)
5. Dans la table VOL, créer un trigger en insertion qui vérifie que la ville d’arrivée est différente de la ville de départ et que l’heure d’arrivée est postérieure à l’heure de départ. Dans le cas contraire, on annule l’insertion.  (0.5 pt)
6. Créer une procédure stockée "Planning" qui affiche pour un nom et un prénom de pilote passés en paramètres, les numéros de vol, avec les aéroports de départ et d’arrivée, classés par date et heure de départ. (0.5 pt) 

III – RESEAUX INFORMATIQUES :

1. Qu’est ce qu’une adresse IP ? Quel est son rôle ? (0.5 pt)
2. Donnez la classe IP des adresses suivantes :  (0.75 pt)


Examen de Fin de Formation Théorie 2010 - TDI
Examen de Fin de Formation Théorie 2010 - TDI


3. Définir les éléments d’interconnexions suivants : (0.75 pt)
        a. cartes réseau
        b. concentrateurs
        c. commutateurs

IV – DEVELOPPEMENT WEB

1. Développer une fonction Javascript qui reçoit une matrice carrée de neuf lignes et neuf colonnes et vérifie que la somme des éléments de n’importe quelle ligne n est égale à la somme des éléments de la colonne n. (1 Pt)
2. Donner la DTD correspondante au document XML suivant : (2 Pts)

<liste>
<hotel code="1">
<nom>ADRAR</nom>
<adresse>Avenue Mohamed V</adresse>
<ville>AGADIR</ville>
<tel>028840437</tel>
<tel>028840717</tel>
<fax>028840545</fax>
</hotel>
<hotel code="2">
<nom>CHEMS</nom>
<adresse>1, Rue Houmane Fetouaki</adresse>
<ville>MARRAKECH</ville>
<tel>024444813</tel>
<tel>024444817</tel>
<tel>024444815</tel>
<fax>024440547</fax>
<fax>024 435400</fax>
<mail>chems@fram.fr</mail>
</hotel>
</liste>

V – PROGRAMMATION OBJET


Vous allez devoir participer à la conception et à la programmation d’une application de gestion d’un agenda. Un agenda électronique permet de mémoriser des événements, ponctuels (comme un examen de P.O.O. le mercredi 22 mai de 14h `a 16h) ou chroniques (comme un cours de P.O.O. tous les lundis, mardis, mercredis à partir du 18 janvier et pendant 6 semaines).
Un événement chronique est caractérisé  par les mêmes informations qu’un événement ponctuel, plus la périodicité (le nombre de jours auxquels un événement revient; par exemple, 7 pour un cours hebdomadaire) et le nombre de fois ou la périodicité est renouvelée.
Un agenda électronique appartient à une personne dont on mémorise le nom et le prénom.
Ensuite, il gère essentiellement la structure de données qui lui sert à mémoriser les événements.

1. Créer  les classes Evénement, EvenementChronique et EvenementPonctuel.(1.5 Pts)
        - Ecrivez tous les constructeurs nécessaires pour les événements, ainsi que les méthodes toString. 
2. Créer la classe Agenda.  (0.75 Pt)
3. Ajouter à la classe Agenda les méthodes. 
        - creerEvenementPonctuel (0.75 Pt)
        - creerEvenementChronique (0.75 Pt)
        - afficheEvenementsDuJour (0.75 Pt)
4. Ajouter une méthode de suppression d’un événement d une agenda.  (0.75 Pt)
5. Créer une classe de test   (0.75 Pt)

Télécharger L'Examen de Fin de Formation Théorie 2010 - TSDI :
en format .pdf sur le lien suivant :

Examen de Fin de Formation Théorie 2010 - TSDI


Examens de Passage - TSDI - Pratique 2009 - V7 - V8 - V9


Examen de Passage - TSDI - Pratique 2009 Variante 7

PARTIE I :  PROGRAMMATION STRUCTUREE EN C OU C++

1. Ecrire un programme qui saisit une chaîne pouvant contenir des espaces et qui affiche chaque mot de la chaîne, le séparateur étant l'espace.
    Exemple, on tape : je pense donc je suis
Le programme affiche :
    mot 1 : je
    mot 2 : pense
    mot 3 : donc
    mot 4 : je
    mot 5 : suis
2. Écrire un programme qui demande à l'utilisateur de taper le prix HT d'un kilo de tomates, le nombre de kilos de tomates achetés, le taux de TVA. Le programme affichera le prix TTC des marchandises.
3. Ecrire une fonction f ayant en paramètres un tableau t1 de taille quelconque et un entier n indiquant la taille du tableau, ainsi qu'un tableau t2 de la même taille que t1. f doit renvoyer par un return un entier nb indiquant le nombre de valeurs comprises entre 0 et 10 dans le tableau t1. f doit mettre dans le tableau t2 les différentes valeurs comprise entre 0 et 10 qu'il a rencontrées dans le tableau t1.
4. Ecrire un programme de recherche de la valeur maximale et minimale d'un tableau [N][M] de réels de taille N x M.
5. On considère une séquence d'entiers s de longueur L représentée dans un tableau T d'entiers défini sur l'intervalle [1…Lmax], 0 < L < Lmax.
On veut écrire un programme qui remplace dans T la suite s par la suite s' de longueur L' (avec L' <= L), déduite de s en supprimant tous les éléments redondants. Un élément de s est redondant s'il est égal à un autre élément de s. Le programme ne doit pas utiliser de tableau intermédiaire pour créer s'. L'ordre des éléments reste celui de la séquence de départ.  Etudier tout d'abord le problème en supposant que T peut ne pas être trié en ordre croissant.
    Exemple : si s = [15, 4, 19, 4, 8, 11, 11, 3, 4, 19] et L = 10 alors s' = [15, 4, 19, 8, 11, 3] et L = 6

PARTIE II :  PROGRAMMATION ORIENTEE OBJET ET EVENEMENTIELLE

Un commerçant désire automatiser la gestion des commandes de ces clients.  Il désire avoir la possibilité de mettre à  jour quotidiennement ces commandes clients.
Pour gérer les commandes, il a besoin des données citées ci-dessous :


Examens de Passage - TSDI - Pratique 2009 - V7 - V8 - V9
Examens de Passage - TSDI - Pratique 2009 - V7 - V8 - V9


Toutes ces informations seront enregistrées en mémoire, à vous de choisir les structures de données qui conviennent à leur stockage.
Travail à faire :
1- Créer la classe Produit avec éventuellement des constructeurs et des accesseurs.
2- Créer la classe Commande avec éventuellement des constructeurs et des accesseurs.
3- Réaliser une interface pour ajouter des produits.
4- Réaliser une interface de mise à jour des commandes :
    a- Ajout en contrôlant la saisie.
    b- Recherche : la recherche se fait en saisissant le N° de la commande dans un InputBox).
    c- La recherche peut se faire aussi en sélectionnant le N° de la commande dans un combo.
    d- Suppression avec confirmation.
5- Réaliser une interface d’enregistrement des détails commande ( la commande est choisie à partire d’un Combo.
6- Ajouter dans la même feuille, un Label pour afficher le montant total de la commande.
7- Ajouter une feuille permettant de lister les commandes entre deux dates, calculer et afficher dans un Label, le montant total des ventes entre les même dates.

Examen de Passage - TSDI - Pratique 2009 Variante 8

PROGRAMMATION STRUCTUREE EN C OU C++.

1. Ecrire un programme qui lit le fichier VotreNom.txt créé dans votre dossier d’examen, et affiche son contenu. Le programme doit vérifier l’existence de ce fichier.
2. Faire un programme permettant d’écrire dans ce fichier, le programme ne doit pas sauvegarder dans le fichiers des donnés null.
3. Ecrire un programme qui demande à l'utilisateur de taper 10 entiers compris entre 0 et 20 qui seront stockés dans un tableau et qui affiche le nombre de fois qu'on a tapé un 0, le nombre de 1, le nombre de 2, ..., le nombre de 20.
4. Considérant un tableau numérique «T» de N éléments, et un deuxième tableau numérique «V» de M  éléments. Concevoir un programme qui permet de poser les éléments des deux tableaux dans un troisième tableau numérique «R» de telle façon à l’avoir trié en ordre croissant.

Examen de Passage - TSDI - Pratique 2009 Variante 9

PROGRAMMATION STRUCTUREE EN C OU C++.

1. Ecrire un programme de faire le tri dans l’ordre croissant et décroissant d’une matrice de taille N x M.
2. Écrire un programme qui demande à l'utilisateur de taper le prix HT d'un kilo de tomates, le nombre de kilos de tomates achetés, le taux de TVA. Le programme affichera le prix TTC des marchandises.
3. Ecrire un programme qui lit le fichier VotreNom.txt créé dans votre dossier d’examen, et affiche son contenu. Le programme doit vérifier l’existence de ce fichier.
4. On considère la suite : u(0)=a (a entier)
    si u(n) pair alors u(n+1)=u(n)/2 sinon u(n+1)=3*u(n)+1
    Pour toutes les valeurs a, il existe un entier N tel que u(N)=1
Ecrire un programme qui demande à l'utilisateur de taper a et qui affiche toutes les valeurs de u(n) de n=1 à n=N.
5. Ecrire un programme qui demande de saisir 10 entiers et qui affiche le nombre d'occurrences de la note la plus haute.


Télécharger Les Examens de Passage - TSDI - Pratique 2009 - V7 - V8 - V9 :
en format .pdf sur le lien suivant :

Examens de Passage - TSDI - Pratique 2009 - V7 - V8 - V9


Examens Passage - TDI - 2009 - Pratique - V4 - V5 - V6


Examen Passage - TDI - 2009 - Pratique - Variante 4

PARTIE I :  PROGRAMMATION STRUCTUREE EN C OU C++

1. Faire un programme ayant cet effet : saisir deux vecteurs de dimension N puis tester s'il sont égaux ou non. Deux vecteurs sont égaux s'ils ont pour chaque indice la même valeur. (1 Pt)



Examens Passage - TDI - 2009 - Pratique - V4 - V5 - V6
Examens Passage - TDI - 2009 - Pratique - V4 - V5 - V6


2. Faire un programme permettant de calculer d’afficher la table des produits pour N variant de 1 à 10 : (1 Pt)



Examens Passage - TDI - 2009 - Pratique - V4 - V5 - V6
Examens Passage - TDI - 2009 - Pratique - V4 - V5 - V6


3. Faire un programme qui lit N nombres entiers au clavier et qui affiche leur somme, leur produit et leur moyenne. Choisissez un type approprié pour les valeurs à afficher. Le nombre N est à entrer au clavier. (1,5 Pts)
4. Faire un programme qui calcule le produit scalaire de deux vecteurs d'entiers U et V (de même dimension). (1,5 Pts)
Exemple:



Examens Passage - TDI - 2009 - Pratique - V4 - V5 - V6
Examens Passage - TDI - 2009 - Pratique - V4 - V5 - V6


5. On dispose de deux tableaux A et B (de dimensions respectives N et M), triés par ordre croissant. Fusionner les éléments de A et B dans un troisième tableau FUS trié par ordre croissant. (1,5 Pts)
6. Faire un programme qui construit le triangle de PASCAL de degré N et le mémorise dans une matrice carrée P de dimension N+1. (1,5 Pts)
Exemple: Triangle de Pascal de degré 6 :



Examens Passage - TDI - 2009 - Pratique - V4 - V5 - V6
Examens Passage - TDI - 2009 - Pratique - V4 - V5 - V6


PARTIE II :  PROGRAMMATION ORIENTEE OBJET ET EVENEMENTIELLE

on souhaite développer une application pour la gestion d’un club sportif.
• Un adhérent peut s’inscrire pour pratiquer diverses disciplines (Natation, Musculation, Arts martiaux).
• Lors de l’inscription, l’adhérent fournit les informations suivantes :
         - Nom
         - Prénom
         - Adresse
         - Date de naissance
         - Code d’identification. (généré automatiquement par l’application)
         - Discipline(s) choisie (s).
• Toutes les disciplines sont définies par un code, un nom et une description.

Travail à faire :
1) Développer une classe Adherent, avec les  constructeurs adéquats, les propriétés, et une méthode d’affichage Affchei_adherent(….) (1 Pt)
2) Développer une classe Disciplines, avec les  constructeurs adéquats, les propriétés, et une méthode d’affichage Affchei_Disciplines(….) (1 Pt)
3) Développer une méthode Saisie_Adherent(….) permettant de saisir au clavier les informations d’un nouveau adhérent (1 Pt)
4) Développer une méthode Choix_Disciplines(….) permettant un à un adhérent donné, de choisir une au plusieurs disciplines. L’adhérent ne peut choisir que une des disciplines citées dans l’énoncé  (1 Pt)
5) Créer un formulaire, permettant de mettre à jour les objets Adhérents créés :
         a. Ajout (Code généré automatiquement avec contrôle de saisie) (1 Pt)
         b. Suppression avec confirmation (1 Pt)
         c. Recherche par nom ou par prénom (1 Pt)
6) Créer un formulaire permettant à un adhérent donné, de choisir une ou plusieurs disciplines. Les disciplines choisies sont affichées automatiquement dans une liste (2 Pts)
7) Sachant que pour chaque discipline pratiquée, l’adhérent doit payer 200 Dhs mensuellement. Faire un programme permettant de lister l’ensemble des adhérents avec les disciplines pratiquées ainsi que les gains mensuels du club (3 Pts)


Examen Passage - TDI - 2009 - Pratique - Variante 5

PROGRAMMATION ORIENTEE OBJET ET EVENEMENTIELLE

on souhaite développer une application pour la gestion des club de soutien proposés  . par une association scolaire.
• Un élève peut s’inscrire pour bénéficier de divers cours de soutien (Math, Français, Arabe).
• Lors de l’inscription, l’élève fournit les informations suivantes :
         - Nom
         - Prénom
         - Adresse
         - Date de naissance
         - Code d’identification. (généré automatiquement par l’application)
         - Matière(s) choisie (s).
• Toutes les matières sont définies par un code, un nom et une description.

Travail à faire :
1) Développer une classe Elève, avec les  constructeurs adéquats, les propriétés, et une méthode d’affichage Affchei_Elève(….) (1 Pt)
2) Développer une classe Matière, avec les  constructeurs adéquats, les propriétés, et une méthode d’affichage Affchei_Matière(….) (1 Pt)
3) Développer une méthode Saisie_Elève(….) permettant de saisir au clavier les informations d’un nouveau adhérent (1 Pt)
4) Développer une méthode Choix_Matière(….) permettant un à un élève donné, de choisir une au plusieurs matière. L’èlève ne peut choisir que une des matières citées dans l’énoncé  (1 Pt)
5) Créer un formulaire, permettant de mettre à jour les objets élèves créés :
         a. Ajout (Code généré automatiquement avec contrôle de saisie) (1 Pt)
         b. Suppression avec confirmation (1 Pt)
         c. Recherche par nom ou par prénom (1 Pt)
6) Créer un formulaire permettant à un élève donné, de choisir une ou plusieurs matières. Les matières choisies sont affichées automatiquement dans une liste (2 Pts)
7) Sachant que pour chaque matière, l’élève doit payer 100 Dhs mensuellement. Faire un programme permettant de lister l’ensemble des élèves avec les matières dont ils sont inscrits, ainsi que les revenus générés mensuellement par l’association (3 Pts)


Examen Passage - TDI - 2009 - Pratique - Variante 6

PROGRAMMATION ORIENTEE OBJET ET EVENEMENTIELLE

1. Créer une classe Ouvrier dont les données membre privées  sont cités ci-après et ajouter un constructeur d'initialisation et un constructeur par défaut  (1Pt)
         CodeOuv : Entier
         Nom :   Chaîne de caractères
         Prénom :  Chaîne de caractères
         GSM :   Chaîne de caractères
2. Créer des accesseurs get et set pour chaque donnée membre (1 Pt)
3. Ajouter  une méthode AfficheOuv() qui permet l’affichage des données relatives à un ouvrier (1 Pt)
4. Dans une classe de teste :
         a. Créer une méthode ranger(…) permettant de ranger une liste des ouvriers dans un tableau (1Pt)
         b. Créer une méthode trier(…) permettant de trier ce tableau par CodeOuv dans l'ordre croissant (2 Pts)
         c. Créer une méthode CopieVersfichier() qui copie la liste des ouvriers dans un fichier (1 pt)
Sachant que chaque ouvrier peut être affecté dans un ou plusieurs projets selon les besoins. Chaque projet est identifié par un code, un titre, une description, le lieu et la durée.
5. Créer un formulaire pour mette à jour les objets ouvriers créés :
         a. Ajout (Code généré automatiquement avec contrôle de saisie) (1 Pt)
         b. Suppression avec confirmation (1 Pt)
         c. Recherche par nom ou par prénom (1 Pt)
6. Créer un formulaire permettant d’affecter un ouvrier dans un ou plusieurs projets. Les projets d’affectation de chaque ouvrier sont affichés automatiquement dans une liste (2 Pts)
7. Chaque ouvrier a un salaire de 2000 Dhs et une prime de 300 dhs par projet. Créer une interface permettant de lister les ouvriers et leurs salaires globaux. (2 Pts)

Télécharger Les Examens Passage - TDI - 2009 - Pratique - V4 - V5 - V6 :
en format .pdf sur le lien suivant :

Examens Passage - TDI - 2009 - Pratique - V4 - V5 - V6


Examens de Passage - Pratique - 2009 - TDI - V1 - V2 - V3


Examens de Passage - Pratique - 2009 - TDI - Variante 1

PARTIE I :  PROGRAMMATION STRUCTUREE EN C OU C++.

1. Ecrivez un programme qui lit N nombres entiers et qui affiche leur somme, leur produit et leur moyenne. Choisissez un type approprié pour les valeurs à afficher. Le nombre N est à entrer au clavier.
2. m personnes sont assises autour d'une table circulaire et  entament le jeu suivant. Elles se fixent entre-elles un entier k>0 et une personne P1 par laquelle elles commenceront le jeu.  On commence à compter de 1 à k en partant de P1 et en tournant à droite. La kième personne quitte la table et on continue  à compter de 1 à k à partir de la personne suivante encore à table. La personne gagnante est la dernière qui reste à table.
Analyser ce problème et faire un programme permettant de réaliser ce jeu.

PARTIE II :  PROGRAMMATION ORIENTEE OBJET.

Soit les classes suivantes :


Examens de Passage - Pratique - 2009 - TDI - V1 - V2 - V3
Examens de Passage - Pratique - 2009 - TDI - V1 - V2 - V3


Travail à faire :
1. Créer les classes : Personnel et Enseignant, sachant que la classe Enseignant hérite de la classe Personnel. Ajouter des constructeurs et des propriétés sachant que le champ Grade doit être un entier compris entre 16 et 22 et que le Taux_IGR ne peut prendre que la valeur 0,35 ou 0,42
2. Créer les classes Etudiant et Module avec éventuellement des constructeur et des propriétés.
3. Nous souhaitons mettre à jour les données relatives aux enseignants en utilisant le fichier Enseignant.txt :
      a. Créer la méthode Ajouter(…) qui permet d’ajouter un Enseignant.
      b. Créer la méthode Modifier(…) qui permet de modifier un Enseignant.
      c. Créer la méthode Supprimer(…) qui permet de supprimer un Enseignant.
      d. Créer la méthode Affichage(…) qui permet d’afficher tous les Enseignant.
4. Ajouter une méthode permettant de calculer le salaire Net à payer pour un Enseignant donnée, sachant que :
      SalaireNet = [SalaireBrut + (NbreheuresSup * Taux_horaire)] * (1 - Taux_IGR)
5. Ajouter une méthode permettant de calculer la masse Salariale brute et Net de tous les enseignants.

PARTIE III :  PROGRAMMATION EVENEMENTIELLE.

Dans cette partie, nous allons utiliser les classes développées dans la Partie 2 en prévoyant l’enregistrement des données en mémoire. 
1. Créer un formulaire pour mettre à jour les données relatives à un enseignant
      a. Ajout avec contrôle de saisie.
      b. Suppression avec confirmation.
      c. Modification avec confirmation.
      d. Recherche par code ou par Nom de l’enseignant.
2. Ajouter dans le même formulaire, une grille ou une Liste permettant de lister tous les enseignants triés par ordre croissant.
3. Ajouter un Label permettant d’afficher le Salaire Net à payer à un enseignant choisi depuis la grille ou la Liste.
4. Ajouter un Label permettant d’afficher la masse salariale net.
5. Ajouter un bouton Exporter, permettant d’enregistrer les données de la grille ou la liste dans un fichier texte.

Examens de Passage - Pratique - 2009 - TDI - Variante 2

PARTIE I :  PROGRAMMATION STRUCTUREE EN C OU C++.

1. On se propose d'écrire un programme qui remplit au hasard un tableau de n réels puis les affiche à l'écran. Le programme doit calculer et afficher la valeur moyenne et la valeur Max. Les réels doivent être compris entre 0 et 20.
2. m personnes sont assises autour d'une table circulaire et  entament le jeu suivant. Elles se fixent entre-elles un entier k>0 et une personne P1 par laquelle elles commenceront le jeu.  On commence à compter de 1 à k en partant de P1 et en tournant à droite. La kième personne quitte la table et on continue  à compter de 1 à k à partir de la personne suivante encore à table. La personne gagnante est la dernière qui reste à table.
Analyser ce problème et faire un programme permettant de réaliser ce jeu.

PARTIE II :  PROGRAMMATION ORIENTEE OBJET.

Soit les classes suivantes :


Examens de Passage - Pratique - 2009 - TDI - V1 - V2 - V3
Examens de Passage - Pratique - 2009 - TDI - V1 - V2 - V3


Travail à faire :
1. Créer les classes : Salarié et Formateur, sachant que la classe Formateur hérite de la classe salarié. Ajouter des constructeurs et des propriétés sachant que le champ Grade doit être un entier compris entre 16 et 22 et que le Taux_IGR ne peut prendre que la valeur 0,35 ou 0,42.
2. Créer les classes Stagiaire et Module avec éventuellement des constructeur et des propriétés.
3. Nous souhaitons mettre à jour les données relatives aux Stagiaires en utilisant le fichier Stagiaires.txt :
      a. Créer la méthode Ajouter(…) qui permet d’ajouter un stagiaire.
      b. Créer la méthode Modifier(…) qui permet de modifier un stagiaire.
      c. Créer la méthode Supprimer(…) qui permet de supprimer un stagiaire.
      d. Créer la méthode Affichage(…) qui permet d’afficher tous les stagiaire.
4. Ajouter une méthode permettant de calculer le salaire Net à payer pour un Enseignant donnée, sachant que :
      SalaireNet = [SalaireBrut + (NbreheuresSup * Taux_horaire)] * (1 - Taux_IGR)
5. Ajouter une méthode permettant de calculer la masse Salariale brute et Net de tous les enseignants.

PARTIE III :  PROGRAMMATION EVENEMENTIELLE.

Dans cette partie, nous allons utiliser les classes développées dans la Partie 2 en prévoyant l’enregistrement des données en mémoire. 
1. Créer un formulaire pour mettre à jour les données relatives à un stagiaire
      a. Ajout avec contrôle de saisie.
      b. Recherche par code ou par Nom de l’enseignant.
2. Ajouter dans le même formulaire, une grille ou une liste permettant de lister tous les stagiaires triés par ordre croissant.
3. Apporter les modifications nécessaires sur les classes Stagiaire et Module de tel façon à nous permettre d’affecter des stagiaires à un ou plusieurs modules, chaque stagiaire doit passer un test de fin de module et chaque module à un coefficient.
4. Ajouter un Label permettant d’afficher la moyenne des notes d’un stagiaire choisi depuis la grille ou la liste.
5. Le double click sur un stagiaire depuis la grille ou la liste permet d’afficher les informations relatives au stagiaire choisi, ces notes et sa moyenne dans une autre feuille.
6. Ajouter un bouton Exporter, permettant d’enregistrer les données de la grille ou la liste dans un fichier texte.
7. Ajouter un bouton Importer, permettant de remplir la grille ou la liste par les données du même fichier texte.

Examens de Passage - Pratique - 2009 - TDI - Variante 3

PARTIE I :  PROGRAMMATION STRUCTUREE EN C OU C++.

1. m personnes sont assises autour d'une table circulaire et  entament le jeu suivant. Elles se fixent entre-elles un entier k>0 et une personne P1 par laquelle elles commenceront le jeu.  On commence à compter de 1 à k en partant de P1 et en tournant à droite. La kième personne quitte la table et on continue  à compter de 1 à k à partir de la personne suivante encore à table. La personne gagnante est la dernière qui reste à table. Analyser ce problème et faire un programme permettant de réaliser ce jeu.
2. Écrire un programme qui recherche la valeur minimum d'un tableau d’entiers.
3. Écrire un programme qui trie un tableau de n réels par ordre décroissant.
4. Écrire un programme qui transfère une matrice M à deux dimensions L et C (dimensions maximales: 10 lignes et 10 colonnes) dans un tableau V à une dimension L*C.


Examens de Passage - Pratique - 2009 - TDI - V1 - V2 - V3
Examens de Passage - Pratique - 2009 - TDI - V1 - V2 - V3


5. Écrire un programme qui effectue la transposition tA d'une matrice A de dimensions N et M en une matrice de dimensions M et N.


Examens de Passage - Pratique - 2009 - TDI - V1 - V2 - V3
Examens de Passage - Pratique - 2009 - TDI - V1 - V2 - V3


6. Écrire un programme qui réalise l'addition de deux matrices A et B de mêmes dimensions N et M.


Examens de Passage - Pratique - 2009 - TDI - V1 - V2 - V3
Examens de Passage - Pratique - 2009 - TDI - V1 - V2 - V3


PARTIE II :  PROGRAMMATION ORIENTEE OBJET ET EVENEMENTIELLE.

Soit les classes suivantes :


Examens de Passage - Pratique - 2009 - TDI - V1 - V2 - V3
Examens de Passage - Pratique - 2009 - TDI - V1 - V2 - V3


Travail à faire :
1. Créer les classes : Personnel et Professeur, sachant que la classe Professeur hérite de la classe Personnel. Ajouter des constructeurs et des propriétés sachant que le champ Grade doit être un entier compris entre 16 et 22 et que le Taux_IGR ne peut prendre que la valeur 0,35 ou 0,42.
2. Nous souhaitons mettre à jour les données relatives aux professeurs en utilisant le fichier Professeur.txt :
      a. Créer la méthode Ajouter(…) qui permet d’ajouter un professeur.
      b. Créer la méthode Supprimer(…) qui permet de supprimer un professeur.
3. Ajouter une méthode permettant de calculer la masse Salariale brute et Net de tous les enseignants.
      SalaireNet = [SalaireBrut + (NbreheuresSup * Taux_horaire)] * (1 - Taux_IGR)
Nous souhaitons développer dans les questions qui suivent, une petite interface pour mettre à jour les objets crées.
4. Créer un formulaire pour mettre à jour les données relatives à un professeur
      a. Ajout avec contrôle de saisie.
      b. Modification avec confirmation.
      c. Recherche d’un professeur par code ou par Nom.
5. Ajouter dans le même formulaire, une grille ou une Liste permettant de lister tous les Professeurs triés par ordre croissant.
6. Ajouter un Label permettant d’afficher le Salaire Net à payer à un Professeur choisi depuis la grille ou la Liste.
7.  Ajouter un Label permettant d’afficher la masse salariale net.
8. Ajouter un bouton Exporter, permettant d’enregistrer les données de la grille ou la liste dans un fichier texte.

Télécharger Les Examens de Passage - Pratique - 2009 - TDI - V1 - V2 - V3 :
en format .pdf sur le lien suivant :

Examens de Passage - Pratique - 2009 - TDI - V1 - V2 - V3


Retrouvez-nous sur Facebook
×Facebook Les Filières Informatiques