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

Dimension: px
Commencer à balayer dès la page:

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

Transcription

1 INFO-F-105 Language de programmation I Séance VI Jérôme Dossogne Année académique Un grand merci à Yves Roggeman pour ses relectures et remarques des codes et commentaires qui ont contribuées significativement à accroitre la qualité des exercices et des solutions de cette séance.

2 Table des matières 1 Table des matières 1 Question 01 - Des pommes et des poires 1 2 Question 02 - Pommes, poires et oranges 1 3 Question 03 - Le mot-clef explicit 2 4 Question fno-elide-constructors : Return Value Optimization 2 5 Question 05 - Etudiants 2 6 Question 06 - Compteur 8 7 Question 07 - Expressions, L/Rvalue 8

3 Liste des codes 2 Liste des codes 1 Question 01 - Des pommes et des poires : Illustration d ambiguïté à la conversion 1 (src :linuxtopia.org) Question 02 - Pommes, poires et oranges : Illustration d ambiguïté à la conversion 2 (src :linuxtopia.org) Question 03 - Le mot-clef explicit 1 (src :glenmccl.com) Question 03 - Le mot-clef explicit 2 (src :hardware.fr) Question 03 - Le mot-clef explicit 2 (src :hardware.fr) Question 03 - Le mot-clef explicit 2 (src :hardware.fr) Question fno-elide-constructors : Return Value Optimization (src :devshed.com) Question fno-elide-constructors : Return Value Optimization (src :devshed.com) Question fno-elide-constructors : Return Value Optimization (src :devshed.com) Question 05 - Etudiants : Attributs d une classe Question 05 - Etudiants : Attributs d une classe Question 05 - Etudiants : Attributs d une classe Question 05 - Etudiants : Attributs d une classe Question 05 - Etudiants : Attributs d une classe Question 06 - Compteur : Opérateurs postfixe, infixe, interne, externe (+, +=) Question 06 - Compteur : Opérateurs postfixe, infixe, interne, externe (+, +=) Question 06 - Compteur : Opérateurs postfixe, infixe, interne, externe (+, +=) Question 07 - Expressions, L/Rvalue

4 2 QUESTION 02 - POMMES, POIRES ET ORANGES 1 Vous êtes consultant(e) dans une entreprise et celle-ci fait appel à votre expertise pour étudier les codes sources ci-dessous, les annoter de remarques pertinentes et remettre à l entreprise vos suggestions et conclusions Question 01 : opérateur de conversion A B présent dans A et dans B 2. Question 02 : overload d une fonction et multiples opérateurs de conversion dans une class 3. Question 03 : le mot clef explicit 4. Question 04 : -fno-elide-constructors, Return Value Optimization 5. Question 05 : attribut de class vs variable globale, notation : pour les constructeurs 6. Question 06 : opérateurs postfixe, infixe, interne, externe (+, +=) 7. Question 07 : Lvalue, Rvalue 1 Question 01 - Des pommes et des poires Code à étudier voir : Code 1 Code 1 Question 01 - Des pommes et des poires : Illustration d ambiguïté à la conversion 1 (src :linuxtopia.org) class Orange; class Apple public: operator Orange() const; ; class Orange public: Orange(Apple); ; void f(orange) int main() Apple a; f(a); 2 Question 02 - Pommes, poires et oranges Code à étudier voir : Code 2 1. Chaque question est à étudier indépendemment. La source des codes pouvant varier, ne soyez pas étonné si les conventions de notation font de même. Il va falloir s y habituer

5 2 QUESTION 02 - POMMES, POIRES ET ORANGES 2 Code 2 Question 02 - Pommes, poires et oranges : Illustration d ambiguïté à la conversion 2 (src :linuxtopia.org) class Orange Orange(Pear); ; class Pear operator Orange() const; ; class Apple public: operator Orange() const; operator Pear() const; ; void eat(orange); void eat(pear); void eat(orange, Pear); int main() // Question 1 Apple c; eat(c); // Question 2 Orange o; Pear p; eat(o,o); eat(p,p);

6 3 QUESTION 03 - LE MOT-CLEF EXPLICIT 3 3 Question 03 - Le mot-clef explicit Class A Code à étudier voir : Code 3 La société veut s assurer que les conversions soient voulues et explicitement demandée. Quelles modifications apporteriez vous pour cela? Code 3 Question 03 - Le mot-clef explicit 1 (src :glenmccl.com) class A public: A(int) ; void f(a) void g() A a1 = 37; A a2 = A(47); A a3(57); a1 = 67; f(77); // Objectif voulu // void g() // // A a1 = A(37); // // A a2 = A(47); // // A a3(57); // // a1 = A(67); // // f(a(77)); // classe foo Code à étudier voir : Code 4, Code 5, Code 6

7 3 QUESTION 03 - LE MOT-CLEF EXPLICIT 4 Code 4 Question 03 - Le mot-clef explicit 2 (src :hardware.fr) class Foo int i; public: Foo() : i(-1) cout << "Constructeur trivial" << " &" << &i << endl; Foo(int j) : i(j) cout << "Constructeur i = " << i << " &" << &i << endl; Foo(const Foo &f) : i(f.i) cout << "Constructeur de copie i = " << i << " &" << &i << " (source &" << &f.i << ')' << endl; ~Foo() cout << "~Destructeur i = " << i << " &" << &i << endl; ; Foo& operator+=(const Foo &other) this->i+=other.i; return *this; Code 5 Question 03 - Le mot-clef explicit 2 (src :hardware.fr) Foo operator+(const Foo &f, const Foo &g) cout << "operator+(foo, Foo)" << endl; Foo tmp(f); tmp+=g; return tmp; Foo dawa(foo f) return 5;

