0% ont trouvé ce document utile (0 vote)
291 vues14 pages

AlgorithmiqueEtProgrammation - Examen 2018-2019

Cet examen d'algorithmique et programmation en C++ comporte deux parties. La première partie est un questionnaire à choix multiples (QCM) de 12 points portant sur l'algorithmique, la syntaxe C++, les classes et l'héritage. La deuxième partie demande de produire du code C++.

Transféré par

Tadessé Nicoly
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
291 vues14 pages

AlgorithmiqueEtProgrammation - Examen 2018-2019

Cet examen d'algorithmique et programmation en C++ comporte deux parties. La première partie est un questionnaire à choix multiples (QCM) de 12 points portant sur l'algorithmique, la syntaxe C++, les classes et l'héritage. La deuxième partie demande de produire du code C++.

Transféré par

Tadessé Nicoly
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

2018-2019

EXAMEN D’ALGORITHMIQUE ET
PROGRAMMATION

2e année
14/12/2018
Professeur(s) Etudiant
Hélène LE GUEN-GLET ................ NOM : ...............................................
Vincent JUDALET ........................... Prénom : ..........................................
Chérif BOUTAMMINE .................... Groupe : ...........................................
............................................................. N° Etudiant : ....................................

Durée de l’épreuve : 1h00


Document(s) autorisé(s) : ☐ oui ☒ non

Calculatrice autorisée : ☐ oui ☒ non

- Remarques
Le sujet doit être rendu avec la copie. ......................................................................
.................................................................................................................................
.................................................................................................................................
.................................................................................................................................
.................................................................................................................................
.................................................................................................................................

NE PAS DEGRAFER LE SUJET

Note : /20

ESTACA, CREATEUR DE NOUVELLES MOBILITES


Algorithmique et Programmation
2e année

A LIRE ATTENTIVEMENT

La première partie de l’examen (sur 12 points) est un questionnaire à choix


multiples (QCM). Les réponses sont à rapporter sur la feuille de réponse
(dernière page de ce document).
Notation :
- pour chaque bonne réponse : + 1 point
- pour chaque mauvaise réponse : - 1 point
- pas de réponse, ou réponse E : 0 point

Un conseil : ne répondez pas au hasard, vous risquez plus de perdre des


points que d’en gagner.

Pour la seconde partie (sur 8 points), vous devez produire votre propre code
en C++. Lors de la correction, nous serons plus attentifs à l’algorithme qu’à la
syntaxe.

Examen - 2 / 14 - 14/12/2018
Algorithmique et Programmation
2e année

PARTIE 1 - QUESTIONNAIRE A CHOIX MULTIPLES (12 POINTS)

Algorithmique (2 points)
Question 1.

Considérons le programme c++ ci-après :

Qu’affichera la console après l’exécution de ce programme ?

A: 2 5 8 11 cas1

B: 5 8 11 cas2

C: 5 8 cas1

D: 2 5 8 cas1

E: je ne sais pas

Examen - 3 / 14 - 14/12/2018
Algorithmique et Programmation
2e année
Question 2.

Nous avons vu en cours différent algorithmes pour trier un tableau.

Le tri par bulle (ou par permutation) consiste à comparer de manière répétitive les éléments
adjacents d’un tableau. Ainsi, les plus grands éléments sont progressivement déplacés vers la fin du
tableau jusqu’à ce que le tableau soit totalement trié.

Lors d’un tri par sélection, l’indice de l’élément de plus faible valeur est repéré en parcourant tout
le tableau, puis cet élément est placé à la première case du tableau. Le même procédé est ensuite
répété à partir de la seconde case, et ainsi de suite jusqu’à ce que le tableau soit totalement trié.

Pour le tri par insertion, on ordonne les deux premiers éléments, puis on insère le troisième élément
de manière à ce que les 3 premiers éléments soit triés, idem pour le quatrième et ainsi de suite
jusqu’à ce que tous les éléments soient insérés.

Pour un tri par fusion, on découpe le tableau en deux parties, qu’on trie séparément, puis les deux
parties sont fusionnées pour former un seul tableau trié.

Nous disposons d’un tableau créé ainsi :

Le code suivant permet de trier ce tableau. A quel type de tri correspond-il ? Remarque : la fonction
swap() permet d’échanger la valeur de deux variables.

