Office de la Formation Professionnelle et de la Promotion du Travail Direction

Office de la Formation Professionnelle et de la Promotion du Travail Direction de la Recherche et de l’Ingénierie de la Formation : Division Examen Examen National de Fin d’année Session de juin 2019 Examen de Passage (Epreuve de Synthèse) Eléments de correction Filière Techniques de Développement Informatique Variante V1 Niveau TS Durée 4 Heures Barème /100 Consignes et Précisions aux correcteurs : Chers Mesdames et messieurs les correcteurs, veuillez SVP respecter impérativement les consignes suivantes :  Tenir compte de la plate-forme utilisée (.Net, Java, ...)  Plusieurs solutions peuvent être envisagées pour une même question. Partie I : Théorie 40 pts Dossier 1 : L’essentiel en technologies de l’information 12 pts 1. 0.5 pt pour chaque conversion 6 pts Binaire Octal Décimal Hexadécima l 11011011 333 219 DB 00111001 71 57 39 1101 15 13 D 00011010101 1 653 427 1AB 2. 2.1. f (a,b ,c ,d )=ab c+abc+abc+abc+abc 1.5 pts f (a,b ,c ,d )=ab(c+c)+abc+ab(c+c) f (a,b ,c ,d )=ab+abc+ab f (a,b ,c ,d )=a(b+bc)+ab Ou ¿ab+b(ac+a) f (a,b ,c ,d )=a(b+c)+ab Ou ¿ab+b(c+a) f (a,b ,c ,d )=ab+ac+ab Ou ¿ab+bc+ab 1.5 pts a. Simplification moyennant le tableau de Karnaugh : ab ab ab ab f (a,b ,c ,d )=ab+ac+ab Ou : f (a,b ,c ,d )=ab+bc+ab c 1 0 1 0 c 1 1 1 0 3 pts Session Examen de : Filière Epreuve de Variante Page Juin 2019 Passage TDI Synthèse V1 P a g e 1 | 10 Dossier 2 : Analyse et conception orientée objet 13 pts 1. Diagramme de cas d’utilisation : 0.25 pt pour chaque élément (acteur, Cas d’utilisation et association) 5 pts 2. Diagramme de classes : 0.5 pt pour chaque élément (classe et association) 8 pts Session Examen de : Filière Epreuve de Variante Page Juin 2019 Passage TDI Synthèse V1 P a g e 2 | 10 Dossier 3 : Programmation structurée 15 pts Algorithme Ex01 Variables choix : Caractère flag : Booléen a, b, produit : Entier Début Flag <- FAUX Répéter Ecrire("1. Entrer a et b\n") Ecrire("2. Afficher le produit des nombres entre a et b\n") Ecrire("3. Quitter\n") Ecrire("\nVotre choix\n") Lire(choix) Selon (choix) Faire 1 : flag <- VRAI Ecrire("Donner a : ") Lire(a) Répéter Ecrire("Donner b : ") Lire(b) TantQue(Non(b > a)) 2 : Si(flag = FAUX) Ecrire("Vous devez donner a et b") Sinon produit <- 1 Pour i <- a à b Faire produit <- produit * i FinPour Ecrire("Le produit est : ", produit) FinSi 3 : Ecrire("Merci") Sinon : Ecrire("Choix invalide !!!") FinSelon TantQue(choix != '3') Fin Session Examen de : Filière Epreuve de Variante Page Juin 2019 Passage TDI Synthèse V1 P a g e 3 | 10 Partie II : Pratique 60 pts Dossier 1 : Programmation structurée 12 pts 1. 1.1. 3 pts 1.2. 2 pts 2. 7 pts Session Examen de : Filière Epreuve de Variante Page Juin 2019 Passage TDI Synthèse V1 P a g e 4 | 10 Dossier 2 : Programmation événementielle et orientée objet 48 pts 1. [Serializable] class Stagiaire { private string _NuméroInscription; public string NuméroInscription { get { return _NuméroInscription; } set { Match match = Regex.Match(value, @"^\d{12}$"); if (!match.Success) throw new Exception("Numéro d'inscription invalide !!!"); _NuméroInscription = value; } } private string _NomComplet; public string NomComplet { get { return _NomComplet; } set { _NomComplet = value; } } public Stagiaire() { } public Stagiaire(string numéroInscription, string nomComplet) { NuméroInscription = numéroInscription; NomComplet = nomComplet; } public override bool Equals(object obj) { Stagiaire stagiaire = obj as Stagiaire; if (stagiaire == null) return false; return NuméroInscription.Equals(stagiaire.NuméroInscription); } public override string ToString() { return string.Format("Stagiaire {0} : {1}", NuméroInscription, NomComplet); } } 2. class Club { private List<Stagiaire> _Membres = new List<Stagiaire>(); public List<Stagiaire> Membres Session Examen de : Filière Epreuve de Variante Page Juin 2019 Passage TDI Synthèse V1 P a g e 5 | 10 { get { return _Membres; } set { _Membres = value; } } public Club() { } public int NombreMembres { get { return Membres.Count; } } public int IndiceDe(Stagiaire membre) { foreach (Stagiaire item in Membres) { if (item.Equals(membre)) return Membres.IndexOf(membre); } return -1; } public bool Ajouter(Stagiaire membre) { if (IndiceDe(membre) != -1) return false; else { Membres.Add(membre); return true; } } public void Supprimer(string numéroInscription) { foreach (Stagiaire membre in Membres) { if (membre.NuméroInscription == numéroInscription) { Membres.Remove(membre); return; } } throw new Exception("Le stagiaire à supprimer n'est pas membre du club !!!"); } public void Supprimer(Stagiaire membre) { Supprimer(membre.NuméroInscription); } public void Enregistrer() { string chemin = "Club de lecture.bin"; FileStream fileStream= new FileStream(chemin, FileMode.OpenOrCreate, FileAccess.Write); BinaryFormatter binaryFormatter = new BinaryFormatter(); Session Examen de : Filière Epreuve de Variante Page Juin 2019 Passage TDI Synthèse V1 P a g e 6 | 10 binaryFormatter.Serialize(fileStream, Membres); fileStream.Close(); } public void Charger() { string chemin = "Club de lecture.bin"; FileStream fileStream; BinaryFormatter binaryFormatter = new BinaryFormatter(); if (File.Exists(chemin)) { try { fileStream = new FileStream(chemin, FileMode.Open, FileAccess.Read); try { Membres = binaryFormatter.Deserialize(fileStream) as List<Stagiaire>; } catch (Exception) { throw new Exception("Problème de lecture !!!"); } fileStream.Close(); } catch (Exception) { throw new Exception("Problème d'ouverture !!!"); } } } public override string ToString() { string bilan = "Club de lecture :\n"; bilan += string.Format("- Membres ({0}) :\n", NombreMembres); foreach (Stagiaire membre in Membres) { bilan += string.Format("\t* {0}\n", membre); } return bilan; } } 3. public partial class Gestion_des_membres : Form { Club _Club = new Club(); public Gestion_des_membres() { InitializeComponent(); } private void Gestion_des_membres_Load(object sender, EventArgs e) Session Examen de : Filière Epreuve de Variante Page Juin 2019 Passage TDI Synthèse V1 P a g e 7 | 10 { try { _Club.Charger(); dataGridView_Membres.DataSource = _Club.Membres; } catch (Exception) { } FormClosing += new FormClosingEventHandler(Gestion_des_membres_FormClosing); } void Gestion_des_membres_FormClosing(object sender, FormClosingEventArgs e) { DialogResult résultat = MessageBox.Show("Voulez-vous vraiment fermer l'app ?", "Attention", MessageBoxButtons.YesNo, MessageBoxIcon.Question); if (résultat == DialogResult.Yes) _Club.Enregistrer(); else e.Cancel = true; } private void button_Supprimer_Click(object sender, EventArgs e) { string numéroInscription = textBox_NuméroInscription.Text; try { _Club.Supprimer(numéroInscription); dataGridView_Membres.DataSource = null; dataGridView_Membres.DataSource = _Club.Membres; } catch (Exception exception) { MessageBox.Show(exception.Message, "Attention", MessageBoxButtons.OK, MessageBoxIcon.Information); } } private void button_Ajouter_Click(object sender, EventArgs e) { Stagiaire stagiaire = new Stagiaire(textBox_NuméroInscription.Text, textBox_NomComplet.Text); if (_Club.Ajouter(stagiaire)) { dataGridView_Membres.DataSource = null; dataGridView_Membres.DataSource = _Club.Membres; } else MessageBox.Show("Ce membre existe déjà !!!", "Attention", MessageBoxButtons.OK, MessageBoxIcon.Information); } } Session Examen de : Filière Epreuve de Variante Page Juin 2019 Passage TDI Synthèse V1 P a g e 8 | 10 uploads/Marketing/ 2019-sn-tdi-corrv1.pdf

  • 11
  • 0
  • 0
Afficher les détails des licences
Licence et utilisation
Gratuit pour un usage personnel Attribution requise
Partager
  • Détails
  • Publié le Jan 06, 2023
  • Catégorie Marketing
  • Langue French
  • Taille du fichier 0.3827MB