IFT1166 - INTRA. Directives: IFT1166 - Session Automne, Intra. Mohamed Lokbani. Prénom(s): Date:20 Octobre 1999



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

et Programmation Objet

Programme Compte bancaire (code)

Langage Java. Classe de première SI

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

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

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP

TP, première séquence d exercices.

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

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

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

Plan Pédagogique du cours

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)

Une introduction à Java

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

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

Programmation stochastique

as Architecture des Systèmes d Information

Cours 1: Java et les objets

Licence Bio Informatique Année Premiers pas. Exercice 1 Hello World parce qu il faut bien commencer par quelque chose...

DE L ALGORITHME AU PROGRAMME INTRO AU LANGAGE C 51

MISE A NIVEAU INFORMATIQUE LANGAGE C - EXEMPLES DE PROGRAMMES. Université Paris Dauphine IUP Génie Mathématique et Informatique 2 ème année

Cours d Algorithmique et de Langage C v 3.0

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

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

OS Réseaux et Programmation Système - C5

PROJET 1 : BASE DE DONNÉES REPARTIES

I. Introduction aux fonctions : les fonctions standards

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

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

Programmer en JAVA. par Tama

Claude Delannoy. 3 e édition C++

Java Licence Professionnelle Cours 7 : Classes et méthodes abstraites

Programmation Orientée Objet

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

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

INITIATION AU LANGAGE JAVA

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

3 ème 2 DÉVELOPPEMENT FACTORISATIONS ET IDENTITÉS REMARQUABLES 1/5 1 - Développements

ACTIVITÉ DE PROGRAMMATION

Introduction à C++ et à wxwidgets

Java Licence Professionnelle CISII, Cours 2 : Classes et Objets

Le prototype de la fonction main()

Chapitre 2. Classes et objets

Programmation en Java IUT GEII (MC-II1) 1

Le langage C. Séance n 4

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

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

Programmation par les Objets en Java


IRL : Simulation distribuée pour les systèmes embarqués

Héritage presque multiple en Java (1/2)

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

Les structures. Chapitre 3

Premiers Pas en Programmation Objet : les Classes et les Objets

TP : Gestion d une image au format PGM

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

TD3: tableaux avancées, première classe et chaînes

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

1. Structure d'un programme FORTRAN 95

Java Licence Professionnelle CISII,

INTRODUCTION A JAVA. Fichier en langage machine Exécutable

Utilisation d objets : String et ArrayList

Algorithmique et Programmation, IMA

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

Polycopié Cours Programmation Orientée Objet sous Java Programme : Filière SMI S5

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

Avertissement : Ce cours suppose la connaissance et la maîtrise du langage C CONTENU DU COURS BIBLIOGRAPHIE

UE Programmation Impérative Licence 2ème Année

Chapitre 10. Les interfaces Comparable et Comparator 1

Exercices sur les interfaces

Programmation impérative

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

Axiomatique de N, construction de Z

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

Le langage C++ (partie I)

Plan du cours. Historique du langage Nouveautés de Java 7

TP1 : Initiation à Java et Eclipse

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

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

LE LANGAGE C++ ENAC 1997 A. DANCEL

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

Le MSMQ. Version 1.0. Pierre-Franck Chauvet

Exo7. Calculs de déterminants. Fiche corrigée par Arnaud Bodin. Exercice 1 Calculer les déterminants des matrices suivantes : Exercice 2.

Notions fondamentales du langage C# Version 1.0

Compression de Données - Algorithme de Huffman Document de Conception

C++ COURS N 2 : CLASSES, DONNÉES ET FONCTIONS MEMBRES Classes et objets en C++ Membres d'une classe Spécification d'une classe Codage du comportement

Rappel. Analyse de Données Structurées - Cours 12. Un langage avec des déclaration locales. Exemple d'un programme

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

Programmation en C/C++

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

IN Cours 1. 1 Informatique, calculateurs. 2 Un premier programme en C

Introduction au pricing d option en finance

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

Création d objet imbriqué sous PowerShell.

COMPARAISONDESLANGAGESC, C++, JAVA ET

Introduction à Java. Matthieu Herrb CNRS-LAAS. Mars

Chapitre 1 : La gestion dynamique de la mémoire

Programmation système I Les entrées/sorties

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

Transcription:

IFT1166 - Session Automne, Intra Mohamed Lokbani IFT1166 - INTRA Nom: Prénom(s): Signature: Code perm: Date:20 Octobre 1999 Durée: 2 heures (de 18h30: 20h:30) Local: 1360 Directives: - Il vous est permis d'utiliser un livre de votre choix. - Les documents de cours ne sont pas autorisés. - Ordinateurs personnels prohibés. - Calculatrice (simple) permise. - Répondre directement sur le questionnaire. - L'examen compte 14 pages incluant celle-ci. Nota Bene: 21 Octobre 1999: cette version est une remise à jour de la version distribuée aux étudiants durant l'intra. Cette version prend en compte les modifications apportées (très légères), durant l'intra, à quelques questions de l'examen. 1. /20 2. /20 3. /5 4. /25 5. /30 Total: /100 IFT1166 A-99 : Intra 1

Question 1 (20 points) -1- Le message est le moyen unique de communiquer avec un objet. Que contient un tel message? (les citer uniquement) -2- Définissez l instanciation. -3- Citez les 3 principes de base qui permettent de dire qu un langage donné est orienté objet? (sans les expliquer) -4- Quelles sont les deux façons d'écrire des commentaires en C++, et en quoi elles diffèrent l'une de l'autre? -5- Quelle est la différence entre les membres privés et les membres publics, au niveau de la visibilité? IFT1166 A-99 : Intra 2