8 4 QUESTION FNO-ELIDE-CONSTRUCTORS : RETURN VALUE OPTIMIZATION 5 Code 6 Question 03 - Le mot-clef explicit 2 (src :hardware.fr) int main() Foo a; Foo b(2); Foo c=3; Foo d(b); b+4; dawa(5); 4 Question fno-elide-constructors : Return Value Optimization Code à étudier voir : Code 7, Code 8, Code 9 Code 7 Question fno-elide-constructors : Return Value Optimization (src :devshed.com) class stmt public: stmt() std::cout << "Constructor called" << std::endl; m_id = "Original"; stmt(const stmt &st) std::cout << "Copy constructor" << std::endl; const char * id() return m_id.c_str(); private: std::string m_id; ; Le comportement du programme ci-dessous semble suspect à un de vos collègues programmeur. Il vous pose la question suivante : Pourquoi le constructeur de copie n est-il pas appelé là où il devrait? Dans le code qui suit, je m attendais à voir un appel au constructeur de copie car dans la méthode db::prepare(), un objet de type stmt est renvoyé par valeur. Et pourtant, je remarque qu il n est pas appelé. Pourquoi est-ce ainsi, que puis-je faire et que dois-je en déduire à l avenir?

9 6 QUESTION 06 - COMPTEUR 6 Code 8 Question fno-elide-constructors : Return Value Optimization (src :devshed.com) class db public: stmt prepare() stmt s; return s; ; Code 9 Question fno-elide-constructors : Return Value Optimization (src :devshed.com) int main(int argc, char * argv[]) stmt s; db d; std::cout << "first: " << s.id() << std::endl; s = d.prepare(); std::cout << "second: " << s.id() << std::endl; return 0; 5 Question 05 - Etudiants Code à étudier voir : Code 10, Code 11, Code 12, Code 13, Code 14 Code 10 Question 05 - Etudiants : Attributs d une classe class Etudiant public : Etudiant(); Etudiant(int nombredecours); void initialisernotes(); private : int i; int * notes; int nombredecours; ; 6 Question 06 - Compteur Code à étudier voir : Code 15, Code 16, Code 17

10 6 QUESTION 06 - COMPTEUR 7 Code 11 Question 05 - Etudiants : Attributs d une classe Etudiant::Etudiant() nombredecours = 0; notes = NULL; Etudiant::Etudiant(int nombredecours) this->nombredecours = nombredecours; notes = new int[nombredecours]; void Etudiant::initialiserNotes() for(i = 0; i < nombredecours; ++i) cin >> notes[i]; Code 12 Question 05 - Etudiants : Attributs d une classe class BinomeDEtudiants public : BinomeDEtudiants(); BinomeDEtudiants(Etudiant prem, Etudiant sec); private : Etudiant prem; Etudiant sec; ; Code 13 Question 05 - Etudiants : Attributs d une classe BinomeDEtudiants::BinomeDEtudiants() BinomeDEtudiants::BinomeDEtudiants(Etudiant prem, Etudiant sec) this->prem = prem; this->sec = sec; Code 14 Question 05 - Etudiants : Attributs d une classe int main() Etudiant johndoe(4); Etudiant janedoe(4); BinomeDEtudiants does(janedoe,johndoe); return 0;

11 7 QUESTION 07 - EXPRESSIONS, L/RVALUE 8 Code 15 Question 06 - Compteur : Opérateurs postfixe, infixe, interne, externe (+, +=) class Compteur public : Compteur(); Compteur(int cpt); Compteur(const Compteur& cpt); Compteur& operator=(const Compteur& compt); Compteur operator+(const Compteur& compt); Compteur& operator+=(const Compteur& compt); Compteur& operator++(); Compteur operator++(int); ; void affichage(); private : int cpt; 7 Question 07 - Expressions, L/Rvalue Code à étudier voir : Code 18 Un collègue vous demande votre aide, il a du mal à comprendre le concept d expression, de L/Rvalue,... et souhaiterait que vous lui indiquiez sur le code à étudier où se trouvent chacune d entre elles.

12 7 QUESTION 07 - EXPRESSIONS, L/RVALUE 9 Code 16 Question 06 - Compteur : Opérateurs postfixe, infixe, interne, externe (+, +=) Compteur::Compteur() : cpt(0) Compteur::Compteur(int cpt) : cpt(cpt) Compteur::Compteur(const Compteur& compt) : cpt(compt.cpt) Compteur& Compteur::operator=(const Compteur& compt) if(this!= &compt) cpt = compt.cpt; return *this; Compteur Compteur::operator+(const Compteur& compt) return Compteur(cpt+compt.cpt); Compteur& Compteur::operator+=(const Compteur& compt) cpt += compt.cpt; return *this; Compteur& Compteur::operator++() cpt++; return *this; Compteur Compteur::operator++(int pasutilise) Compteur tmp(*this); cpt++; return tmp; void Compteur::affichage() cout << cpt << endl;

13 7 QUESTION 07 - EXPRESSIONS, L/RVALUE 10 Code 17 Question 06 - Compteur : Opérateurs postfixe, infixe, interne, externe (+, +=) int main() Compteur a; a = a + 10; a.affichage(); ((a+10)++).affichage(); a.affichage(); ((++a+10)).affichage(); a.affichage(); // a = 10 + a; // pourquoi une erreur? a.affichage(); return 0;

14 7 QUESTION 07 - EXPRESSIONS, L/RVALUE 11 Code 18 Question 07 - Expressions, L/Rvalue #include <iostream> using namespace std; int main() int x = 9; x; 1; int y; y = int c = 10; x = 1; y = x = 1; int z; z = x * y = 10; if (x = 0) // si x vaut zéro on incrémente ++x; x = 0; if (++x!= 0) cout << x << endl; x = 0; if (x++!= 0) cout << x; return 0;

TP Interface graphique et C++ numéro 1

TP Interface graphique et C++ numéro 1 TP Interface graphique et C++ numéro 1 Master IGC - 1 re année année 2010-2011 Ce premier TP a pour objectif de vous familiariser avec le compilateur C++, les entréessorties du langage et l utilisation

Plus en détail

Tutoriel de création et d utilisation d une bibliothèque dynamique (dll)

Tutoriel de création et d utilisation d une bibliothèque dynamique (dll) Tutoriel de création et d utilisation d une bibliothèque dynamique (dll) Cette procédure démontre comment on crée une bibliothèque dynamique (Dynamic Link Library ou DLL) contenant des classes utiles pour

Plus en détail

IN104. Programmation orientée objet Introduction aux objets

