Vous êtes sur la page 1sur 44

Plan du cours

• Histoire • Les types composés


• Structure d’un programme C++ • Les pointeurs et les
• Les espaces de noms gestion dynamique
• Les entrées et les sorties aves de la mémoire
« iostream » et les instructions • Les fonctions
et les variables • Les classes en C++
• Les manipulateurs de flux

Langage C++ 1/40


Histoire

Créateur du Langage C Créateur du C++


Dennis Ritchie Bjarne Stroustrup

C Cwith classes C++


Naissance Naissance 1983
1972 1980

Langage C++ 2/40


Structure d’un programme C++

Langage C++ 3/40


Les espaces de noms

Un namespace ou espace de nom est une zone de déclaration


d’identificateurs permettant au compilateur de résoudre les
conflits de noms .

Langage C++ 3/40


Création de composantes avec Namespaces :

namespace Nom_namespase {
// Composantes de l’espace de noms
}

Utilisation de composantes référant à de Namespaces :


Nom_namespace :: Nom_composante

Langage C++ Les espaces de noms 4/40


Un namespace peut être imbriqué à l’intérieur d’un autre :
namespace namespace 1 :: namespace 2

Utilisation d’une composante sans la précéder par le nom d’un namespace

using namespace Nom_namespace ;

Langage C++ Les espaces de noms 5/40


Les entrées et les sorties avec « iostream »
Les bibliothèques standards du langage C++ utilisent un même namespace
pour toutes leurs composantes : std.

L’instruction « cin »permettant de faire une lecture au clavier.


cin >> Nom_variable;

Langage C++ 6/40


L’instruction « cout »permettant de faire un affichage sur écran (Sortie standard).
cout << "texte"; cout << Nom-variable ;
Affichage de texte sur Affichage du contenu d’une
la sortie standard variable sur la sortie standard

L’instruction « cerr »permettant d’écrire vers la sortie d’erreur.


cerr << " Message d’erreur " ;

Langage C++ Les entrées et les sorties aves « iostream » 7/40


Instructions conditionnelles :
if …else switch

switch( expression ) {
if ( Conditions )
case valeur 1 : instructions ; break ;
{

instruction1;
} case valeur n : instructions ; break ;
else{ default :
instruction2 ; Instructions;
}
}

Langage C++ Instructions 8/40


Les boucles :
while do…while for

while(Conditions) do{ for (Départ de compteur ;Fin de compteur ;Le pas)


{ Bloc d’instructions ; {
Bloc d’instructions; }while (Conditions); Bloc d’instructions ;
} }

Langage C++ Instructions 9/40


Les variables :

Une variable est caractérisée par :


• son nom : mot composé de lettres ou chiffres,
commençant par une lettre .
• son type précisant la nature de cette variable.
• sa valeur qui peut être modifiée à tout instant.

Durant l’exécution d’un programme, à toute variable est attachée une


adresse : nombre entier qui indique ,où se trouve stockée en mémoire
la valeur de cette variable.

Langage C++ 10/40


vide « void » : Aucune variable ne peut être de ce type.

entiers : par taille-mémoire croissante :


• short, stocké sur 2 octets (16 bits); valeurs: de −215 à 215 − 1 (-32768 à 32767).
• long, stocké sur 4 octets (32 bits); valeurs: de −231 à 231 − 1 (-2147483648 à 2147483647).
• int, coïncide avec short ou long, selon l’installation.

réels : par taille-mémoire croissante :


• float, stocké sur 4 octets (32 bits) ; précision : environ 7 chiffres .
• double, stocké sur 8 octets (64 bits) ; précision : environ 15 chiffres.
• long double, stocké sur 10 octets (80 bits) ; précision : environ 18 chiffres.

Caractères « char » : stocké sur un octet (8 bits) ; valeurs: de −27 à 27 − 1 (-128 à 127) .

Langage C++ Les variables 11/40


Les manipulateurs de flux :

Dans ce paragraphe, nous allons introduire quelques fonctions servant à définir


les options de formatage et pour effectuer des opérations de base sur les flux.

Langage C++ 12/40


Fonction Définition Bibliothèque

oct Formater l'affichage d'un nombre en Octal < iostream >

hex Formater l'affichage d'un nombre en Hexadecimal < iostream >

dec Formater l'affichage d'un nombre en Décimal < iostream >

setbase (b) fixe la base de numération 𝑏 ∈ 8,10,16 < iomanip >

