Vous êtes sur la page 1sur 33

C++ : introduction

Achref El Mouelhi

Docteur de l’université d’Aix-Marseille


Chercheur en programmation par contrainte (IA)
Ingénieur en génie logiciel

elmouelhi.achref@gmail.com

H & H: Research and Training 1 / 24


Plan

1 Introduction

2 Installations
Compilateur
IDE

3 Avant de commencer
Règles de nommage
Instructions
STL

4 Premier projet C++

H & H: Research and Training 2 / 24


Introduction

C++

C++

Langage de programmation

Compilé
Procédural et orienté-objet
H I ©
EL
Fortement typé : acceptant le typage statique, dynamique et générique
U
O
LM
Sensible à la casse

e f E
Créé par le professeur danois Bjarne Stroustrup dans les années 80 pendant qu’il
r
ch
travaillait pour les laboratoires Bell à New Jersey aux États-Unis

©A
Appelé initialement C with Classes en 1979 puis C++ depuis 1983

Extension (et évolution) du langage C

Père des langages objets : Java, C#, PHP...

Normalisé depuis 1998 par ISO (International Organization for Standardization)

H & H: Research and Training 3 / 24


Introduction

C++

C++ : avantages

C et C++ : langages les plus utilisés dans le monde

Langage de bas niveau : rapide

H I ©
sur internet U EL
Disposant d’une bonne documentation, des supports vidéos, plusieurs exemples

M O
E L les plus utilisés dans le monde
Énorme communauté : un des langages
f
Portable : Windows,h
c reOS, Linux (Write once, run everywhere ou Écrire une
Mac

©A
fois, exécuter partout)

Multi-paradigme : possibilité de faire

la programmation procédurale
la programmation orientée objet (OOP)

H & H: Research and Training 4 / 24


Introduction

C++

H I ©
EL
C++ : inconvénient

O U
complexe : gestion de mémoire (allocation dynamique, libération de la
mémoire...)
f E LM
ch r e
©A

H & H: Research and Training 5 / 24


Introduction

C++

C++ : quelques versions (normalisées avec ISO)