A: tri par bulle

B: tri par sélection

C: tri par insertion

D: tri par fusion

E: je ne sais pas

Examen - 4 / 14 - 14/12/2018
Algorithmique et Programmation
2e année

Syntaxe C++ (3 points)


Question 3.

Nous définissons une fonction absolu() comme ceci :

Nous disposons d’une variable unNombre de type float. Parmi ces lignes de codes, laquelle permet
d’appeler correctement cette fonction :

A: absolu(unNombre) -> resultat ;

B: int absolu[unNombre];

C: float resultat = absolu(unNombre) ;

D: compute absolu.unNombre();

E: je ne sais pas

Question 4.

Une erreur s’est glissée dans le code ci-dessous. A quelle ligne se trouve-t-elle ?

A: ligne 2 B: ligne 8

C: ligne 9 D: ligne 12

E: je ne sais pas

Examen - 5 / 14 - 14/12/2018
Algorithmique et Programmation
2e année
Question 5.

Nous disposons d’un tableau d’entiers de 4 lignes et 6 colonnes nommé tab, créé ainsi : int tab[4][6].
Comment afficher sur la console toutes les cases du tableau ?

A: B:

C: D:

E: je ne sais pas

Examen - 6 / 14 - 14/12/2018
Algorithmique et Programmation
2e année

Définition et utilisation des classes (2 points)


Nous considérons la classe Eleve dont le prototype est donné ici :

Question 6. – On souhaite créer un objet de type Eleve. Parmi les 4 propositions ci-dessous, une seule
est fausse. Laquelle ?

A: Eleve hulk;

B: Eleve wonderwoman("Diana");

C Eleve spiderman("Peter", "Parker");

D: Eleve batman("Bruce", "Wayne", 2001) ;

E: je ne sais pas

Question 7. – Apres avoir déclaré un objet (nommé toto) de type Eleve, quel code permettra d’afficher
son nom ?

A: toto.afficher(m_nom) ;

B: toto = afficherNom() ;

C: toto.afficherNom() ;

D: cout << printf(toto) ;

E: je ne sais pas

Examen - 7 / 14 - 14/12/2018
Algorithmique et Programmation
2e année

Héritage, polymorphisme et amitié (3 points)

Nous considérons le code ci-dessous :

Examen - 8 / 14 - 14/12/2018
Algorithmique et Programmation
2e année
Question 8. –

Nous faisons 3 affirmations :


Affirmation 1 : la classe Y hérite de la classe X
Affirmation 2 : la fonction « fonctionE() » est amie de la classe Z
Affirmation 3 : la fonction « fonctionE() » est amie de la classe X

A l’affirmation 1 est fausse


B l’affirmation 2 est fausse
C l’affirmation 3 est fausse
D les 3 affirmations sont vraies
E: je ne sais pas

Question 9. – Une instruction de la fonction « fonctionE() » génère une erreur. A quelle ligne ?
A: ligne 38
B: ligne 39
C: ligne 40
D: ligne 41
E: je ne sais pas

Question 10. – qu’affichera la console suite à l’exécution de ce programme ?


A: appel de la methodeA dans la classe X
appel de la methodeB dans la classe X
appel de la methodeC dans la classe Y

B: appel de la methodeA dans la classe Y


appel de la methodeB dans la classe X
appel de la methodeC dans la classe Y

C: appel de la methodeA dans la classe Y


appel de la methodeB dans la classe Y
appel de la methodeC dans la classe Y

D: appel de la methodeA dans la classe X


appel de la methodeB dans la classe Y
appel de la methodeC dans la classe Y

E: je ne sais pas

Examen - 9 / 14 - 14/12/2018
Algorithmique et Programmation
2e année

Robot (2 points)

RoboMind est un environnement de programmation éducatif simple qui a son propre langage qui
permet aux débutants d'apprendre les bases de la programmation en utilisant un robot simulé.

Le robot est capable d'effectuer plusieurs actions. Il peut avancer, regarder autour lui, déplacer des
objets et peindre. L’environnement dans lequel le robot évolue est une grille de deux dimensions
dans lequel il peut se déplacer, observer les cellules voisines ou les marquer en laissant une trace de
peinture.

Ci-dessous quelques instructions basiques que le robot comprend :

1. forward(n): avancer de n cases

2. backward(n) : reculer de n cases

