0% ont trouvé ce document utile (0 vote)
47 vues80 pages

Introduction au langage C++ et OOP

Transféré par

oussamalight7
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PPTX, PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
47 vues80 pages

Introduction au langage C++ et OOP

Transféré par

oussamalight7
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PPTX, PDF, TXT ou lisez en ligne sur Scribd

Année Universitaire: 2023/2024

EMSI - Tanger

Généralités sur le langage C++

PROGRAMMATION ORIENTÉE OBJET


[Link] Bazza
Généralités sur le langage C++

Introduction

• C++ est un langage de programmation de forme libre à usage général, sensible à la casse, qui prend en
charge la programmation orientée objet, procédurale et générique.

• C++ est un langage de niveau intermédiaire, car il encapsule à la fois des fonctionnalités de langage de haut
et de bas niveau.

2
Généralités sur le langage C++

 Début en 1983.
 Amélioration du langage C:
 Abstraction de données
 Programmation orientée objet
 Programmation générique
 Très utilisé !
Généralités sur le langage C++
Généralités sur le langage C++

Introduction
• Le C++ est un langage permettant de maîtriser la représentation
bas niveau des données manipulées
• arithmétique de pointeurs,
• allocation manuelle de la mémoire…

• Tout en fournissant des outils permettant de construire des


structures de plus haut niveau comme:
• Références
• Exceptions
• Classes
• Templates…
5
Généralités sur le langage C++

Utilisation de C++
A l’aide du langage de programmation C++, nous pouvons développer différents types d’applications
sécurisées et robustes : Application de Bureau, Application client-serveur, Pilotes de périphérique,
Micrologiciel intégré, Programmation embarquée, etc.

7
Généralités sur le langage C++
Généralités sur le langage C++

9
Généralités sur le langage C++

Langages interprétés et langages compilés

Java
Langages
interprétés
Python
Langages de
programmation
C / C++
Langages compilés
Pascal /OCaml

10
Généralités sur le langage C++

Langages interprétés et langages compilés

11
Généralités sur le langage C++

C++ est un langage Compilé

• Dans ces langages, le code source (celui que vous écrivez)


est tout d'abord compilé, par un logiciel qu'on
appelle compilateur, en un code binaire qu'un humain ne
peut pas lire mais qui est très facile à lire pour un ordinateur.

• C'est alors directement le système d'exploitation qui va


utiliser le code binaire et les données d'entrée pour calculer
les données de sortie

12
Généralités sur le langage C++

Compilation d’un programme C++

13
14
Chapitre 2 : La programmation orientée objet en C++

10 Différences
C C++
1 Programmation de style procédural. Procédural et orienté objet.
2 Les données sont moins sécurisées en C. En C++, on peut utiliser des modificateurs
3 Ne prend pas en charge la surcharge de fonction. Supporte la surcharge de fonction.
4 N’utilise pas de fonctions dans la structure. Utilise des fonctions dans la structure.
5 ne prend pas en charge les variables de Supporte les variables de référence.
référence.
6 En C, scanf() et printf() En C,++ cin et cout
7 Surcharge d’opérateurs n’est supporté en C. Surcharge d’opérateurs est supporté en C++.
8 pas d’espace de noms "namespace" Support d’espace de noms
9 Gestion d’Exceptions difficile Gestion d’Exceptions facile
10 Pas d’héritage Avec héritage 15
Généralités sur le langage C++

Bibliothèques standard C++

La programmation C++ standard est divisée en trois parties importantes :

1. La bibliothèque principale comprend les types de données, les variables, etc.

2. La bibliothèque standard comprend l’ensemble des fonctions manipulant des chaînes de caractères,
des fichiers, etc.

3. La bibliothèque de modèles standard (STL) comprend l’ensemble des méthodes manipulant une
structure de données.

16
Généralités sur le langage C++

Types des données en C++

• Les types de base du langage C++ se répartissent en quatre catégories en fonction de la nature des
informations qu’ils permettent de représenter :

• nombres entiers (mot-clé int) ;

• nombres flottants (mot-clé float ou double) ;

• caractères (mot-clé char) ;

• valeurs booléennes, c’est-à-dire dont la valeur est soit vrai, soit faux (mot-clé bool).

17
Généralités sur le langage C++

Entrée/ sortie de base C++