C++98 (sortie en 1998) : templates
C++03 (sortie en 2003)
H I ©
EL
OU
C++11 (sortie en 2011) : mot-clé auto, expression Lambda...
M
f E L Lambda génériques, attribut
C++14 (sortie en 2014) : fonctions
chr
[deprecated]... e
A
© en 2017) : quelques nouveaux attributs, initialisation
C++17 (sortie
dans if et switch...
C++20 (sortie en 2020) : opérateur de comparaison <=>...

H & H: Research and Training 6 / 24


Introduction

C++

Comment ça fonctionne ?

On écrit un programme dans un fichier .cpp


H I ©
Ensuite, le compilateur génère un fichier U Edu
.o
L même nom
(contenant du bytecode)
L MO
r e E
lesf librairies référencées et génère un fichier
ch
Puis le linker charge
.exe
© A
On lance le fichier .exe

H & H: Research and Training 7 / 24


Introduction

C++

main.cpp
compiler
main.exe
H ©
exécuter
I résultat

U EL
O
f E LM
ch r e
g++ main.cpp -o main ./main

©A g++ main.cpp -o main && ./main

H & H: Research and Training 8 / 24


Introduction

C++

main.cpp
compiler
main.exe
H ©
exécuter
I résultat

U EL
O
f E LM
ch r e
g++ main.cpp -o main ./main

©A g++ main.cpp -o main && ./main

H & H: Research and Training 8 / 24


Introduction

C++

main.cpp
compiler
main.exe
H ©
exécuter
I résultat

U EL
O
f E LM
ch r e
g++ main.cpp -o main ./main

©A g++ main.cpp -o main && ./main

H & H: Research and Training 8 / 24


Introduction

C++

main.cpp
compiler
main.exe
H ©
exécuter
I résultat

U EL
O
f E LM
ch r e
g++ main.cpp -o main ./main

©A g++ main.cpp -o main && ./main

H & H: Research and Training 8 / 24


Introduction

C++

main.cpp
compiler
main.exe
H ©
exécuter
I résultat

U EL
O
f E LM
ch r e
g++ main.cpp -o main ./main

©A g++ main.cpp -o main && ./main

H & H: Research and Training 8 / 24


Introduction

C++

main.cpp
compiler
main.exe
H ©
exécuter
I résultat

U EL
O
f E LM
ch r e
g++ main.cpp -o main ./main

©A g++ main.cpp -o main && ./main

H & H: Research and Training 8 / 24


Installations

De quoi on a besoin (le minimum) ?

Un éditeur de texte (Bloc-notes, Notepad++, Sublime Text, Atom...)

Un compilateur

GCC (GNU Compiler Collection) : une famille de compilateur pour les

H I ©
langages C, C++, Java, Fortran..., multi-plateforme (pour Windows,
EL
Linux, Android) et utilisé par le noyau du système Unix
U
O
LM
gcc : pour C
g++ : pour C++
r e f E
ch
gcj : pour Java

©A
Clang : un compilateur pour les langages C, C++ et Objective-C,
multi-plateforme (pour Windows, Mac, Linux, Android, iOS)
¯
Sun Studio : un IDE (comprenant un compilateur) pour les langages C,
C++ et Fortran développé par Sun Microsystems, multi-plateforme (pour
Linux, Solaris)

H & H: Research and Training 9 / 24


Installations Compilateur

Introduction

Pour installer GCC (GNU Compiler Collection)

Aller à https://www.msys2.org/
Suivre les différentes étapes d’installation
H I ©
U EL
Ajouter une variable de chemin pour le bin de Mingw-w64 (défini
O
généralement dans C:\msys64.
f E LM
ch r e
©A

H & H: Research and Training 10 / 24


Installations Compilateur

Introduction

Pour installer GCC (GNU Compiler Collection)

Aller à https://www.msys2.org/
Suivre les différentes étapes d’installation
H I ©
U EL
Ajouter une variable de chemin pour le bin de Mingw-w64 (défini
O
généralement dans C:\msys64.
f E LM
ch r e
©A
Pour vérifier la version de g++ installé, exécutez
g++ --version

H & H: Research and Training 10 / 24


Installations Compilateur

C++

g++ version C++ Standard

11 C++17
H I ©
U EL
M OC++14
10
f E L
ch r e
©A 6 C++14

5 C++98

H & H: Research and Training 11 / 24


Installations IDE

C++

On peut aussi utiliser un IDE (Environnement de développement intégré)

pour éviter d’utiliser la console et les commandes

pour avoir
H I ©
UEL
l’auto-compilation O
la coloration syntaxique
f E LM
ch
l’auto-complétionr e
©A
l’indentation automatique...
...

pour une meilleure structuration du projet

H & H: Research and Training 12 / 24


Installations IDE

C++

Exemple d’IDE pour C++

Visual Studio Code : open-source, multi-plateforme (Windows, Mac, Linux)

H I ©
CodeBlocks : open-source, multi-plateforme (Windows, Mac, Linux) et écrit en
C++ utilisant par défaut GNU Gcc Compiler et supportant plusieurs autres

UEL
MO
Visual C++ : disponible en version gratuite Visual C++ Express pour Windows

f E L
Eclipse avec le plugin CDT6 (open-source)

ch r e
A
Netbeans (open-source)
©
XCode : pour Mac

DevC++ : pour Windows

...

H & H: Research and Training 13 / 24


Installations IDE

C++

Visual Studio Code (ou VSC) , pourquoi ?


Gratuit.
H I ©
EL
Extensible selon le langage de programmation.
U
L MO
r e f E
A ch
©

H & H: Research and Training 14 / 24


Installations IDE

C++

Visual Studio Code (ou VSC) , pourquoi ?


Gratuit.
H I ©
EL
Extensible selon le langage de programmation.
U
L MO
r e f E
A ch
©
VSC : téléchargement
code.visualstudio.com/download

H & H: Research and Training 14 / 24


Installations IDE

C++

Quelques raccourcis pour VSC


Pour activer la sauvegarde automatique : aller dans File >
AutoSave
H I ©
Pour indenter son code : Alt
U Shift Ef L
M O
E
Pour commenter/décommenter
f L : ctrl :
Pour faire une c h re multiple : Ctrl f2
© A sélection

Pour dupliquer une sélection : Ctrl d

Pour consulter la liste des raccourcis : Ctrl k + Ctrl s

H & H: Research and Training 15 / 24


Installations IDE

C++

H I ©
terminal, exécutez UEL
En cas de problème d’affichage de lettres accentués dans le
O
chcp 65001
f E LM
ch r e
©A

H & H: Research and Training 16 / 24


Installations IDE

C++

Quelques extensions VSC pour C++


H I ©
EL
C/C++ : pour l’intelliSense
M OU
f E
Code Runner : pour l’ajout L bouton de compilation
d’un
chr e
© A

H & H: Research and Training 17 / 24


Avant de commencer Règles de nommage

C++

Règles de nommage en C++

Pour les classes et les fichiers : Pascal case


H I ©
etL
Pour les variables, les objets, les fonctionsE les méthodes :
U
Camel case
L MO
r e f E
A ch
©

H & H: Research and Training 18 / 24


Avant de commencer Règles de nommage

C++

Règles de nommage en C++

Pour les classes et les fichiers : Pascal case


H I ©
etL
Pour les variables, les objets, les fonctionsE les méthodes :
U
Camel case
L MO
r e f E
Pour plus de©
Ach
détails
https://wprock.fr/blog/conventions-nommage-programmation/

H & H: Research and Training 18 / 24


Avant de commencer Instructions

C++

Instructions
H I ©
Chaque instruction se termine par ; U EL
M O
E L instructions sur une même ligne
Il est possible d’écrire plusieurs
f
(mais ce n’est pas r
c h e bonne pratique)
une

©A

H & H: Research and Training 19 / 24


Avant de commencer STL

C++
STL : Standard Template Library

{ classes génériques }
Fournissant des structures de données, des fonctions et des
algorithmes
H I ©
Contenant 4 composants : U EL
M O
recherche, de tri...ef E
L de certains algorithmes de
Algorithms : implémentation
r de structure de données comme liste,
c: hensemble
©
pile...
A
Containers

Functions : ensemble de fonctions génériques qui s’adaptent avec


les différentes structure de données existantes
Iterators : objet permettant de parcourir une séquence de données

H & H: Research and Training 20 / 24


Premier projet C++

C++

Démarche
H I ©
EL
Créez un répertoire CoursCpp dans votre espace de travail
U
O
choisissez CoursCppf E LM
Lancez VSC et allez dans File > Open Folder... et

r e
chcréez un fichier main.cpp
A
Dans CoursCpp,
©

H & H: Research and Training 21 / 24


Premier projet C++

C++

Ajoutons le code suivant dans main.cpp


#include <iostream>

H I ©
using namespace std;
UEL
O
int main()
f E LM
{
ch r e
©A
cout << "Hello world!" << endl;
return 0;
}

H & H: Research and Training 22 / 24


Premier projet C++

C++
Explication

#include <iostream> : la librairie permettant de gérer les flux entrant/sortant


(input/output).

using namespace std : un espace de nom est un genre de dossier abstrait (inexistant

I ©
physiquement). Ici, on utilise l’espace de nom standard où toutes les librairies standards
H
EL
sont définies (STL : Standard Template Library).

O U
int main() : le point d’entrée vers notre projet (programme).

E LM
cout << msg << : permet d’afficher le message situé entre << : cette opération est
f
r e
définie dans la librairie <iostream> de namaspace std.
ch
©A
endl : permet de forcer un retour à la ligne.

return 0 :

main doit retourner 0 pour une sortie sans erreur, autre valeur sinon.

Si aucun return n’est présent, le compilateur considère que la valeur de retour est
par défaut 0.

H & H: Research and Training 23 / 24


Premier projet C++

C++

Comment exécuter le programme ? (voir le résultat)

Soit en faisant clic droit et ensuite choisir Run Code


Soit en cliquant sur ▷ en haut à droite
H I ©
EL+ N
Soit avec le raccourci clavier Ctrl +UAlt

L MO
r e f E
A ch
©

H & H: Research and Training 24 / 24


Premier projet C++

C++

Comment exécuter le programme ? (voir le résultat)

Soit en faisant clic droit et ensuite choisir Run Code


Soit en cliquant sur ▷ en haut à droite
H I ©
EL+ N
Soit avec le raccourci clavier Ctrl +UAlt

L MO
r e f E
A ch
Constats ©
Un fichier main.cpp généré.
Hello world ! s’affiche dans la console de VSC.

H & H: Research and Training 24 / 24

Vous aimerez peut-être aussi