3. left() : tourner de 90 ° à gauche

4. right() : tourner de 90 ° à droite

5. paintWhite() : mettre la brosse de peinture blanche sur le sol.

6. paintBlack() : mettre la brosse de peinture noire sur le sol.

7. stopPainting(): arrêter de peindre, cacher la brosse

Le mot clé repeat(n) permet de répéter n fois une série d’instruction.

Examen - 10 / 14 - 14/12/2018
Algorithmique et Programmation
2e année
Question 11.

Parmi les propositions suivantes, laquelle permet au robot de dessiner la lettre T en noir? La position
initiale du robot est indiquée par la flèche.

A: B:
paintBlack() paintBlack()
forward(3) forward(3)
right() left()
forward(1) forward(2)
backward(2) backward(1)
stopPainting() stopPainting()

C: D:
paintBlack() paintBlack()
forward(3) forward(1)
right() left()
forward(1) forward(1)
left() backward(3)
forward(2) stopPainting()
stopPainting()

E: je ne sais pas

Examen - 11 / 14 - 14/12/2018
Algorithmique et Programmation
2e année
Question 12.

Parmi les propositions suivantes, laquelle ne permet pas au robot de dessiner la lettre « A » ? La
position initiale du robot est indiquée par la flèche.

A: B:
paintBlack() paintBlack()
forward(1) forward(1)
right() right()
repeat(4){ forward(1)
forward(2) backward(1)
left() left()
} repeat(2){
forward(2) forward(2)
right() right()
forward(1) }
stopPainting() forward(3)
stopPainting()

C: D:
repeat(2) { paintBlack
paintBlack() forward(3)
right() right()
stopPainting() repeat(2) {
forward(2) forward(2)
paintBlack() right()
left() }
forward(1) left()
left() forward(1)
forward(2) stopPainting()
right()
stopPainting()
forward()
}

E: je ne sais pas

Examen - 12 / 14 - 14/12/2018
Algorithmique et Programmation
2e année

PARTIE 2 – REDACTION D’UN PROGRAMME (5 POINTS)

Nous souhaitons créer une application permettant de gérer une liste de rendez-vous. On considérera
dans un souci de simplification que chaque mois comporte 30 jours.

L’ensemble des réponses doit être écrit en langage C++, vous prendrez soin de respecter les différents
éléments du langage comme si vous vouliez ensuite exécuter le code, notamment en respectant
l’indentation.

1. Ecrire une classe RDV ayant pour attributs jour (entier), mois (entier), heure
(entier), duree (entier) et testLibre (chaine de caractère) permettant de définir le
sujet du RDV. Prenez soin de respecter le principe d’encapsulation. Ajouter dans
cette classe un constructeur permettant de renseigner ces attributs lors de la
création de l’objet.

2. Ecrire une classe Agenda ayant pour attributs un identifiant annee et une liste de
rendez-vous mémorisés à l’aide de la classe vector. Pensez à ajouter dans la classe
RDV l’élément nécessaire pour pouvoir accéder facilement aux données de la
classe Agenda. Cette classe possède les méthodes suivantes :
a. Conflit qui prend comme argument un rendez-vous et qui retourne vrai s’il
y a un conflit avec un rendez-vous déjà existant, faux sinon.
b. Ajouter prenant pour argument un rendez-vous et qui ajoute le RDV si
celui-ci n’est pas en conflit avec un autre rendez-vous déjà inscrit, sinon
renvoi un message à l’utilisateur. Cette fonction prendra soin d’insérer le
nouveau RDV de manière à ce qu’ils soient ordonnés par ordre
chronologique.

3. Ecrire la fonction main permettant de créer quelques RDV, de les ajouter à l’agenda

Examen - 13 / 14 - 14/12/2018
Algorithmique et Programmation
2e année

Feuille de réponse

Nom de l’étudiant : Prénom :

Entourez vos réponses :

Question 1 A B C D E

Question 2 A B C D E

Question 3 A B C D E

Question 4 A B C D E

Question 5 A B C D E

Question 6 A B C D E

Question 7 A B C D E

Question 8 A B C D E

Question 9 A B C D E

Question 10 A B C D E

Question 11 A B C D E

Question 12 A B C D E

Examen - 14 / 14 - 14/12/2018

Vous aimerez peut-être aussi