1.1 TDI PASSAGE Synthese V1
1.1 TDI PASSAGE Synthese V1
1.1 TDI PASSAGE Synthese V1
fo
Exercice 1: Conversion numérique
995
242 11110010 362 F2
11011110 DE
.o
222 336
267 100001011 413 10B
w
̅+𝒈
𝑭(𝒈, 𝒉, 𝒌) = 𝒈𝒉𝒌 ̅𝒉̅ 𝒌 + 𝒈𝒉
̅𝒌̅ + 𝒈𝒉
̅𝒌
̅+𝒉
𝑭(𝒈, 𝒉, 𝒌) = 𝒈𝒌 ̅𝒌
g h k F
0 0 0 0
0 0 1 1
0 1 0 0
0 1 1 0
1 0 0 1
1 0 1 1
1 1 0 1
1 1 1 0
www.ofppt.info
3- Simplifier avec la méthode de Karnaugh la fonction logique F
F
gh
k 00 01 11 10
0 0 0 1 1
1 1 0 0 1
̅+𝒉
𝑭(𝒈, 𝒉, 𝒌) = 𝒈𝒌 ̅𝒌
Il s'agit de supprimer le premier minimum rencontré dans un tableau déjà rempli par 10 réels.
Exemple:
fo
1- Écrire une fonction qui retourne la position du premier minimum rencontré dans un
.in
tableau de taille quelconque passé en paramètre
2- Écrire une procédure qui supprime un élément d'un tableau de taille quelconque passé en
paramètre, en passant la position de l'élément à supprimer par paramètre
pt
3- Utiliser la fonction et la procédure pour supprimer le premier minimum rencontré dans un
tableau déjà rempli par 10 réels.
fp
Variable c : Entier
Début
c <- PositionnerMini ( b , 10 )
w
SupprimerA ( b , 10 , c )
Fin
w
Début
g <- 1
Pour h <- 2 à f
Si e [ h ] < e [ g ] Alors
g <- h
FinSi
FinPour
Retourner g
Fin
Procédure SupprimerA ( R e : Réel [ 10 ] ; f , g : Entier )
Variable h : Entier
Début
Pour h <- g à f - 1
e [ h ] <- e [ h + 1 ]
FinPour
Fin
www.ofppt.info
L'administration d'un club de football souhaite gérer son équipe. L'équipe de football a son
nom, le nom de la ville qu'elle représente, le nombre de matchs joués, et le nombre de matchs
gagnés pendant le championnat national.
L'équipe de football est formée d'un total de vingt-cinq joueurs (incluant ceux en réserve).
Chaque joueur a son nom complet, sa date de naissance, sa position sur le terrain, et une
indication sur le fait qu'il est en réserve ou non. Chaque joueur touche une prime mensuelle
calculée automatiquement à partir du nombre de matchs joués, du nombre de matchs gagnés
par l'équipe pendant le championnat national, et du fait qu'il est en réserve ou non.
L'équipe est entraînée par un entraîneur. L'entraîneur a son nom complet, la date de début de
son contrat avec l'équipe, le nombre d'années du contrat, et sa prime annuelle. La date de fin
du contrat est estimée automatiquement.
Établir le diagramme de classes permettant de gérer les données de cette équipe. Toutes les
variables d'instance doivent être privées, et toutes les méthodes doivent être publiques.
fo
.in
pt
fp
.o
w
w
w
www.ofppt.info
Dossier 2: Programmation événementielle et orientée objet (65 pts)
L'administration d'un club de football souhaite gérer son équipe. L'analyse de l'application mène
au développement des classes suivantes (toutes les classes doivent être publiques, toutes les
fo
variables d'instance doivent être privées, et toutes les méthodes doivent être publiques):
1- Classe "Joueur":
.in
a- Écrire la classe "Joueur" caractérisée par son nom complet, sa date de naissance, sa
pt
position sur le terrain, et s'il est en réserve (vrai) ou non (faux).
b- Ajouter tous les accesseurs
fp
𝑔𝑎𝑔𝑛é𝑠
10000 𝑀𝐴𝐷 𝑥 , 𝑠𝑖 𝑙𝑒 𝑗𝑜𝑢𝑒𝑢𝑟 𝑒𝑠𝑡 𝑝𝑟𝑖𝑛𝑐𝑖𝑝𝑎𝑙.
𝑃𝑟𝑖𝑚𝑒 = { 𝑗𝑜𝑢é𝑠
w
using System;
namespace Foot
{
public class Joueur
{
private string nom,position;
private DateTime naissance;
private bool estRéserve;
public string Nom
{
get
{
return nom;
}
set
{
nom = value;
}
}
Filière Correction Session 4/9
DI Synthèse V1 (Correction) Juillet 2017
www.ofppt.info
public DateTime Naissance
{
get
{
return naissance;
}
set
{
naissance = value;
}
}
public string Position
{
get
{
return position;
}
set
{
position = value;
}
}
public bool EstRéserve
{
get
fo
{
return estRéserve; .in
}
set
{
pt
estRéserve = value;
}
fp
}
public Joueur(){}
public Joueur(string nom, string position, DateTime naissance, bool estRéserve)
.o
{
this.nom = nom;
w
this.position = position;
this.naissance = naissance;
w
this.estRéserve = estRéserve;
}
w
2- Classe "Capitaine":
a- Écrire la classe "Capitaine" qui hérite de la classe "Joueur". Le capitaine est
caractérisé par le nombre de matchs qu'il a joué dans sa carrière.
b- Ajouter à cette classe un constructeur d'initialisation avec tous les paramètres. Le
nombre de matchs doit être au moins 100; sinon lever une exception.
c- Réécrire la méthode polymorphe "CalculerPrime(joués,gagnés)" sachant que:
using System;
namespace Foot
{
Filière Correction Session 5/9
DI Synthèse V1 (Correction) Juillet 2017
www.ofppt.info
public class Capitaine : Joueur
{
private ushort matchs;
public Capitaine(string nom, string position, DateTime naissance, bool estRéserve, ushort matchs)
: base(nom, position, naissance, estRéserve)
{
if (matchs < 100) throw new Exception("Expérience insuffisante!");
this.matchs = matchs;
}
public override float CalculerPrime(byte joués, byte gagnés)
{
return CalculerPrime(joués, gagnés) + 50 * matchs;
}
}
}
3- Classe "Entraîneur":
a- Écrire la classe "Entraîneur" caractérisée par son nom complet, sa date de début de
son contrat avec l'équipe, le nombre d'années du contrat, et sa prime annuelle.
b- Ajouter à cette classe un constructeur d'initialisation avec tous les paramètres. La
prime annuelle doit être entre 200000 MAD et 300000 MAD; sinon lever une
exception
c- Écrire une méthode "EstimerFinContrat()" qui retourne la date de fin du contrat.
fo
using System;
namespace Foot .in
{
public class Entraîneur
{
pt
private string nom;
private DateTime début_contrat;
fp
{
this.nom = nom;
w
this.début_contrat = début_contrat;
this.années_contrat = années_contrat;
w
if (prime < 200000 || prime > 300000) throw new Exception("Erreur prime!");
this.prime = prime;
w
}
public DateTime EstimerFinContrat()
{
return début_contrat.AddYears(années_contrat);
}
}
}
4- Classe "Equipe":
a- Écrire la classe "Equipe" caractérisée par son nom, le nom de la ville qu'elle
représente, le nombre de matchs joués, le nombre de matchs gagnés pendant le
championnat national, la liste de ses joueurs, et son entraîneur.
b- Ajouter un accesseur à lecture seule pour la liste des joueurs
c- Ajouter à cette classe deux constructeurs: un constructeur sans paramètres, et un
constructeur d'initialisation avec tous les paramètres sauf la liste des joueurs. Les deux
constructeurs doivent instancier la liste des joueurs avec une capacité de 25.
using System;
using System.Collections.Generic;
namespace Foot
{
Filière Correction Session 6/9
DI Synthèse V1 (Correction) Juillet 2017
www.ofppt.info
public class Equipe
{
private string nom, ville;
private byte joués, gagnés;
private List<Joueur> joueurs;
private Entraîneur entraîneur;
public List<Joueur> Joueurs
{
get
{
return joueurs;
}
}
public Equipe()
{
joueurs = new List<Joueur>(25);
}
public Equipe(string nom, string ville, byte joués, byte gagnés, Entraîneur entraîneur)
: this()
{
this.nom = nom;
this.ville = ville;
this.joués = joués;
this.gagnés = gagnés;
this.entraîneur = entraîneur;
fo
}
} .in
}
Soit l'équipe "équipe1" une instance de la classe "Equipe". Le formulaire précédent permet
d'enregistrer l'équipe avec sa liste de joueurs.
a- Écrire le code du bouton "Ajouter" permettant d'ajouter un joueur à la liste des joueurs
de "équipe1". Lever une exception si le nombre de joueurs dépasse 25. Capturer
l'exception dans une boite de message d'erreur.
www.ofppt.info
b- Écrire le code du bouton "Enregistrer" permettant d'enregistrer l'équipe dans un fichier
XML, en utilisant une boîte de dialogue de sauvegarde de fichiers.
fo
.in
pt
fp
.o
w
w
using System;
using System.Windows.Forms;
w
using System.IO;
using System.Xml.Serialization;
namespace Foot
{
public partial class Form1 : Form
{
private Equipe équipe1;
public Form1()
{
InitializeComponent();
équipe1 = new Equipe();
}
www.ofppt.info
MessageBox.Show(a.Message, "Erreur d'ajout", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
private void button2_Click(object sender, EventArgs e)
{
SaveFileDialog saveFileDialog1 = new SaveFileDialog();
saveFileDialog1.Filter = "Fichiers XML (*.xml)|*.xml";
if (saveFileDialog1.ShowDialog() == DialogResult.OK)
{
XmlSerializer format = new XmlSerializer(typeof(Equipe));
using (StreamWriter fluxXML = new StreamWriter(saveFileDialog1.FileName))
format.Serialize(fluxXML, équipe1);
}
}
}
}
fo
.in
pt
fp
.o
w
w
w
www.ofppt.info