IN104. Programmation orientée objet Introduction aux objets IN104 Programmation orientée objet Introduction aux objets Séance de Travaux Dirigés du 24 septembre 2009 B. Monsuez, F. Védrine Exercice 1 Notre compteur en C++ Nous étudions dans cet exercice l exemple

Plus en détail

Programmation C++ Séance 6. Łukasz Fronc. 26 octobre 2012

Programmation C++ Séance 6. Łukasz Fronc.  26 octobre 2012 Programmation C++ Séance 6 Łukasz Fronc lfronc@ibisc.univ-evry.fr www.ibisc.fr/~lfronc/ 26 octobre 2012 Łukasz Fronc Programmation C++ 1 / 35 Sommaire Surcharge d opérateurs Fonctions et classes amies

Plus en détail

Examen de Programmation I

Examen de Programmation I Examen de Programmation I Sciences et Technologies du Vivant, Semestre 1 Mercredi 22 décembre 2010 1. N oubliez pas de mettre vos NOM et PRÉNOM sur toutes vos copies. 2. Merci de garder la donnée. 3. Vous

Plus en détail

IFT1169 Examen Final

IFT1169 Examen Final Trimestre Hiver, 2006 Mohamed Lokbani IFT1169 Examen Final Inscrivez tout de suite votre nom et code permanent. Nom: Prénom(s): Signature: Code perm: Date : mardi 18 avril 2006 Durée : 2 heures et 45 minutes

Plus en détail

420KEL Petite révision v. 1,65. Petite révision

420KEL Petite révision v. 1,65. Petite révision Petite révision Quelques petits exercices pour vous rafraîchir la mémoire et vous remettre en forme. Dans les exercices pour lesquels on vous demande de programmer, cherchez à produire un résultat à la

Plus en détail

Chapitre 15. Héritage

Chapitre 15. Héritage Chapitre 15 : Héritage 229 Chapitre 15 Héritage Chapitre 15 : Héritage 230 1. Généralités - L'héritage est le troisième des paradigmes de la programmation orientée objet (le 1 er étant l'encapsulation,

Plus en détail

Compte en banque : Exemple de conception et implantation par raffinement successif

Compte en banque : Exemple de conception et implantation par raffinement successif Compte en banque : Exemple de conception et implantation par raffinement successif 11 octobre 2014 1 Énoncé On veut écrire un programme qui fait la mise à jour de votre compte en banque. Le programme traite

Plus en détail

Chapitre 5. La surcharge des opérateurs

Chapitre 5. La surcharge des opérateurs Chapitre 5 : La surcharge des opérateurs 89 Chapitre 5 La surcharge des opérateurs Chapitre 5 : La surcharge des opérateurs 90 1. Généralités - En langage C, l'opérateur division «/» est défini comme suit:

Plus en détail

Épisode IV. Le langage C++ objet

Épisode IV. Le langage C++ objet Épisode IV Le langage C++ objet Conception et Programmation OO OO4.tex v1.1 imprimé le 23 Octobre 2006 page 1/70 C++ objet : Objet / Classe Un objet (au sens de l orienté objet) est un espace mémoire associant

Plus en détail

Introduction au langage C++

Introduction au langage C++ Introduction au langage C++ D après les notes d introductives au C++ de Stéphane Menozzi http://www.proba.jussieu.fr/~menozzi/ Maxime Pallud IMACS/X-TEC Bat 404 Tel: 01 69 33 46 86 Mail: pallud@imacs.polytechnique.fr

Plus en détail

ÉCOLE POLYTECHNIQUE DE MONTRÉAL DÉPARTEMENT DE GÉNIE INFORMATIQUE

ÉCOLE POLYTECHNIQUE DE MONTRÉAL DÉPARTEMENT DE GÉNIE INFORMATIQUE ÉCOLE POLYTECHNIQUE DE MONTRÉAL DÉPARTEMENT DE GÉNIE INFORMATIQUE LOG2410 Conception logicielle Solutionnaire examen final Automne 2008 Documentation : Aucune Calculatrice : Aucune Date : 13 décembre 2008

Plus en détail

Janvier 2015. Licence 3 info Université de Lille 1. Vers C++ venant de C et de Java. Adrien Poteaux et Alexandre Sedoglavic.

Janvier 2015. Licence 3 info Université de Lille 1. Vers C++ venant de C et de Java. Adrien Poteaux et Alexandre Sedoglavic. Vers C++ venant Licence 3 info Université de Lille 1 Janvier 2015 Généralités Le C++ est un langage de programmation développé à partir de 1980 par Bjarne Stroustrup. Nous utiliserons la normalisation

Plus en détail

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

Introduction à la programmation Travaux pratiques: séance d introduction INFO0201-1 Introduction à la programmation Travaux pratiques: séance d introduction INFO0201-1 B. Baert & F. Ludewig Bruno.Baert@ulg.ac.be - F.Ludewig@ulg.ac.be Qu est-ce que la programmation? Programmer Ecrire un

Plus en détail

CTRAVAUX PRATIQUES INTRODUCTION À LA PROGRAMMATION 2EBAC BIOLOGIE - 2 ND QUAD- 2010-2011 TP 0 BELGIQUE 04/366.90.43

CTRAVAUX PRATIQUES INTRODUCTION À LA PROGRAMMATION 2EBAC BIOLOGIE - 2 ND QUAD- 2010-2011 TP 0 BELGIQUE 04/366.90.43 PROFESSEUR CTRAVAUX PRATIQUES INTRODUCTION À LA PROGRAMMATION 2EBAC BIOLOGIE - 2 ND QUAD- 2010-2011 TP 0 PR. PETER SCHLAGHECK BÂT. B5 PHYSIQUE QUANTIQUE STATISTIQUE ALLÉE DU 6 AOÛT 17 4000 LIÈGE 1 BELGIQUE

Plus en détail

De Java (et C) à C++

De Java (et C) à C++ De Java (et C) à C++ Historique Syntaxe basée sur le langage C Bjarne Stroustrup 1979 : C with classes 1983 : renommé C++ 1985 : The C++ Programming Language, première édition 1998 : premier standard 2003

Plus en détail

Concevoir un conteneur Exercice

