Académique Documents
Professionnel Documents
Culture Documents
Exercice 1 (5Pts)
0,5 pt par réponse exacte et –0,5 pt par réponse fausse. Ne répondez pas au hasard car la note à cette
question peut devenir zéro.
Exercice 2 (5Pts)
On considère le système d’une agence de réservation de billets d’avion. Pour acheter un billet, on passe
généralement par deux guichets. Un premier guichet de type R (Réservation) permet de réserver une
place dans un vol donné et d’établir le billet d’avion. Un second guichet de type C (Caisse) permet
d’encaisser l’argent et de remettre le billet au client. Sachant que cette agence dispose d’une salle
d’attente, de N guichets de type R et de M guichets de type C. En arrivant, les clients passent d’abord
en salle d’attente. Dès qu’un guichet de type R est libre, un client peut se présenter au guichet et procéder
à la réservation. Une fois cette opération terminée, il attend qu’un guichet caisse soit libre pour procéder
au paiement et au retrait de son billet. Le client peut désormais annuler sa réservation avant de passer
au guichet caisse.
Donnez une formulation en langage naturel pour chacune des contraintes OCL suivantes :
1) context Personne
inv: femme->notEmpty() implies
(femme.sexe = ``femme'' and self.sexe = ``homme'')
inv: mari->notEmpty() implies
(mari.sexe = ``homme'' and self.sexe = ``femme'')
2) context Entreprise
inv: self.employé->forAll(age<=65) and self.employé->forAll(age>=16)
3) context Personne
def: estEmployé: not employeur->isEmpty()
4) context Personne
inv : femme<>self and homme<>self
Exercice 4 (6 Pts)
1. Ecrire une fonction en langage C permettant de déterminer si un nombre est parfait ou non,
un nombre parfait égal à la somme de ces diviseurs (6=1+2+3). Proposer un diagramme de
Flot de données pour cette fonction (3 points)
2. Ecrire une fonction en langage C permettant de déterminer le plus grand commun diviseur
(PGCD), puis déduire si ces deux nombres sont premiers entre eux. Proposer un diagramme
de contrôle pour cette fonction. (3 points).