SlideShare une entreprise Scribd logo
1  sur  29
Télécharger pour lire hors ligne
Support des TPs en Programmation Orientée Objet & C++
M. Ouadï Belmokhtar EMSI-Rabat
ouadi.belmokhtar@gmail.com
q  Introduction à C++
§  Historique du langage C++
§  Qu’est-ce que le C++
§  Apports de C++ par rapport au C
§  Exemple de logiciels développés via C++
q  Préparation de l’environnement de développement
§  Choix de l’IDE
-  Top meilleurs IDE
-  Pourquoi choisir eclipse ?
-  Présentation de l’interface d’eclipse
§  Compilateur C++
-  Pourquoi utiliser un compilateur ?
-  Les compilateurs les plus utilisés en C++
-  Installation du compilateur MinGW sous windows
q  Premier Programme C vs C++
q  Structure d’un projet eclipse
q  Processus compilation/exécution
q  Exercices
2	
  
§  Première version développée par
Dr. Bjarne Stroustrup de Bell Labs
en 1980;
§  4ème langage le plus utilisé au monde:
- Classements TIOBE de Août 2013
http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html
- Et LangPop de Octobre 2013 http://langpop.com/
§  Appelé à l’origine « Langage C avec classes » ;
§  Le but de la création de C++, était de créer un langage
permettant la POO;
TPs : Programmation Orientée Objet & C++
3	
  
Ouadï Belmokhtar
§  C++98 : devenu une norme ANSI/ISO C++ en Juillet 1998;
§  C++03 : mise à jour en 2003;
§  C++11 : nouvelle norme approuvée par l’ISO en September 2011
§  C++14 : publication la version la plus récente.
§  Votes terminés en Août 2014
§  ...
TPs : Programmation Orientée Objet & C++
4	
  
Ouadï Belmokhtar
https://isocpp.org/std/status
§  Le C++ est un langage multiparadigme. Il supporte
essentiellement les paradigmes suivants :
§  Programmation procédurale : il reprend essentiellement les
concepts des fonctions du langage C;
§  Programmation structurée : il reprend la notion struct du
langage C.
§  Programmation orientée-objet : il implémente la notion d’objet,
de classe, d’héritage, d’encapsulation et de polymorphisme;
§  Programmation générique : il implémente les fonctions et classes
génériques. 	
  
§  C++ est créer sur la base du langage C ;
§  C++ est une amélioration du langage C;
§  C++ est un langage compilé;
§  C++ est portable et rapide;
	
  
TPs : Programmation Orientée Objet & C++
5	
  
Ouadï Belmokhtar
§  C++ est crée sur la base du langage C, en
prenant soin de préserver la compatibilité;
§  Toutes les fonctionnalités de C peuvent être
utilisées dans C++;
§  Il est possible de combiner entre des librairies
C et des classes C++;
§  Tout programme C peut être compilé en C++
TPs : Programmation Orientée Objet & C++
6	
  
Ouadï Belmokhtar
Le C++ a apporté par rapport au langage C les notions suivantes :
§  La plupart des ajouts sont inspirés des langages Simula et Algol
§  Les concepts orientés objet (classe, encapsulation, héritage,
polymorphisme) ;
§  Les références (passage des paramètres par référence) ;
§  Les entrés et sorties (cin et cout);
§  La vérification stricte des types (Bool, ...) ;
§  Les valeurs par défaut des paramètres de fonctions ;
§  La surcharge de fonctions (plusieurs fonctions portant le même nom se
distinguent par le nombre et/ou le type de leurs paramètres) ;
§  La surcharge des opérateurs (pour utiliser les opérateurs avec les objets) ;
§  Les templates de classes et de fonctions ;
§  Les constantes typées ;
TPs : Programmation Orientée Objet & C++
7	
  
Ouadï Belmokhtar
§  Une partie du noyau du
navigateur Google
Chrome écrite en C++;
§  La JVM (Java Virtual
Machine) HotSpot est écrite
en C++;
	
  
TPs : Programmation Orientée Objet & C++
8	
  
Ouadï Belmokhtar
§  Les jeux vidéos;
§  Les logiciels financiers;
§  Les applications militaires;
	
  
Jargon Informatique	
  Tetris	
  
À quoi sert un outil de développement :
Un environnement de développement intégré
(EDI en français et IDE en anglais) est un outil
(logiciel) complet qui permet d’éditer et de
modifier des fichiers sources, de les compiler,
de lancer l'exécutable, de "déboguer" le
programme, etc...
	
  TPs : Programmation Orientée Objet & C++
9	
  
