IFT1169 Examen Intra

Documents pareils
Introduction à l héritage en C++

INFO-F-105 Language de programmation I Séance VI

Introduction à la programmation Travaux pratiques: séance d introduction INFO0201-1

et Programmation Objet

Programmation stochastique

Une introduction à Java

Claude Delannoy. 3 e édition C++

Cours de C++ François Laroussinie. 2 novembre Dept. d Informatique, ENS de Cachan

C++ Programmer. en langage. 8 e édition. Avec une intro aux design patterns et une annexe sur la norme C++11. Claude Delannoy

Cours d initiation à la programmation en C++ Johann Cuenin

Programmation C++ (débutant)/instructions for, while et do...while

Le langage C++ est un langage de programmation puissant, polyvalent, on serait presque tenté de dire universel, massivement utilisé dans l'industrie

Informatique I. Sciences et Technologies du Vivant (Semestre 1)

Génie Logiciel I. Cours VI - Typage statique / dynamique, fonctions virtuelles et classes abstraites, flots d entrées / sorties, et string

Introduction à l algorithmique et à la programmation M1102 CM n 3

Cours 1: Java et les objets

Premiers Pas en Programmation Objet : les Classes et les Objets

Pour signifier qu'une classe fille hérite d'une classe mère, on utilise le mot clé extends class fille extends mère

Département Automatisation et Informatisation Année Programmation en C++ Institut des Sciences et Techniques de l Ingénieur d Angers

Plan Pédagogique du cours

INTRODUCTION A JAVA. Fichier en langage machine Exécutable

Algorithmique et Programmation, IMA

EPREUVE OPTIONNELLE d INFORMATIQUE CORRIGE

Prénom : Matricule : Sigle et titre du cours Groupe Trimestre INF1101 Algorithmes et structures de données Tous H2004. Loc Jeudi 29/4/2004

Java Licence Professionnelle CISII,

Cours 1 : Introduction. Langages objets. but du module. contrôle des connaissances. Pourquoi Java? présentation du module. Présentation de Java

Programme Compte bancaire (code)

Cours d Algorithmique-Programmation 2 e partie (IAP2): programmation 24 octobre 2007impérative 1 / 44 et. structures de données simples

Programmer en JAVA. par Tama


Cours de C. Petits secrets du C & programmation avancée. Sébastien Paumier

Langage et Concepts de ProgrammationOrientée-Objet 1 / 40

Exceptions. 1 Entrées/sorties. Objectif. Manipuler les exceptions ;

Machines virtuelles fonctionnelles (suite) Compilation ML Java

Introduction à C++ et à wxwidgets

Introduction à la programmation orientée objet, illustrée par le langage C++ Patrick Cégielski

30.avr.10 Présentation miniprojet. 9.mars.10 Cours 3 4.mai.10 Cours C mars.10 Cours 4 11.mai.10 Cours C++ 2

Programmation en C/C++

Le langage C++ (partie I)

TP1 : Initiation à Java et Eclipse

Cours d Algorithmique et de Langage C v 3.0

Recherche dans un tableau

Java Licence Professionnelle CISII,

Les structures. Chapitre 3

ETUDE DE CAS en UML : GESTION DES COMMANDES DE PIECES FABRIQUEES PAR LA SOCIETE C

Info0101 Intro. à l'algorithmique et à la programmation. Cours 3. Le langage Java

Les chaînes de caractères

Généralités sur le Langage Java et éléments syntaxiques.

F. Barthélemy. 17 mai 2005

1.6- Génération de nombres aléatoires

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP

TD Objets distribués n 3 : Windows XP et Visual Studio.NET. Introduction à.net Remoting

1/24. I passer d un problème exprimé en français à la réalisation d un. I expressions arithmétiques. I structures de contrôle (tests, boucles)

ACTIVITÉ DE PROGRAMMATION

M2-Images. Rendu Temps Réel - OpenGL 4 et compute shaders. J.C. Iehl. December 18, 2013

Cours intensif Java. 1er cours: de C à Java. Enrica DUCHI LIAFA, Paris 7. Septembre Enrica.Duchi@liafa.jussieu.fr

