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

Save this PDF as:
 WORD  PNG  TXT  JPG

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

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

Transcription

1 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 est de construire des structures de données applicables à tous les types de données. L étude de la bibliothèque STL: Bien connaître les capacités du langage C++; Mettre en œuvre les types paramétrisés; Saisir la puissance de l approche orientée objet; Exemples concrets de réalisation orientée objet. 2 ÉTS - GPA, (C) Tony Wong, Ph.D., ing. 1

2 Types paramétrisés (1) Les types sont résolus lors de la compilation du programme. Par exemple: Réaliser la fonction y = (2ab)/(4+b). Si a et b sont des entiers (int): int foo(int a, int b) return ((2*a*b)/(4+b)); 3 Types paramétrisés (2) Si a et b sont des double précision (double): double foo(double a, double b) return ((2*a*b)/(4+b)); Si a est de type int et b est de type double: double foo(int a, double b) return ((2*a*b)/(4+b)); 4 ÉTS - GPA, (C) Tony Wong, Ph.D., ing. 2

3 Types paramétrisés (3) La surcharge des fonctions exige une fonction par signature. La surcharge des fonctions n est pas une solution optimale. Dans ce contexte, nous pouvons utiliser une fonction aux types paramétrisés: template <class UnType> UnType foo(untype a, UnType b) return ((2*a*b)/(4+b)); Un type paramétrisé 5 Types paramétrisés (4) Le type de a et b de la fonction foo sera déterminé lors de la compilation du programme. Une seule fonction suffit pour représenter les types de a et de b. Si a et b ont des types différents: template <class UnType1, class UnType2> UnType2 foo(untype1 a, UnType2 b) return ((2*a*b)/(4+b)); Deux types paramétrisés 6 ÉTS - GPA, (C) Tony Wong, Ph.D., ing. 3

4 Types paramétrisés (5) Voici un exemple: #include <iostream.h> template <class Type> Type foo(type a, Type b) return ((2*a*b)/(4+b)); int main() int iy = foo(8,6); // 9 cout << iy << endl; float fy = foo(8.0f, 6.0f);// 9.6 cout << fy << endl; char cy = foo('f', 'b'); // - cout << cy << endl; return (0); 7 Types paramétrisés (6) Fonction à types paramétrisés multiple: // Fichier template2.h #if!defined(template2_h) #define TEMPLATE2_H. // T1 - int, long, float, double // T2 - int, long template <class T1, class T2> T2 Trouve(T1 *vec, T1 valeur, T2 longueur) T2 j; for (j=t2(0); j<longueur; j++) if (vec[j] == valeur) return (j); return T2(-1); #endif 8 ÉTS - GPA, (C) Tony Wong, Ph.D., ing. 4

5 Types paramétrisés (7) // Programme principal #include <iostream.h> #include "template2.h" int main() char cvec[] = 'a', 'b', 'c', 'd', 'e', 'f'; char ch = 'b'; int position = Trouve(cVec, ch, 6); cout << "Element " << ch << " trouve a la position: " << position << endl; double dvec[] = 1.0, 3.0, 5.0, 7.0, 9.0, 11.0; double d = 5.0; cout << "Element " << d << " trouve a la position: " << Trouve(dVec, d, 6) << endl; return (0); 9 Types paramétrisés (8) Les types paramétrisés peuvent aussi être des classes. Autrement dit, on peut les types paramétrisées peuvent représenter des classes. La fonction membre obligatoire d une classe jouant le type paramétrisé: Le constructeur de copie: operator==(); À l aide des fonctions aux types paramétrisés, nous éviterons l utilisation des macros (C/C++). 10 ÉTS - GPA, (C) Tony Wong, Ph.D., ing. 5

6 Types paramétrisés (9) Nous pouvons également créer des classes aux types paramétrisés. En voici un exemple: #include <iostream.h> #include <math.h> template <class Type> class DeuxXY public: DeuxXY(Type x1, Type y1) : x(x1), y(y1) void Montrer(); private: Type x, y; ; 11 Types paramétrisés (10) template <class Type> void DeuxXY<Type>::Montrer() cout << x / y << endl; int main() DeuxXY<int> ivar(36,6); DeuxXY<double> dvar(sqrt(2.0), 2.0); ivar.montrer(); // 6 dvar.montrer(); //.707 return (0); 12 ÉTS - GPA, (C) Tony Wong, Ph.D., ing. 6

7 Types paramétrisés (11) Attention à la syntaxe des fonctions membres définies en dehors d une classe aux types paramétrisés: template <class Type> void DeuxXY<Type>::Montrer() cout << x / y << endl; 13 Espace des noms (1) Évite les conflits de noms dans un programme. Facilite le développement modulaire. On peut utiliser des noms identiques (variables, fonctions, classes) en autant qu ils sont définis dans des espaces différents. Facilite le développement des bibliothèques. On peut attribuer des espaces différents pour différentes bibliothèques. Ex: La bibliothèque STL utilise l espace std. Un outil pour le programmeur. 14 ÉTS - GPA, (C) Tony Wong, Ph.D., ing. 7

