• Aucun résultat trouvé

Médian LO43 – Printemps 2013 – Partie 1

N/A
N/A
Protected

Academic year: 2022

Partager "Médian LO43 – Printemps 2013 – Partie 1"

Copied!
3
0
0

Texte intégral

(1)

Médian LO43 – Printemps 2013 – Partie 1 (aucun document autorisé)

I - Questions de cours.

a) Pourquoi le code retour de l’addition de 2 vecteurs (classe Vecteur tel que vu en cours) est- il nécessairement un code de retour par valeur ? et non pas une référence. Donner le profil de l’opération.

b) Qu’en-est-il de l’auto-adition (operator+=) en revanche ? son code retour peut-il être une référence et pourquoi ? donner le profil de l’opération.

c) Comment appelle-t-on le mécanisme de liaison d’opérations suivant le type dynamique d’un objet ? Quel mot clé spécifique faut-il utiliser pour assurer la liaison dynamique d’une méthode ?

d) A quoi correspond l’ajout de l’expression « = 0; » après le profil d’une méthode ? Comment appelle-t-on, ou qualifie-t-on, cette méthode et la classe qui la contient ?

II - Pile d'entiers. Une pile est un ensemble dynamique d’éléments où l’ajout et le retrait d’un élément de type T se fait suivant le mode LIFO (last-in-first-out), autrement dit le dernier élément ajouté est le premier retiré. Un objet de type Pile doit répondre aux fonctions suivantes:

- Construire et initialiser une pile vide

- Empiler un élément sur la pile (méthode « ajouter ») : ajoute un élément en somment de pile - Dépiler un élément de la pile (méthode « retirer ») : retire et renvoie l’élément en sommet de pile

- Obtenir la valeur du sommet de pile (méthode « sommet ») - Indiquer si la pile est vide (méthode « pile_vide »)

Le but est de réaliser la classe Pile et on dispose pour cela d'une classe Liste déjà fournie.

L'interface de la classe Liste est telle que vue en TD et/ou TP. Elle contient notamment les méthodes « ajouter », « supprimer », « valeur », « liste_vide ».

a) Rappeler quelles sont les deux méthodes permettant de faire de la réutilisation.

b) Rappeler quels sont les opérations définissant la forme de Coplien. Pourquoi n’est-il pas nécessaire ici de redéfinir explicitement la forme de Coplien pour la classe Pile ?

c) Donner l’interface et l'implémentation de la classe Pile suivant chacune de ces 2 méthodes.

On pourra se contenter d’une description in-line (les corps sont donnés directement dans le .h à la suite des profils).

d) Nous souhaitons tout de même réécrire les opérations de base de la forme de Coplien (même si cela n’est pas nécessaire). Ecrire ces opérations dans les deux cas d’implémentations (ne pas oublier d’utiliser le mécanisme des listes d’initialisation).

(2)

Médian LO43 – Printemps 2013 – Partie 2 (aucun document autorisé)

1. Indiquez quelles sont les lignes qui ne sont pas correctes du point de vue C++

parmi les lignes suivantes et expliquer pourquoi :

1. char *p;

2. const char *q;

3. char &r1;

4. char t[10];

5. q = p;

6. char &r2 = p;

7. char &s = *p;

8. p = &s;

9. s = p;

10. p = s;

11. s = *p;

12. *p = s;

13. t = p;

14. p = t;

15. *t = *p;

2. Donner le résultat du code 1 ci-dessous lorsqu'on exécute le programme main.

class fgh { private: int x, y ; public:

fgh (int abs=1, int ord=0):x(abs),y(ord) { affiche("Constr. DEF") ; } fgh (const fgh& p):x(p.x),y(p.y) { affiche("Constr. CPY") ; } ~fgh () { affiche("Destr") ; }

fgh& operator=(const fgh& p){ x=p.x; y=p.y; affiche("Operator="); return *this; } void affiche(const char* st=NULL) {

if (st) cout << st << " : " ; cout << x << " ; " << y ; if (st) cout << endl ; }

} ;

void maFonction(fgh p, fgh* pa) {

cout << "Debut Ft : p=" ; p.affiche() ; cout<<";"<<"pa="<<pa <<"\n" ; delete pa ;

cout << "Fin Ft : p="; p.affiche() ; cout <<";"<<"pa="<<pa <<"\n" ; }

int main() { fgh a ; fgh b=2 ; fgh c ; c=a ;

fgh *adr = new fgh(3,4) ; maFonction(a, adr) ;

fgh d=fgh(4,8) ; c = fgh (4,6) ; }

code 1

3. Une application de traitement de texte manipule des textes découpés en section, chaque section étant composée de paragraphes. Chaque paragraphe est une suite de caractères associée à un formatage particulier (la classe formatage n'est pas demandée ! ). Sans utiliser la STL, on demande la déclaration des classes texte,

(3)

section et paragraphe ainsi que la déclaration et la définition des méthodes suivantes :

a) Forme canonique de Coplien pour texte, section et paragraphe.

b) L'opérateur + pour la classe texte qui permet d'ajouter une chaîne de caractères (type char*) à la fin du dernier paragraphe de la dernière section du texte.

c) L'opérateur << qui permet d'afficher le texte complet.

Références

Documents relatifs

K : « le pouvoir de l'ombre résonne avec de plus en plus de proximité, car il s’étend sur les peuples, autant qu’il peut le faire dans l’insouciance de leur cœur, autant que

- Les dispositions applicables à l’agrément mentionnées au deuxième alinéa de l’article R.* 1322-44-3 du code de la santé publique, dans sa rédaction issue du présent décret,

Considérant que le département de la Corse-du-Sud est placé en zone de circulation active du virus, par décret n° 2020-1115 du 05 septembre 2020 modifiant le décret n° 2020-860 du

Montrer que S est un sous-espace vectoriel de

Donner une base et la dimension de

120-1 du code de l’environnement, qui fixent les conditions et limites dans lesquelles le principe de participation du public défini à l’article 7 de la Charte de

Considérant, d’autre part, que les dispositions contestées prévoient que les projets de règles et prescriptions techniques applicables aux installations classées soumises

Considérant qu’aux termes du premier alinéa de l’article 61-1 de la Constitution : « Lorsque, à l’occasion d’une instance en cours devant une juridiction, il est