showbase Affichage de la base d'un nombre (0octal ,0xHexadecimal) < iostream >

noshowbase Arrêter l'affichage de la base d'un nombre < iostream >

Langage C++ Les manipulateurs de flux 13/40


Fonction Définition Bibliothèque
scientific Affichage avec notation en virgule flottante < iostream >

fixed Affichage avec notation en virgule fixe < iostream >

showpoint Affichage sans le séparateur de virgule < iostream >

noshwpoint Affichage avec le séparateur de virgule < iostream >

setprecision(p) fixe le nombre de chiffres affichés 𝑝 ∈ ℕ < iomanip >

uppercase Affichage en majuscules < iostream >

nouppercase Affichage en minuscules < iostream >

Langage C++ Les manipulateurs de flux 14/40


Fonction Définition Bibliothèque
setw(n) fixe la largeur de l’affichage n ∈ ℕ < iomanip >

setfill(‘c’) fixe le caractère de remplissage < iomanip >

left Complétez l'espace à droite < iostream >

right Complétez l'espace à gauche < iostream >

boolalpha Afficher false ou true < iostream >

noboolalpha Afficher 0 ou 1 < iostream >

Langage C++ Les manipulateurs de flux 15/40


Les types composés :

Les chaines de caractères

Les Tableaux Les structures

Langage C++ 16/40


Les tableaux:

Les tableaux sont une suite de variables de même


type , situées dans un espace contigu en mémoire.

Déclaration : L’initialisation :
 Les tableaux à une dimension :  Les tableaux à une dimension :
Type Nom [ La taille ]; T[n]={𝑥0 , 𝑥1 , … , 𝑥𝑛−1 };
 Les tableaux à 2 dimensions :  Les tableaux à 2 dimension :
Type Nom [𝑁1 ] [𝑁2 ]; M[𝑛1 ][𝑛2 ]={{𝑥0,0 , … , 𝑥0,𝑛2 −1 }, …};

Langage C++ Les tableaux: 17/40


Les chaines de caractères :

Une chaine de caractère est un simple tableau unidim-


ensionnel composé de plusieurs éléments de type char.

Déclaration : L’initialisation et exemple :


char Nom [Nombre de caractères plus un]; char chaine [ 10 ]={bienvenue} ;

b i e n v e n u e \0

Plusieurs fonctions fournissent des traitements permettant de facilement gérer


les chaines de caractères.
Langage C++ Les chaines de caractères : 18/40
Fonction Syntaxe Définition Bibliothèque
récupérer la taille d'une
strlen int taille = strlen(chaine); < cstring >
chaine de caractères
copier une chaine de
strcpy strcpy( destination , source ); < cstring >
caractères dans une autre
copier les "n" premiers
strncpy strncpy( destination , source, n ); < cstring >
caractères
Concaténer deux chaines
strcat strcat( chaine_1 , chaine_2 ); < cstring >
de caractères
Concaténer les "n"
strncat strncat( chaine_1 , chaine_2 , n ); premiers caractères de < cstring >
chaine_2 à chaine_1

Langage C++ Les chaines de caractères : 19/40


Fonction Syntaxe Définition Bibliothèque
Comparer deux chaine de
strcmp int x= srtcmp ( chaine_1 , chaine_2 ); < cstring >
caractères
Comparer les "n" premiers
strncmp int x= srtncmp ( chaine_1 , chaine_2 , n ); caractères de deux chaine < cstring >
de caractères
Comparer deux chaine de
stricmp int x= srticmp ( chaine_1 , chaine_2 ); caractères (A=a < cstring >
,B=b,…,Z=z)
Comparer les « n" premiers
strnicmp int x= srtnicmp ( chaine_1 , chaine_2 , n ); caractères de deux chaine < cstring >
de caractères(A=a ,…,Z=z)

Langage C++ Les chaines de caractères : 20/40


Fonction Syntaxe Définition Bibliothèque
Lecture depuis l'entrée
scanf scanf("format", &liste variables); <cstdio>
standard
Lecture d'une chaine de
gets gets(chaine); <cstdio>
caractères
Décodage d'une chaine de
sscanf sscanf(chaine,"format",&liste variables); caractères suivant un <cstdio>
format
Écriture sur la sortie
printf printf("format",liste_variables); <cstdio>
standard
Écriture d'une chaine de
puts puts(chaine); <cstdio>
caractères
Enregistrement d'une
sprintf sprintf(chaine,"format",liste_variables); chaine de caractères <cstdio>
formatée dans une variable
Langage C++ Les chaines de caractères : 21/40
Fonction Syntaxe Définition Bibliothèque
Extraire un entier de type int
atoi int entier = atoi (chaine); <cstdlib>
depuis une chaine de caractères
Extraire un entier de type long
atol long entier = atol (chaine); <cstdlib>
depuis une chaine de caractères
Extraire un réel de type float
atof float reel = atof (chaine); <cstdlib>
depuis une chaine de caractères