8 Espace des noms (2) Exemple d utilisation: #include <iostream.h> namespace EA char cvar = 'A'; namespace EB char cvar = 'B'; void foo() using namespace EA; cout << "Dans foo(): " << EA::cVar << " " << EB::cVar << " " << cvar << endl; void foobar() using namespace EB; cout << "Dans foobar(): " << EA::cVar << " " << EB::cVar << " " << cvar << endl; La variable cvar est définie dans l espace EA Une autre variable cvar est définie dans l espace EB 15 Espace des noms (3) int main() foo(); foobar(); cout << "Dans main(): " << endl; using EA::cVar; cout << cvar << endl; //using EB::cVar; // erreur! cvar déjà défini //cout << cvar << endl; return (0); Dans foo(): A B A Dans foobar(): A B B Dans main(): A 16 ÉTS - GPA, (C) Tony Wong, Ph.D., ing. 8

9 Espace des noms (4) Vous pouvez l utiliser dans vos programmes C++. Vous pouvez utiliser plus d un espace à la fois. La bibliothèque STL utilise l espace std (donc cet espace est réservé). Tous les programmes C++ utilisant la bibliothèque STL doivent déclarer l existence de l espace std. 17 Bibliothèque STL (1) STL? Standard Template Library. Mettre à la disposition des programmeurs la plupart des structures de données conventionnelles et avancées disponibles. Listes, vecteurs, ensembles, cartes, etc. Ces structures de données acceptent les types prédéfinis et les types définis par le programmeur (c est-à-dire, des classes). 18 ÉTS - GPA, (C) Tony Wong, Ph.D., ing. 9

10 Bibliothèque STL (2) STL? Classes collections, fonctionnels, algorithmes génériques. Classes collections? vector, list, deque, set, multi-set, map, multi-map, etc. Fonctionnels? Classes C++ utilisées par les algorithmes génériques pour certaines opérations de comparaison. Algorithmes génériques? Algorithmes de traitement applicables à des collections de STL. 19 Bibliothèque STL (3) STL? Gestion automatique de la mémoire. Le programmeur n a pas à se soucier de l allocation dynamique de la mémoire. Par exemple: Stockage des données entrées au clavier par l utilisateur du programme. Normalement, nous devons: Déterminer une taille fixe de l entrée (64 car. max.) OU Gérer nous mêmes l allocation dynamique de la mémoire pour stocker les données d entrée. 20 ÉTS - GPA, (C) Tony Wong, Ph.D., ing. 10

11 Bibliothèque STL (4) Voici une solution par STL en utilisant un vecteur dynamique: #include <iostream.h> #include <algorithm> //!! pas d extension.h #include <vector> //!! pas d extension.h using namespace std; // espace de nom // objet fonctionnel class compare public: int operator()(int x, int y) const return (x > y); ; 21 Bibliothèque STL (5) int main() vector<int> ivec; // vecteur entier vector<int>::iteratori; // iterateur entier int x; cout << "Entrer une valeur entiere" << " differente de zero (0):" << endl; while (cin >> x, x!=0) ivec.push_back(x); // mettre dans le vecteur // algorithme générique sort(ivec.begin(), ivec.end(), compare()); for (i = ivec.begin(); i!= ivec.end(); i++) cout << *i << " "; cout << endl; return (0); 22 ÉTS - GPA, (C) Tony Wong, Ph.D., ing. 11

12 Bibliothèque STL (6) Voici le résultat obtenu: Entrer une valeur entiere differente de zero (0): La classe vector est une classe de type paramétrisé de STL. La taille de ce vecteur est dynamique. 23 Bibliothèque STL (7) La fonction membre push_back() ajoute un élément à la fin du vecteur. vector<int>::iterator i La variable i est un itérateur de la classe vector. L itérateur i est un objet qui joue deux rôles importants: Permet l indexage du vecteur via la surcharge des opérateurs ++ et --: for (i = ivec.begin(); i!= ivec.end(); i++) Permet l obtention de l élément indexé par la surcharge de l opérateur * : cout << *i << " "; 24 ÉTS - GPA, (C) Tony Wong, Ph.D., ing. 12

13 Bibliothèque STL (8) La classe Compare crée un objet appelé objet fonctionnel. Un objet fonctionnel: N a pas de constructeur; N a pas de destructeur. Des objets fonctionnels sont utilisés dans la comparaison des éléments contenus dans des classes collections de STL. 25 Bibliothèque STL (9) La fonction sort de STL réalise un algorithme de triage applicable à la plupart des collections STL. sort(ivec.begin(), ivec.end(), compare()); Itérateur de départ Itérateur d arrivée Fonctionnel de comparaison Algorithme générique (triage) 26 ÉTS - GPA, (C) Tony Wong, Ph.D., ing. 13

14 Bibliothèque STL (10) Voici un autre algorithme générique: find // Exemple d'un algorithme générique #include <iostream> #include <algorithm> #include <vector> using namespace std; int main() vector<int> ivec; // vecteur entier vector<int>::iteratori; // iterateur entier int x; cout << "Entrer une valeur entiere" << " differente de zero (0):" << endl; while (cin >> x, x!=0) ivec.push_back(x); // mettre dans le vecteur cout << "Valeur à trouver: "; cin >> x; 27 Bibliothèque STL (11) // algorithme générique pour la fouille i = find(ivec.begin(), ivec.end(), x); if (i ==ivec.end()) cout << "n'est pas dans le vecteur" << endl; else cout << "trouve"; if (i == ivec.begin()) else cout << endl; return (0); cout << " comme le premier element"; cout << " apres " << *--i; 28 ÉTS - GPA, (C) Tony Wong, Ph.D., ing. 14

