1. This site uses cookies. By continuing to use this site, you are agreeing to our use of cookies. Learn More.
Dismiss Notice
Welcome to our Education website, plz like our page facebook to support us. Thank You and wish you good navigation

Examen de Passage Session Juillet 2015 (avec Correction)

abdelouafiDec 26, 2016

    1. abdelouafi

      abdelouafi Administrator Staff Member

      Messages:
      197
      Likes Received:
      9
      Trophy Points:
      18
      Joined
      Sep 13, 2016
      Examen de passage à la 2eme année : Session Juillet 2015

      Filière : Techniques de Développement Informatique Epreuve : Synthèse


      Niveau: TS Variante : V1 Durée : 5 heures Barème : / 120Pts


      Partie I : Théorie (40 pts)

      Dossier 1: Notions de mathématiques appliquées à l’informatique (12 pts)

      Exercice 1:(6 pts)

      NB : la calculatrice est strictement interdite.

      Compléter le tableau suivant:
      1.png


      Exercice 2: Soit la fonction logique suivante:

      2.png

      1- Simplifier analytiquement la fonction logique F. (2 pts)

      2- Construire la table de vérité. (2 pts)

      3- Simplifier avec la méthode de Karnaugh la fonction logique F. (2 pts)


      Dossier 2: Techniques de programmation structurée (16 pts)

      Exercice 1:

      Quel résultat fournit l’algorithme suivant (6 pts)



      Code:
      Variables  i : entier
      
          Mot,  ch : chaine de caracteres
      
      Début
      
      
      Mot ← "SALUTATIONS"
      
      
      Pour i =1 à 6 faire
      
        ch  ←  ""   //chaine vide
      
        Pour j =1 à 6 – i + 1  faire
      
         ch ← ch & "   " //  chaine espace
      
        fin pour
      
        ch ← ch  &  sous_chaine(Mot, 1, 2*i - 1)
      
        écrire (ch) ;
      
        fin pour
      
      Fin

      NB :

      · & : permet la concaténation de chaines

      · Sous_chaine (chaine, i, n) : renvoie la partie de la chaîne qui contient n lettres et qui commence à partir de l’indice i. (par exemple pour la chaine « bonjour » si i=3 et n=4 la fonction retourne « njou »)

      · Ecrire(chaine) : permet d’afficher une chaine et retourner à la ligne


      Exercice 2: (10 pts)

      Ecrire une procédure SupVoyelles() qui permet d’éliminer les voyelles (a, e, y, u, i, o) à partir d’un tableau de caractères. (6 pts)


      Faites appel à cette procédure dans un algorithme donnant le droit à l’utilisateur de remplir un tableau avec N valeurs de type caractères. (4 pts)


      Exemple :

      Tableau saisi :
      3.png


      Dossier 3: Conception et modélisation d'un système d’information (12 pts)

      Conception d’un système d’information pour une amicale

      Une amicale, ayant pour objectif la réalisation des appartements répondant à des normes de qualité et de sécurité, désire réaliser un site web pour gérer ses adhérents et ses projets.

      L’amicale propose plusieurs projets, chacun se situe dans une zone spécifique et se caractérise par une date de démarrage et une date de fin prévisionnelle.

      Chaque projet propose plusieurs types d’appartements. Le type détermine la superficie, le nombre de chambres, le montant total et le montant de la cotisation trimestrielle à payer par l’adhérent.

      Un adhérent peut bénéficier de plusieurs type d’appartement dans le cadre du même projet voire même différents projets.


      Le système devra également mémoriser le montant a payé par l’adhérent chaque trimestre pour chaque projet dont il veut bénéficier ainsi que le mode de paiement (virement, chèque, espèce).


      En ce qui concerne les adhérents, on doit mémoriser leur cin, nom, prénom, adresse actuelle et le n° de téléphone, ainsi que la première date d’inscription


      a) Etablir le dictionnaire de données. (3 pts)

      b) Etablir le modèle conceptuel de données. (6 pts)

      c) Etablir le modèle logique de données. (3 pts)


      Partie II: Pratique (80 pts)

      Dossier 1: Langage de programmation structurée (20 pts)

      On souhaite écrire un programme permettant de gérer l’ensemble des routes nationales au Maroc. Pour cela nous allons considérer la structure RouteN ayant pour données :

      · Nom qui correspond au nom de la route

      · Distance qui correspond à la longueur (en km) de la route associée à la structure,

      · VilleD qui correspond à la ville de départ,

      · VilleA qui correspond à la ville d’arrivée

      On suppose que les routes sont stockées dans un tableau les_routes de dimension maximale 100 et dont la taille réelle est enregistrée dans une variable n.

      Ecrire un programme complet permettant la gestion des routes nationales.

      1. Ce programme doit afficher au départ le menu suivant : (2 pts)

      4.png



      Ci-dessous l’explication du menu :

      1. Ajouter une nouvelle route dont les informations sont saisies au clavier au tableau des routes.

      2. Afficher les routes saisies.

      3. Afficher les routes dont la ville de départ est saisie au clavier.

      4. Supprimer du tableau une route dont le nom est donné par l’utilisateur.

      5. Copier le contenu de tableau des routes dans un fichier texte dont le nom est saisi par l’utilisateur. Chaque route est stockée dans une ligne, les champs sont séparés par le caractère virgule (« , » ).

      Ø Dossier 2: Programmation orientée objet (30 pts)

      Développement d’une application orientée objet pour la gestion d’un magasin

      On souhaite informatiser la gestion des ventes au sein d’un magasin. On considère alors qu’un article est caractérisé par son numéro de série, son prix hors taxe, sa quantité en stock, et la quantité minimale

      1) a) Ecrire la classe « Article ». (2 pts)

      Ajouter à cette classe un constructeur permettant d’instancier des objets de la classe « Article » dont on précisera le numéro de série, le prix hors taxe, la quantité en stock, la quantité minimale et un constructeur sans paramètres. (2 pts)

      b) Réécrire la méthode ToString() pour afficher les caractéristiques d’un article. (2 pts)

      c) Ajouter à la classe Article les méthodes suivantes:

      - S’approvisionner (int qte) : qui permet d’approvisionner le stock par une quantité donnée. (2pts)

      - Achat (int qte) permet de traiter un achat d’un article par un client. Une opération d'achat aura pour effet de déduire la quantité achetée du stock. Si la quantité qui reste est inférieure à la quantité minimale on avise par un message. (2 pts)

      2) Un habit est un article qui a une taille et une couleur :

      a) Ecrire la classe « Habit » héritant de la classe « Article ». (2 pts)

      b) Récrire le constructeur de cette classe afin d’initialiser, en plus, la couleur et la taille avec des valeurs passées en paramètre. . (2 pts)

      c) Réécrire la méthode toString() pour afficher les caractéristiques de l’habit. . (2 pts)

      3) Un électroménager est un article qui a un poids et une durée de garantie.

      a) Ecrire la classe « Electroménager » héritant de la classe « Article ». . (2 pts)

      b) Récrire le constructeur de cette classe pour définir, en plus, le poids et la durée de garantie en mois. (2 pts)

      c) Ajouter la méthode datefinGarantie () : retourne la date de fin de la garantie à partir de la date actuelle. (2 pts)

      d) Réécrire la méthode toString() donnant les caractéristiques d’un électroménager et la date de fin de sa garantie à partir de la date courante. (2 pts)

      4) Classe Program : Tester ces trois classes dans un programme principal.

      a) Créer un article de type habit (1 pt)

      b) Approvisionner le stock de cet article et l’afficher. (1,5 pts)

      c) Créer un article de type électroménager (1 pt)

      d) Effectuer un achat de cet article. (1 pt)

      e) Afficher la date fin de garantie de cet article. (1 pt)

      f) Afficher cet article. (0,5 pt)



      Ø Dossier 3:Programmation événementielle (30 pts)

      · NB : Dans ce dossier, on vous demande de donner uniquement le code à mettre à l’intérieur des méthodes événementielles. L’entête de ces méthodes événementielles n’est pas demandé !

      Soit le formulaire suivant dont l’objectif consiste à gérer les donneurs de sang :
      6.png

      1. Ajouter dans la méthode de chargement du formulaire le code permettant de remplir la liste groupe sanguin par (A, B, O, AB). (3 pts)


      2. Ecrire le code du bouton « Nouveau » qui permet d’initialiser tous les champs pour saisir un nouveau donneur. (3 pts)


      3. Ecrire le code du bouton « Ajouter » permettant d’ajouter un nouveau donneur à la liste des donneurs (la dataGridView). (8 pts)


      4. Ecrire le code du bouton « Supprimer » permettant de supprimer de la dataGridView un donneur dont le CIN est saisi. (6 pts)


      Un message demandant la confirmation doit être affiché. (2 pts)


      5. On suppose que les donneurs sont stockées dans une collection d’objets «Donneurs » de type ArrayList ou Vector. Ecrire le code du bouton « Sauvegarder » qui permet d’enregistrer la liste des donneurs dans un fichier objet (sérialisation) qui porte le nom « Donneurs.dat ». (8 pts)
       

      Attached Files:

      • sol1.png
        sol1.png
        File size:
        10.8 KB
        Views:
        1,089
      • sol2.png
        sol2.png
        File size:
        5.4 KB
        Views:
        1,075
      • sol3.png
        sol3.png
        File size:
        24.9 KB
        Views:
        1,085
      Loading...
      Partie I : Théorie

      Dossier 1: Notions de mathématiques appliquées à l’informatique

      Exercice 1: Conversion numérique

      Remplir le tableau suivant:
      [​IMG]
      [​IMG]
      Dossier 2: Techniques de programmation structurée

      Exercice 1: Résultat de l’algorithme :
      S

      SAL

      SALUT

      SALUTAT

      SALUTATIO

      SALUTATIONS


      Exercice 2: Suppression des voyelles
      Code:
      Tableau T() : Caractère
      Variables N,i : Entier
      Début
         Répéter
              écrire ("Donner la taille du tableau: " )
              lire (N)
      
      Pour i=1 à N
      
      Lire (T(i))
      
      Fin Pour
      SupVoyelles( T,N)
         
      Fin
      
      Procédure SupVoyelles (T : tableau() ; N : Entier )
      i=1
      
      Répéter
      
      Si( t(i) = ‘a’ ou t(i)=’e’ ou t(i)=’y’ ou t(i) = ‘u’ ou t(i)=’i’ ou t(i)=’o’) alors
      Pour j=i j<n
      T(j)t(j+1)
      
      
      
      FinPour
         
      NN-1
      
      FinSi
      
         Jusqu’à (i<=N)
      
      Redim t(N)
      Fin
      
      Dossier 3: Conception et modélisation d'un système d'information

      Conception d’un système d’information pour une société informatique

      MCD
      [​IMG]


      MLD:







      Partie II: Pratique

      Ø Dossier 1: Langage de programmation structurée
      Code:
      #include<stdio.h>
      #include <string.h>
      #include <stdlib.h>
      #define max 50
      
      ///===============les declaration=============
      int n,choix;
      
        struct  Route {
          char nom[20];
          int distance;
          char villeD[20];
          char villeA[20];
      };
      struct Route les_routes[max];
      
      //=========procedure de saisie==============
      Code:
      void saisie_une_route(){
                                         
        printf("Saisir les information de la route :  \n\n");
        printf("Nom de la route : ");
        scanf("%s",&les_routes[n+1].nom);
        printf("Distance : ");
        scanf("%d",&les_routes[n+1].distance);
        printf("Ville départ : ");
        scanf("%s",&les_routes[n+1].villeD);
        printf("Ville arrivée : ");
        scanf("%s",&les_routes[n+1].villeA);
      
         n=n+1;
           
           }
      
      //=========procedure d'affichage==============
      Code:
       void afficher_les_routes(){
      int i;
      for(i=1;i<n+1;i++)
      
        printf("La route  :%s Sa distance : %d & sa ville de départ : %s & sa ville d'arrivée : %s \n",les_routes[i].nom,les_routes[i].distance,les_routes[i].villeD,les_routes[i].villeA);
                                                         
        }
      
      //=========procedure de recheche==============
      Code:
      void rechercher_route(){
           int i;
      printf("\nRechercher une route par ville départ :\n");
      char villeD[20];
      printf("Entrer la ville de départ : ");
      scanf("%s",&villeD);
      
      for(i=1;i<=n;i++){
      
          if(strcmp(les_routes[i].villeD,villeD)==0){
      
        printf("----------------------------------\n");
        printf("Nom : %s\n",les_routes[i].nom);
        printf("Distance : %d\n",les_routes[i].distance);
        printf("Ville départ : %s\n",les_routes[i].villeD);
        printf("Ville Arrivée : %s\n",les_routes[i].villeA);
           }
        }
      }
      
      //=========procedure de suppression==============
      Code:
      void supprimer_route(){
      char nom[20];
           int i,j,k;
           printf("Saisir le nom de la route que vous voulez supprimer : ");
           scanf("%s",&nom);
      
           for(i=1;i<=n;i++){
      
               if(strcmp(les_routes[i].nom,nom)==0){
                  k=i;
                  n=n-1;
                  for(j=k;j<=n;j++){
                  les_routes[j]=les_routes[j+1];
                  }
               }
           }
      }
      
      //=========Sauvegarder dans un fichier==============
      Code:
      void sauvegarder()
      {int i;
           char nomf[20];
           printf("Saisir le nom du fichier: ");
           scanf("%s",&nomf);
        FILE*  fichier = NULL;
          fichier = fopen(nomf,"w");
          if (fichier != NULL)
          {
                for(i=1;i<=n;i++)
                      {
                              fprintf(fichier,"%s,%d,%s,%s \n",les_routes[i].nom,les_routes[i].distance,les_routes[i].villeD,les_routes[i].villeA);
                           
                      }           
              fclose (fichier);
          }
          else
       
          printf("Impossible d'ouvrir le fichier test.txt");
            }
      

      //=========Quitter==============
      Code:
      void quitter(){
      system("cls");
      printf("\n\n        \t------------FIN-----------\n\n\n");
      printf("\n\n        \t------------MERCI-----------\n\n\n");
      }
      
      Code:
      int main ()
      
      {
          do{
                 printf("**************Gestion des routes natioanles************* \n");  
                 printf("      <1. Saisir une route------------------------------ \n");
                 printf("      <2. Afficher la liste des routes------------------ \n");
                 printf("      <3. Rechercher une route par ville départ--------- \n");
                 printf("      <4. Supprimier une route-------------------------- \n");
                 printf("      <5. Sauvegarder----------------------------------- \n");
                 printf("      <6. Quitter--------------------------------------- \n");
                 printf("                          ======                         \n  ");  
        
      
        printf("Entre votre choix : ");
        scanf("%d",&choix);
        printf("\n\n");
        switch(choix){
      case 1: system("cls");saisie_une_route();break;
      case 2: system("cls");afficher_les_routes();break;
      case 3: system("cls");rechercher_route();break;
      case 4: system("cls");supprimer_route();break;
      case 5: system("cls");sauvegarder();break;
      case 6:system("cls");quitter();break;
      default : system("cls");printf("votre choix n'est pas valide !!!\n");
              }
      
              }while(choix!=6);
      
      
        system("PAUSE>null");
        return 0;
      }
      

      Dossier 2: Programmation orientée objet

      Développement d’une application orientée objet pour la gestion d’un magasin

      Classe “Article”
      Code:
      class Article
          {
            
              private string nserie;
              private float pht;
              private int qte_stk;
              private int qte_min;
              //public Article ();
              public Article(string nserie, float pht, int qte_stk, int qte_min)
          {
              this.nserie = nserie;
              this.pht = pht;
              this.qte_stk = qte_stk;
              this.qte_min = qte_min;
        
        
          }
      public new string ToString()
      {
      return this.nserie +" "+this.pht +" "+ this.qte_stk +" "+ this.qte_min ;
      }
      public void    Sapprovisionner (int qte)
      {
      
      this.qte_stk=this.qte_stk+qte;
      
      }
      public void Achat(int qte)
      {
      
          this.qte_stk = this.qte_stk - qte;
          if (this.qte_stk < this.qte_min)
              Console.WriteLine("Attention! il faut s'approvisionner");} }
      
      Classe « Habit »
      Code:
      class Habit : Article
          {
              private int taille;
              private string couleur;
            
              public Habit (string nserie, float pht, int qte_stk, int qte_min,int taille,string couleur)
              :base( nserie,  pht,  qte_stk,  qte_min)
              {
                  this.taille = taille;
                  this.couleur = couleur;
        
                      }
      
      
              public new string ToString()
              {
                  return base.ToString() + " " + this.taille + " " + this.couleur;
              }
          }
      



      Classe « Electroménager »
      Code:
      class Electromenager : Article
          {
              private float poids;
              private int duree;
      
              public Electromenager(string nserie, float pht, int qte_stk, int    
              qte_min, float poids, int duree)
                  : base(nserie, pht, qte_stk, qte_min)
              {
                  this.poids = poids;
                  this.duree = duree;
      
              }
              public DateTime datefinGarantie()
              {    
                  DateTime res = DateTime.Now.AddMonths(duree);        
                      return (res);
              }
              public Boolean Sousgarantie(DateTime date_achat)
              {
                  DateTime d = DateTime.Now;
                  if (date_achat.AddMonths(duree) > d)
                      return true;
                  else return false;      
              }
              public new string ToString()
              {
                  return base.ToString() + " " + this.poids + " " + this.duree;
              }}
      
      Code:
      class Program
          {
              static void Main(string[] args)
              {
      
                  Habit h1 = new Habit("hx123", 180, 1500, 300, 36, "rouge");
                  h1.Achat(90);
                
                  Console.WriteLine(h1.ToString());
                  Electromenager e1 = new Electromenager("Ex123", 12000, 1500, 30, 45, 12);
                  e1.Sapprovisionner(100);
                  Console.WriteLine(e1.ToString());
                  Console.WriteLine(e1.datefinGarantie());
                  Console.ReadLine();
      
              }
      }
      
      Dossier 3: Programmation événementielle


      1. le code permettant de remplir la liste
      Code:
      comboBox1.Items.Add("A");
                         comboBox1.Items.Add("B");
                              comboBox1.Items.Add("AB");
                              comboBox1.Items.Add("O");
      
      2. le code du bouton "Nouveau » :
      Code:
      textBox1.Text = "";
                  textBox2.Text = "";
                  textBox3.Text = "";
                  comboBox1.Text = "";
                  radioButton1.Checked = false;
                  radioButton2.Checked = false;
      
      3. le code du bouton " Ajouter» :
      Code:
      char rh='+';
                      if (radioButton1.Checked==false) rh='-';
      
      dataGridView1.Rows.Add(textBox1.Text, textBox2.Text,   
      textBox3.Text,comboBox1.Text,rh);
      
      4. le code du bouton " Supprimer» :
      Code:
      if (MessageBox.Show( "voulez vous supprimer?","Suppression",MessageBoxButtons.YesNo) == DialogResult.Yes)
                  {
                      foreach (DataGridViewRow dr in dataGridView1.Rows)
                      {
                          if (dr.Cells[0].Value.ToString() == textBox1.Text)
                          {
                              dataGridView1.Rows.Remove(dr);
                              break;
                          }
                      }
                  }
      
      5. le code du bouton " Sauvegarder» :
      Code:
      .BinaryFormatter f = new BinaryFormatter();
      FileStream fs = new FileStream("Donneurs.dat", FileMode.OpenOrCreate, FileAccess.Write);
      f.Serialize(fs, Donneurs);
      fs.Close();
      
      


Share This Page

Share