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 à la 2eme année Session Juillet 2015 (variante 2)

abdelouafiDec 26, 2016

    1. abdelouafi

      abdelouafi Administrator Staff Member

      Messages:
      202
      Likes Received:
      9
      Trophy Points:
      18
      Joined
      Sep 13, 2016

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

      Niveau: TS Variante : V2

      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


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

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

      3- Simplifier avec la méthode de Karnaugh la fonction logique Q. (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,    j : entier
                 ch     : chaine de caracteres
      Début
      pour i = 1 à 8 faire
           ch ←  ""
                    pour j = 1 à 8 faire
                si  ( ( i + j ) % 2  = 0 )  alors
                      ch  ←  ch  &  "#"
                sinon
                      ch ←  ch  &  "O"
               finsi
                      fin pour
                      écrire(ch)
                  fin pour
      fin
      

      NB :

      · & : permet la concaténation de chaines.

      · Le symbole % permet de calculer le reste de la division.

      · Ecrire(c) : affiche la chaine c et avec un retour à la ligne


      Exercice 2: (10 pts)

      Ecrire une procédure SupSignes() qui permet d’éliminer les signes de ponctuations

      ( , ; . : ! ? ) à partir d’un tableau de caractères. (6 pts)


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



      Exemple :

      Le tableau saisi :

      2.png

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

      Conception d’un système d’information pour la gestion d’estivage
      Une entreprise désire réaliser un intranet pour gérer les séjours de ses employés aux centres d’estivage. Chaque site se caractérise par un nom, se situe dans une ville donnée et contient plusieurs types de logement (appartement, studio, villa…) certains types bénéficient d’une cuisine équipé. Le prix de la nuitée dépend du type et du site.

      Un employé qui désire bénéficier d’un séjour au sein d’un site d’estivage fait une demande.

      Vu le succès de certains types de séjours, il est conseillé de remplir trois choix par demande mais ce n’est pas une obligation. La demande précise également la période demandée ainsi que les personnes accompagnées. Pour ces dernières on doit enregistrer le nom, le prénom l’âge et leur degrés de parenté avec l’employé demandeur.

      A Chaque moment on doit connaitre l’état de la demande(en cours, accordée ou refusée). En cas de refus, on doit connaitre le motif.


      En ce qui concerne les employés, on veut mémoriser leur matricule, nom, prénom, fonction, situation familiale, adresse, n° de téléphone, ainsi que leur date de recrutement.


      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 les quartiers dans une commune. Pour cela nous allons considérer la structure Quartier ayant pour données :

      · Une chaine Nom qui correspond au nom du quartier

      · Un entier surface, qui correspond à la surface du quartier associé à la structure,

      · Nbr_habitant qui correspond au nombre d’habitants,


      Pour la suite de l’exercice, on suppose que les Quartiers sont stockés dans un tableau Les_Quartiers de dimension maximale 50 et dont la taille réelle est enregistrée dans la variable n.

      Ecrire un programme complet permettant la gestion des quartiers de la commune. Ce programme doit afficher au départ le menu suivant : (2 pts)

      3.png



      Ci-dessous l’explication du menu :

      1. Ajouter un nouveau quartier au tableau des quartiers dont les informations sont saisies au clavier.

      2. Afficher tous les quartiers.

      3. Supprimer le quartier dont le nom est donné par l’utilisateur.

      4. Afficher les quartiers dont le nombre d’habitants est inférieur à une valeur saisie.

      5. Copier le contenu de tableau dans un fichier texte dont le nom est saisi par l’utilisateur. Un quartier par ligne, les champs sont séparés par le caractère « \ ».

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

      Développement d’une application orientée objet pour la gestion des appareils électriques

      On désire réaliser une application pour une société qui fabrique et commercialise des appareils électriques :

      Classe Appareil : On considère qu’un appareil est caractérisé par une référence, une puissance (exprimée en watt), un poids et un prix.



      1)

      a. Ecrire la classe « AppElectrique » permettant de modéliser ces objets. (2 pts)


      Ajouter à cette classe un constructeur permettant d’instancier des objets de la classe « AppElectrique » dont on précisera la référence, la puissance, le poids, et un constructeur sans paramètres. (2 pts).


      b. Réécrire la méthode ToString() pour afficher les caractéristiques de l’appareil. (2 pts)

      c. Ecrire la méthode ClasseEneergetique() : qui permet d’afficher la classe énergétique de l’appareil selon sa puissance : (2 pts)

      · Si la puissance est inférieure strictement à 300 watt c’est la classe A

      · Si la puissance est comprise entre 300 watt et 1000 watt c’est la classe B

      · Si la puissance est supérieure à 1000 watt c’est la classe C


      2) Classe Television : une télévision est un appareil qui possède un type d’écran (LCD, LED …), et une fréquence(en hertz) :

      a) Ecrire une classe « Television » héritant de la classe « AppElectrique ». (2 pts)

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

      c) Réécrire la méthode toString() affichant les caractéristiques de la télévision. (2 pts)

      3) Classe VeloElec : un vélo électrique est un appareil qui a une autonomie et un kilométrage.

      a) Ecrire une classe VeloElec héritant de la classe « AppElectrique ». (2 pts)

      b) Récrire le constructeur de cette classe pour définir, en plus, l’autonomie (exprimée en Km) et le kilométrage. (2 pts)

      c) Ajouter les méthodes suivantes :

      i) Rouler (float distance) : permettant au vélo d’avancer et retournant le nouveau kilométrage. (2 pts)

      ii) Charger (int nbrminute) : permettant de charger la batterie et renvoyer la nouvelle valeur de l’autonomie (on suppose qu’une heure de charge donne 10 km en autonomie). (2 pts)


      d) Réécrire la méthode toString() donnant les caractéristiques d’un vélo électrique. (2 pts)

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

      a) Créer un appareil électrique de type télévision (1 pt)

      b) Afficher cet article et afficher sa classe énergétique. (1,5 pts)

      c) Créer un article de type vélo électrique (1 pt)

      d) Faites rouler ce vélo (1 pt)

      e) Charger ce vélo (1 pt)

      f) Afficher le vélo (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 des logements :
      4.png

      1. Ajouter dans la méthode de chargement du formulaire le code permettant de remplir la liste type par (Studio, Appartement, Maison). (3 pts)



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



      3. Ecrire le code du bouton « Ajouter » permettant d’ajouter un nouveau logement à la DataGridView des logements. (8 pts)


      4.


      a. Ecrire le code du bouton « Supprimer » permettant de supprimer de la DataGridView un logement dont l’ID est saisi. (6 pts)



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



      5. On suppose que les logements sont stockées dans une collection «Logements » de type ArrayList ou Vector.

      Ecrire le code du bouton « Sauvegarder » qui permet d’enregistrer la liste des logements (voir image ci-dessus) dans un fichier objet (sérialisation) qui porte le nom « Logements.dat ». (8 pts)




      Cliquez sur "SOLUTION" en haut de la page pour voir a correction
       

      Attached Files:

      Last edited: Dec 26, 2016
      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

      #O#O#O#O

      O#O#O#O#

      #O#O#O#O

      O#O#O#O#

      #O#O#O#O

      O#O#O#O#

      #O#O#O#O

      O#O#O#O#

      Exercice 2: Suppression des singnes de ponctuation
      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
      SupSignes ( T,N)
             
      Fin
      
      Procédure SupSignes (T : tableau() ; N : Entier )
      i=1
      
      Répéter
      
      Si( t(i) = ‘,’ ou t(i)=’;’ ou t(i)=’.’ ou t(i) = ‘:’ ou t(i)=’?’ ou t(i)=’ !’) 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]
      [​IMG]
      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  Quartier {
          char nom[20];
          int surface;
           int nbrhabitant;
      };
      struct Quartier les_quartiers[max];
      
      //=========procedure de saisie==============
      void saisie_un_quartier(){
                                           
        printf("Saisir les information du quartier :  \n\n");
        printf("Nom du quartier : ");
        scanf("%s",&les_quartiers[n+1].nom);
        printf("Surface : ");
        scanf("%d",&les_quartiers[n+1].surface);
        printf("Nombre d'habitants : ");
        scanf("%d",&les_quartiers[n+1].nbrhabitant);
         
         n=n+1;
            }
        //=========procedure d'affichage==============               
                         
      void afficher_les_quartiers(){
      int i;
      for(i=1;i<n+1;i++)
      
        printf("Le quartier :%s & Sa surface : %d & son nombre d'habitants : %d  \n",les_quartiers[i].nom,les_quartiers[i].surface,les_quartiers[i].nbrhabitant);
                                                           
        }
      
      //=========procedure de recheche============== 
      void rechercher_quartier(){
           int i;
      printf("\nRechercher un quartier  :\n");
      int nbrh;
      printf("Entrer le nombre d'habitants : ");
      scanf("%d",&nbrh);
      
      for(i=1;i<=n;i++){
      
          if(les_quartiers[i].nbrhabitant<= nbrh){
      
        printf("----------------------------------\n");
        printf("Nom : %s\n",les_quartiers[i].nom);
        printf("Surface : %d\n",les_quartiers[i].surface);
        printf("Nombre d’habitants : %d\n",les_quartiers[i].nbrhabitant);
       
           }
        }
      }
       
      //=========procedure de suppression============== 
      void supprimer_quartier(){
      char nom[20];
           int i,j,k;
           printf("Saisir le nom  du quartier que vous voulez supprimer : ");
           scanf("%s",&nom);
      
           for(i=1;i<=n;i++){
      
               if(strcmp(les_quartiers[i].nom,nom)==0){
                  k=i;
                  n=n-1;
                  for(j=k;j<=n;j++){
                  les_quartiers[j]=les_quartiers[j+1];
                  }
               }
           }
      }
      //=========Sauvegarder dans un fichier============== 
      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/%d \n",les_quartiers[i].nom,les_quartiers[i].surface,les_quartiers[i].nbrhabitant);                       
                      }             
              fclose (fichier);
          }
          else
         
          printf("Impossible d'ouvrir le fichier test.txt");
      }   
      
           
      }
      //=========Quitter============== 
      
      void quitter(){
      
      system("cls");
      printf("\n\n        \t------------FIN-----------\n\n\n");
      printf("\n\n        \t------------MERCI-----------\n\n\n");
      }
      
      Main

      Code:
      int main ()
      
      {
          do{
                 printf("**************Gestion des quartiers********************* \n");   
                 printf("      <1. Saisir un quartier---------------------------- \n");
                 printf("      <2. Afficher la liste des quartiers-------------- \n");
                 printf("      <3. Rechercher un quartier ---------------------\n");
                 printf("      <4. Supprimer un quartier-----------------------\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_un_quartier();break;
      case 2: system("cls");afficher_les_quartiers();break;
      case 3: system("cls");rechercher_quartier();break;
      case 4: system("cls");supprimer_quartier();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;
              }
         }
      
      
      
      
      
      
      
      
      
      
      class Program
          {
              static void Main(string[] args)
              {
      
      Television t1 = new Television("tv123", 80,13.50F, 3500, "lcd", 100);
                  Console.WriteLine(t1.ToString());
                  Console.WriteLine(t1.ClasseEneergétique());
                  VeloElec v1 = new VeloElec("v122", 250, 25, 11500, 50.50F, 560);
      
                  v1.Rouler(20.50F);
                  v1.Charger(120);
                  Console.WriteLine(v1.ToString());
                  Console.ReadLine();
              }
      }
      
      Dossier 3: Programmation événementielle

      1. le code permettant de remplir la liste
      Code:
                              comboBox1.Items.Add("Studio");
                         comboBox1.Items.Add("Appartement");
                              comboBox1.Items.Add("Maison");
      
      2. le code du bouton "Nouveau » :
      Code:
      textBox1.Text = "";
                  textBox2.Text = "";
                  textBox3.Text = "";
                  comboBox1.Text = "";
      textBox4.Text = "";
      
      3.le code du bouton " Ajouter» :
      Code:
      dataGridView1.Rows.Add(textBox1.Text, textBox2.Text,   
      textBox3.Text,comboBox1.Text, textBox4.Text );
      

      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("Logements.dat", FileMode.OpenOrCreate, FileAccess.Write);
      f.Serialize(fs, Logements);
      fs.Close();
      

Share This Page

Share