15 Fin du chapitre 2 Lire les notes de cours du chapitre 2. Continuer la lecture des autres sections. Étudier les programmes exemples (disponibles sur la page web de GPA789). N oubliez pas: C++ est bien plus que du C. 29 ÉTS - GPA, (C) Tony Wong, Ph.D., ing. 15

Structures de données abstraites et généricité en C++

Structures de données abstraites et généricité en C++ Licence Sciences, Technologies, Santé Université de Perpignan Via Domitia Semestre 4 (L2) - Mention Mathématiques, Informatique Année universitaire 2015/2016 Programmation Orientée Objet Structures de

Plus en détail

Structures de données abstraites et généricité en C++

Structures de données abstraites et généricité en C++ Licence Sciences, Technologies, Santé Université de Perpignan Via Domitia Semestre 5 (L3) - Mention Mathématiques, Informatique Année universitaire 2012/13 Complément de Programmation Orientée Objet Structures

Plus en détail

Algorithmique Cours 8

Algorithmique Cours 8 Algorithmique Cours 8 IUT Informatique de Lens, 1ère Année Université d Artois Frédéric Koriche koriche@cril.fr 2011 - Semestre 1 Sommaire L objectif de ce cours est d étudier les tableaux dynamiques et

Plus en détail

Introduction à la programmation C++ Constructeurs et destructeurs Vector de la STL

Introduction à la programmation C++ Constructeurs et destructeurs Vector de la STL Introduction à la programmation C++ Constructeurs et destructeurs Vector de la STL Nicolas Audebert Mercredi 30 novembre 2016 1 Plan de la séance 2 3 Un petit problème avec les classes Séance précédente

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

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

L3 Informatique, parcours Recherche et innovation Cours Programmation, 1 er semestre, année TD 8 : Premiers pas en C++

L3 Informatique, parcours Recherche et innovation Cours Programmation, 1 er semestre, année TD 8 : Premiers pas en C++ L3 Informatique, parcours Recherche et innovation Cours Programmation, 1 er semestre, année 2012 2013 TD 8 : Premiers pas en C++ Luc Bougé, Matthieu Dorier 20 novembre 2012 Id: td08.tex 189 2012 11 14

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

Cours C++ Spécificités du C++ (hors POO) références, allocation dynamique de mémoire...

Cours C++ Spécificités du C++ (hors POO) références, allocation dynamique de mémoire... Cours C++ Spécificités du C++ (hors POO) références, allocation dynamique de mémoire... Spécifités notables du C++ Référence Allocation dynamique de mémoire : opérateur new et delete Librairie standard

Plus en détail

Un court aperçu du langage C++

Un court aperçu du langage C++ Intro au Un court aperçu du langage TNT Centre Universitaire Informatique Université de Genève, Switzerland Cours de parallélisme, 26 octobre 2006 Le, c est quoi? Intro au Langage de programmation compilé.

Plus en détail

Les templates en C++ Déclaration d un modèle...2. Fonction et classe template...2. Exemple n 1 : Fonction template...3

Les templates en C++ Déclaration d un modèle...2. Fonction et classe template...2. Exemple n 1 : Fonction template...3 Table des matières Besoin...2 Objectifs...2 Déclaration d un modèle...2 Fonction et classe template...2 Exemple n 1 : Fonction template...3 Spécialisation...3 Exemple n 2 : classe template...4 Exemple

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

Rappels de C++ Programmation générique. Vincent Lemaire

Rappels de C++ Programmation générique. Vincent Lemaire Rappels de C++ Programmation générique Vincent Lemaire vincent.lemaire@upmc.fr Surcharge d opérateurs Par fonction membre Par fonction amie Functors (Function objects) Exemple Programmation générique Fonctions

Plus en détail

C++ / MC-II1 - Cours n o 5 Polymorphisme. Bibliothèque standard

C++ / MC-II1 - Cours n o 5 Polymorphisme. Bibliothèque standard C++ / MC-II1 - Cours n o 5 Polymorphisme Surdéfinition opérateurs Bibliothèque standard Sebastien.Kramm@univ-rouen.fr IUT GEII Rouen 2010-2011 S. Kramm (IUT Rouen) MC-II1 - Cours 5 2010-2011 1 / 49 Sommaire

Plus en détail

Éléments de programmation C++

Éléments de programmation C++ Université du Québec École de technologie supérieure Département de génie de la production automatisée GPA789 Analyse et Conception orientées objet Éléments de programmation C++ Professeur: Tony Wong,

Plus en détail

L1-S2 MPI : Programmation Impérative

L1-S2 MPI : Programmation Impérative L1-S2 MPI : Programmation Impérative Correspondances Langage de Réalisation C++ Ce résumé constitue un aide-mémoire rédigé sous forme d exemples qui illustrent partiellement l utilisation des différentes

Plus en détail

Bases du langage C Pearson Education France C++ Vincent Gouvernelle

Bases du langage C Pearson Education France C++ Vincent Gouvernelle 2 Bases du langage C++ Le C++ est un langage de programmation permettant la programmation sous de multiples paradigmes comme, par exemple la programmation procédurale (héritée du langage C), la programmation

Plus en détail

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

Introduction à la programmation Travaux pratiques: séance introductive INFO0201-1 Introduction à la programmation Travaux pratiques: séance introductive INFO0201-1 X. Baumans (xavier.baumans@ulg.ac.be) [Copyright F. Ludewig & B. Baert, ULg] Notes de TP Slides de TP accessibles à l adresse