-6- Quel est le nom donné à la fonction membre appelée automatiquement lors de la création d'un objet? -7- Quelle est la différence entre les 2 déclarations suivantes : const int * A; ET int * const B; IFT1166 A-99 : Intra 3

Question 2 (20 points) Le programme suivant utilise la macro MAX pour calculer le maximum entre deux nombres. -1- Indiquez le résultat de l affichage, pour chaque fragments de code suivant: #include <iostream.h> #define MAX(a,b) ((a) > (b)? (a) : (b)) int main () { int a =6,b=5,c=100; cout << "a: " << a << " b: " << b << " c: " << c << endl; c=max(a,b); cout << "a: " << a << " b: " << b << " c: " << c << endl; c=max(a++,b); cout << "a: " << a << " b: " << b << " c: " << c << endl; } return 0; IFT1166 A-99 : Intra 4

-2- Réécrivez la définition de la fonction MAX grâce a une fonction qui offre la rapidité de la macro cidessus, mais sans les possibilités de calculs incorrects. -3- À l aide de cette nouvelle fonction, donnez le résultat d affichage des deux fragments de code suivants: c=max(a,b); cout << "a: " << a << " b: " << b << " c: " << c << endl; c=max(a++,b); cout << "a: " << a << " b: " << b << " c: " << c << endl; IFT1166 A-99 : Intra 5

Question 3 (5 points) Le fragment de code contient une erreur. Identifiez-la et expliquez la : namespace exemple { void affiche(int,int ); // } namespace test { void affiche(int ); //. } using exemple::affiche; affiche(230); Question 4 (25 points) Le programme suivant gère un parc automobile. -1- Ce programme comporte 5 erreurs de compilation. Pour chaque erreur, indiquez sur quelle ligne elle apparaît et corrigez-la. IFT1166 A-99 : Intra 6

1) #include <iostream.h> 2) #include <string.h> 3) class voiture { 4) private: 5) char *nom; // nom du vehicule 6) int annee; // annee du vehicule 7) static int total = 0; //nombre de vehicules 8) public: 9) voiture(char* val="",int x=0); //constructeur initialisateur 10) ~voiture(); // destructeur 11) voiture(const voiture); // constructeur de recopie 12) void affiche(); 13) static void print(); 14) }; 15) 16) 17) 18) voiture::voiture(char* cp,int x) 19) { 20) nom = new char[strlen(cp)+1]; 21) annee = x; 22) strcpy(nom,cp); 23) total++; 24) cout << "C" << endl; 25) } 26) 27) voiture::~voiture() 28) { 29) delete nom; 30) total--; 31) cout << "D" << endl; 32) } 33) 34) voiture::voiture(const voiture& car):nom(new char[strlen(car.nom)+1]) 35) { 36) strcpy(nom,car.nom); 37) annee = car.annee; 38) total++; 39) cout << "R" << endl; 40) } 41) 42) void voiture::affiche() 43) { 44) cout << "nom : " << nom << " annee: " << annee << endl; 45) cout << "nombre de voitures dans le parc: " << total << endl; 46) } 47) 48) void voiture::print() 49) { 50) cout << "nombre de voitures dans le parc: " << total << endl; 51) cout << "nom: " << nom << endl; 52) } 53) 54) int main() 55) { 56) voiture.print(); 57) voiture honda; 58) voiture volkswagen("beatle",1985); 59) voiture usagee("jetta",1980) = volkswagen; 60) usagee.affiche(); 61) voiture::print(); 62) return 0; 63) } IFT1166 A-99 : Intra 7

Erreur 1: Ligne: Correction: Erreur 2: Ligne: Correction: Erreur 3: Ligne: Correction: Erreur 4: Ligne: Correction: Erreur 5: Ligne: Correction: IFT1166 A-99 : Intra 8

-2- Supposez que le programme compile correctement, indiquez le résultat de l'affichage. IFT1166 A-99 : Intra 9

Question 5 (30 points) Pour représenter un rationnel (à partir d'entiers), vous devez définir une classe contenant un numérateur entier et un dénominateur entier. Un objet r de la classe Rationnel sera interprété comme représentant le nombre r_numerateur/r_denominateur. Par exemple, si l'on déclare: Rationnel r1(2, 1), r2(6, 3), r3(4, 3); alors les objets r1, r2 et r3 représentent respectivement 2/1, 6/3 et 4/3. r1 et r2 représentent alors le même nombre rationnel, mais r3 < r1 et r3 < r2. Vous pouvez supposer que le dénominateur n'est pas nul et que le rationnel est tout le temps positif. Nous désirons effectuer les opérations suivantes sur les deux rationnels r1(a,b) et r2(c,d): l'addition: r1+r2; retourne un rationnel. L'addition de deux rationnels est définie ainsi: r3 = r1 + r2 = ((a*d )+ (b*c)) / (b*d) la multiplication: r1*r2; retourne un rationnel. La multiplication de deux rationnels est définie ainsi: r3 = r1 * r2 = (a*c) / (b*d) le test d'égalité: r1==r2; retourne vrai, si r1=r2 (c'est à dire: a/b == c/d) ; sinon faux. le test de supériorité: r1>r2; retourne vrai si r1>r2 (c'est à dire: a/b > c/d), sinon faux. En plus de ces opérations, il nous faudra une fonction pour afficher un rationnel sous la forme suivante: r_numerateur/r_denominateur Écrire la classe Rationnel et les fonctions membres citées plus haut, y compris le constructeur, pour pouvoir déclarer un rationnel sous la forme: Rationnel r1(2, 1); N'utilisez pas la technique de surcharge des opérateurs. IFT1166 A-99 : Intra 10

IFT1166 A-99 : Intra 11

IFT1166 A-99 : Intra 12

IFT1166 A-99 : Intra 13

IFT1166 A-99 : Intra 14