• L’opération d’E/S C++ utilise le concept de flux. Le flux est la séquence d’octets ou le flux de données. Cela rend la
performance rapide.

• Un flux (ou stream) est une abstraction logicielle représentant un flot de données entre une source produisant de
l'information et une cible consommant cette information.

• Si des octets circulent de la mémoire principale vers un périphérique comme une imprimante, un écran d’affichage
ou une connexion réseau, etc., cela s’appelle une opération de sortie.

• Si des octets circulent depuis un périphérique comme une imprimante, un écran d’affichage ou une connexion
réseau, etc. vers la mémoire principale, cela s’appelle une opération d’entrée.

18
Généralités sur le langage C++

Fichiers d’en-tête de bibliothèque d’E/S

19
Généralités sur le langage C++

The Stream Class Hierarchy

20
Généralités sur le langage C++

C++ Premier Programme: [Link]

21
Généralités sur le langage C++

C++ Premier Programme: [Link]

On spécifie l’utilisation d’un espace


de noms

L’espace de noms std contient les


noms des fonctions et variables
standards du C++

22
Généralités sur le langage C++

C++ Premier Programme: [Link]

Cette ligne se nomme un « en-tête ».


Elle précise que ce qui sera décrit à sa
suite est en fait le programme
principal (main).

23
Généralités sur le langage C++

C++ Premier Programme: [Link]

Le programme (principal) proprement dit


vient à la suite de cet en-tête. Il est
délimité par les accolades « { » et « } ».

On dit que les instructions situées entre


ces accolades forment un « BLOC ».

Ainsi peut-on dire que la fonction main


est constituée d’un en-tête et d’un bloc ; il
en ira de même pour toute fonction C++.

24
Généralités sur le langage C++

C++ Premier Programme: [Link]

• cout est un « flot de sortie »


• << est un opérateur permettant
d’envoyer de l’information sur un flot
de sortie
• endl retour à la ligne

25
Généralités sur le langage C++

iomanip
• Avec la bibiothèque iomanip, on peut fixer le nombre de chiffres: setprecision()

26
Généralités sur le langage C++

iomanip
• Manipulation de la taille, setw (set width), dans cout

27
Généralités sur le langage C++

Flux de sortie standard (cout)


• Le cout est un objet prédéfini de la classe ostream.

• Il est connecté au périphérique de sortie standard, qui est généralement un écran d’affichage.

• Le cout est utilisé en conjonction avec l’opérateur d’insertion de flux («) pour afficher la sortie sur une
console.

28
Généralités sur le langage C++

Flux d’entré standard (cin)

• Le cin est un objet prédéfini de la classe istream.


• Il est connecté au périphérique d’entrée standard, qui est généralement un clavier.
• Le cin est utilisé en conjonction avec l’opérateur d’extraction de flux (») pour lire l’entrée à partir d’une
console.

29
Généralités sur le langage C++

Ligne de fin standard (endl)

• Le endl est un objet prédéfini de la classe ostream.


• Il est utilisé pour insérer une nouvelle ligne de caractères et vide le flux.

30
Généralités sur le langage C++

Pointer vs Reference
• La référence et le pointeur C++ semblent être similaires, mais il existe des différences entre eux.

• Une référence est une variable qui est un autre nom de la variable existante, tandis que le
pointeur est une variable qui stocke l’adresse d’une autre variable.

31
Généralités sur le langage C++

Pointer vs Reference

32
Généralités sur le langage C++

Reference

• Une référence est une variable qui est appelée un autre nom pour une variable déjà existante.
• La référence d’une variable est créée en stockant l’adresse d’une autre variable.
• Une variable de référence peut être considérée comme un pointeur constant avec indirection
automatique. Ici, l’indirection automatique signifie que le compilateur applique automatiquement
l’opérateur d’indirection (*).

33
Généralités sur le langage C++

34
Généralités sur le langage C++

Pointeur
• Un pointeur est une variable qui contient l’adresse d’une autre variable.
• Il peut être déréférencé à l’aide de l’opérateur (*) pour accéder à l’emplacement mémoire vers lequel
pointe le pointeur.

35
Généralités sur le langage C++

Manipulation des tableaux avec la notation classique type nom_Tab[taille]:

 Créer et remplir un tableau


 Afficher un tableau
 Recherche du Max et Min / leurs indices dans un tableau
 Trier un tableau
 Inverser un tableau
 Insérer un élément au milieu d’un tableau
 Supprimer un élément au milieu d’un tableau