Langage C++ Les chaines de caractères : 22/40


Les structures :

Une structure est un assemblage de variables qui peuvent


avoir différents types. Les structures permettent de créer des
nouveaux types.

Création : Déclaration :
struct Nom_structure { struct Nom_structure Nom_variable ;
type Nom_variable_1 ;
type Nom_variable_2 ; Initialisation :
Champs
… struct Nom_structure Nom_variable ={val_champ1, … , val_champN};
type Nom_variable_N ;
}; Accès aux champs :
Nom_variable . Nom_champ ;
Langage C++ 23/40
Les pointeurs :

Un pointeur est un variable qui contient l’adresse


d’une autre variable.

Langage C++ 24/40


Un pointeur est une variable qui doit être définie en
précisant le type de variable pointée.

Type de base : Type composé :


 Entier  Tableaux
 Réel  Structures
 Caractère  Chaines de caractères

Déclaration : Type * Nom_Pointeur ;


Initialisation : Nom_Pointeur = &Nom_variable_pointée ;
Lecture : Variable = *Nom_pointeur ;
Modification : *Nom_pointeur = Valeur ;

Langage C++ Les pointeurs 25/40


Les pointeurs et les chaines de caractères :

Les pointeurs permettent de gérer les chaines de caractères de manière plus flexible
contrairement aux tableaux.

Déclaration : char *chaine ;


Initialisation : char *chaine = " texte " ;
Modification : Chaine_1 = chaine_2 ;

Langage C++ Les pointeurs 29/40


Les fonctions :
Définition :
Une fonction est un sous-programme.

Langage C++ 27/40


La syntaxe
Type_Retour Nom_Fonction (Type_Paramètre_1 Nom_Paramètre_1 , … )
{
// Bloc d’instructions ;
}
• void Si : ( Type Retour ≠ void ) alors ( Bloc d’instructions + return résultat )
• Int
• Short
• Long
• Float
• Double
• long double
• ……..

Langage C++ Les fonctions 28/40


Appel récursif d’une fonction :
La récursivité est une manière simple et élégante de résoudre certains problèmes
algorithmiques, notamment en mathématique .

Type_Retour Nom_Fonction (Type_Paramètre_1 Nom_Paramètre_1 , … )


{
// Traitements … ;
Nom_Fonction ( paramètre_1 , … ) ;
}

Langage C++ Les fonctions 29/40


 Il y a 3 méthode pour passer des variables en paramètre dans une fonction :
Déclaration : Type Fonction ( type 𝑃1 , type 𝑃2 , … )
1. Passage par valeur :
L’appel : Fonction (𝑉1 , 𝑉2 , … ) ;
Déclaration : Type Fonction ( type *𝑃1 , type *𝑃2 , … )
2. Passage par adresse :
L’appel : Fonction (&𝑉1 , &𝑉2 , … ) ;
Déclaration : Type Fonction ( type &𝑃1 , type &𝑃2 , … )
3. Passage par référence :
L’appel : Fonction (𝑉1 , 𝑉2 , … ) ;

 Arguments par défaut :


Type_Retour Nom_Fonction (Type 𝑷𝟏 , Type 𝑷𝟐 =𝑽𝟏 , … , Type 𝑷𝒏 =𝑽𝒏 )
{
// Traitements … ;
}

Langage C++ Les fonctions 30/40


Les gestion dynamique de la mémoire :
NEW : Opérateur d’allocation de mémoire.
 Nouvel emplacement : Pointeur = new Type;
Type de l’emplacement à réserver
 Plusieurs nouveaux emplacements :
Pointeur = new Type [ Nombre éléments ];

DELETE : Opérateur de libération.

delete pointeur ; ou delete [ ] pointeur ;

Langage C++ Les pointeurs 31/40


Les classes en C++ :
Définition :
un objet représente un concept une idée ou toute entité du monde réel