Concevoir un conteneur Exercice Concevoir un conteneur Exercice Les conteneurs standards tels que std::vector respectent un ensemble de contraintes, que ce soit du point de vue des opérations, des noms ou de la rigueur. Pour nous familiariser

Plus en détail

Simulation Numérique

Simulation Numérique Ecole Nationale de Techniques Avancées Simulation Numérique Chapitre 4 Surcharge des opérateurs Eric Lunéville Surcharge des opérateurs Le C++ utilise des opérateurs prédéfinis tels que + - * / sur les

Plus en détail

a) À partir du tableau suivant, construire l arbre binaire correspondant. (1 point)

a) À partir du tableau suivant, construire l arbre binaire correspondant. (1 point) Question 1 Arbres binaires / monceaux (6 points) a) À partir du tableau suivant, construire l arbre binaire correspondant. (1 point) Index 0 1 2 3 4 5 6 7 8 9 Valeur - * * + 6 2 3 2 6 b) Parcourir l arbre

Plus en détail

Petit manuel de survie pour C++

Petit manuel de survie pour C++ Département d Informatique ENS de Cachan Petit manuel de survie pour C++ François Laroussinie fl@lsv.ens-cachan.fr Année 2004-2005 Petit manuel de survie pour C++ à compléter avec les précieux commentaires

Plus en détail

Introduction au langage C++

Introduction au langage C++ Introduction au langage C++ Adaptée à l environnement VLE Gauthier Quesnel quesnel@users.sourceforge.fr Institut National de la Recherche Agronomique G. Quesnel (INRA) Cours C++ / VLE 1 / 49 Plan 1 Les

Plus en détail

module SIN21 Rendre un syste me communicant Analyse UML et algorithmie 1 Modification du cahier des charges

module SIN21 Rendre un syste me communicant Analyse UML et algorithmie 1 Modification du cahier des charges Module SIN221 Rendre un syste me communicant Analyse UML et algorithmie Objectifs : Modifier des diagrammes UML suite à la modification du cahier des charges. Caractériser et valider une classe en C++.

Plus en détail

IFT-2900 Algorithmes de l'ingénieur 1. Notions avancées de programmation en C/C++

IFT-2900 Algorithmes de l'ingénieur 1. Notions avancées de programmation en C/C++ IFT-2900 Algorithmes de l'ingénieur 1 Notions avancées de programmation en C/C++ Notions avancées de programmation 1. Compilation et édition de liens Fichiers impliqués Exemple Dépendances entre les fichiers

Plus en détail

INF 2005 Programmation orientée objet avec C++

INF 2005 Programmation orientée objet avec C++ INF 2005 Programmation orientée objet avec C++ Module 4 - Solutions 1. #include using namespace std; class Temps public: Temps(); void setheure(int h) heure = (h >= 0 && h < 24)? h : 0; void setminute(int

Plus en détail

APPLICATION. Définition des classes : On va définir - une classe carte - une classe piledecartes - une classe joueur

APPLICATION. Définition des classes : On va définir - une classe carte - une classe piledecartes - une classe joueur APPLICATION On souhaite écrire un programme qui permet à l utilisateur de jouer au jeu de cartes 21. Principe : L utilisateur reçoit une carte à la fois et après chaque carte il décide s il continue ou

Plus en détail

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

Cours de C++ François Laroussinie. 2 novembre 2005. Dept. d Informatique, ENS de Cachan Cours de C++ François Laroussinie Dept. d Informatique, ENS de Cachan 2 novembre 2005 Première partie I Introduction Introduction Introduction Algorithme et programmation Algorithme: méthode pour résoudre

Plus en détail

C++ / MC-II1 - Cours n o 3 Allocation Mémoire et Constructeurs

C++ / MC-II1 - Cours n o 3 Allocation Mémoire et Constructeurs C++ / MC-II1 - Cours n o 3 Allocation Mémoire et Constructeurs Sebastien.Kramm@univ-rouen.fr IUT GEII Rouen 2010-2011 S. Kramm (IUT Rouen) MCII1 - Cours 3 2010-2011 1 / 47 Sommaire 1 Rappels de C et définitions

Plus en détail

POO & C++ : TP 1 EISE4 2014 2015

POO & C++ : TP 1 EISE4 2014 2015 POO & C++ : TP 1 EISE4 2014 2015 Pablo Rauzy rauzy @ enst fr pablo.rauzy.name/teaching.html#epu-cpp 19 septembre 2014 N oubliez pas : Les TPs doivent être rendus par courriel à rauzy @ enst fr au plus

Plus en détail

Algorithmique Partie 1

Algorithmique Partie 1 Algorithmique Partie 1 IUT Informatique de Lens, 1ère Année Université d Artois Frédéric Koriche koriche@cril.fr 2011 - Semestre 1 Modalités Sommaire 1 Modalités 2 Programmation 3 Données 4 Opérateurs

Plus en détail

Introduction aux nouveautés du C++ 11

Introduction aux nouveautés du C++ 11 Introduction aux nouveautés du C++ 11 Miss Réunion Laurent NOËL laurent.noel.c2ba@gmail.com http://igm.univ-mlv.fr/ lnoel 07/05/2013 Laurent NOËL 07/05/2013 C++ 11 1 / 39 nullptr Quel est le problème de

Plus en détail

Programmation orientée objet avec C++

Programmation orientée objet avec C++ Programmation orientée objet avec C++ ACOO Analyse, Conception et développement Orientés Objet de logiciels de commande Thèmes abordés Présentation du langage C++ Principales différences par rapport au

Plus en détail

Examen de Langage C Vendredi 2 Décembre 2011

Examen de Langage C Vendredi 2 Décembre 2011 Année 2011-2012 Examen de Langage C Vendredi 2 Décembre 2011 Promotion Guichet 1 ière année É. Salvat Modalités : Durée : 2 heures Seul document autorisé : carte de référence du C, pas de machine à calculer,

Plus en détail

Communications et synchronisations. Système L3, 2014-2015 1/21

Communications et synchronisations. Système L3, 2014-2015 1/21 Communications et synchronisations Système L3, 2014-2015 1/21 Le problème des philosophes (Dijkstra 1965) Cinq philosophes sont assis autour d une table ronde Chaque philosophe a devant lui un plat de