Généralités sur le langage C++

Différence entre Pointeur et Référence

• Une variable de référence est un autre nom pour une variable déjà existante.
• Il est principalement utilisé dans le « passage par référence » où la variable de référence est transmise en
tant que paramètre à la fonction et la fonction à laquelle cette variable est transmise fonctionne sur la
copie originale de la variable.

37
Généralités sur le langage C++

Différence
entre
Pointeur
et
Référence

38
Généralités sur le langage C++

Problème des pointeurs classique:


Généralités sur le langage C++
Généralités sur le langage C++
Généralités sur le langage C++
Généralités sur le langage C++

Unique pointer:
- Détruit automatiquement après son exécution
- Ne peux pas être copié
- Peut-être transférer
- Courte durée de vie
Généralités sur le langage C++
Généralités sur le langage C++

Shared pointer:
- Détruite automatiquement après l’exécution de
tous les pointeurs convoqué
- Peux être copié
- Peut-être transférer
- Longue durée de vie
Généralités sur le langage C++
Généralités sur le langage C++

Weak pointer:
- il est détruit le moment shared pointer est
détruit
Généralités sur le langage C++
STL in C++
STL (Standard Template Library :
bibliothèque de modèles standard)

49
Généralités sur le langage C++

Les conteneurs STL


• Les conteneurs peuvent être décrits comme les objets qui contiennent les données du même type.

• Les conteneurs sont utilisés pour implémenter différentes structures de données, par exemple des tableaux,
des listes, des arbres, etc.

• Différents types de conteneurs :

• Conteneurs de séquence

• Conteneurs associatifs

• Conteneurs dérivés
50
Généralités sur le langage C++

Les vecteurs
• Un vecteur est une classe conteneur de séquences qui implémente un tableau dynamique, ce qui signifie
que la taille change automatiquement lors de l’ajout d’éléments.

• Un vecteur stocke les éléments dans des emplacements de mémoire contigus et alloue la mémoire selon les
besoins au moment de l’exécution.

• Un tableau suit une approche statique, cela signifie que sa taille ne peut pas être modifiée pendant
l’exécution tandis que le vecteur implémente un tableau signifie qu’il se redimensionne automatiquement
lors de l’ajout d’éléments.

51
Généralités sur le langage C++

Certaines fonctions associées au vecteur sont :


• begin() – Renvoie un itérateur pointant sur le premier élément du vecteur
• end() – Renvoie un itérateur pointant sur l’élément théorique qui suit le dernier élément du vecteur
• rbegin() – Renvoie un itérateur inverse pointant sur le dernier élément du vecteur (début inverse). Il passe du
dernier au premier élément
• rend() – Renvoie un itérateur inverse pointant sur l’élément théorique précédant le premier élément du vecteur
(considéré comme la fin inverse)
• cbegin() – Renvoie un itérateur constant pointant sur le premier élément du vecteur.
• cend() – Renvoie un itérateur constant pointant sur l’élément théorique qui suit le dernier élément du vecteur.
• crbegin() – Renvoie un itérateur inverse constant pointant sur le dernier élément du vecteur (début inverse). Il
passe du dernier au premier élément
• crend() – Renvoie un itérateur inverse constant pointant sur l’élément théorique précédant le premier élément du
52
vecteur (considéré comme une extrémité inverse)
Généralités sur le langage C++

53
Généralités sur le langage C++

Les #include<iostream>
#include<vector>
vecteurs #include<string>
using namespace std;

int main() {
Déclaration
d’un vecteur de vector<string> v1;
type String v1.push_back("javaTpoint "); Ajoute un nouvel
élément à la fin
v1.push_back("tutorial");
du vecteur, après
For ( vector<string>::iterator itr=[Link](); itr!=[Link](); ++itr) son dernier
cout<<*itr; élément actuel.
Return 0;
} 54
Généralités sur le langage C++

55
Généralités sur le langage C++

Exemple d’un
vector d’entiers

56
#include <iostream>
#include <vector>
Initialiser un vecteur using namespace std;

Déclaration d’un vecteur de type int int main() {


vector<int> vec;
vec.push_back(1);
Remplir le vecteur élément par élément vec.push_back(2);
vec.push_back(3);
vec.push_back(4);
vec.push_back(5);
vec.push_back(6);
vec.push_back(7);
vec.push_back(8);
vec.push_back(9);
vec.push_back(101);
Afficher les éléments du vecteur en
for (int i = 0; i < [Link](); i++) {
utilisant la boucle for
cout << vec[i] << " ";
}
return 0;
}
57
Généralités sur le langage C++