Ouadï Belmokhtar
Exemple d’IDE:
Multi-plateformes
§  Eclipse IDE for C/C++ Developers : gratuit et Open Source
§  Code::Blocks, gratuit et Open Source (EDI complet fournit avec gcc mais utilisable avec d'autre compilateur).
§  CodeLite, gratuit et Open Source de base, seule exception : les plugins développés en annexe pour cet EDI peuvent être de
n'importe quelle licence, y compris propriétaire et fermée.
§  Qt Creator, gratuit et Open Source, dédié au framework Qt (création des intérfaces graphiques)
Sous windows
§  Visual C++ de Microsoft (basé sur Visual studio).
§  Visual C++ Express (disponible gratuitement et complètement utilisable).
§  Borland C++ Builder (propriétaire).
§  DevC++ (disponible gratuitement sous Windows).
Sous Linux
§  Anjuta
§  Kdevelop
§  g++ (commun à tout système Unix, ligne de commande)
§  ...
Sous MacOS X
§  Apple Xcode (livré avec Mac OS X).
§  Metrowerks CodeWarrior.
§  g++ (commun à tout système Unix, ligne de commande)
TPs : Programmation Orientée Objet & C++
10	
  
Ouadï Belmokhtar
Choix de l’outil de développement:
§  Eclipse IDE for C/C++ Developers est le meilleur outil
pour créer des programmes en C++;
§  Coloration syntaxique
§  Auto-completion du code;
§  Extensible à base de plugins;
§  Open source et gratuit;
§  Professionnel (c’est le plus utilisé dans les entreprises
d’ingénierie informatique);
§  Multi-plateforme (Windows, Linux, Mac OS X);
§  Portable (ne s’installe pas);
§  IDE N°1 dans le développement professionnel Java/J2EE.
TPs : Programmation Orientée Objet & C++
11	
  
Ouadï Belmokhtar
TPs : Programmation Orientée Objet & C++
12	
  
Ouadï Belmokhtar
Pourquoi utiliser un compilateur :
§  Pour exécuter des programmes C++ il faut avoir
un compilateur installé sur l’ordinateur;
§  Eclipse utilise ce compilateur pour compiler,
exécuter et déboguer les programmes C++;
C’est quoi un compilateur:
§  Un compilateur est un programme informatique
permet de compiler les fichiers du code source
afin d’obtenir un programme exécutable (“.exe”
sous windows).	
  
TPs : Programmation Orientée Objet & C++
13	
  
Ouadï Belmokhtar
§  Il existe plusieurs compilateurs C/C++, le plus populaire
c’est GCC (GNU Compiler Collection), c’est un logiciel
open source et gratuit;
§  La plupart des autres compilateurs sont fondé sur la base de
GCC;
Windows:
MinGW
CygWin
Linux:
GCC
Mac OS:
MacOSX GCC
TPs : Programmation Orientée Objet & C++
14	
  
Ouadï Belmokhtar
MinGW : MinGW est une collection d’outils permettant de faire de la programmation,
parmi ces outils sont présents: compilateurs(gcc, g++), éditeur de liens,
débogueur(gdb), ...
Installation:
1.  Télécharger et installer la dernière version de MinGW mingw.org;
§  Lors de l’installation, il faut cocher les cases (packages) suivantes:
mingw32-base
mingw32-gcc=g++
msys-base
2.  Configuration de la variable d’environnement PATH:
a.  Clique droit sur poste de travail et propriété.
b.  Paramètre système avancé
c.  Variables d'environnements
d.  Variables système
e.  Chercher "PATH" et modifier. Ou en crée un nouveau. Aller à la fin de la ligne et
rajouter les deux chemins ”;C:MinGWbin;C:MinGWmsys1.0bin;" sans les
guillemets.
§  Eclipse cherche dans PATH pour découvrir les compilateurs C/C++ à utiliser.
TPs : Programmation Orientée Objet & C++
15	
  
Ouadï Belmokhtar
Exemple C vs. C++ : 	
  
TPs : Programmation Orientée Objet & C++
16	
  
Ouadï Belmokhtar
Exemple1.c Exemple2.cpp
Affichage par printf() Affichage par cout
 
TPs : Programmation Orientée Objet & C++
17	
  
Ouadï Belmokhtar
§  Binaries : Contient le programme
exécutable “.exe” produit après
la compilation des fichiers sources;
§  Includes : Contient les fichiers
headers (fournies par le GCC)
nécessaires à l’exécution du projet;
§  Src : Contient les fichiers de code
source de notre application;
§  Debug : les fichiers binaires
“.o”, “.obj”, “.d” (utils
pour la création du programme
exécutable)
 
TPs : Programmation Orientée Objet & C++
18	
  
Ouadï Belmokhtar
Programme C++	
  
Fichier1.hpp
Fichier1.cpp
Fichier2.hpp
Fichier2.cpp
Fichier2.hpp
Fichier2.cpp
Compilateur
Phase 1 : Préprocessing & Compilation
Phase 2 : Optimisation & Édition de liens
Fichier1.o Fichier2.o Fichier3.o
Executable.exe
Ecrire un programme qui demande à l’utilisateur
de saisir un nom, puis il lui affiche Bonjour
“nom saisie”
	
  
TPs : Programmation Orientée Objet & C++
19	
  
Ouadï Belmokhtar
 
TPs : Programmation Orientée Objet & C++
20	
  
Ouadï Belmokhtar
Programme C++ :
Résultat d’exécution :
q  Rappel de la dérnière séance
q Correction du devoir
q  Les fichiers d’un programme C++
§  Entêtes (.h, .hpp)
§  Sources (.c, .cpp, .cc)
§  Objets (.o, .obj)
q  Explication détaillée du premier programme
q  Explication des messages de compilation affichés par
eclipse
q  Compilation sur la ligne de commande (DOS)
q  Exercices sur les entrées/sorties
TPs : Programmation Orientée Objet & C++
21	
  
Ouadï Belmokhtar
TPs : Programmation Orientée Objet & C++
22	
  
Ouadï Belmokhtar
Les fichiers d’en-tête:
Les fichiers "entêtes" ("headers" en anglais), portent
souvent l'extension .h ou .hpp (mais la plupart des
entêtes systèmes du C++ standard n'ont plus d'extension
du tout), ces fichiers contiennent généralement les
prototypes de différentes fonctions, structures et
classes.
Les fichiers sources:
Les fichiers sources en C++ portent souvent
l'extension .cpp, .cxx, .cc, parfois .c. Ces fichiers
contiennent la définition (l'implémentation) des
différentes fonctions et méthodes définies dans les
fichiers d'en-tête .
Les fichiers objet:
Après la compilation des fichiers .cpp on obtient dans
un premier temps des fichiers objets (extension .obj
ou .o en général).
TPs : Programmation Orientée Objet & C++
23	
  
Ouadï Belmokhtar
Exemple4.cpp
Exemple3.hpp
La directive #include :
§  La directive de compilation #include
<iostream> permet d'inclure les prototypes des
différentes classes contenues dans la
bibliothèque standard iostream.
§  Cette bibliothèque contient la définition de
cout qui permet entre autre d'afficher des
messages à l'écran.
L’espace de nom “namespace” :
§  L’utilisation des espaces de nom permet d’éviter
les problèmes de confusion entre les noms des
variables (objets), lorsque plusieurs espaces de
noms comportant des noms de variables
identiques.
§  Exemple:
espace1::var1
espace2::var1
	
  
TPs : Programmation Orientée Objet & C++
24	
  
Ouadï Belmokhtar
Exemple2.cpp
La fonction main():
§  La fonction main()est le point d’entrée de tout
programme en C++.
§  C’est la première fonction qui sera exécuter lors de
l’exécution d’un programme C++ quelque soit sa taille.
§  Tout programme en C++ commence par l'exécution de la
fonction main(), Il se termine lorsque la fonction
main() est terminée.
§  Quelque soit le nombre de fichiers sources d’un
programme C++, il ne doit avoir qu’une seule fonction
main().
L’objet cout (Console Output):
Il permet d'envoyer des caractères vers le flux de sortie
standard du programme, c'est-à-dire l'écran pour ce
programme (sa fenêtre console).
Return 0:
Cette instruction indique que la fonction main() est
terminée correctment et que tout s'est bien passé.
TPs : Programmation Orientée Objet & C++
25	
  
Ouadï Belmokhtar
Exemple2.cpp
Prenons l’exemple du projet précédent qui contient deux fichiers sources
“Exemple1.c” et “Exemple2.cpp”, la compilation de ce projet en utilisant
eclipse affiche les messages suivants:
TPs : Programmation Orientée Objet & C++
26	
  
Ouadï Belmokhtar
Eclipse fait appel au compilateur GCC C pour compiler le fichier source “Exemple1.c”,
pour cela, eclipse utilise la commande gcc.
Eclipse fait appel au compilateur GCC C++ pour compiler le fichier source “Exemple2.cpp”,
pour cela, eclipse utilise la commande g++.
Eclipse fait appel à l’éditeur de liens pour rassembler les différents fichiers objets (binaires)
afin de construire le fichier exécutable (Projet_2.exe).
§  Pour compiler des programmes C++ sur DOS, il faut avoir la variable
d’environnement PATH déjà configurée.
§  Dans la fenêtre DOS, il faut se positioner sur le dossier contenant le
fichier source, puis tapez la commande suivante (supposant que le
fichier source est placé dans le Bureau):
	
  
TPs : Programmation Orientée Objet & C++
27	
  
Ouadï Belmokhtar
§  La commande g++ Exemple2.cpp –o Exemple2.exe
permet de compiler le fichier source Exemple2.cpp et de
construire le fichier exécutable Exemple2.exe.
§  Pour lancer le programme, il suffit de faire un double clique sur ce
fichier exécutable
Exercice 1:
Ecrire la fonction calculerSomme qui accepte 2 paramètres
de type entier et qui retourne leurs somme.
Testez la fonction dans la méthode main()
Exercice 2:
Ecrire la fonction calculerDivision qui accepte 2
paramètres de type entier et qui retourne leurs division. La
fonction doit vérifier le cas de division par 0 (si c’est le cas,
il faut afficher un message d’erreur)
Testez la fonction dans la méthode main()
28	
  
TPs : Programmation Orientée Objet & C++ Ouadï Belmokhtar
•  Nouvelle forme de commentaire (en fin de ligne);
•  Plus grande libérté dans l’emplacement des déclarations des variables;
•  Notion de référence facilitant la mise en oeuvre de la transmission
d’arguments par adresse;
•  Surdéfinition(surcharge) des fonctions: attribution d’un même nom à
différentes fonctions, la reconnaissance de la fonction réellement
appelée se faisant d’après le type et le nombre des arguments figurant
dans l’appel (on parle parfois de signature);
•  Nouveaux opérateurs de gestion dynamique de la mémoire: new et
delete;
•  Possibilité de définir des fonctions “en ligne” (inline), ce qui accroît
la vitesse d’exécution, sans perdre pour autant le formalisme des
fonctions.
TPs : Programmation Orientée Objet & C++
29	
  
Ouadï Belmokhtar

Contenu connexe

Tendances

Py osv newsletter-042018
Py osv newsletter-042018Py osv newsletter-042018
Py osv newsletter-042018FabMob
 
Cours Visual Basic.NET
Cours Visual Basic.NETCours Visual Basic.NET
Cours Visual Basic.NETAziz Darouichi
 
Tout pour se préparer à PHP 7.4
Tout pour se préparer à PHP 7.4Tout pour se préparer à PHP 7.4
Tout pour se préparer à PHP 7.4Damien Seguy
 
C# 5 versus Java 8... Quand C++ 11 s'invite à la fête
C# 5 versus Java 8... Quand C++ 11 s'invite à la fêteC# 5 versus Java 8... Quand C++ 11 s'invite à la fête
C# 5 versus Java 8... Quand C++ 11 s'invite à la fêteFabrice JEAN-FRANCOIS
 

Tendances (9)

openFrameworks
openFrameworksopenFrameworks
openFrameworks
 
Py osv newsletter-042018
Py osv newsletter-042018Py osv newsletter-042018
Py osv newsletter-042018
 
Cours Visual Basic.NET
Cours Visual Basic.NETCours Visual Basic.NET
Cours Visual Basic.NET
 
Tout pour se préparer à PHP 7.4
Tout pour se préparer à PHP 7.4Tout pour se préparer à PHP 7.4
Tout pour se préparer à PHP 7.4
 
Windows 8
Windows 8Windows 8
Windows 8
 
Cours langage-c
Cours langage-cCours langage-c
Cours langage-c
 
C# 5 versus Java 8... Quand C++ 11 s'invite à la fête
C# 5 versus Java 8... Quand C++ 11 s'invite à la fêteC# 5 versus Java 8... Quand C++ 11 s'invite à la fête
C# 5 versus Java 8... Quand C++ 11 s'invite à la fête
 
Programmation en C
Programmation en CProgrammation en C
Programmation en C
 
PHP5: Endgame
PHP5: EndgamePHP5: Endgame
PHP5: Endgame
 

Similaire à introduction au CPP

Chap1V2019: Cours en C++
Chap1V2019: Cours en C++Chap1V2019: Cours en C++
Chap1V2019: Cours en C++Aziz Darouichi
 
COURS C++ [Enregistrement automatique]Complet (1).pptx
COURS C++ [Enregistrement automatique]Complet (1).pptxCOURS C++ [Enregistrement automatique]Complet (1).pptx
COURS C++ [Enregistrement automatique]Complet (1).pptxLuneSabsPericolo1
 
Programmation-en-C-ESIITECH-2023-2024.pptx
Programmation-en-C-ESIITECH-2023-2024.pptxProgrammation-en-C-ESIITECH-2023-2024.pptx
Programmation-en-C-ESIITECH-2023-2024.pptxOlyvierNzighou1
 
Programmation-en-C-ESIITECH-2023-2024-bis.pptx
Programmation-en-C-ESIITECH-2023-2024-bis.pptxProgrammation-en-C-ESIITECH-2023-2024-bis.pptx
Programmation-en-C-ESIITECH-2023-2024-bis.pptxOlyvierNzighou1
 
Big Data Viz (and much more!) with Apache Zeppelin
Big Data Viz (and much more!) with Apache ZeppelinBig Data Viz (and much more!) with Apache Zeppelin
Big Data Viz (and much more!) with Apache ZeppelinBruno Bonnin
 
Paris Web 2015 - Atelier desendettement javascript
Paris Web 2015 - Atelier desendettement javascriptParis Web 2015 - Atelier desendettement javascript
Paris Web 2015 - Atelier desendettement javascriptMichael Akbaraly
 
CodeBuilder_DevOpsCenter.pptx
CodeBuilder_DevOpsCenter.pptxCodeBuilder_DevOpsCenter.pptx
CodeBuilder_DevOpsCenter.pptxThomasParaiso1
 
Débuter avec phonegap (APACHE CORDOVA) dans eclipse pour android
Débuter avec phonegap (APACHE CORDOVA) dans eclipse pour androidDébuter avec phonegap (APACHE CORDOVA) dans eclipse pour android
Débuter avec phonegap (APACHE CORDOVA) dans eclipse pour androidBosco Basabana
 
Développer en natif avec C++11
Développer en natif avec C++11Développer en natif avec C++11
Développer en natif avec C++11Microsoft
 
Php sous Windows - webcamps Paris
Php sous Windows - webcamps ParisPhp sous Windows - webcamps Paris
Php sous Windows - webcamps ParisLeTesteur
 
Rappels Modularisation application C/C++
Rappels Modularisation application C/C++Rappels Modularisation application C/C++
Rappels Modularisation application C/C++Sylvain Leroy
 

Similaire à introduction au CPP (20)

Chap1V2019: Cours en C++
Chap1V2019: Cours en C++Chap1V2019: Cours en C++
Chap1V2019: Cours en C++
 
Chap1: Cours en C++
Chap1: Cours en C++Chap1: Cours en C++
Chap1: Cours en C++
 
COURS C++ [Enregistrement automatique]Complet (1).pptx
COURS C++ [Enregistrement automatique]Complet (1).pptxCOURS C++ [Enregistrement automatique]Complet (1).pptx
COURS C++ [Enregistrement automatique]Complet (1).pptx
 
Programmation-en-C-ESIITECH-2023-2024.pptx
Programmation-en-C-ESIITECH-2023-2024.pptxProgrammation-en-C-ESIITECH-2023-2024.pptx
Programmation-en-C-ESIITECH-2023-2024.pptx
 
Programmation-en-C-ESIITECH-2023-2024-bis.pptx
Programmation-en-C-ESIITECH-2023-2024-bis.pptxProgrammation-en-C-ESIITECH-2023-2024-bis.pptx
Programmation-en-C-ESIITECH-2023-2024-bis.pptx
 
Chapitre 01 - Notions de base
Chapitre 01 - Notions de baseChapitre 01 - Notions de base
Chapitre 01 - Notions de base
 
cours1.ppt
cours1.pptcours1.ppt
cours1.ppt
 
Big Data Viz (and much more!) with Apache Zeppelin
Big Data Viz (and much more!) with Apache ZeppelinBig Data Viz (and much more!) with Apache Zeppelin
Big Data Viz (and much more!) with Apache Zeppelin
 
Tp1 - Eclipse
Tp1 - EclipseTp1 - Eclipse
Tp1 - Eclipse
 
Paris Web 2015 - Atelier desendettement javascript
Paris Web 2015 - Atelier desendettement javascriptParis Web 2015 - Atelier desendettement javascript
Paris Web 2015 - Atelier desendettement javascript
 
Go
GoGo
Go
 
Android NDK
Android   NDKAndroid   NDK
Android NDK
 
CodeBuilder_DevOpsCenter.pptx
CodeBuilder_DevOpsCenter.pptxCodeBuilder_DevOpsCenter.pptx
CodeBuilder_DevOpsCenter.pptx
 
Tizen sdk-solutionslinux-20130529
Tizen sdk-solutionslinux-20130529Tizen sdk-solutionslinux-20130529
Tizen sdk-solutionslinux-20130529
 
Microsoft07coursbaptiste
Microsoft07coursbaptisteMicrosoft07coursbaptiste
Microsoft07coursbaptiste
 
Débuter avec phonegap (APACHE CORDOVA) dans eclipse pour android
Débuter avec phonegap (APACHE CORDOVA) dans eclipse pour androidDébuter avec phonegap (APACHE CORDOVA) dans eclipse pour android
Débuter avec phonegap (APACHE CORDOVA) dans eclipse pour android
 
Développer en natif avec C++11
Développer en natif avec C++11Développer en natif avec C++11
Développer en natif avec C++11
 
Php sous Windows - webcamps Paris
Php sous Windows - webcamps ParisPhp sous Windows - webcamps Paris
Php sous Windows - webcamps Paris
 
Rappels Modularisation application C/C++
Rappels Modularisation application C/C++Rappels Modularisation application C/C++
Rappels Modularisation application C/C++
 
Apache Cordova 3.3 de zéro
Apache Cordova 3.3 de zéroApache Cordova 3.3 de zéro
Apache Cordova 3.3 de zéro
 

Dernier

Présentation_ Didactique 1_SVT (S4) complet.pptx
Présentation_ Didactique 1_SVT (S4) complet.pptxPrésentation_ Didactique 1_SVT (S4) complet.pptx
Présentation_ Didactique 1_SVT (S4) complet.pptxrababouerdighi
 
Formation M2i - Comprendre les neurosciences pour développer son leadership
Formation M2i - Comprendre les neurosciences pour développer son leadershipFormation M2i - Comprendre les neurosciences pour développer son leadership
Formation M2i - Comprendre les neurosciences pour développer son leadershipM2i Formation
 
Annie Ernaux Extérieurs. pptx. Exposition basée sur un livre .
Annie   Ernaux  Extérieurs. pptx. Exposition basée sur un livre .Annie   Ernaux  Extérieurs. pptx. Exposition basée sur un livre .
Annie Ernaux Extérieurs. pptx. Exposition basée sur un livre .Txaruka
 
7 PPT sue le project de fin d'étude.pptx
7 PPT sue le project de fin d'étude.pptx7 PPT sue le project de fin d'étude.pptx
7 PPT sue le project de fin d'étude.pptxrababouerdighi
 
Cours SE Le système Linux : La ligne de commande bash - IG IPSET
Cours SE Le système Linux : La ligne de commande bash - IG IPSETCours SE Le système Linux : La ligne de commande bash - IG IPSET
Cours SE Le système Linux : La ligne de commande bash - IG IPSETMedBechir
 
Guide Final de rédaction de mémoire de fin d'étude
Guide Final de rédaction de mémoire de fin d'étudeGuide Final de rédaction de mémoire de fin d'étude
Guide Final de rédaction de mémoire de fin d'étudeBenamraneMarwa
 
666148532-Formation-Habilitation-ELECTRIQUE-ENTREPRISE-MARS-2017.pptx
666148532-Formation-Habilitation-ELECTRIQUE-ENTREPRISE-MARS-2017.pptx666148532-Formation-Habilitation-ELECTRIQUE-ENTREPRISE-MARS-2017.pptx
666148532-Formation-Habilitation-ELECTRIQUE-ENTREPRISE-MARS-2017.pptxSAID MASHATE
 
Fondation Louis Vuitton. pptx
Fondation      Louis      Vuitton.   pptxFondation      Louis      Vuitton.   pptx
Fondation Louis Vuitton. pptxTxaruka
 
A3iFormations, organisme de formations certifié qualiopi.
A3iFormations, organisme de formations certifié qualiopi.A3iFormations, organisme de formations certifié qualiopi.
A3iFormations, organisme de formations certifié qualiopi.Franck Apolis
 
systeme expert_systeme expert_systeme expert
systeme expert_systeme expert_systeme expertsysteme expert_systeme expert_systeme expert
systeme expert_systeme expert_systeme expertChristianMbip
 
Saint Georges, martyr, et la lègend du dragon.pptx
Saint Georges, martyr, et la lègend du dragon.pptxSaint Georges, martyr, et la lègend du dragon.pptx
Saint Georges, martyr, et la lègend du dragon.pptxMartin M Flynn
 
Evaluation du systeme d'Education. Marocpptx
Evaluation du systeme d'Education. MarocpptxEvaluation du systeme d'Education. Marocpptx
Evaluation du systeme d'Education. MarocpptxAsmaa105193
 
Cours SE Gestion des périphériques - IG IPSET
Cours SE Gestion des périphériques - IG IPSETCours SE Gestion des périphériques - IG IPSET
Cours SE Gestion des périphériques - IG IPSETMedBechir
 

Dernier (15)

Evaluación Alumnos de Ecole Victor Hugo
Evaluación Alumnos de Ecole  Victor HugoEvaluación Alumnos de Ecole  Victor Hugo
Evaluación Alumnos de Ecole Victor Hugo
 
Présentation_ Didactique 1_SVT (S4) complet.pptx
Présentation_ Didactique 1_SVT (S4) complet.pptxPrésentation_ Didactique 1_SVT (S4) complet.pptx
Présentation_ Didactique 1_SVT (S4) complet.pptx
 
Pâques de Sainte Marie-Euphrasie Pelletier
Pâques de Sainte Marie-Euphrasie PelletierPâques de Sainte Marie-Euphrasie Pelletier
Pâques de Sainte Marie-Euphrasie Pelletier
 
Formation M2i - Comprendre les neurosciences pour développer son leadership
Formation M2i - Comprendre les neurosciences pour développer son leadershipFormation M2i - Comprendre les neurosciences pour développer son leadership
Formation M2i - Comprendre les neurosciences pour développer son leadership
 
Annie Ernaux Extérieurs. pptx. Exposition basée sur un livre .
Annie   Ernaux  Extérieurs. pptx. Exposition basée sur un livre .Annie   Ernaux  Extérieurs. pptx. Exposition basée sur un livre .
Annie Ernaux Extérieurs. pptx. Exposition basée sur un livre .
 
7 PPT sue le project de fin d'étude.pptx
7 PPT sue le project de fin d'étude.pptx7 PPT sue le project de fin d'étude.pptx
7 PPT sue le project de fin d'étude.pptx
 
Cours SE Le système Linux : La ligne de commande bash - IG IPSET
Cours SE Le système Linux : La ligne de commande bash - IG IPSETCours SE Le système Linux : La ligne de commande bash - IG IPSET
Cours SE Le système Linux : La ligne de commande bash - IG IPSET
 
Guide Final de rédaction de mémoire de fin d'étude
Guide Final de rédaction de mémoire de fin d'étudeGuide Final de rédaction de mémoire de fin d'étude
Guide Final de rédaction de mémoire de fin d'étude
 
666148532-Formation-Habilitation-ELECTRIQUE-ENTREPRISE-MARS-2017.pptx
666148532-Formation-Habilitation-ELECTRIQUE-ENTREPRISE-MARS-2017.pptx666148532-Formation-Habilitation-ELECTRIQUE-ENTREPRISE-MARS-2017.pptx
666148532-Formation-Habilitation-ELECTRIQUE-ENTREPRISE-MARS-2017.pptx
 
Fondation Louis Vuitton. pptx
Fondation      Louis      Vuitton.   pptxFondation      Louis      Vuitton.   pptx
Fondation Louis Vuitton. pptx
 
A3iFormations, organisme de formations certifié qualiopi.
A3iFormations, organisme de formations certifié qualiopi.A3iFormations, organisme de formations certifié qualiopi.
A3iFormations, organisme de formations certifié qualiopi.
 
systeme expert_systeme expert_systeme expert
systeme expert_systeme expert_systeme expertsysteme expert_systeme expert_systeme expert
systeme expert_systeme expert_systeme expert
 
Saint Georges, martyr, et la lègend du dragon.pptx
Saint Georges, martyr, et la lègend du dragon.pptxSaint Georges, martyr, et la lègend du dragon.pptx
Saint Georges, martyr, et la lègend du dragon.pptx
 
Evaluation du systeme d'Education. Marocpptx
Evaluation du systeme d'Education. MarocpptxEvaluation du systeme d'Education. Marocpptx
Evaluation du systeme d'Education. Marocpptx
 
Cours SE Gestion des périphériques - IG IPSET
Cours SE Gestion des périphériques - IG IPSETCours SE Gestion des périphériques - IG IPSET
Cours SE Gestion des périphériques - IG IPSET
 

introduction au CPP

  • 1. Support des TPs en Programmation Orientée Objet & C++ M. Ouadï Belmokhtar EMSI-Rabat ouadi.belmokhtar@gmail.com
  • 2. q  Introduction à C++ §  Historique du langage C++ §  Qu’est-ce que le C++ §  Apports de C++ par rapport au C §  Exemple de logiciels développés via C++ q  Préparation de l’environnement de développement §  Choix de l’IDE -  Top meilleurs IDE -  Pourquoi choisir eclipse ? -  Présentation de l’interface d’eclipse §  Compilateur C++ -  Pourquoi utiliser un compilateur ? -  Les compilateurs les plus utilisés en C++ -  Installation du compilateur MinGW sous windows q  Premier Programme C vs C++ q  Structure d’un projet eclipse q  Processus compilation/exécution q  Exercices 2  
  • 3. §  Première version développée par Dr. Bjarne Stroustrup de Bell Labs en 1980; §  4ème langage le plus utilisé au monde: - Classements TIOBE de Août 2013 http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html - Et LangPop de Octobre 2013 http://langpop.com/ §  Appelé à l’origine « Langage C avec classes » ; §  Le but de la création de C++, était de créer un langage permettant la POO; TPs : Programmation Orientée Objet & C++ 3   Ouadï Belmokhtar
  • 4. §  C++98 : devenu une norme ANSI/ISO C++ en Juillet 1998; §  C++03 : mise à jour en 2003; §  C++11 : nouvelle norme approuvée par l’ISO en September 2011 §  C++14 : publication la version la plus récente. §  Votes terminés en Août 2014 §  ... TPs : Programmation Orientée Objet & C++ 4   Ouadï Belmokhtar https://isocpp.org/std/status
  • 5. §  Le C++ est un langage multiparadigme. Il supporte essentiellement les paradigmes suivants : §  Programmation procédurale : il reprend essentiellement les concepts des fonctions du langage C; §  Programmation structurée : il reprend la notion struct du langage C. §  Programmation orientée-objet : il implémente la notion d’objet, de classe, d’héritage, d’encapsulation et de polymorphisme; §  Programmation générique : il implémente les fonctions et classes génériques.   §  C++ est créer sur la base du langage C ; §  C++ est une amélioration du langage C; §  C++ est un langage compilé; §  C++ est portable et rapide;   TPs : Programmation Orientée Objet & C++ 5   Ouadï Belmokhtar
  • 6. §  C++ est crée sur la base du langage C, en prenant soin de préserver la compatibilité; §  Toutes les fonctionnalités de C peuvent être utilisées dans C++; §  Il est possible de combiner entre des librairies C et des classes C++; §  Tout programme C peut être compilé en C++ TPs : Programmation Orientée Objet & C++ 6   Ouadï Belmokhtar
  • 7. Le C++ a apporté par rapport au langage C les notions suivantes : §  La plupart des ajouts sont inspirés des langages Simula et Algol §  Les concepts orientés objet (classe, encapsulation, héritage, polymorphisme) ; §  Les références (passage des paramètres par référence) ; §  Les entrés et sorties (cin et cout); §  La vérification stricte des types (Bool, ...) ; §  Les valeurs par défaut des paramètres de fonctions ; §  La surcharge de fonctions (plusieurs fonctions portant le même nom se distinguent par le nombre et/ou le type de leurs paramètres) ; §  La surcharge des opérateurs (pour utiliser les opérateurs avec les objets) ; §  Les templates de classes et de fonctions ; §  Les constantes typées ; TPs : Programmation Orientée Objet & C++ 7   Ouadï Belmokhtar
  • 8. §  Une partie du noyau du navigateur Google Chrome écrite en C++; §  La JVM (Java Virtual Machine) HotSpot est écrite en C++;   TPs : Programmation Orientée Objet & C++ 8   Ouadï Belmokhtar §  Les jeux vidéos; §  Les logiciels financiers; §  Les applications militaires;   Jargon Informatique  Tetris  
  • 9. À quoi sert un outil de développement : Un environnement de développement intégré (EDI en français et IDE en anglais) est un outil (logiciel) complet qui permet d’éditer et de modifier des fichiers sources, de les compiler, de lancer l'exécutable, de "déboguer" le programme, etc...  TPs : Programmation Orientée Objet & C++ 9   Ouadï Belmokhtar
  • 10. Exemple d’IDE: Multi-plateformes §  Eclipse IDE for C/C++ Developers : gratuit et Open Source §  Code::Blocks, gratuit et Open Source (EDI complet fournit avec gcc mais utilisable avec d'autre compilateur). §  CodeLite, gratuit et Open Source de base, seule exception : les plugins développés en annexe pour cet EDI peuvent être de n'importe quelle licence, y compris propriétaire et fermée. §  Qt Creator, gratuit et Open Source, dédié au framework Qt (création des intérfaces graphiques) Sous windows §  Visual C++ de Microsoft (basé sur Visual studio). §  Visual C++ Express (disponible gratuitement et complètement utilisable). §  Borland C++ Builder (propriétaire). §  DevC++ (disponible gratuitement sous Windows). Sous Linux §  Anjuta §  Kdevelop §  g++ (commun à tout système Unix, ligne de commande) §  ... Sous MacOS X §  Apple Xcode (livré avec Mac OS X). §  Metrowerks CodeWarrior. §  g++ (commun à tout système Unix, ligne de commande) TPs : Programmation Orientée Objet & C++ 10   Ouadï Belmokhtar
  • 11. Choix de l’outil de développement: §  Eclipse IDE for C/C++ Developers est le meilleur outil pour créer des programmes en C++; §  Coloration syntaxique §  Auto-completion du code; §  Extensible à base de plugins; §  Open source et gratuit; §  Professionnel (c’est le plus utilisé dans les entreprises d’ingénierie informatique); §  Multi-plateforme (Windows, Linux, Mac OS X); §  Portable (ne s’installe pas); §  IDE N°1 dans le développement professionnel Java/J2EE. TPs : Programmation Orientée Objet & C++ 11   Ouadï Belmokhtar
  • 12. TPs : Programmation Orientée Objet & C++ 12   Ouadï Belmokhtar
  • 13. Pourquoi utiliser un compilateur : §  Pour exécuter des programmes C++ il faut avoir un compilateur installé sur l’ordinateur; §  Eclipse utilise ce compilateur pour compiler, exécuter et déboguer les programmes C++; C’est quoi un compilateur: §  Un compilateur est un programme informatique permet de compiler les fichiers du code source afin d’obtenir un programme exécutable (“.exe” sous windows).   TPs : Programmation Orientée Objet & C++ 13   Ouadï Belmokhtar
  • 14. §  Il existe plusieurs compilateurs C/C++, le plus populaire c’est GCC (GNU Compiler Collection), c’est un logiciel open source et gratuit; §  La plupart des autres compilateurs sont fondé sur la base de GCC; Windows: MinGW CygWin Linux: GCC Mac OS: MacOSX GCC TPs : Programmation Orientée Objet & C++ 14   Ouadï Belmokhtar
  • 15. MinGW : MinGW est une collection d’outils permettant de faire de la programmation, parmi ces outils sont présents: compilateurs(gcc, g++), éditeur de liens, débogueur(gdb), ... Installation: 1.  Télécharger et installer la dernière version de MinGW mingw.org; §  Lors de l’installation, il faut cocher les cases (packages) suivantes: mingw32-base mingw32-gcc=g++ msys-base 2.  Configuration de la variable d’environnement PATH: a.  Clique droit sur poste de travail et propriété. b.  Paramètre système avancé c.  Variables d'environnements d.  Variables système e.  Chercher "PATH" et modifier. Ou en crée un nouveau. Aller à la fin de la ligne et rajouter les deux chemins ”;C:MinGWbin;C:MinGWmsys1.0bin;" sans les guillemets. §  Eclipse cherche dans PATH pour découvrir les compilateurs C/C++ à utiliser. TPs : Programmation Orientée Objet & C++ 15   Ouadï Belmokhtar
  • 16. Exemple C vs. C++ :   TPs : Programmation Orientée Objet & C++ 16   Ouadï Belmokhtar Exemple1.c Exemple2.cpp Affichage par printf() Affichage par cout
  • 17.   TPs : Programmation Orientée Objet & C++ 17   Ouadï Belmokhtar §  Binaries : Contient le programme exécutable “.exe” produit après la compilation des fichiers sources; §  Includes : Contient les fichiers headers (fournies par le GCC) nécessaires à l’exécution du projet; §  Src : Contient les fichiers de code source de notre application; §  Debug : les fichiers binaires “.o”, “.obj”, “.d” (utils pour la création du programme exécutable)
  • 18.   TPs : Programmation Orientée Objet & C++ 18   Ouadï Belmokhtar Programme C++   Fichier1.hpp Fichier1.cpp Fichier2.hpp Fichier2.cpp Fichier2.hpp Fichier2.cpp Compilateur Phase 1 : Préprocessing & Compilation Phase 2 : Optimisation & Édition de liens Fichier1.o Fichier2.o Fichier3.o Executable.exe
  • 19. Ecrire un programme qui demande à l’utilisateur de saisir un nom, puis il lui affiche Bonjour “nom saisie”   TPs : Programmation Orientée Objet & C++ 19   Ouadï Belmokhtar
  • 20.   TPs : Programmation Orientée Objet & C++ 20   Ouadï Belmokhtar Programme C++ : Résultat d’exécution :
  • 21. q  Rappel de la dérnière séance q Correction du devoir q  Les fichiers d’un programme C++ §  Entêtes (.h, .hpp) §  Sources (.c, .cpp, .cc) §  Objets (.o, .obj) q  Explication détaillée du premier programme q  Explication des messages de compilation affichés par eclipse q  Compilation sur la ligne de commande (DOS) q  Exercices sur les entrées/sorties TPs : Programmation Orientée Objet & C++ 21   Ouadï Belmokhtar
  • 22. TPs : Programmation Orientée Objet & C++ 22   Ouadï Belmokhtar
  • 23. Les fichiers d’en-tête: Les fichiers "entêtes" ("headers" en anglais), portent souvent l'extension .h ou .hpp (mais la plupart des entêtes systèmes du C++ standard n'ont plus d'extension du tout), ces fichiers contiennent généralement les prototypes de différentes fonctions, structures et classes. Les fichiers sources: Les fichiers sources en C++ portent souvent l'extension .cpp, .cxx, .cc, parfois .c. Ces fichiers contiennent la définition (l'implémentation) des différentes fonctions et méthodes définies dans les fichiers d'en-tête . Les fichiers objet: Après la compilation des fichiers .cpp on obtient dans un premier temps des fichiers objets (extension .obj ou .o en général). TPs : Programmation Orientée Objet & C++ 23   Ouadï Belmokhtar Exemple4.cpp Exemple3.hpp
  • 24. La directive #include : §  La directive de compilation #include <iostream> permet d'inclure les prototypes des différentes classes contenues dans la bibliothèque standard iostream. §  Cette bibliothèque contient la définition de cout qui permet entre autre d'afficher des messages à l'écran. L’espace de nom “namespace” : §  L’utilisation des espaces de nom permet d’éviter les problèmes de confusion entre les noms des variables (objets), lorsque plusieurs espaces de noms comportant des noms de variables identiques. §  Exemple: espace1::var1 espace2::var1   TPs : Programmation Orientée Objet & C++ 24   Ouadï Belmokhtar Exemple2.cpp
  • 25. La fonction main(): §  La fonction main()est le point d’entrée de tout programme en C++. §  C’est la première fonction qui sera exécuter lors de l’exécution d’un programme C++ quelque soit sa taille. §  Tout programme en C++ commence par l'exécution de la fonction main(), Il se termine lorsque la fonction main() est terminée. §  Quelque soit le nombre de fichiers sources d’un programme C++, il ne doit avoir qu’une seule fonction main(). L’objet cout (Console Output): Il permet d'envoyer des caractères vers le flux de sortie standard du programme, c'est-à-dire l'écran pour ce programme (sa fenêtre console). Return 0: Cette instruction indique que la fonction main() est terminée correctment et que tout s'est bien passé. TPs : Programmation Orientée Objet & C++ 25   Ouadï Belmokhtar Exemple2.cpp
  • 26. Prenons l’exemple du projet précédent qui contient deux fichiers sources “Exemple1.c” et “Exemple2.cpp”, la compilation de ce projet en utilisant eclipse affiche les messages suivants: TPs : Programmation Orientée Objet & C++ 26   Ouadï Belmokhtar Eclipse fait appel au compilateur GCC C pour compiler le fichier source “Exemple1.c”, pour cela, eclipse utilise la commande gcc. Eclipse fait appel au compilateur GCC C++ pour compiler le fichier source “Exemple2.cpp”, pour cela, eclipse utilise la commande g++. Eclipse fait appel à l’éditeur de liens pour rassembler les différents fichiers objets (binaires) afin de construire le fichier exécutable (Projet_2.exe).
  • 27. §  Pour compiler des programmes C++ sur DOS, il faut avoir la variable d’environnement PATH déjà configurée. §  Dans la fenêtre DOS, il faut se positioner sur le dossier contenant le fichier source, puis tapez la commande suivante (supposant que le fichier source est placé dans le Bureau):   TPs : Programmation Orientée Objet & C++ 27   Ouadï Belmokhtar §  La commande g++ Exemple2.cpp –o Exemple2.exe permet de compiler le fichier source Exemple2.cpp et de construire le fichier exécutable Exemple2.exe. §  Pour lancer le programme, il suffit de faire un double clique sur ce fichier exécutable
  • 28. Exercice 1: Ecrire la fonction calculerSomme qui accepte 2 paramètres de type entier et qui retourne leurs somme. Testez la fonction dans la méthode main() Exercice 2: Ecrire la fonction calculerDivision qui accepte 2 paramètres de type entier et qui retourne leurs division. La fonction doit vérifier le cas de division par 0 (si c’est le cas, il faut afficher un message d’erreur) Testez la fonction dans la méthode main() 28   TPs : Programmation Orientée Objet & C++ Ouadï Belmokhtar
  • 29. •  Nouvelle forme de commentaire (en fin de ligne); •  Plus grande libérté dans l’emplacement des déclarations des variables; •  Notion de référence facilitant la mise en oeuvre de la transmission d’arguments par adresse; •  Surdéfinition(surcharge) des fonctions: attribution d’un même nom à différentes fonctions, la reconnaissance de la fonction réellement appelée se faisant d’après le type et le nombre des arguments figurant dans l’appel (on parle parfois de signature); •  Nouveaux opérateurs de gestion dynamique de la mémoire: new et delete; •  Possibilité de définir des fonctions “en ligne” (inline), ce qui accroît la vitesse d’exécution, sans perdre pour autant le formalisme des fonctions. TPs : Programmation Orientée Objet & C++ 29   Ouadï Belmokhtar