Plus en détail

Introduction au C++ Kévin Santugini-Repiquet. Kévin Santugini-Repiquet. Introduction au C++. Licence. 2011.

Introduction au C++ Kévin Santugini-Repiquet. Kévin Santugini-Repiquet. Introduction au C++. Licence. 2011. <cel-00725771> Introduction au C++ Kévin Santugini-Repiquet To cite this version: Kévin Santugini-Repiquet. Introduction au C++. Licence. 2011. HAL Id: cel-00725771 https://cel.archives-ouvertes.fr/cel-00725771

Plus en détail

Programmation De techniques d I3D. Frédéric DAVESNE (IGR UEVE) frederic.davesne@ibisc.univ-evry.fr

Programmation De techniques d I3D. Frédéric DAVESNE (IGR UEVE) frederic.davesne@ibisc.univ-evry.fr Programmation De techniques d I3D Frédéric DAVESNE (IGR UEVE) frederic.davesne@ibisc.univ-evry.fr Architecture générale d un système d I3D classique [Otmane, 2010] - 3 couches logicielles interconnectées

Plus en détail

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

Prénom : Matricule : Sigle et titre du cours Groupe Trimestre INF1101 Algorithmes et structures de données Tous H2004. Loc Jeudi 29/4/2004 Questionnaire d'examen final INF1101 Sigle du cours Nom : Signature : Prénom : Matricule : Sigle et titre du cours Groupe Trimestre INF1101 Algorithmes et structures de données Tous H2004 Professeur(s)

Plus en détail

Manipulations 2 Objectifs... 2 Mise en situation... 2

Manipulations 2 Objectifs... 2 Mise en situation... 2 TP Qt : QCM 2012 tv - v.1.0 - le 8 mars 2012 Sommaire Manipulations 2 Objectifs................................................ 2 Mise en situation...........................................

Plus en détail

1 Pointeurs, références, alias et tableaux

1 Pointeurs, références, alias et tableaux 1 Pointeurs, références, alias et tableaux 1 1.1 Définitions Un pointeur est une variable contenant l'adresse d'un objet en mémoire. Un pointeur est déni par le couple (type, adresse) de l'objet pointé.

Plus en détail

Algorithmique Correction du DS1

Algorithmique Correction du DS1 Algorithmique Correction du DS1 IUT Informatique de Lens, 1ère Année Université d Artois Frédéric Koriche koriche@cril.fr 2011 - Semestre 1 Exercice 1 Exercice 1 Un service de reprographie facture : 0.10

Plus en détail

Programmation C++ Le langage impératif. Stéphane Vialette. 12 novembre 2012. LIGM, Université Paris-Est Marne-la-Vallée

Programmation C++ Le langage impératif. Stéphane Vialette. 12 novembre 2012. LIGM, Université Paris-Est Marne-la-Vallée Programmation C++ Le langage impératif Stéphane Vialette LIGM, Université Paris-Est Marne-la-Vallée 12 novembre 2012 Stéphane Vialette (LIGM UPEMLV) Programmation C++ 12 novembre 2012 1 / 67 C++ : chronologie

Plus en détail

Projet console Visual C++ 2010 avec OpenCV

Projet console Visual C++ 2010 avec OpenCV Table des matières Projet console Visual C++ 2010 avec OpenCV...2 Pré-requis...2 Création du projet...2 Configuration des options dans Visual Studio...3 Le squelette de base du programme OpenCV...4 Projet

Plus en détail

X. Juvigny. Septembre 2007

X. Juvigny. Septembre 2007 De C à C++ X Juvigny Septembre 2007 1 Introduction Outre les nouvelles possibilités en programmation orienté objet, le C++ offre de plus de nouvelles caractéristiques par rapport au langage C dont il est

Plus en détail

Une introduction au langage C++ Marc Jachym, Lurpa

Une introduction au langage C++ Marc Jachym, Lurpa Une introduction au langage C++ Marc Jachym, Lurpa Janvier 2008 À l origine, le langage C Langage procédural créé dans les années 1970 aux laboratoires Bell (ATT : télécoms américains) en vue d écrire

Plus en détail

Interfaçage entre C++ et Python. Patrick Hubert. Chef Technique @ Ubisoft 2014-03-20

Interfaçage entre C++ et Python. Patrick Hubert. Chef Technique @ Ubisoft 2014-03-20 Interfaçage entre C++ et Python Patrick Hubert Chef Technique @ Ubisoft 2014-03-20 Titre alternatif Accélérer la boucle de rétroaction par l'utilisation d'un langage interprété dans le contexte d'une application

Plus en détail

1 Les arbres binaires en Java

1 Les arbres binaires en Java Université de Nice-Sophia Antipolis Deug MIAS-MI 1 Algorithmique & Programmation 2002 2003 TP N 10 Arbres binaires Buts : structuration des arbres binaires en Java. classes internes. objets de parcours.

Plus en détail

Expressions rationnelles POSIX (regular expressions)

Expressions rationnelles POSIX (regular expressions) Techniques de compilation Expressions rationnelles POSIX (regular expressions) Généralités Mise en œuvre dans la libc Fabrice Harrouet École Nationale d Ingénieurs de Brest harrouet@enib.fr http://www.enib.fr/~harrouet/

Plus en détail

Claude Delannoy. Exercices C++ en langage. 3 e édition. Groupe Eyrolles, 1997, 1999, 2007, ISBN : 978-2-212-12201-5

Claude Delannoy. Exercices C++ en langage. 3 e édition. Groupe Eyrolles, 1997, 1999, 2007, ISBN : 978-2-212-12201-5 Claude Delannoy Exercices en langage C++ 3 e édition Groupe Eyrolles, 1997, 1999, 2007, ISBN : 978-2-212-12201-5 Chapitre 3 Les fonctions Rappels Généralités Une fonction est un bloc d instructions éventuellement

Plus en détail

LIAISON DYNAMIQUE (1)

LIAISON DYNAMIQUE (1) LIAISON DYNAMIQUE (1) Problème : avec un pointeur de base (Employe *), on aurait besoin que la «bonne» méthode soit exécutée, en fonction du type dynamique de l objet pointé. Comment savoir quel est le

