Cours-C
Cours-C
Sommaire
1. Introduction
2. Rappels
3. Les outils
1
Chapitre 1: Généralités
1. introduction
La programmation ne se limite pas qu’à l’étape d’écriture d’algorithmes.
Tout programme pour être exécuté par la machine doit d’abord être traduit
en un langage compréhensible par l’ordinateur appelé langage de
programmation. Il existe une multitude de langages de programmation
comme le C, C++, java, python, javascript…
Chaque langage de programmation possède ses atouts et ses inconvénients.
Dans Ce cours, nous allons d’abord expliquer quelques rudiments de la
programmation dans les rappels et présenterons les outils qu’il faut pour
travailler en C++. 2
Chapitre 1: Généralités
2. Rappels
2.1. Algorithme et programmation
❑ Un algorithme est une suite ordonnée d’instructions destinées à la
résolution d’un problème donné. Un algorithme est écrit en langage
formel, qui n’est pas compréhensible par la machine.
❑ La programmation consiste à automatiser un ensemble des tâches
constituant l’étape de la résolution d’un problème.
❑ Un programme est un ensemble d’algorithmes. Un programme est écrit
en un langage compréhensible par la machine d’où les langages de
programmation. 3
Chapitre 1: Généralités
Il existe, en programmation, une multitude de langages de
programmation comme le C, C++, java, python, javascript… Chaque
langage comporte des atouts et des inconvénients.
Le C++ est aussi un langage de programmation très populaire dans le
domaine de l’informatique de gestion.
3. Présentation du langage C++
3.1. Un peu d’historique :
Le langage C++ est un langage qui est né essentiellement du langage C mais
aussi s’inspirant des autres langages dans son évolution. La petite historique
suivante retrace son evolution 4
Chapitre 1: Généralités
● 1972 : Naissance du langage C dans les Bell Labs par Dennis Ritchie
et Kenneth Thompson.
● 1985 : Naissance du C++ chez AT&T Bell Labs. Une extension objet
du C par Bjarne Stroustrup
6
Chapitre 1: Généralités
3.3. Avantages :
C++ est parmi les langages de programmation les plus utilisées dans le
monde aussi bien dans la programmation des applications scientifiques et les
applications de gestion.
7
Chapitre 1: Généralités
4. Les outils du C++
8
Chapitre 2: les bases du C++
Sommaire
1. Introduction
2. La synthaxe générale
3. Les instructions élémentaires
4. Les commentaires
5. Les variables
6. Les operateurs
7. Les opérations sur les chaînes des caractères
8. Les fonctions mathematiques
9. Autres fonctions
10. Les valeurs booléennes
11. Les structures conditionnelles 9
Chapitre 2: Les bases du C++
1- Introduction
l’apprentissage de tout langage de programmation commence par les
bases donc la synthaxe de base, les instructions élémentaires….
2. La syntaxe générale
- Le code source d’un programme C++ se trouve dans des fichiers avec
extension .cpp
- Toute instruction C++ se termine par un point-virgule (";");
- Les instructions à exécuter se trouvent toujours entre accolades("{}");
- L’utilisation des instructions d’entrées/sortie nécessite l’import de la
bibliothèque "iostream"
- Using namespace std : permet d’utiliser des noms des objets et les variables
de la bibliothèque standard.
10
Chapitre 2: Les bases du C++
3. Les instructions élémentaires
3.1. Instruction d‘entrée: "cin" suivi de l’opérateur ">>" permet de récupérer
une valeur saisie par l’utilisateur
exemple: cin >>nom;
3.2. L’instruction de sortie :"cout" suivi de l’opérateur "<<" permet d’afficher
une valeur à l’écran
exemple: cout << "Hello world !";
4. Les commentaires :
13
Chapitre 2: Les bases du C++
6.4. Les opérateurs arithmétiques : le tableau ci-dessous résume les
opérateurs arithmétique:
operateur Nom Description Exemple
= = Égal à x==y
!= Différent de x != y
> Supérieur à x> y
< Inférieur à x<y
>= Supérieur ou égal x >= y
<= Inférieur ou égal x <= y
15
Chapitre 2: Les bases du C++
6.6. Les opérateurs logiques :
Les opérateurs logiques sont utilisés pour déterminer la logique
entre les variables ou les valeurs:
19
Chapitre 2: Les bases du C++
Fonction Description
Sqrt(x) Renvoie la racine carrée de x
Round(x) Renvoie une valeur arrondis de x
Log(x) Renvoie le logarithme de x
abs(x) Renvoie la valeur absolue de x
acos(x) Renvoie l'arc cosinus de x, en radians
asin(x) Renvoie l'arc sinus de x, en radians
atan(x) Renvoie l'arc tangente de x, en radians
cbrt(x) Renvoie la racine cubique de x
20
Chapitre 2: Les bases du C++
ceil(x) Renvoie la valeur de x arrondie à son entier superieur le plus proche
cos(x) Renvoie le cosinus de x, en radians
cosh(x) Renvoie le cosinus hyperbolique de x, en radians
x
exp(x) Renvoie la valeur de E
x
expm1(x) Renvoie e -1
fabs(x) Renvoie la valeur absolue d'un flottant x
fdim(x, y) Renvoie la différence positive entre x et y
floor(x) Renvoie la valeur de x arrondie à son entier inférieur le plus proche
2 2
hypot(x, y) Renvoie sqrt(x +y ) sans débordement ou sous-débordement
intermédiaire
fma(x, y, z) Renvoie x * y + z sans perte de précision 21
Chapitre 2: Les bases du C++
10. Les valeurs booleénnes
10.1. Une variable booléenne se déclare avec le mot clé bool .
exemple : bool reponse = true;
10.2. les expressions booléennes
ce sont des expression qui renvoient une valeur booléenne, 1 (true) ou 0 (false)
Exemples : int x = 10, y = 9 ;
cout << (x > y); // retourne 1 (true), parceque 10 est supérieur à 9
cout <<(x==y); //retourne 0 (false).
11. Les structures de contrôle.
11.1. Les test simples
Syntaxe:
if (condition){
//bloc d’instructions à executer
}
22
Chapitre 2: Les bases du C++
11.2. structure de contrôle alternatives
if (condition){
//bloc d’instructions à executer
}else{
//bloc d’instructions à exécuter
}
11.3. Les structures à choix multiples.
Syntaxe: switch(expression) {
case x:
// bloc de code
break;
case y:
// bloc de code
break;
default:
// bloc de code} 23
Chapitre 2: Les bases du C++
Exemple : String jour = " ";
cout<<"entrez un numéro de jour" ;
cin>>jour
switch(jour) {
case 1:
cout<< “lundi“;
break;
case 2:
cout<< “mardi“;
break;
default:
cout<<“vous avez saisi un autre jour”;
}
24
Chapitre 2: Les bases du C++
11.3. La boucle while:
La boucle while parcourt un bloc de code tant qu'une condition
spécifiée est vraie:
Syntaxe:
while (condition){
//bloc de code
}
Exemple :
int i = 0;
while (i < 12) {
cout << i << "\n";
i+ = 1;
} 25
Chapitre 2: Les bases du C++
11.4. La boucle do/while
Syntaxe:
do {
// bloc de code à exécuter
}
while (condition);
Exemple:
int i = 0;
do {
cout << i << "\n";
i++;
}
while (i < 12);
26
Chapitre 2: Les bases du C++
11.5. La boucle for
Syntaxe:
for (condition 1; condition 2; condition 3) {
// bloc de code à executer
}
Exemple:
for (int i = 0; i < 5; i++) {
cout << i << "\n";
}
- L’instruction break est utilisée pour faire une sortie forcée d’une
boucle.
27
Chapitre 2: Les bases du C++
Exemple:
for (int i = 0; i < 10; i++) {
if (i == 4) {
break;
}
cout << i << "\n";
}
- L’instruction continue
L'instruction "continue" rompt une itération (dans la boucle), si une
condition spécifiée se produit, et continue avec l'itération suivante dans la
boucle.
Exemple : for (int i = 0; i < 10; i++) {
if (i == 4) {
continue;
} cout << i << "\n"; } 28
Merci de votre attention
Chapitre 3: Les tableaux
Sommaire
1. Introduction
2. Initialisation d’un tableau
3. Manipulation d’un tableaux
4. Les tableaux dynamiques
5. Les tableaux à double dimension
29
Chapitre 3: Les tableaux
1- Introduction :
Les tableaux sont des variables permettant de stocker plusieurs valeurs
de même type à la fois. Leur manipulation est tout à fait particulière par
rapport à d’autres variables. La suite de ce cours nous apprends à créer un
tableau et comment le manipuler en c++.
3. Manipulation
3.1. Accès à l’élément d’un tableau.
L’accés aux éléments d’un tableau se fait à travers une variable de type
entier appelé indice.
- En C++, le premier élément de la case du tableau se trouve à l’indice 0.
Exemple:
double nombres[4] //déclaration du tableau
nombres[1] = 12 //affectation de la valeur 12 à la case i=1
31
Chapitre 3: Les tableaux
3.2. Parcours d’un tableau.
La boucle for permet de parcourir un tableau.
syntaxe : for(int i =0; i< nombre_element_tableau; i++){bloc de code}
Exemple :
string voiture[4] = {"Toyota", "Mazda", "Izuzu", "Peugeot"}
for (int i=0; i<4; i++){
cout << i << ": " << voiture[i] << "\n";
}
3.3. affectation d’une valeur dans un tableau.
Exemple :
string voiture[4] = {"Toyota", "Mazda", "Izuzu", "Peugeot"}
voiture[3]="Volvo"; //remplace "Volvo" à la place de "Izuzu"
Les valeurs de voiture deviennent: {"Toyota", "Mazda", " Volvo ", "Peugeot"}
32
Chapitre 3: Les tableaux
4. Les tableaux dynamiques.
Ce sont des tableaux dont la taille n’a pas été précisée à la déclaration. Le
tableau prends la taille du nombre d’éléments qui lui seront affectés.
Exemple :
string nom[] = {"Marlène", "Guy", "Jacques", "Adrien", "Edgard"}
33
Chapitre 3: Les tableaux
6. Les tableaux à doubles-dimensions.
Ce sont des tableaux à lignes-colonnes, on les manipule à l’aide de deux
indices (i=indice des lignes puis j=indice des colonnes)
34
Merci de votre attention
Chapitre 4: Les pointeurs et les références
Sommaire
1. Notions d’adresses
2. Notions de pointeurs
3. Notion des références
4. Pointers vs références
35
Chapitre 4: Les pointeurs et les references
1. Notions d’adresses.
une mémoire est constituée de cases de 8 bits appelées octets. chaque
variable(donnée) stockée en mémoire occupe une ou plusieurs de ces cases,
selon son type et sa taille (une donnée de type char occupera une seule case,
tandis qu'une variable de type long occupera 4 cases consécutives…).
Chacune de ces "cases" (appelées blocs) est identifiée par un numéro. Ce
numéro s'appelle adresse. On peut donc accéder à une variable de 2 façons :
• grâce à son nom;
• grâce à l'adresse du premier bloc alloué à la variable;
Il suffit donc de stocker l'adresse de la variable dans un pointeur ou une
référence (il est prévu pour cela) afin de pouvoir accéder à celle-ci (on dit
que l’on "pointe vers la variable").
36
Chapitre 4: Les pointeurs et les references
2. Notion de Pointeur
2.a. Définition:
Un pointeur est une variable qui stocke la valeur de l'adresse mémoire
d'une autre variable. Comme toute variable, un pointeur doit d’abord faire
l’objet d’une déclaration avant de l'utiliser.
2.b. Déclaration:
La syntaxe générale est: type *nom_variable;
- Type représente le type de base (int, char, string, …..)
- * signifie qu’il s’agit d’une variable spéciale (pointeur)
2.c. Accès à un pointeur:
type *nom_variable=&autre_variale//initialise nom_variable;
cout<<nom_variable // renvoie l’adresse mémoire du pointeur;
cout <<*nom_variable //renvoie la valeur stockée à l’adresse pointée;
37
Chapitre 4: Les pointeurs et les references
exemple: soit un programme
#include <iostream>
using namespace std;
int main() {
int a=98;
int *x = &a;
int c = *x + 5;
cout << " -------La variable a vaut : --------------" <<a<< endl;
cout <<"\n";
cout << "L\’adresse memeoire de la variable a vaut : " << x << endl;
cout <<"\n";
cout << "La valeur stockée à l’adresse pointée à la varialbe a vaut: " << *x
<< endl;
return 0;
} 38
Chapitre 4: Les pointeurs et les references
2. Notion de référence.
Une référence est une référence à une variable existante.
2.a. Déclaration et initialisation.
Syntaxe: type &nom_variable=variable_referencée;
Exemple:
string pays= "congo" ;
string &paysReference=pays;
Si on demande de renvoyer sur la console les valeurs de pays et
paysReference:
Cout<<pays //renvoie congo
Cout<< paysReference //renvoie aussi congo
39
Chapitre 4: Les pointeurs et les references
3. Références vs pointeurs
Les références se confondent souvent avec les pointeurs, mais trois
différences majeures entre les références et les pointeurs sont -
Une fois qu'une référence est initialisée à un objet, elle ne peut pas être
modifiée pour faire référence à un autre objet alors qu’un pointeur peut être
pointé vers un autre objet à tout moment.
Une référence doit être initialisée lors de sa création. Les pointeurs peuvent
être initialisés à tout moment.
40
Merci de votre attention
Chapitre 5: Les types structurés
Sommaire
1. Définition d’une structure
2. Déclaration
3. Accès aux membres d’une structure
4. Les structures nommées
41
Chapitre 5: Les types structurés
3.a. Assignation:
pour etudiant1
etudiant1.nom = "Jean";
etudiant1.prenom = "Pierre";
etudiant1.age=21;
44
Chapitre 5: Les types structurés
pour etudiant2:
etudiant2.nom = "OKOLA";
etudiant2.prenom = "Vincent";
etudiant2.age=19;
3.b. récupération:
Supposant qu’on veut récupérer dans la variable nom la valeur du nom de la
structure etudiant2, on dira:
string nom; //déclaration de la variable
nom=etudiant2.nom;
cout<<nom; //renvoie OKOLA
struct Books {
string title;
string author;
string subject;
int book_id;
};
int main() {
struct Books Book1; // Declare Book1 of type Book
struct Books Book2; // Declare Book2 of type Book 47
Chapitre 5: Les types structurés
// book 1 specification
Book1.title="Learn C++ Programming";
Book1.author= "Chand Miyan";
Book1.subject= "C++ Programming";
Book1.book_id = 6495407;
// book 2 specification
Book2.title= "Telecom Billing";
Book2.author="Yakit Singha";
Book2.subject="Telecom";
Book2.book_id = 6495700;
2. Notion de classe:
2.1. c’est quoi une classe? :
En terme générale, une classe est une collection d’objets ayant un état et
un comportement.
En d’autre terme, une classe est une entité qui encapsule les données et les
traitements
51
Le C++ et la programmation orientée objet
Les données/état sont représentés par les attributs et les traitements/
comportement les méthodes.
Une classe est caractérisée par un identificateur (nom de la classe) et sa
visibilité (public, privée ou protected).
Exemples : la classe des animaux, la classe des voitures
56
Le C++ et la programmation orientée objet
4- Les modificateurs d’accès
Les modificateurs d’accès (ou visibilité) définissent la manière dont les
membres d’une classe (attributs et méthodes) peuvent être accessibles .
On en distingue 3 types :
- public: les membres sont accessibles à l’extérieur de la classe;
- protected: les membres ne sont accessibles à l’extérieur de la classe que
par les classes qui héritent de la classe mère;
- private: les membres ne sont accessibles qu’à l’intérieur de la classe.
5- Notion d’encapsulation
L’encapsulation consiste à déclarer les attributs d’une classe private et les
rendre accessibles hors de la classe par les méthodes qu’on appelle gets/sets.
Exemple: soit la classe des fruits suivante:
57
Le C++ et la programmation orientée objet
class fruit {
private:
string couleur;
string saveur;
double prix;
public:
void setCouleur(string color){
couleur = color;
}
string getCouleur(){
return couleur;
}
etc….
};
58
Le C++ et la programmation orientée objet
❑ Pourquoi l’encapsulation ?
- Meilleur contrôle des données
- Raisons de sécurité
6-Notion d’héritage
L’héritage est la faculté donnée à une classe appelée "classe fille" d’hériter
les attributs et/ou les méthodes d’une autre classe appelée "classe mère".
7- Le polymorphisme
59