Langage et Concepts de Programmation Objet. 1 Attributs et Méthodes d instance ou de classe. Travaux Dirigés no2

PROJET 1 : BASE DE DONNÉES REPARTIES

TD/TP PAC - Programmation n 3

Structure d un programme et Compilation Notions de classe et d objet Syntaxe

CHAPITRE V. Recherche et tri

INF2015 Développement de logiciels dans un environnement Agile. Examen intra 20 février :30 à 20:30

Tp 1 correction. Structures de données (IF2)

Java Licence Professionnelle CISII, Cours 2 : Classes et Objets

Programmation en Java IUT GEII (MC-II1) 1

Encapsulation. L'encapsulation consiste à rendre les membres d'un objet plus ou moins visibles pour les autres objets.

Introduction au pricing d option en finance

Corrigés des premiers exercices sur les classes

RAPPELS SUR LES METHODES HERITEES DE LA CLASSE RACINE Object ET LEUR SPECIALISATION (i.e. REDEFINITION)

Programmation Objet Java Correction

Programmation Orientée Objet

as Architecture des Systèmes d Information

Chapitre 2. Classes et objets

Création d objet imbriqué sous PowerShell.

Seance 2: En respectant la méthode de programmation par contrat, implémentez les autres fonctions de jeu.

Cours 1 : Introduction Ordinateurs - Langages de haut niveau - Application

I. Introduction aux fonctions : les fonctions standards

TP n 2 Concepts de la programmation Objets Master 1 mention IL, semestre 2 Le type Abstrait Pile

Cours de Programmation Impérative: Zones de mémoires et pointeurs

Objets et Programmation. origine des langages orientés-objet

Introduction à Java. Matthieu Herrb CNRS-LAAS. Mars

Éléments d informatique Cours 3 La programmation structurée en langage C L instruction de contrôle if

GOL502 Industries de services

Programmation système I Les entrées/sorties

Initiation à la programmation en Python

Quelques éléments de compilation en C et makefiles

INITIATION AU LANGAGE JAVA

DE L ALGORITHME AU PROGRAMME INTRO AU LANGAGE C 51

Cours Langage C/C++ Programmation modulaire

Bases de programmation. Cours 5. Structurer les données

Génie Logiciel avec Ada. 4 février 2013

TD/TP PAC - Programmation n 3

Java 1.5 : principales nouveautés

Programmation en langage C d un µcontrôleur PIC à l aide du compilateur C-CCS Sommaire

Le hub d entreprise est une application de déploiement des applications mais aussi un outil de communication

Manuel d'installation

Utiliser Java sans BlueJ

Cours de Programmation 2

Projet L1, S2, 2015: Simulation de fourmis, Soutenance la semaine du 4 mai.

Transcription:

Trimestre Hiver, 2013 Mohamed Lokbani IFT119 Examen Intra Inscrivez tout de suite : votre nom et le code permanent. Nom : Prénom(s) : Signature : Code perm : Date : mardi 12 mars 2013 Durée : 2 heures (de 18h30 à 20h30) Local : Z-205 ; Pavillon Claire McNicoll Directives : - Toute documentation est permise. - Calculatrice non permise. - Répondre directement sur le questionnaire. - Les réponses doivent être brèves, précises, claires et nettement présentées. 1. /12 (1.1. à 1.) 2. /25 (2.1 à 2.5) 3. /20 (3.1 à 3.5) 4. /28 (4.1 à 4.) 5. /15 (5.1) Total : /100 Directives officielles * Interdiction de toute communication verbale pendant l'examen. * Interdiction de quitter la salle pendant la première heure. * L'étudiant qui doit s'absenter après la première heure remettra sa carte d'étudiant au surveillant, l'absence ne devant pas dépasser 5 minutes. Un seul étudiant à la fois peut quitter la salle. * Toute infraction relative à une fraude, un plagiat ou un copiage est signalée par le surveillant au directeur de département ou au professeur qui suspend l'évaluation. F.A.S IFT119 Trimestre Hiver, 2013: Examen Intra 1/10