Plus en détail

Bibliothèque STL. Professeur: Tony Wong, Ph.D., ing. Chapitre 2

Bibliothèque STL. Professeur: Tony Wong, Ph.D., ing. Chapitre 2 Université du Québec École de technologie supérieure Département de génie de la production automatisée Bibliothèque STL Professeur: Tony Wong, Ph.D., ing. Chapitre 2 1 Introduction L idée de base du STL

Plus en détail

Initialisation des attributs (1)

Initialisation des attributs (1) Initialisation des attributs (1) Initialiser les attributs d une instance en leur affectant individuellement une valeur, après l instanciation, n est pas une technique satisfaisante: a) elle est fastidieuse,

Plus en détail

Langage de programmation C++

Langage de programmation C++ Langage de programmation C++ Mohamed Tounsi Institut Supérieur d'informatique et Mathématiques Monastir Janvier 2013 Mohamed Tounsi (ISIMM) Langage de programmation C++ Janvier 2013 1 / 14 La notion de

Plus en détail

Static. static. USTL http://www.lifl.fr/ routier 1

Static. static. USTL http://www.lifl.fr/ routier 1 Static static USTL http://www.lifl.fr/ routier 1 Static Le rôle essentiel d un moule est de permettre la création d objets.... mais un moule a également des caractéristiques Il en est de même pour une

Plus en détail

Introduction à C++ pour programmeurs C

Introduction à C++ pour programmeurs C SITEL - Université de Neuchâtel Introduction à C++ pour programmeurs C Dr. E. Benoist Novembre 2007 1 Table of Contents Héritage Surcharge de méthode Surcharge d opérateur Métodes virtuelles Destructeur

Plus en détail

Outils d expérimentation

Outils d expérimentation Outils d expérimentation (Sécurité : C++ vs Java) Document présenté à : M. Dominique Goutier Dans le cadre du cours : Nouvelles technologies (420-620-SF) Étudiants : David Dastous St-Hilaire Simon Ducas-Desrosiers

Plus en détail

Génie Logiciel I. Cours III - Conversion, opérateurs et exceptions. Nicolas Kielbasiewicz C.D.C.S.P./I.S.T.I.L./I.C.J.

Génie Logiciel I. Cours III - Conversion, opérateurs et exceptions. Nicolas Kielbasiewicz C.D.C.S.P./I.S.T.I.L./I.C.J. Génie Logiciel I Cours III - Conversion, opérateurs et exceptions Nicolas Kielbasiewicz C.D.C.S.P./I.S.T.I.L./I.C.J. Filière M.A.M. 2ème année - 08/09 Nicolas Kielbasiewicz (C.D.C.S.P./I.S.T.I.L./I.C.J.)

Plus en détail

Premiers exemples de traitements

Premiers exemples de traitements #include #include Premiers exemples de traitements void main() float b(0.0); float c(0.0); float delta(0.0); cin >> b >> c; delta = b*b - 4*c; if (delta < 0.0) cout

Plus en détail

Etude de cas simulation de banque UML/C++

Etude de cas simulation de banque UML/C++ Etude de cas simulation de banque UML/C++ Philippe Laroque $Id: simubanque.lyx 1665 2009-03-05 16:02:45Z phil $ laroque@u-cergy.fr mars 2009 Abstract Ce petit document résume, à travers une étude de cas

Plus en détail

Chapitre 1 Introduction

Chapitre 1 Introduction Chapitre 1 Introduction Jean Privat Université du Québec à Montréal INF7330 Construction de logiciels Diplôme d études supérieures spécialisées en systèmes embarqués Automne 2012 Jean Privat (UQAM) 01

Plus en détail

Informatique III: Programmation en C++