Définition :
Une classe est la description d'une famille d'objets ayant même
structure et même comportement.
Une classe regroupe un ensemble d'attributs ou membres, répartis en un
ensemble de données et un ensemble de fonctions, appelées méthodes.

Langage C++ 32/40


Prototype de la classe :
• Par défaut. class Nom_classe{
• Avec arguments.
• Par copie. private : this->Membre
Nom_instance . Nom_membre
• Par déplacement. Attributs ;
public :
Méthodes ;
 La déclaration d’un
};
 méthode de type
 friend dans la classe :

 friend Type Nom_méthode (…) ;

Langage C++ Les classes en C++ 33/40


Déclaration d’une méthode :
Pour déclarer une méthode n'est pas de type friend il faudrait précéder le protothype
de la méthode par le nom de la classe.
Type Nom_classe :: Nom_méthode(…)
{
Instructions ;
}

Déclaration d’une méthode de type friend :


Type Nom_méthode(…)
{
Instructions ;
}

Langage C++ Les classes en C++ 34/40


Surcharge des opérateurs :

Objet_1 O Objet_2 cout<<Objet; cin>>Objet;


Opérateur
Il y a deux manières
pour surcharger les
Interne : opérateurs Externe :
Opérateur considéré Déclaration de
comme méthode de l'opérateur comme
la classe sur laquelle ami (de type friend) de
il s'applique. la classe.

Langage C++ Les classes en C++ 35/40


Opérateurs ⟺ O
+ - / % = += -= %= /= == < > != -- ++
Suffixer
Interne : Externe :
Type_Retour operator O ( ) ; friend Type_Retour operator O (NOM_CLASSE &NOM_INSTANCE) ;
Type_Retour & operator O ( ) ; friend Type_Retour & operator O (NOM_CLASSE &NOM_INSTANCE) ;
Type_Retour & operator O ( int f ) ; friend Type_Retour operator O (NOM_CLASSE &NOM_INSTANCE, int f ) ;
Type_Retour operator O friend Type_Retour operator O (NOM_CLASSE & INSTANCE1 ,
(NOM_CLASSE &NOM_INSTANCE) ; NOM_CLASSE & INSTANCE2 ) ;
bool operator O (NOM_CLASSE friend bool operator O (NOM_CLASSE & INSTANCE1 , NOM_CLASSE
&NOM_INSTANCE) ; & INSTANCE2 ) ;
friend ostream& operator << (ostream & flux , Nom_classe & instance ) ;
friend istream& operator >> (istream & flux , Nom_classe & instance ) ;

Si l’opération induit une modification des données membres de l’objet en entrée, alors utilisez
une surcharge interne , Sinon utilisez une surcharge externe(friend)
Langage C++ Les classes en C++ 36/40
L’héritage :

Nom
Prénom
Age

Personnes
Personne

Nom Nom
Prénom Prénom
Age Age
CNE ( Code national de l'étudiant ) Salaire

Etudiant Salarié

Langage C++ Les classes en C++ 37/40


L’héritage :
L'héritage permet de donner à une classe toutes les caractéristiques d'une ou de plusieurs autres classes.
Les classes dont une classe hérite sont appelées classes mères ou classes de base. La classe elle-même est
appelée classe fille ou classe dérivée.

Utilisation du mot class Mère{ class Fille : public Mère{


clé : protected, protected : private :
pour permet de
Attributs ; Attributs ;
créer des membres
privés qui sont public : public :
accessibles par les Méthodes ; Méthodes ;
classes filles }; };

Langage C++ Les classes en C++ 37/40


Une classe fille peut définir une méthode qui possède exactement la même
signature qu'une méthode se trouvant dans sa classe mère.

Fille :: méthode_fille {
Fille :: méthode_fille : méthode_mère {
Instructions;
Instructions; Mère :: méthode_mère ;

} }

Langage C++ Les classes en C++ 38/40


Le polymorphisme :

Le C++ propose une solution en déclarant les méthodes


concernée comme étant virtuelles Il faut précéder la
signature des méthodes virtuelles en utilisant le mot clé
virtual.

Langage C++ Les classes en C++ 39/40


Les classes abstraites :
En C++, une Classe abstraite est une classe qui possède au moins une
fonction membre virtuelle pure.

virtual méthode_Mère ( … ) = 0 ;

Il est impossible de créer des objets (instances) depuis des classes abstraites.

Langage C++ Les classes en C++ 40/40


Attaiki Amine

Vous aimerez peut-être aussi