Académique Documents
Professionnel Documents
Culture Documents
1 - Introduction au C++
Le C++ est un langage de programmation de haut niveau, compilé, généraliste et orienté objet. Il a été créé par Bjarne Stroustrup au début des années 1980, à
partir du langage C.
Le C++ est un langage puissant et flexible, qui offre une gamme de fonctionnalités avancées et des performances élevées. Il est souvent utilisé pour développer
des applications à hautes performances, telles que les systèmes d'exploitation, les logiciels d'ingénierie et les jeux vidéo.
● Programmation orientée objet : Le C++ permet de programmer en utilisant la programmation orientée objet, qui est une approche plus structurée et
modulable de la programmation.
● Fonctionnalités avancées : Le C++ offre une gamme de fonctionnalités avancées, telles que la surcharge d'opérateurs, les templates et la gestion
d'exceptions.
● Performances : Le C++ est un langage performant, qui peut être utilisé pour développer des applications à hautes performances.
2 - Introduction au C++
Voici un résumé plus détaillé de chaque point :
La programmation orientée objet (POO) est une approche de la programmation qui permet de modéliser le monde réel en utilisant des objets. Chaque objet a son propre état et comportement.
Le C++ prend en charge la POO en fournissant des classes, des objets, l'héritage, le polymorphisme et l'encapsulation.
● Les classes sont des modèles qui définissent les propriétés et les comportements d'un objet.
● Les objets sont des instances de classes.
● L'héritage permet aux classes de partager des propriétés et des comportements.
● Le polymorphisme permet aux objets de différentes classes d'être traités de la même manière.
● L'encapsulation permet de cacher les détails de mise en œuvre des objets.
3 - Introduction au C++
2. Fonctionnalités avancées
Outre la POO, le C++ offre une gamme de fonctionnalités avancées, telles que :
● La surcharge d'opérateurs permet de définir des comportements personnalisés pour les opérateurs.
● Les templates permettent de créer des fonctions et des classes génériques qui peuvent être utilisées avec différents types de données.
● La gestion des exceptions permet de traiter les erreurs de manière structurée.
3. Performances
Le C++ est un langage performant, qui peut être utilisé pour développer des applications à hautes performances. Cela est dû au fait que le C++ est un langage compilé, ce qui signifie que le code C++
est converti en code machine avant d'être exécuté.
Conclusion
Le C++ est un langage de programmation puissant et flexible, qui offre une gamme de fonctionnalités avancées et des performances élevées. Il est souvent utilisé pour développer des applications à
hautes performances, telles que les systèmes d'exploitation, les logiciels d'ingénierie et les jeux vidéo.
4 - Introduction au C++
Installation et configuration de l'environnement de développement C++
Pour développer des applications C++, il est nécessaire d'installer un compilateur et un IDE.
Compilateurs
Un compilateur est un logiciel qui convertit le code source C++ en code machine, qui peut ensuite être exécuté par l'ordinateur.
Un IDE est un environnement de développement intégré qui fournit des outils pour écrire, compiler et déboguer du code.
● Visual Studio est un IDE commercial de Microsoft qui est la norme pour le développement C++ sur Windows.
● CLion est un IDE open source de JetBrains qui est spécialisé pour le C++.
● Code::Blocks est un IDE open source léger pour le C++.
● Eclipse CDT est une version de l'IDE Eclipse axée sur le C/C++.
Installation
● Sur les systèmes Linux, les packages sont généralement disponibles via les gestionnaires de paquets.
● Sur Windows, des installateurs sont souvent fournis.
● Sur MacOS, des outils comme Homebrew peuvent faciliter l'installation.
6 - Introduction au C++
Pour installer un environnement de développement C++, il suffit de télécharger et d'installer un compilateur et un IDE. Le choix du compilateur et de l'IDE dépend des besoins et des préférences de
l'utilisateur.
L'installation varie selon le système d'exploitation. Notre choix est basé sur le Code::Blocks
1 - Les bases du C++
Structure d'un programme C++:
● Organisation:
● Un programme C++ est constitué d'une ou plusieurs fonctions. La fonction main() est le point d'entrée de l'exécution.
● Les programmes sont structurés en en-têtes (headers) et fichiers sources.
● Exemple de structure:
int main() {
return 0;
}
2 - Les bases du C++
Espaces de noms (namespace):
● Définition: Un espace de noms est une région qui permet de grouper des identificateurs (noms de variables, types, fonctions, etc.) afin d'éviter les conflits de nommage.
● Utilisation: L'espace de noms std est utilisé pour la STL (Standard Template Library). Il englobe des fonctionnalités telles que les opérations d'entrée/sortie et les conteneurs.
● Exemple:
using namespace std; // permet d'utiliser les éléments de l'espace de noms sans préfixe ""
● Composants principaux:
● cin: pour l'entrée standard (clavier généralement).
● cout: pour la sortie standard (écran généralement).
● cerr: pour la sortie d'erreurs.
● clog: pour les logs.
● Exemple d'utilisation:
int age;
cout << "Entrer votre age: ";
cin >> age;
cout << "Vous avez " << age << " ans." << endl;
2 - Passage du C au C++
Différences syntaxiques:
● Commentaires: C++ supporte les commentaires de ligne avec // en plus des commentaires de bloc /* */ du C.
● Déclaration de types: En C++, les types peuvent être déclarés n'importe où dans le code, contrairement au C où ils doivent être déclarés au début d'un bloc.
● Références:
● Une référence est un alias pour une variable existante. Elle doit être initialisée lors de sa déclaration et ne peut pas être réaffectée.
● Utilisée pour la surcharge d'opérateurs, les fonctions, etc.
● Pointeurs:
● Un pointeur stocke l'adresse d'une variable. Peut pointer vers NULL ou être réaffecté.
● Exemple:
int x = 5;
int& ref = x; // ref est une référence à x
int* ptr = &x; // ptr est un pointeur vers x
Ces sections fournissent un aperçu général des bases du C++ et des différences entre C et C++. Chaque sujet peut être exploré plus en profondeur avec des exemples, des exercices pratiques et des
démonstrations pour une compréhension complète.
Exercice d’application
Exercice 1 : Affichage et saisie
Consignes :
1. Demandez à l'utilisateur son nom et son âge.
2. Affichez un message de bienvenue personnalisé en utilisant son nom.
3. Indiquez également combien d'années il lui reste avant d'atteindre 100 ans.
Consignes :
1. Demandez à l'utilisateur son prénom, son nom et sa profession.
2. Affichez une phrase complète comme "Bonjour, [prénom] [nom]! Vous êtes un(e) [profession] impressionnant(e)!"
Consignes :
1. Demandez à l'utilisateur de saisir le rayon d'un cercle.
2. Calculez le périmètre (2 * pi * rayon) et l'aire (pi * rayon^2) du cercle.
3. Affichez les résultats.
Exercice d’application
Exercice 4 : Conversion de monnaie
Consignes :
1. Demandez à l'utilisateur le montant en euros qu'il souhaite convertir.
2. Convertissez ce montant en F CFA(en supposant un taux de conversion fixe, par exemple 1 euro = 655.50 F CFA).
3. Affichez le montant équivalent en F CFA.
Consignes :
Demandez à l'utilisateur son poids (en kilogrammes) et sa taille (en mètres).
Calculez l'IMC avec la formule : IMC = poids / (taille * taille).
Affichez l'IMC calculé.
Consignes :
Demandez à l'utilisateur de saisir un nombre de secondes (par exemple 3665 secondes).
Convertissez ce nombre total en heures, minutes et secondes (dans l'exemple, cela donnerait 1 heure, 1 minute et 5 secondes).
Affichez le résultat sous la forme : "1 heure(s) 1 minute(s) 5 seconde(s)".
COLLECTIONS
Collections
1. Array (Tableau) :
- Un tableau en C++ est une collection de variables du même type, stockées en mémoire de manière contiguë. Il a une taille fixe, déterminée au moment de sa
création. L'accès à ses éléments se fait via un index, qui commence à zéro.
2. Vector (Vecteur) :
- Un vecteur en C++ est similaire à un tableau, mais avec la capacité de changer dynamiquement de taille. Il permet d'ajouter ou de supprimer des éléments à la
fin de la collection. Les vecteurs gèrent la mémoire automatiquement et peuvent s'agrandir au besoin.
3. List (Liste) :
- Une liste en C++ est une collection d'éléments organisés de manière séquentielle. Contrairement aux vecteurs, les listes sont implémentées comme des listes
chaînées, ce qui permet des insertions et des suppressions rapides n'importe où dans la liste. Cependant, l'accès direct à un élément par son index est plus lent que
dans un vecteur.
4. Set (Ensemble) :
- Un ensemble en C++ est une collection qui stocke des éléments uniques dans un ordre spécifique. Les éléments dans un ensemble sont automatiquement triés et
ne peuvent pas être modifiés une fois insérés. C'est utile pour stocker un groupe d'éléments distincts et pour effectuer des opérations comme l'union, l'intersection,
et la différence.
5. Map (Carte) :
- Une carte en C++ est une collection d'associations clé-valeur. Chaque clé est unique et est associée à une valeur. Les maps sont souvent utilisées pour accéder
rapidement à une valeur en utilisant sa clé correspondante. Comme les sets, les éléments dans une map sont triés par clé.
Ces collections sont fondamentales en C++ et sont utilisées pour stocker et manipuler des groupes d'éléments de manière efficace, chacune ayant ses propres
avantages et utilisations spécifiques.
Collections (déclaration)
array
#include <array>
array<int, 5> monArray; // Déclare un array d'entiers avec 5 éléments
vector
#include <vector>
vector<int> monVecteur; // Déclare un vecteur d'entiers
list
#include <list>
list<int> maListe; // Déclare une liste d'entiers
set
#include <set>
set<int> monEnsemble; // Déclare un ensemble d'entiers
map
#include <map>
map<string, int> maCarte; // Déclare une map avec des clés de type string et des valeurs de type int
Collections (array ex: saisie et affichage)
#include <iostream>
#include <array>
int main() {
array<int, 5> monArray;
for (int i = 0; i < 5; i++) {
cout << "Entrez l'élément " << (i + 1) << ": ";
cin >> monArray[i];
}
return 0;
}
Collections (vector ex: saisie et affichage)
#include <iostream>
#include <vector>
int main() {
vector<int> monVecteur;
int temp;
for (int i = 0; i < 5; i++) {
cout << "Entrez l'élément " << (i + 1) << ": ";
cin >> temp;
monVecteur.push_back(temp);
}
return 0;
}
Collections (list ex: saisie et affichage)
#include <iostream>
#include <list>
int main() {
list<int> maListe;
int temp;
for (int i = 0; i < 5; i++) {
cout << "Entrez l'élément " << (i + 1) << ": ";
cin >> temp;
maListe.push_back(temp);
}
return 0;
}
Collections (set ex: saisie et affichage)
#include <iostream>
#include <set>
int main() {
set<int> monEnsemble;
int temp;
for (int i = 0; i < 5; i++) {
cout << "Entrez l'élément " << (i + 1) << ": ";
cin >> temp;
auto result = monEnsemble.insert(temp);
while (!result.second) {
cout << "Élément déjà existant. Veuillez saisir un élément unique: ";
cin >> temp;
result = monEnsemble.insert(temp);
}
}
return 0;
}
Collections (map ex: saisie et affichage)
#include <iostream>
#include <map>
#include <string>
int main() {
map<string, int> maCarte;
string cle;
int valeur;
for (int i = 0; i < 5; i++) {
cout << "Entrez la clé pour l'élément " << (i + 1) << ": ";
cin >> cle;
cout << "Entrez la valeur pour l'élément " << (i + 1) << ": ";
cin >> valeur;
maCarte[cle] = valeur;
}
cout << "Vous avez saisi les paires clé/valeur suivantes: " << endl;
for (const auto &paire : maCarte) {
cout << paire.first << ": " << paire.second << endl;
}
return 0;
}
Collections en C++ array
Les array en C++ sont une partie de la bibliothèque standard et présentent une alternative moderne aux tableaux traditionnels. Voici une explication détaillée de ce
qu'ils sont, pourquoi les utiliser, leurs différences avec les tableaux traditionnels, et les différentes façons de les déclarer.
● Sécurité de Type :
● Fournit une sécurité de type améliorée par rapport aux tableaux traditionnels.
● Compatibilité avec la Bibliothèque Standard :
● S'intègre bien avec d'autres composants de la bibliothèque standard comme les algorithmes et les itérateurs.
● Performance :
● Offre des performances similaires aux tableaux traditionnels car il s'agit essentiellement d'une fine couche au-dessus de ces derniers.
Collections en c++ array
Différences avec les Tableaux Traditionnels
● Fonctionnalités :
● Les array fournissent des méthodes comme .size(), .begin(), .end(), qui ne sont pas disponibles avec les tableaux traditionnels.
● Sécurité :
● Plus sûr à utiliser, car il empêche certaines erreurs courantes comme les débordements de tampons.
● Passage en Argument :
● Lorsqu'ils sont passés à une fonction, les array ne se décomposent pas en pointeurs, contrairement aux tableaux traditionnels.
Collections en c++ array
Différentes Types de Déclarations avec Exemples
1. Déclaration Basique
array<int, 5> arr = {1, 2, 3, 4, 5}; // Initialisation avec des valeurs spécifiques
3. Copie et Affectation
2. .begin() et .end()
Fonction :
begin() renvoie un itérateur pointant vers le premier élément de l'array.
- .end() renvoie un itérateur pointant juste après le dernier élément de l'array.
Utilisation : Ces méthodes sont principalement utilisées pour parcourir l'array avec des boucles basées sur les itérateurs. Elles sont également compatibles avec de
nombreuses fonctions de la bibliothèque standard qui prennent des itérateurs comme arguments.
Exemple :
Énoncé : Écrivez un programme en C++ qui crée un array d'entiers, le remplit avec des valeurs saisies par l'utilisateur, puis calcule et affiche la somme de ces
valeurs.
Énoncé : Écrivez un programme qui prend un array d'entiers, le remplit avec des valeurs, puis inverse l'ordre de ses éléments.
Énoncé : Créez un programme qui initialise un array avec des valeurs entières, puis trouve et affiche la valeur maximale.
Énoncé : Écrivez un programme en C++ qui initialise un array avec des valeurs, puis compte et affiche le nombre d'éléments qui sont supérieurs à une valeur seuil
donnée.
Énoncé : Créez un programme en C++ qui vérifie si un array d'entiers est trié dans l'ordre croissant et affiche un message approprié.
Corrigé exo 1
#include <iostream>
#include <array>
using namespace std;
int main()
{
array<int, 5> arr;
int somme = 0;
cout << "La somme des éléments est : " << somme << endl;
return 0;
}
Corrigé exo 2
#include <iostream>
#include <array>
int main() {
array<int, 5> arr;
return 0;
}
Corrigé exo 2 bis
#include <iostream>
#include <array>
#include <algorithm> // Pour utiliser la fonction reverse
int main() {
array<int, 5> arr;
reverse(arr.begin(), arr.end());
return 0;
}
Corrigé exo 3
#include <iostream>
#include <array>
int main() {
array<int, 5> arr;
cout << "La valeur maximale est : " << maxVal << endl;
return 0;
}
Corrigé exo 3 bis
#include <iostream>
#include <array>
#include <algorithm> // Pour utiliser la fonction max_element
int main() {
array<int, 5> arr;
cout << "L'élément maximum est : " << *maxElement << endl;
return 0;
}
Corrigé exo 4
#include <iostream>
#include <array>
int main() {
array<int, 5> arr = {10, 20, 30, 40, 50};
int seuil = 25;
int compte = 0;
cout << "Nombre d'éléments supérieurs à " << seuil << " : " << compte << endl;
return 0;
}
Corrigé exo 5
#include <iostream>
#include <array>
int main() {
array<int, 5> arr;
if (estTrie ) {
cout << "Le tableau est trié en ordre croissant." << endl;
} else {
cout << "Le tableau n'est pas trié en ordre croissant." << endl;
}
return 0;
}
Corrigé exo 5 bis
#include <iostream>
#include <array>
#include <algorithm> // Pour utiliser la fonction is_sorted
int main() {
array<int, 5> arr;
if (estTrie) {
cout << "Le tableau est trié." << endl;
} else {
cout << "Le tableau n'est pas trié." << endl;
}
return 0;
}
Les fonctions de array
Fonctions de Base
at()
● Accède à un élément spécifique avec vérification des limites.
● Exemple : arr.at(2)
operator[]
● Accède à un élément spécifique sans vérification des limites.
● Exemple : arr[2]
front()
● Accède au premier élément.
● Exemple : arr.front()
back()
● Accède au dernier élément.
● Exemple : arr.back()
Les fonctions de array
Fonctions de Taille et de Capacité
size()
● Retourne le nombre d'éléments dans l'array.
● Exemple : arr.size()
max_size()
● Retourne la taille maximale possible de l'array, identique à size() dans ce cas.
● Exemple : arr.max_size()
empty()
● Vérifie si le conteneur est vide (toujours false pour array car il a une taille fixe).
● Exemple : arr.empty()