Les vecteurs #include <iostream>


#include <vector>
using namespace std;
int main() {
Déclaration et initialisation d’un vecteur de
vector<int> vectr{9,8,7,6,5,4,3,2,1,0};
type <int> avec les valeurs données
for (int i = 0; i < [Link](); i++) {
cout << vectr[i] << " \n";
Afficher les éléments du vecteur en utilisant la
boucle for }
return 0;
}

58
Généralités sur le langage C++
Généralités sur le langage C++
Généralités sur le langage C++

Différence entre begin() et cbegin()


-begin-end / rbegin/rend: on peut modifie le vecteur lors du parcours
- Cbegin-cend/crbegin/crend: on ne peut pas parce qu'il parcours le vecteur via
- un itérateur constant, d’où la non possibilité de modification
Généralités sur le langage C++
Généralités sur le langage C++
Généralités sur le langage C++

Les Listes
• List est un conteneur non-contigu tandis que vector est un conteneur contigu, c’est-à-dire que la liste stocke
les éléments sur une mémoire non-contiguë et vector stocke sur une mémoire contiguë.

• Les éléments ne sont pas rangés les uns à côté des autres dans la mémoire. Chaque « case » contient un
élément et un pointeur sur la case suivante, située ailleurs dans la mémoire

70
Généralités sur le langage C++

Les Listes
• L'avantage de cette structure de données est que l'on peut facilement ajouter des éléments au milieu. Il
n'est pas nécessaire de décaler toute la suite.

• L’inconvénient est qu’on ne peut pas directement accéder à une case donnée… tout simplement parce qu'on
ne sait pas où elle se trouve dans la mémoire. On est obligé de suivre toute la chaîne des éléments. Pour
aller à la huitième case, il faut aller à la première case, suivre le pointeur jusqu'à la deuxième, suivre le
pointeur jusqu'à la troisième et ainsi de suite jusqu'à la huitième. C'est donc très coûteux.

71
Les Listes cout << "\nList 1 (gqlist1) is : ";
Affichage(gqlist1);
#include <iostream> cout << "\nList 2 (gqlist2) is : ";
#include <list> [Link](): retourne la première valeur de la liste Affichage(gqlist2);
#include <iterator> [Link](): retourne la dernière valeur de la liste cout << "\[Link]() : " <<
using namespace std; [Link]();
//function for printing the elements in a list cout << "\[Link]() : " <<
void Affichage(list <int> g){ [Link]();
À l’aide l’un Supprime
objet le premier élément de la liste et
list <int> :: iterator it; iterator, on va parcourirdécrémente la taille de la liste cout << "\ngqlist1.pop_front() : ";
for(it = [Link](); it != [Link](); ++it) la liste du début jusqu’à gqlist1.pop_front();
la fin
cout << '\t' << *it; Affichage(gqlist1);
cout << '\n'; Supprime le dernier élément de la liste et cout << "\ngqlist2.pop_back() : ";
décrémente la taille de la liste
} gqlist2.pop_back();
int main() { Affichage(gqlist2);
list <int> gqlist1, gqlist2; Inverse les éléments de la liste cout << "\[Link]() : ";
for (int i = 0; i < 10; ++i) { Remplir les deux listes [Link]();
gqlist1.push_back(i * 2); Affichage(gqlist1);
push_back(): ajouter l’élement à la fin de la liste
gqlist2.push_front(i * 3); push_front(): ajouter l’élément au début de la liste cout << "\[Link](): ";
} [Link]();
Trie les éléments de la liste par ordre croissant 72
Affichage(gqlist2);
Remplissage
Recherche
Insertion
Insertion
Insertion debut
Tri
Résumé
• :std :: vector est incroyablement plus rapide que std :: list pour
trouver un élément
• std :: vector fonctionne toujours plus vite que std :: list avec de
très petites données
• std :: vector est toujours plus rapide pour pousser les éléments à
l'arrière que std :: list
• std::list gère très bien les éléments volumineux, notamment
pour le tri ou l'insertion au début
Généralités sur le langage C++

81

Vous aimerez peut-être aussi