Plus en détail

Spécificités du C++ (hors POO), références, allocation dynamique de mémoire...

Spécificités du C++ (hors POO), références, allocation dynamique de mémoire... Fiche 2 Spécificités du C++ (hors POO), références, allocation dynamique de mémoire... Le C++ est un langage dit orienté objet (OO) conçu à partir du langage C. De ce fait la plupart des fonctionalités

Plus en détail

Examen final de programmation C++

Examen final de programmation C++ Examen final de programmation C++ Informatique 2ème année 2009/2010 Mathieu Faverge - faverge@enseirb-matmeca.fr Le présent examen doit être réalisé avec l aide de deux feuilles A4 recto-verso manuscrites

Plus en détail

Correction n o 1. Cours de programmation impérative Licence MPI L1 S2 - Info 121. Prise en main / Conditions / Boucles

Correction n o 1. Cours de programmation impérative Licence MPI L1 S2 - Info 121. Prise en main / Conditions / Boucles Correction n o 1 Cours de programmation impérative Licence MPI L1 S2 - Info 121 Prise en main / Conditions / Boucles La présence aux séances de TPs est obligatoire, et l assiduité sera prise en compte

Plus en détail

IFT159 Analyse et programmation

IFT159 Analyse et programmation IFT159 Analyse et programmation Chapitre 2 Gabriel Girard Département d informatique 2 septembre 2008 1 Qu est-ce qu un programme C++ 2 Commentaires (1) Directives au compilateur (2) Fonctions (4) 3 float

Plus en détail

Correction TP de programmation n o 2

Correction TP de programmation n o 2 Correction TP de programmation n o 2 Cours de programmation impérative Licence MPI L1 S2 - Info 121 Utilisation du Débogueur Dans cette séance nous allons apprendre à utiliser le débogueur. C est un outil

Plus en détail

La programation orientée objet en C++

La programation orientée objet en C++ La programation orientée objet en C++ Houssam HNAIDI Basé sur le cours de Camille COMBIER 28 février 2012 Liris - CNRS Lyon Email : houssam.hnaidi@gmail.com Houssam HNAIDI Formation C++ 1/ 25 1 La STL

Plus en détail

Correction TP de programmation n o 3

Correction TP de programmation n o 3 Correction TP de programmation n o 3 Cours de programmation impérative Licence MPI L1 S2 - Info 121 Fonctions et procédures Cette séance de travaux pratiques est dédiée à l écriture et l utilisation de

Plus en détail

Introduction à l informatique Travaux pratiques: séance 1 INFO X. Baumans

Introduction à l informatique Travaux pratiques: séance 1 INFO X. Baumans Introduction à l informatique Travaux pratiques: séance 1 INFO0205-1 X. Baumans (xavier.baumans@ulg.ac.be) Programme de la séance Déclarations de variables INFO0205-1 X.Baumans 1 / 21 Programme de la séance

Plus en détail

Chapitre 12. Classes

Chapitre 12. Classes Chapitre 12 : Classes 157 Chapitre 12 Classes Chapitre 12 : Classes 158 1. Définition - La programmation orientée objet se fait à l'aide de classes. - Une classe comporte à la fois des champs (appelés

Plus en détail

Les flux (anglais : stream) correspondent aux échanges réalisés entre un programme et les périphériques : clavier, écran, disque dur, etc.

Les flux (anglais : stream) correspondent aux échanges réalisés entre un programme et les périphériques : clavier, écran, disque dur, etc. C++ Ch 6 Fichiers I. INTRODUCTION... 1 A. FLUX D ENTREES-SORTIES... 1 1. Flux d Entrées-sorties clavier/écran... 1 2. Flux d Entrées-sorties disque : les fichiers... 2 B. LIBRAIRIE C++ POUR LES FLUX D

Plus en détail

LIFAP1 : ALGORITHMIQUE ET PROGRAMMATION IMPÉRATIVE, INITIATION

LIFAP1 : ALGORITHMIQUE ET PROGRAMMATION IMPÉRATIVE, INITIATION Licence STS Université Claude Bernard Lyon I LIFAP1 : ALGORITHMIQUE ET PROGRAMMATION IMPÉRATIVE, INITIATION 1 COURS 2 : Bases du langage C OBJECTIFS DE LA SÉANCE Apprendre la syntaxe du langage C Savoir

Plus en détail

Programmation I : Cours de programmation (C++) Variables et opérateurs

Programmation I : Cours de programmation (C++) Variables et opérateurs Programmation I : Cours de () Variables et opérateurs Laboratoire d Intelligence Artificielle Faculté I&C Programmation I Cours 2 : Variables et opérateurs 1 / 25 Vidéos, Quiz et transparents https://www.coursera.org/learn/init-prog-cpp/home/week/1

Plus en détail

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

IFT1166 - INTRA. Directives: IFT1166 - Session Automne, Intra. Mohamed Lokbani. Prénom(s): Date:20 Octobre 1999 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

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

IFT159 Analyse et programmation

IFT159 Analyse et programmation 1/56 Analyse et programmation IFT159 Analyse et programmation Thème 11 Gabriel Girard Département d informatique 3 décembre 2015 2/56 Analyse et programmation Thème 11 1 Généralité 2 Analyse et Conception

Plus en détail

Claude Delannoy. Exercices C++ en langage. 3 e édition. Groupe Eyrolles, 1997, 1999, 2007, ISBN :