Informatique III: Programmation en C++ Rappel: fstream Informatique III: Programmation en C++ void open(const char *nom fichier, openmode mode) ouvre le fichiers nom fichier dans le mode mode (ifstream: par défaut en lecture, ofstream: par

Plus en détail

nulles dans un langage à objets

nulles dans un langage à objets Prévention de déréférencement de références nulles dans un langage à objets Jean-Sébastien Gélinas, Étienne M. Gagnon, Jean Privat Université du Québec à Montréal Langages et Modèles à Objets Nancy 27

Plus en détail

Introduction aux méthodes Orientées Objets Troisième partie

Introduction aux méthodes Orientées Objets Troisième partie Introduction aux méthodes Orientées Objets Troisième partie Modélisation avec UML 2.0 Programmation orientée objet en C++ Pré-requis: maitrise des bases algorithmiques (cf. 1 ier cycle), maitrise du C

Plus en détail

Chapitre 14. Construction, destruction, initialisation et recopie

Chapitre 14. Construction, destruction, initialisation et recopie Chapitre 14 : Construction, destruction, initialisation et recopie 205 Chapitre 14 Construction, destruction, initialisation et recopie Chapitre 14 : Construction, destruction, initialisation et recopie

Plus en détail

Éléments de base en Java (suite et fin)

Éléments de base en Java (suite et fin) Éléments de base en Java (suite et fin) P.O.O. LMI 2 Semestre 4 Option Info Année 2008-09 1/33 Éléments de base en Java (suite et fin) Année 2008-09 Plan du cours Les chaînes de caractères Retour vers

Plus en détail

Procédures et fonctions

Procédures et fonctions Chapitre 5 Procédures et fonctions 5.1 Introduction Considérons le programme suivant, dont le but est d inverser les éléments d un tableau : public class InversionTableau1 { int t[]= {8, 2, 1, 23; Terminal.ecrireStringln("Tableau

Plus en détail

Complément de C++ ISIMA2

Complément de C++ ISIMA2 Complément de C++ ISIMA2 Laurent B. Garcia David R.C. Hill Introduction à la librairie standard du C++ Evolution de la programmation Le but de la manipulation est d'écrire un programme qui affichera "HELLO

Plus en détail

Programmation Orientée Objet

Programmation Orientée Objet Programmation Orientée Objet Initiation à Java Saber HENI saber.heni02@univ-paris8.fr http://handiman.univ-paris8.fr/~saber/ Plan du cours Chapitre 1 : Introduction au langage Java Chapitre 2 : Classes

Plus en détail

Héritage, et quelques petits mots-clés de Java

Héritage, et quelques petits mots-clés de Java Héritage, et quelques petits mots-clés de Java Bilan de la séance du 3 février. 1 Champs d instance, champs de classe La situation usuelle pour les attributs et les méthodes est la suivante : La classe

Plus en détail

Langage Élémentaire Algorithmique Spécifications du langage

Langage Élémentaire Algorithmique Spécifications du langage Langage Élémentaire Algorithmique Spécifications du langage Lionel Clément Version provisoire Novembre 2012 Le but de ce projet est de livrer un compilateur pour un langage élémentaire algorithmique (Léa).

Plus en détail

DUT Informatique Module JAVA Apprentis Département Informatique 2008 / 2009. Travaux Pratiques n o 2 : JUnit

DUT Informatique Module JAVA Apprentis Département Informatique 2008 / 2009. Travaux Pratiques n o 2 : JUnit iut ORSAY DUT Informatique Département Informatique 2008 / 2009 Travaux Pratiques n o 2 : JUnit Nom(s) : Groupe : Date : Objectifs : Apprendre à vérifier une implantation à l aide de tests unitaires sous

Plus en détail

Bibliothèque#standard#C++#

Bibliothèque#standard#C++# IntroducTon# Bibliothèque#standard#C++# ISIMA#A#ZZ2#A#2012# A.#&#C.#Duhamel# B.#Garcia## D.#Hill# L.#Yon# Présence#récurrente#en#développement#des#mêmes# structures#de#données#:#vecteur,#pile,#file,#ensemble

Plus en détail

Cours Langage C/C++ - Première partie

Cours Langage C/C++ - Première partie Cours Langage C/C++ - Première partie Thierry Vaira BTS IRIS Avignon tvaira@free.fr v0.2 Historique (1/3) Introduction En 1970, Ken Thompson, créa un nouveau langage : Le B, descendant du BCPL (Basic Combined

Plus en détail

INFO-F-101 Programmation Projet 4 Page Ranking(1/4): Création de la matrice du compte des liens

INFO-F-101 Programmation Projet 4 Page Ranking(1/4): Création de la matrice du compte des liens INFO-F-101 Programmation Projet 4 Page Ranking(1/4): Création de la matrice du compte des liens Année académique 2009 2010 1 Introduction Ce projet est le premier d une série de quatre projets qui ont

Plus en détail

Programmation en C++ Fonctions

Programmation en C++ Fonctions Programmation en C++ Fonctions Déclaration et définition de fonctions Arguments Surcharge Arguments optionnels Fonctions constantes Fonctions opérateurs 1 Fonction Déclaration = spécification de l'identificateur

Plus en détail

LO43 : Bases fondamentales de la programmation orientée objet

LO43 : Bases fondamentales de la programmation orientée objet LO43 : Bases fondamentales de la programmation orientée objet Langage C++ Franck GECHTER franck.gechter@utbm.fr Template La Conception Orientée Objet, Liaison Statique et Liaison Dynamique Template La

Plus en détail

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

C++ Programmer. en langage. 8 e édition. Avec une intro aux design patterns et une annexe sur la norme C++11. Claude Delannoy Claude Delannoy Programmer en langage C++ 8 e édition Avec une intro aux design patterns et une annexe sur la norme C++11 Groupe Eyrolles, 1993-2011. Groupe Eyrolles, 2014, pour la nouvelle présentation,

Plus en détail

INF 2005 Programmation orientée objet avec C++ Texte 2

INF 2005 Programmation orientée objet avec C++ Texte 2 INF 2005 Programmation orientée objet avec C++ Texte 2 1. Mots clés du langage C++ et premiers pas... 2 1.1 Les mots clés du langage C++... 2 1.2 Familiarisation avec le langage... 3 2. Les entrées-sorties...

Plus en détail

Communications et synchronisations

Communications et synchronisations Communications et synchronisations Polytech Paris-Sud Cycle ingénieur de la filière étudiant Louis Mandel Université Paris-Sud 11 Louis.Mandel@lri.fr année 2012/2013 Le problème des philosophes (Dijkstra

Plus en détail

1 Notions de base 1.1 Structure d'un programme

1 Notions de base 1.1 Structure d'un programme 1 Notions de base 1.1 Structure d'un programme Le langage C++ contient le langage C : tout programme écrit en C à la norme ANSI doit pouvoir être compilé par un compilateur C++. C++ fait la diérence entre

Plus en détail

Développement Orienté Aspect et Optimisation

Développement Orienté Aspect et Optimisation Développement Orienté Aspect et Optimisation Pierre Schweitzer Mardi 4 Juin 2013 LIMOS UMR CNRS 6158 Clermont Université - Université Blaise Pascal LPC UMR CNRS 6533 Clermont Université - Université Blaise

Plus en détail

Informatique III: Programmation en C++ Introduction. Examens. Chargé de cours François Fleuret francois.fleuret@epfl.ch

Informatique III: Programmation en C++ Introduction. Examens. Chargé de cours François Fleuret francois.fleuret@epfl.ch Informatique III: Programmation en C++ Lundi 24 Octobre 2005 Chargé de cours François Fleuret francois.fleuret@epfl.ch Assistant Mathieu Salzmann mathieu.salzmann@epfl.ch Assistants étudiants Ali Al-Shabibi

Plus en détail

INFO-F-103 Algorithmique I Exercices d entrainement. Année académique

INFO-F-103 Algorithmique I Exercices d entrainement. Année académique INFO-F-103 Algorithmique I Exercices d entrainement Année académique 2008 2009 Table des matières 1 Table des matières 1 ADT 1 1.1 Liste : Fonction générique.................................. 1 1.1.1 Énonce........................................

Plus en détail

renforcer le contrôle de type :

renforcer le contrôle de type : renforcer le contrôle de type : définitions, prototypes de fonctions surcharge références conversions de void * préférer le compilateur au préprocesseur considérer les entrées/sorties opérations abstraites

Plus en détail

MODULE 2. Manipulations de base avec les images. Objectifs de ce module : Ouvrir un fichier d image. Sauvegarder un fichier d image

MODULE 2. Manipulations de base avec les images. Objectifs de ce module : Ouvrir un fichier d image. Sauvegarder un fichier d image Objectifs de ce module : Ouvrir un fichier d image MODULE 2 Manipulations de base avec les images Sauvegarder un fichier d image Utiliser adéquatement la classe d image Mat. Module 2 Manipulation de base

Plus en détail

INF1010 Examen final Hiver 2006

INF1010 Examen final Hiver 2006 INF1010 Examen final Hiver 2006 Question 1 Allocation dynamique ou polymorphisme (1 point) Répondez à une des questions suivantes (si vous décidez de répondre aux deux, vous recevrez le maximum des deux

Plus en détail

Introduction à la Programmation 1

Introduction à la Programmation 1 Introduction à la Programmation 1 Séance de cours/td Université Paris-Diderot Objectifs: Découverte du type String. Comprendre qu il y a des types différents. Maîtriser les expressions booléennes dans

Plus en détail

CLASSES et OBJETS en C++.NET :

CLASSES et OBJETS en C++.NET : , AA Info : Application GUI en C++.NET Année 2008-2009 (FI) p. 1/5 Classes et Objets en C++.NET CLASSES et OBJETS en C++.NET : En C++.NET, la déclaration des composants et objets se fait avec l opérateur

Plus en détail

Programmation objet 2 et outils de développement Licence 3 Informatique. Année universitaire David Genest

Programmation objet 2 et outils de développement Licence 3 Informatique. Année universitaire David Genest Programmation objet 2 et outils de développement Licence 3 Informatique Année universitaire 2016-2017 David Genest POO2 Licence 3 Informatique 2016-2017 1 Chapitre I Introduction 1 Présentation du cours

Plus en détail

Cours Langage C/C++ Mémoire et allocation dynamique

Cours Langage C/C++ Mémoire et allocation dynamique Cours Langage C/C++ Mémoire et allocation dynamique Thierry Vaira BTS IRIS Avignon tvaira@free.fr v0.1 La pile et le tas La mémoire La mémoire dans un ordinateur est une succession d octets (soit 8 bits),

Plus en détail

Le langage C. Les bases Jean-Pierre Fournier,

Le langage C. Les bases Jean-Pierre Fournier, Le langage C Les bases Jean-Pierre Fournier, http://www.iut-orsay.fr/~fournier jpf@fiifo.u-psud.fr Un peu d histoire B (Bell labs) (1970) [Ken Thompson] NB (new B) (B + types) (1971) [Dennis Ritchie] C

Plus en détail

INFO-F-101 Programmation Projet 4

INFO-F-101 Programmation Projet 4 INFO-F-101 Programmation Projet 4 Année académique 2008-2009 1 Introduction Une image peut-être décomposée en un tableau de points élémentaires appelés pixels (abréviation de picture element). Supposons

Plus en détail

GL / C++ Chapitre 7. Lien Dynamique Méthodes Virtuelles

GL / C++ Chapitre 7. Lien Dynamique Méthodes Virtuelles GL / C++ Chapitre 7 Lien Dynamique Méthodes Virtuelles 1. Pointeur sur un objet d'une classe dérivée Considérons les classes écrites précédemment : Personne Etudiant // dérive de personne Salarie // dérive

Plus en détail

Listes de personnes et calculatrice polonaise inverse en Java

Listes de personnes et calculatrice polonaise inverse en Java Listes de personnes et calculatrice polonaise inverse en Java Université Paris Sud Motivation Le but de cet exercice est de manipuler les listes chaînées et les piles et de voir leur application en analyse

Plus en détail

2.5- Les flux. 1- Librairies de flux. 2- Manipulation de cin. 3- Lecture et écriture de fichiers. 4- Les flux et les chaînes

2.5- Les flux. 1- Librairies de flux. 2- Manipulation de cin. 3- Lecture et écriture de fichiers. 4- Les flux et les chaînes 2.5- Les flux 1- Librairies de flux 2- Manipulation de cin 3- Lecture et écriture de fichiers 4- Les flux et les chaînes 5- Passage de paramètres en ligne de commande 6- Un exemple de récupération CSV

Plus en détail

Algorithmique Classes, instances, objets [oo]

Algorithmique Classes, instances, objets [oo] Algorithmique Classes, instances, objets [oo] Cours, 25 juin 2012 Table des matières 1 Approche impérative v.s. objet / oo00acours1 4 1.1 Approche impérative Approche objet................... 4 1.2 Dualités

Plus en détail

Introduction à l héritage en C++

Introduction à l héritage en C++ Algorithmique/Langage 1ère année Introduction à l héritage en C++ Yacine BELLIK IUT d Orsay Yacine.Bellik@iut-orsay.fr 1 Bibliographie Ce cours est basé sur le livre suivant : Programmer en C++, 5ème édition

Plus en détail

Informatique II : Cours de programmation (C++) INTRODUCTION

Informatique II : Cours de programmation (C++) INTRODUCTION Informatique II : Cours de () INTRODUCTION Haroud Laboratoire d Intelligence Artificielle Faculté I&C Informatique II Cours 1 : Introduction 1 / 65 Objectifs du d aujourd hui Présenter le Objectifs («Quoi?»)

Plus en détail

Tableaux et boucle For

Tableaux et boucle For Tableaux et boucle For Pierre-Alain FOUQUE Département d Informatique École normale supérieure Plan 1 -Tableaux 2 -Boucles for 3 -Paramètres sur la ligne de commande 2 Limite des types de base Définir

Plus en détail

Programme. Pimp A - info121a. Exemple: Arbres d Hierarchie. Traverse et Calculs dans Arbres. Tri Récursivité Dichotomie Arbre Graphe Examen blanc

Programme. Pimp A - info121a. Exemple: Arbres d Hierarchie. Traverse et Calculs dans Arbres. Tri Récursivité Dichotomie Arbre Graphe Examen blanc Programme Pimp A - info121a Programmation IMPérative Avancée Burkhart Wolff Frédéric Vernier Tri Récursivité Dichotomie Arbre Graphe Examen blanc Recherche linéaire Diviser pour mieux régner Traverse et

Plus en détail