Le langage C++ et la programmation orientée
objets
Prof. Mustapha Ameur
ENSA Marrakech
22 octobre 2020
Bibliographie et webographie
Introduction
Le langage C++
Introduction au C++
Classes
Héritage
Polymorphisme
Gestion des exceptions
Bibliothèque STL ( Standard Template Library)
et ++ . . .
Prof. Mustapha Ameur C++ & POO
Bibliographie et webographie
Introduction
Le langage C++
Bibliographie
Prof. Mustapha Ameur C++ & POO
Bibliographie et webographie
Introduction
Le langage C++
Liens Web : Google est votre ami
[Link]
[Link]
cours gratuit en ligne en anglais
[Link]
[Link]
liste de cours en ligne
[Link]
Prof. Mustapha Ameur C++ & POO
Bibliographie et webographie
Introduction
Le langage C++
Un peu d’histoire
Le langage C++ a été conçu par Bjarne Stroustrup (Bell Labs),
aprés plusieurs versions, il aboutit en 1983 à une version stable. Le
C++ se base essentiellement sur 2 langages :
Simula 67 (1967) dont il hérite la partie programmation
orientée objets,
Langage C (1972, Bell Labs)
Prof. Mustapha Ameur C++ & POO
Bibliographie et webographie
Introduction
Le langage C++
Un peu d’histoire (suite)
Le langage C++ continu d’être amélioré, plusieurs normes ISO du
C++ ont été élaborée apportant des nouveautés au C++ et en
supprimant ou dépréciant certaines fonctionnalités :
C++11 apport des pointeurs intelligents (smart pointer),
résolution du problème du pointeur NULL par nulptr,. . .
C++14 des changements mineurs par rapport C++11,
C++17 plus de 100 changements, spécifications des
exceptions pour les fonctions dépréciées, pour plus de détails
voir le lien suivant avec des exemples : [Link]
tvaneerd/cpp17_in_TTs/blob/master/ALL_IN_ONE.md
C++20 à voir ? ? ? ?
Prof. Mustapha Ameur C++ & POO
Bibliographie et webographie
Introduction
Le langage C++
C++ versus C
Le langage C++ est une extension du langage C notamment en le
dotant de la programmation orientée objets. Cependant il apporte
plusieurs spécificités et changements par rapport au C :
Les commentaires,
L’emplacement libre des déclarations des variables,
Les arguments ou paramètres des fonctions par défaut,
La surcharge (surdéfinition) des fonctions,
Les opérateurs new et delete pour l’allocation et la libération
mémoire,
Les fonctions en ligne (inline),
Les références,
...
Prof. Mustapha Ameur C++ & POO
Bibliographie et webographie
Introduction
Le langage C++
C++ versus C (suite)
Remarques :
- Les programmes écrits en C++ ont l’extension .cpp, ex.
"[Link]".
- Un programme écrit entièrement en langage C reste compilable
avec un compilateur C++ avec l’extension .cpp.
=⇒ Le C++ contient le C.
Prof. Mustapha Ameur C++ & POO
Bibliographie et webographie
Introduction
Le langage C++
Généralités sur le C++
Le langage C++ est compilé par opposition aux langages
interprétés comme Python et Java. Il faut donc passer par une
phase de compilation pour traduire le code C++ en code
binaire ( langage machine). ce qui le rend plus rapide à
l’exécution.
le langage C++ est un langage de haut niveau,
le langage C++ est impératif :les instructions se suivent dans
un ordre précis et transmises au processeur de la machine dans
cet ordre. Impératif et objet ne se contredisent pas, C++ est
un langage multi-paradigmes. Il respecte à la fois le paradigme
objet et impératif.
Le langage C++ est trés utilisé dans plusieurs projets, de part
sa rigueur, sa robustesse et ses performances.
Prof. Mustapha Ameur C++ & POO
Bibliographie et webographie
Introduction
Le langage C++
Compilation et exécution d’un programme C++
Fichier : [Link]
# include < iostream >
using namespace std ;
int main (){
cout < < " salam ␣ les ␣ futurs ␣ ingenieurs " << endl ;
return 0;
}
Compilation et exécution sous Unix/Linux et Mac OS
Prof. Mustapha Ameur C++ & POO
Bibliographie et webographie
Introduction
Le langage C++
Compilation et exécution d’un programme C++ (suite)
Avec un IDE : DevCpp ou Code : :Blocks
Prof. Mustapha Ameur C++ & POO
Bibliographie et webographie
Introduction
Le langage C++
Structure d’un programme en C++
Type d’instructions
On peut faire du C++ procédurale comme en langage C (ie : les
programmes fonctionnent avec des fonctions).
déclaration des variables,
assignations,
fonctions,
contrôles.
Prof. Mustapha Ameur C++ & POO
Bibliographie et webographie
Introduction
Le langage C++
Structure d’un programme en C++ (suite)
La fonction principale
la fonction main() est le point d’entrée de tout programme C++.
Elle peut être définie de 2 manières :
Pour les programmes sans paramètres : int main() ....
Pour les programmes avec paramètres :
int main( int argc, char* argv[])...
où argc : le nombre de paramètres
et argv[] : tableau de paramètres (utilisée seulement en
compilation en ligne de commande).
Prof. Mustapha Ameur C++ & POO
Bibliographie et webographie
Introduction
Le langage C++
Structure d’un programme en C++ (suite)
[Link]
# include < iostream >
using namespace std ;
int main ( int argc , char * argv []){
cout < < " le ␣ nom ␣ de ␣ l ␣ executable ␣ est : " ;
cout < < argv [0] < < endl ;
cout < < " le ␣ premier ␣ parametre ␣ passe ␣ est : " ;
cout < < argv [1] < < endl ;
return 0;
}
Prof. Mustapha Ameur C++ & POO
Bibliographie et webographie
Introduction
Le langage C++
Structure d’un programme en C++ (suite)
Prof. Mustapha Ameur C++ & POO
Bibliographie et webographie
Introduction
Le langage C++
Les variables
Pour déclarer une variable, on fait précéder son nom par son type.
En C++, il existe plusieurs types de bases :
char caractère codé sur 1 octet
short le type entier codé sur 1 octet,
int le type entier codé sur 4 octets,
long le type entier codé sur 8 octets,
float le type réel codé sur 4 octets,
double ou long double le type réel avec double précision codé
sur 8 octets,
bool le type booléen codé sur 1 octet qui prend l’une des
valeurs : true ou false (nouveauté du C++).
On peut faire précéder chaque type par le préfixe unsigned, ce qui
force les variables à prendre des valeurs uniquement positives.
Prof. Mustapha Ameur C++ & POO
Bibliographie et webographie
Introduction
Le langage C++
Les variables (suite)
le type d’une variable détermine :
La taille mémoire qu’occupe cette variable, qu’on peut obtenir
avec (sizeof()).
Les opérations légales qu’on peut faire avec cette variable.
Les bornes ; la valeur Max et Min que peut prendre cette
variable.
Exemple :
Pour le type short codé sur 1 octet, il prendra les valeurs entre
-128 et 127.
Prof. Mustapha Ameur C++ & POO
Bibliographie et webographie
Introduction
Le langage C++
Les variables (suite)
Déclaration et initialisation :
bool var_bool = true ; // variable boleenne
int i = 0; // entier
long j = 123456789; // entier long
float f = 3.1; // reel
// reel a double precision
double pi = 3.1 4 1 59 2 65 3 58 9 7 93 2 38 4 6 26 4 3;
char c = " a " ; // caractere
// Initialisation a la mode objet
int i (0) ;
long l (123456789);
Prof. Mustapha Ameur C++ & POO
Bibliographie et webographie
Introduction
Le langage C++
Les variables (suite)
Les Constantes :
En C++, on peut déclarer des variables constantes avec le
qualificatif const de la manière suivante :
const type_var var = cte ;
Une expression déclarée avec const a une portée limitée au fichier
source qui la contient.
Exemple :
const int N =5;
// convention une conste est ecrite en majuscule
int t [ N ];
// en C il fallait ecrire # define N 5
Prof. Mustapha Ameur C++ & POO
Bibliographie et webographie
Introduction
Le langage C++
Les entrées/sorties
Entrées/sorties sont fournies à travers la librairie < iostream>
Sortie = Affichage sur l’écran
cout<<expr1 << . . .<<exprn ;
Instruction affichant expr1 puis expr2, etc. . . ; qui peuvent être
des variables ou des chaînes de caractères.
cout : "flot de sortie" associé à la sortie standard (stdout) càd
l’écran,
<< : opérateur binaire associatif à gauche, de première
opérande cout et de 2ème opérande l’expression à afficher,
<< : opérateur surchargé (ou sur-défini) =⇒ utilisé aussi bien
pour les chaînes de caractères, que les entiers, les réels . . ..
Prof. Mustapha Ameur C++ & POO
Bibliographie et webographie
Introduction
Le langage C++
Les entrées/sorties (suite)
Exemple :
# include < iostream > // pour cout et cin
using namespace std ;
int main ( ){
int a =9;
cout < < " Bonjour ␣ " <<a < < " ␣ fois " << endl ;
cout < < " une ␣ autre ␣ ligne ␣ car ␣ j ’ ai ␣ utilise ␣ endl " ;
return 0;
}
Prof. Mustapha Ameur C++ & POO
Bibliographie et webographie
Introduction
Le langage C++
Les entrées/sorties (suite)
Entrée = Saisie au clavier
cin>>var1 >> . . .>>varn ;
Instruction affectant aux variables var1 puis var2, etc. . . ; les
valeurs lues au clavier.
cin : "flot d’entrée" associé à l’entrée standard (stdin) càd le
clavier,
>> : opérateur similaire à << ,
le caractère espace est un délimiteur pour les chaînes de
caractères.
Attention !
Attention toute fois avec l’utilisation de cin et ses effets de bord, il
faut penser à vider le Buffer avec un cout«endl ; par exemple.
Prof. Mustapha Ameur C++ & POO
Bibliographie et webographie
Introduction
Le langage C++
Les entrées/sorties (suite)
Exemple :
# include < iostream > // pour cout et cin
using namespace std ;
int main ( ){
int a ; char * c ;
cin > > a ;
cin > > c ;
cout < <a < < " ␣ " <<c < < endl ;
return 0;
}
Prof. Mustapha Ameur C++ & POO
Bibliographie et webographie
Introduction
Le langage C++
Les structures de contrôles
Le C++, comme la plupart des autres langages de programmation,
offre la possibilité de contrôler le déroulement d’un programme afin
que ce dernier puisse prendre des décisions, pour cela on dispose de
ce qu’on appelle : les structures de contrôle.
Les conditions : permettent d’écrire dans un programme des
règles de déroulement : SI une certaine condition est vérifiée
ALORS faire ceci.
Les boucles : permettent de répéter un certain nombre de fois
un bloc d’instructions.
Remarque :
Le principe est le même pour tous les langages de programmation
(Python, Java, PHP, . . .).
Prof. Mustapha Ameur C++ & POO
Bibliographie et webographie
Introduction
Le langage C++
Les structures de contrôles (suite)
Condition 1
Les deux conditions principales sont if et switch :
if ( test )
{
/* code a executer si le test est vrai */
}
else {
/* code a executer si le test est faux */
}
Prof. Mustapha Ameur C++ & POO
Bibliographie et webographie
Introduction
Le langage C++
Les structures de contrôles (suite)
Condition 2
switch ( variable )
{
case valeur1 :
// bloc 1
break ;
case valeur2 :
// bloc 2
break ;
default :
// b l o c _ p a r _ d f a u t
break ;
}
Prof. Mustapha Ameur C++ & POO
Bibliographie et webographie
Introduction
Le langage C++
Les structures de contrôles (suite)
Les boucles
Il existe deux types de boucles :
La boucle for permet de réunir la déclaration, la condition et
l’incrémentation.
for ( int i = 0; i < 10; i ++)
{ // bloc a repeter
}
La boucle while :
int i = 0; // Autre version
while ( i < 10) do {
{ // bloc a repeter /* bloc a repeter */
i ++; } while ( expression )
}
Prof. Mustapha Ameur C++ & POO