Claude Delannoy. Exercices C++ en langage. 3 e édition. Groupe Eyrolles, 1997, 1999, 2007, ISBN : Claude Delannoy Exercices en langage C++ 3 e édition Groupe Eyrolles, 1997, 1999, 2007, ISBN : 978-2-212-12201-5 Chapitre 17 Les patrons de fonctions Rappels Introduite par la version 3, la notion de patron

Plus en détail

MIGS1 - Programmation C/C++ TD 8- Utilisation de la STL. Exercice 1 : Donner les sorties du programme suivant :

MIGS1 - Programmation C/C++ TD 8- Utilisation de la STL. Exercice 1 : Donner les sorties du programme suivant : MIGS1 - Programmation C/C++ TD 8- Utilisation de la STL Exercice 1 : Donner les sorties du programme suivant : #include #include void affiche (vector) ; int t[] = 1, 2, 3, 4,

Plus en détail

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

Introduction à la programmation Travaux pratiques: séance 1 INFO0201-1 Introduction à la programmation Travaux pratiques: séance 1 INFO0201-1 B. Baert, X. Baumans & F. Ludewig Bruno.Baert@ulg.ac.be - Xavier.Baumans@ulg.ac.be Implication des TP info et Pourquoi programmer?

Plus en détail

C++ Programmation Objet en C++ Programmation générique en C++ Design Patterns et C++ Policies

C++ Programmation Objet en C++ Programmation générique en C++ Design Patterns et C++ Policies C++ Programmation Objet en C++ Programmation générique en C++ Design Patterns et C++ Policies Meilleur C Le langage C++ se veut un langage C amélioré. Il possède des fonctionnalités supplémentaires, et

Plus en détail

GPA777 (Codage C++) 2

GPA777 (Codage C++) 2 Exemple de codage C++ Classe Rationnel Rôle Cette classe modélise les nombres rationnels. Raison - Le domaine du problème est simple à comprendre. - Présenter les techniques de programmation C++: Déclaration

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 Nationale Polytechnique Département Génie Industriel Algorithmique et Programmation. Programmation Orientée Objet Annexes. TP 1.

École Nationale Polytechnique Département Génie Industriel Algorithmique et Programmation. Programmation Orientée Objet Annexes. TP 1. École Nationale Polytechnique Département Génie Industriel Algorithmique et Programmation Programmation Orientée Objet Annexes. TP POO Manip 1 #include using namespace std; int k = 30; int main()

Plus en détail

Programmation orientée objet Langage C++

Programmation orientée objet Langage C++ Programmation orientée objet Langage C++ ESTA, 2017 Mohammed Khachan 1 Objectif S initier à le programmation orientée objet Apprendre les bases du langage C++. Laisser de coté l approche procédurale. Apprendre

Plus en détail

Département d informatique Professeur : Clermont Dupuis Université Laval Bureau : IFT Programmation orientée objet. Examen partiel # 2

Département d informatique Professeur : Clermont Dupuis Université Laval Bureau : IFT Programmation orientée objet. Examen partiel # 2 Département d informatique Professeur : Clermont Dupuis Université Laval Bureau : 3976 IFT-19946 Programmation orientée objet Date : 13 décembre 2000 Examen partiel # 2 Documentation permise : 1 feuille

Plus en détail

Correspondance entre le UML et le C++

Correspondance entre le UML et le C++ Section Correspondance entre le UML et le C++ Exemples de codage Introduction Classes simples Ce document présente quelques exemples de codage qui traduisent la correspondance entre le modèle exprimé en

Plus en détail

PG208, Exercice préparatoire

PG208, Exercice préparatoire PG208, Exercice préparatoire Bertrand LE GAL, Jérémie CRENNE, Guillaume DELBERGUE et Thibaud TONNELLIER Filière électronique 2 eme année - Année universitaire 2014-2015 Avant d aborder le projet de conception

Plus en détail

Objectifs du cours d aujourd hui. Informatique I : Cours d introduction à l informatique et à la programmation Révisions de la 1 re partie

Objectifs du cours d aujourd hui. Informatique I : Cours d introduction à l informatique et à la programmation Révisions de la 1 re partie Objectifs du cours d aujourd hui Informatique I : Cours d introduction à l informatique et à la programmation Révisions de la 1 re partie Jamila Sam Haroud Laboratoire d Intelligence Artificielle Faculté

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

Fonctions amies 1. Fonctions amies. Mohamed N. Lokbani v2.00 Programmation avancée en C++

Fonctions amies 1. Fonctions amies. Mohamed N. Lokbani v2.00 Programmation avancée en C++ Fonctions amies 1 Fonctions amies Fonctions amies 2 1. Généralités - Une fonction membre a accès aux membres publics et privés de la classe. - Les données sont masquées, seules les fonctions membres y

Plus en détail

Cours n o 2 Introduction au C++

Cours n o 2 Introduction au C++ Cours n o 2 Introduction au C++ Module Info3/M3105C Sebastien.Kramm@univ-rouen.fr IUT GEII Rouen 2016-2017 S. Kramm (IUT Rouen) Cours 2 2016-2017 1 / 37 Sommaire 1 Introduction 2 C++ = C amélioré 3 Programmation

Plus en détail

Agrégation et Composition

Agrégation et Composition Agrégation et Composition Collaboration entre deux classes Trois types de lien Fort è Composition Moyen è Agrégation interne Faible è Agrégation externe La composition Contenance d'une autre classe 1:

Plus en détail

LIFAP1 : ALGORITHMIQUE ET PROGRAMMATION IMPÉRATIVE, INITIATION

LIFAP1 : ALGORITHMIQUE ET PROGRAMMATION IMPÉRATIVE, INITIATION Licence STS Université Claude Bernard Lyon I LIFAP1 : ALGORITHMIQUE ET PROGRAMMATION IMPÉRATIVE, INITIATION 1 COURS 3 : Anatomie d un programme C OBJECTIFS DE LA SÉANCE Apprendre à écrire des programmes

Plus en détail

Série 2 : exercices C++ (Solutions)

Série 2 : exercices C++ (Solutions) 8SIF109 : Programmation, Algorithmique et Structures de données Automne 2008 Exercice 1. Série 2 : exercices C++ (Solutions) 1. Passage de l'objet date par recopie ; la date résultat est également retourné

Plus en détail

Algorithmique Cours 5

Algorithmique Cours 5 Algorithmique Cours 5 IUT Informatique de Lens, 1ère Année Université d Artois Frédéric Koriche koriche@cril.fr 2011 - Semestre 1 Sommaire L objectif de ce cours est d étudier les énumérations et structures

Plus en détail

UE Programmation C++ 2ème cours. B. Gas. Orientation I3SR en apprentissage.

UE Programmation C++ 2ème cours. B. Gas. Orientation I3SR en apprentissage. 2ème cours B. Gas Les classes: définition Un objet est constitué d'un ensemble de données de type quelconque et d'un ensemble de fonctions permettant de manipuler ces données. La définition d'un type d'objet

Plus en détail

Tableaux (introduction) et types de base

Tableaux (introduction) et types de base Tableaux (introduction) et types de base A. Motivation..................................................... 4 B. Les tableaux.................................................... 5 C. Construction des tableaux.......................................

Plus en détail

Programmation en C++ C++ de base. Programme C++ Variables, objets, types Fonctions Namespace Tests Boucles Pointeurs, références