Exercice 1 (12 points) Encerclez la bonne réponse et donnez une courte explication. 1.1 [VRAI FAUX] C++ est un langage orienté objet. 1.2 [VRAI FAUX] Une classe a accès par défaut à un opérateur d'affectation. 1.3 [VRAI FAUX] L'opérateur de résolution de portée «::» permet l'accès à l'ensemble des noms importés d'un espace de noms. 1.4 [VRAI FAUX] Les trois grands principes de la programmation orientée objet sont : encapsulation, héritage et l amitié. 1.5 [VRAI FAUX] Une classe amie d une classe n a pas accès aux zones protégées («protected») de cette classe? 1. [VRAI FAUX] Dans un «makefile» on sépare les cibles des dépendances par deux-points «:». IFT119 Trimestre Hiver, 2013: Examen Intra 2/10

Exercice 2 (25 points) Expliquez d abord les messages d avertissements et/ou d erreurs générés par le compilateur. Par la suite, corrigez les lignes du code pour éliminer ces avertissements et/ou erreurs, dans le cas où il est possible de le faire. 2.1 1 2 3 4 5 8 class C {; C::~C() { class D { D::~D(); ; D::~D() { 2_1.cpp:2:: error: definition of implicitly-declared 'C::~C()' 2_1.cpp:5:4: error: extra qualification 'D::' on member 'D' [-fpermissive] 2.2 8 9 10 11 class X { void unefonction (X *x){ this = x; ; 2_2.cpp: In member function 'void X::someFunction(X*)': 2_2.cpp:9:1: error: lvalue required as left operand of assignment IFT119 Trimestre Hiver, 2013: Examen Intra 3/10

2.3 char c = 'E'; if( c >= 'A' && c <= 'Z' c = " " c = ","){ 2_3.cpp::34: warning: suggest parentheses around '&&' within ' ' [-Wparentheses] 2_3.cpp::49: error: lvalue required as left operand of assignment 2.4 1 2 3 4 5 8 9 10 11 namespace M { namespace N { void f1(); void f2(); void N::f1() { namespace O { void M::N::f2() { 2_4.cpp:9:18: error: declaration of 'void f2()' not in a namespace surrounding 'M::N' IFT119 Trimestre Hiver, 2013: Examen Intra 4/10

2.5 Pour cet exemple, les lignes barrées ne contiennent pas d erreurs, même si le compilateur les a signalées comme étant des erreurs (dommages collatéraux : l erreur est ailleurs). 1 2 3 4 5 8 namespace a::b {int i; int main() { a::b::i = 2; cout << "i: " << a::b::i << endl; return 0; 2_5.cpp:5:12: error: expected '{' before '::' token 2-5.cpp:5:12: error: 'b' in namespace '::' does not name a type 2-5.cpp: In function 'int a::main()': 2-5.cpp:8:8: error: 'a::b' has not been declared 2-5.cpp:9:25: error: 'a::b' has not been declared 2-5.cpp: At global scope: 2-5.cpp:11:1: error: expected '' at end of input IFT119 Trimestre Hiver, 2013: Examen Intra 5/10

Exercice 3 (20 points) Les fragments de code suivants sont extraits à partir d un programme qui a compilé correctement : class Chanson { private: string Titre; // Titre de la chanson int Duree; // Duree de la chanson Chanson(); Chanson(string T, int L); string gettitre() const; int getduree() const; ; class Album { private: string Titre; // Titre de l'album string Auteur; // Auteur de l'album int nombrechansons; // Nombre de chansons dans l'album Chanson* ListeEcoute; // La liste des chansons Album(string T, string A,int nombrechansons); void AjoutChanson(const Chanson& T); Chanson getchanson(int Position) const; int getnombrechansons() const; ~Album(); ; Album::Album(string T, string A, int nt) { Titre = T; Auteur = A; nombrechansons = nt; ListeEcoute = new Chanson[nT]; element=0; Album::~Album() { delete [] ListeEcoute; int DureeGlobale(Album CD) { int DureeTotale = 0; for (int Index = 0; Index < CD.getnombreChansons(); Index++) { DureeTotale += CD.getChanson(Index).getDuree(); return DureeTotale; 3.1 Comme nous l avons mentionné au début de cet exercice, le programme va passer l étape de compilation sans erreur. Si «pc» est une instance de «Album» et, même si le code de la fonction «DureeGlobale» est conceptuellement correct, expliquez pourquoi un appel à la méthode «DureeGlobale(pc)» va avoir un effet de bord dommageable! IFT119 Trimestre Hiver, 2013: Examen Intra /10

3.2 Est-ce que les appels à «DureeGlobale(pc)» vont-ils provoquer une erreur à l exécution du programme? Justifiez votre réponse. 3.3 Sachant qu il n est pas possible de modifier le code de la fonction «DureeGlobale» et qu il n est pas possible d utiliser de variables globales, que faudra-t-il ajouter comme élément dans le précédent programme pour corriger le problème posé précédemment? (Ne pas écrire de code, juste mentionner ce qu il faut et pourquoi). 3.4 En plus de l action prise en 3.3, faudrait-il ajouter d autres éléments pour couvrir «toutes les bases»? Si oui, quoi au juste? 3.5 Qu est-ce qui aurait pu vous mettre la puce à l oreille dans les classes «Album» et «Chanson» que vous alliez frapper un mur! Justifiez votre réponse. IFT119 Trimestre Hiver, 2013: Examen Intra /10

Exercice 4 (28 points) Le programme suivant compile et s exécute correctement. Vous allez fournir et expliquer l affichage en sortie après les appels 1 à. 1 2 3 4 5 8 9 10 11 12 13 14 15 1 1 18 19 20 21 22 23 24 25 2 2 28 29 30 31 32 33 34 35 3 3 include <iostream> using namespace std; class Base { void X(){cout << "Base:X\n";; virtual void Y() = 0; virtual void Z(){cout << "Base:Z\n";; ; class C : public Base { void X(){cout << "C:X\n";; void Y(){cout << "C:Y\n";; void Z(){cout << "C:Z\n";; ; class D : public C { void X(){cout << "D:X\n";; void Y(){cout << "D:Y\n";; ; int main() { C* ptrc = new C; Base* ptrb = (Base*) ptrc; ptrb->x(); // appel 1 ptrb->y(); // appel 2 ptrb->z(); // appel 3 D* ptrd = new D; ptrb = (Base*) ptrd; ptrc = (C*) ptrd; ptrb->x(); // appel 4 ptrc->x(); // appel 5 ptrb->y(); // appel ptrd->z(); // appel return 0; 4.1 Ligne 25, appel N o 1 : ptrb->x(); 4.2 Ligne 2, appel N o 2 : ptrb->y(); IFT119 Trimestre Hiver, 2013: Examen Intra 8/10

4.3 Ligne 2, appel N o 3 : ptrb->z(); 4.4 Ligne 2, appel N o 4 : ptrb->x(); 4.5 Ligne 2, appel N o 5 : ptrc->x(); 4. Ligne 2, appel N o : ptrb->y(); 4. Ligne 2, appel N o : ptrd->z(); IFT119 Trimestre Hiver, 2013: Examen Intra 9/10

Exercice 5 (15 points) Écrire un programme qui réalise ce qui suit : 1- Ouvre le fichier «sortiefic.txt» pour y écrire quelques lignes, puis ferme le fichier. 2- Ouvre de nouveau le fichier «sortiefic.txt» pour : a- calculer le nombre de caractères dans chaque ligne y compris le caractère de retour à la ligne, b- incrémenter ce nombre avec le nombre de caractères y compris le caractère de retour d une nouvelle ligne, c- les opérations a & b sont réalisées pour toutes les lignes du fichier, d- finalement écrire à la fin du fichier la position des marqueurs de fin de chaque ligne dans le même fichier «sortiefic.txt». Pour le précédent exemple, à la fin des ces opérations, le fichier «sortiefic.txt» va contenir ce qui suit : Fichier «sortiefic.txt» après -1- Fichier «sortiefic.txt» après 2.d abcd abcd efg efg hi hi j j 5 9 12 14 Le symbole correspond à un retour à ligne et il est indiqué à titre informatif. Il n est pas nécessaire d utiliser les exceptions. IFT119 Trimestre Hiver, 2013: Examen Intra 10/10