Programmation en C++ C++ de base. Programme C++ Variables, objets, types Fonctions Namespace Tests Boucles Pointeurs, références Programmation en C++ C++ de base Programme C++ Variables, objets, types Fonctions Namespace Tests Boucles Pointeurs, références 1 Programme C++ Le programme C++ le plus simple int main() { return 0;...

Plus en détail

Introduction à la STL (en C++)

Introduction à la STL (en C++) Licence Sciences, Technologies, Santé Université de Perpignan Via Domitia Semestre 5 (L3) - Mention Mathématiques, Informatique Année universitaire 2012/2013 Programmation Orientée Objet Introduction à

Plus en détail

Programmation I : Cours de programmation (C++) Fonctions https://www.coursera.org/learn/init-prog-cpp/home/week/4

Programmation I : Cours de programmation (C++) Fonctions https://www.coursera.org/learn/init-prog-cpp/home/week/4 Vidéos, transparents et quiz Programmation I : Cours de programmation (C++) Fonctions https://www.coursera.org/learn/init-prog-cpp/home/week/4 Semaine 4 Laboratoire d Intelligence Artificielle Faculté

Plus en détail

1 Conversion d'une chaîne de caractères en nombre

1 Conversion d'une chaîne de caractères en nombre CPP3 Programmation C : Utilitaire de conversion de donnée Système : CodeBlock Durée : 3 heures Travail individuel Compétences : Tester et valider un module logiciel. Réaliser la conception détaillée d

Plus en détail

Chapitre 4. Spécificités C++

Chapitre 4. Spécificités C++ Chapitre 4 : Spécificités C++ 29 Chapitre 4 Spécificités C++ Chapitre 4 : Spécificités C++ 30 1. Commentaires 1.1 Comme en C Pour couvrir toute une zone (une ou plusieurs lignes à la fois) /* quelque chose

Plus en détail

Java : la syntaxe. MC-II1 - Cours 2. J. Villemejane - IUT Créteil-Vitry Département GEII Université Paris-Est Créteil

Java : la syntaxe. MC-II1 - Cours 2. J. Villemejane - IUT Créteil-Vitry Département GEII Université Paris-Est Créteil Java : la syntaxe MC-II1 - Cours 2 J. Villemejane - julien.villemejane@u-pec.fr IUT Créteil-Vitry Département GEII Université Paris-Est Créteil Année universitaire 2013-2014 1/15 Plan du cours 1 Conventions

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

Le Compilateur C++ Principal. bool test;

Le Compilateur C++ Principal. bool test; Le Compilateur C++ Pour bien comprendre les mécanismes en jeu, nous allons revenir sur la notion de compilation. Rappelons que la compilation consiste à réaliser une traduction d un langage de programmation

Plus en détail

Algorithmique et programmation TP 1 : Le langage C++, structure d un programme, compilation, types de base, affichage et lecture de données

Algorithmique et programmation TP 1 : Le langage C++, structure d un programme, compilation, types de base, affichage et lecture de données BELFORT MONTBÉLIARD Département d Informatique DUT Informatique S1 Année 2011/2012 Algorithmique et programmation Algorithmique et programmation TP 1 : Le langage C++, structure d un programme, compilation,

Plus en détail

Examen d Algorithmique et Programmation Orientée Objet

Examen d Algorithmique et Programmation Orientée Objet Examen d Algorithmique et Programmation Orientée Objet 2016-2017 1 re année CSI Apprentissage Phelma - Semestre 1 Mars 2017 Première partie (30 mn) : Aucun document autorisé. Deuxième partie (1h30) : Documents

Plus en détail

Chapitre 8. Patrons de fonctions Templates

Chapitre 8. Patrons de fonctions Templates Chapitre 8 : Patrons de fonctions 183 Chapitre 8 Patrons de fonctions Templates Chapitre 8 : Patrons de fonctions 184 1. Généralités - Modèle que le compilateur utilise pour créer des fonctions au besoin.

Plus en détail

Programmation orienté objet en C++ Liste d exercices. Série 1 (ajouts C du C++)

Programmation orienté objet en C++ Liste d exercices. Série 1 (ajouts C du C++) Programmation orienté objet en C++ Liste d exercices Série 1 (ajouts C du C++) Vous essaierez d utiliser systématiquement les notions C++ telles que cout/cin, new/delete plutôt que leur équivalent C :

Plus en détail

SYNTAXE du LANGAGE C

SYNTAXE du LANGAGE C SYNTAXE du LANGAGE C FICHIERS SOURCES *.cpp fichiers principaux Vos programmes. *.h fichiers d en-tête Ne pas mettre de code dans les en-tḙtes. DIRECTIVES Pas de ; après une directive. #include

Plus en détail

Examen de Programmation I

Examen de Programmation I Examen de Programmation I Sciences et Technologies du Vivant, Semestre 1 Mercredi 17 décembre 2008 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

Méthodes informatiques pour physiciens introduction à C++ et résolution de problèmes de physique par ordinateur

Méthodes informatiques pour physiciens introduction à C++ et résolution de problèmes de physique par ordinateur Méthodes informatiques pour physiciens introduction à C++ et résolution de problèmes de physique par ordinateur Corrigé 1 Professeur : Alessandro Bravar Alessandro.Bravar@unige.ch Université de Genève

Plus en détail

; int & operator[](int i) if (i>=0 && i<nelem) return adr[i] ; else cout<<"out of range! "<<endl ; exit(1) ; vec & operator=(const vec &) ; vec & vec

; int & operator[](int i) if (i>=0 && i<nelem) return adr[i] ; else cout<<out of range! <<endl ; exit(1) ; vec & operator=(const vec &) ; vec & vec Forme Canonique d une classe Conversion de types 1. Introduction Nous avons vu dans le chapitre précédent, qu il était possible de sur-définir les opérateurs du langage C++. La surdéfinition des opérateurs

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

Une introduction au C/C++ non orienté objet

Une introduction au C/C++ non orienté objet Une introduction au C/C++ non orienté objet Un premier programme en C/C++ : comme il est classique, ce programme écrit bonjour à l'écran. Les types de donnée simples : int, float, double, char, les tableaux,

Plus en détail

POO. par Jenny Benois-Pineau

POO. par Jenny Benois-Pineau POO par Jenny Benois-Pineau 1 Introduction Pourquoi POO? Crise du logiciel Robustesse, interchangeabilité des composantes, réutilisation du code, extensibilité, protection Langages : Java, Smalltalk, Eiffel,

Plus en détail

Exercice 1 Exercice 2 Exercice 3 Exercice 4 Exercice 5 Total Note / 20

Exercice 1 Exercice 2 Exercice 3 Exercice 4 Exercice 5 Total Note / 20 Nom, prénom, numéro d étudiant : Université Paris Sud, Licence MPI, Info 111 Partiel du 7 novembre 2016 (deux heures) Exercice 1 Exercice 2 Exercice 3 Exercice 4 Exercice 5 Total Note / 20 Calculatrices

Plus en détail

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

Chapitre 7 Documentation, module et pointeur de fonction

Chapitre 7 Documentation, module et pointeur de fonction Chapitre 7 Documentation, module et pointeur de fonction 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

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

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

Algorithmique, C++ Recollement d'images

Algorithmique, C++ Recollement d'images Algorithmique, C++ Recollement d'images Introduction à C++ Troisième partie STL Plan de la séance Introduction à la STL Les conteneurs Les itérateurs Quelques algorithmes La STL en bref Standard Template

Plus en détail

Définition des variables en C++

Définition des variables en C++ Définition des variables en C++ En C++ vous pouvez déclarer les variables ou fonctions n'importe où dans le code. La portée de telles variables va de l'endroit de la déclaration jusqu'à la fin du bloc

Plus en détail

Correction TP de programmation n o 4

Correction TP de programmation n o 4 Correction TP de programmation n o 4 Cours de programmation impérative Licence MPI L1 S2 - Info 121 Fonctions et procédures: passage de paramètres Cette séance de travaux pratiques est dédiée au passage

Plus en détail

Objectifs du cours d aujourd hui

Objectifs du cours d aujourd hui Objectifs du cours d aujourd hui Informatique II : Cours d introduction à l informatique et à la programmation objet Introduction à la Programmation Orientée Objet (POO) Introduire les notions d encapsulation

Plus en détail

Structures de données et algorithmique

Structures de données et algorithmique 1 n n i=1 t i som=0; for(i = 0; i < n; i++) som = som + t[i]; Moy = som/n; Structures de données et algorithmique Exercices Tests, boucles et tableaux Mohammed Benjelloun, Edith Malengreau Organigramme

Plus en détail

Mise à niveau en Java

Mise à niveau en Java Mise à niveau en Java Cours 0 Stéphane Airiau Université Paris-Dauphine Cours 0 (Stéphane Airiau) Java 1 Ces transparents Eléments de base ou bien : (presque) tout ce dont vous avez besoin pour ré-écrire

Plus en détail

Claude Delannoy. Exercices C++ en langage. 3 e édition. Groupe Eyrolles, 1997, 1999, 2007, ISBN :

Claude Delannoy. Exercices C++ en langage. 3 e édition. Groupe Eyrolles, 1997, 1999, 2007, ISBN : Claude Delannoy Exercices en langage C++ 3 e édition Groupe Eyrolles, 1997, 1999, 2007, ISBN : 978-2-212-12201-5 Chapitre 7 Notions de classe, constructeur et destructeur Rappels Les possibilités de Programmation

Plus en détail

Rappels de langage C A 2

Rappels de langage C A 2 Partie A Rappels de langage C Département Informatique Présentation générale Programme C ensemble de fonctions Les fonctions (leur code source) sont réparties dans un ou plusieurs fichiers textes Une des

Plus en détail

Chapitre II. Classes : Concepts de base

Chapitre II. Classes : Concepts de base Chapitre II Classes : Concepts de base 1 Introduction 2 Syntaxe 3 Encapsulation 4 5 Destructeur POO2 Licence 3 Informatique 2016-2017 Classes : Concepts de base 28 Introduction Chapitre II Classes : Concepts

Plus en détail

Introduction à la Programmation Objet

Introduction à la Programmation Objet Introduction à la Programmation Objet Jusqu à présent, vous avez appris à écrire des programmes de plus en plus complexes. Il faut donc maintenant des outils pour organiser ces programmes de façon 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

Outils et Logiciels d Optimisation - Cours 4 et 5

Outils et Logiciels d Optimisation - Cours 4 et 5 Introduction C / C++ Outils et Logiciels d Optimisation - Cours 4 et 5 P. Pesneau pierre.pesneau@math.u-bordeaux1.fr Université Bordeaux 1 Bât A33 - Bur 256 Introduction Introduction C / C++ Ceci n est

Plus en détail

6TT. Notes de cours INFORMATIQUE LOGIQUE. Marc Liégeois. Ingénieur civil. CFWB Compétences - Logique - 6 ème. Page 1 sur 24.

6TT. Notes de cours INFORMATIQUE LOGIQUE. Marc Liégeois. Ingénieur civil. CFWB Compétences - Logique - 6 ème. Page 1 sur 24. 6TT Notes de cours INFORMATIQUE LOGIQUE Ingénieur civil Page 1 sur 24 Préliminaires Le cours de logique s appuie (notamment en deuxième partie) sur un langage de programmation appelé : Langage C Nous introduirons

Plus en détail

Correction TP de programmation n o 6

Correction TP de programmation n o 6 Correction TP de programmation n o 6 Cours de programmation impérative Licence MPI L1 S2 - Info 121 Types tableau de produit et produit de tableau Cette séance de travaux pratiques est dédiée à l écriture

Plus en détail

Tableaux des objets. Héritage C++ Java

Tableaux des objets. Héritage C++ Java Tableaux des objets C++ si on connaît le nombre d objets nécessaires d avance on peut utiliser des tableau d objets dans les fonctions d usage class Personne private : char Nom[Nmax]; char Societe[Nmax];

Plus en détail

Exercice 1 (Cours). Rappeler la syntaxe de la déclaration d une fonction (entête de la fonction) en C++. type nom( type1 parametre1, type2 param

Exercice 1 (Cours). Rappeler la syntaxe de la déclaration d une fonction (entête de la fonction) en C++. type nom( type1 parametre1, type2 param Nom, prénom, numéro d étudiant : Coller ou agrafer ici Coller ou agrafer ici Coller ou agrafer ici Université Paris Sud, Licence MPI, Info 111 Examen du 12 décembre 2016 (deux heures) Exercice 1 Exercice

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

INF3105 Tableaux dynamiques et génériques

INF3105 Tableaux dynamiques et génériques INF3105 Tableaux dynamiques et génériques Éric Beaudry Université du Québec à Montréal (UQAM) 2016A Éric Beaudry (UQAM) INF3105 - Tableaux 2016A 1 / 31 Sommaire 1 Tableau natif C++ 2 Tableau dynamique

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 ING1025 : INFORMATIQUE EXAMEN FINAL Date Le samedi 13 décembre 2003 Heure de 9h30 à 12h00 Notes Ce questionnaire contient 5 questions sur

Plus en détail

Formation C++ - Partie 2

Formation C++ - Partie 2 Formation C++ - Partie Yann Hamdaoui VIA mai 0 Les objets c'est la classe! Construire, détruire Héritage L'art abstrait Modularité, vie privée et vie publique Surcharge d'opérateurs 4

Plus en détail

Multi-Processing Template Library

Multi-Processing Template Library Travail de master Multi-Processing Template Library Didier Baertschiger sous la direction de Bastien Chopard et Jonas Latt 2006 Université de Genève Table des matières Préface vii 1 Notions importantes

Plus en détail

Programmation Impérative. Le langage C. Structure d un programme

Programmation Impérative. Le langage C. Structure d un programme Programmation Impérative Le langage C Objectifs - Apprentissage programmation C - Structuration en fonctions et modules. - Implémenter différentes structures de données simples : les tableaux, les listes.

Plus en détail