Vous êtes sur la page 1sur 230

IUG

Cycle Licence
Programmation Cpp

Dr. CAMARA
2020-2021
Objectifs du Cours
Initier l’apprenant aux concepts de bases du
langage de programmation C ++.

https://sourceforge.net/projects/orwelldevcpp/
MinGW ou Mingw32 (Minimalist GNU for Windows)
http://www.mingw.org/
Plan du cours
 Les Bases de la programmation

 Structures de contrôle et branchements conditionnels

 Les fonctions

 Les tableaux et les chaines de caractères

 Les structures et pointeurs

 Les fichiers

 Introduction à la Programmation Orientée Objet


Chapitre 1

Les Bases de la programmation


Langages informatiques
 Un langage informatique est un outil permettant
de donner des ordres (instructions) à la machine.
 Chaque instruction correspond une action du
processeur.

 Un programme est suite consécutive


d’instructions destinés à effectuer une tache donnée
et doit être compréhensible par la machine.

Exemple: un programme de gestion de la scolarité.


Langage machine
Le Langage binaire exprime et manipule l’information sous
forme d’une suite de bits. Un bit (binary digit) = 0 ou 1 (2
états électriques).

Une combinaison de 8 bits = 1 Octet → 28 =256 possibilités


qui permettent de coder tous les caractères alphabétiques,
numériques, et symboles tels que ?,*,&, …

Le code ASCII (American Standard Code for Information


Interchange) donne les correspondances entre les caractères
alphanumériques et leurs représentation binaire
Exemple: A= 01000001

Les opérations logiques et arithmétiques de base (addition,


multiplication, … ) sont effectuées en binaire.
L'assembleur
Le langage machine est difficile à comprendre par l'humain
d’où la motivation de développer un langage compréhensible
par l’homme et qui sera converti en langage machine.

Assembleur : exprimer les instructions élémentaires de façon


symbolique
ADD A, 4
LOAD B Traduit par un traducteur
MOV A, en Langage machine.
OUT
déjà plus accessible que le langage machine dépend du type de
la machine (n’est pas portable) pas assez efficace pour
développer des applications complexes d’où le développement
de langage évolués.
Langages haut niveau
 Quelque avantages des langage évolués ou de haut niveau:

 proche du langage humain "anglais" (compréhensible),


permet une plus grande portabilité (indépendant du matériel),
 manipulation de données et d’expressions complexes (réels,
objets, a*b/c, …),
 nécessité d’un traducteur (compilateur/interpréteur),
 exécution plus ou moins lente selon le traducteur
Compilateur / interpréteur
Le compilateur traduit le programme entier une fois pour
toutes en fichier exécutable.

plus rapide à l’exécution, sécurité du code source, il faut


recompiler à chaque modification.

L’interprétateur traduire au fur et à mesure les instructions du


programme à chaque exécution

exécution instantanée appréciable pour les débutants


exécution lente par rapport à la compilation.
Langages de programmation
Deux types de langages:
Langages procéduraux
Langages orientés objets

Exemples de langages:
o Fortran, Cobol, Pascal, C, …
o C++, Java, …
Langages de programmation
Les différents types de variables
Les entiers et caractères
Langages de programmation
Les différents types de variables
Les entiers et caractères

NB: En langage C++, le type char possède une fonction de


changement de type vers un entier:
Un caractère peut voir son type automatiquement
transformé vers un entier de 8 bits.

Exemple:
Le caractère 'b' a pour valeur 98.
Langages de programmation
Les différents types de variables
Les entiers et caractères
Quelques constantes caractères:
Langages de programmation
Les différents types de variables
Les réels
Le langage C++ distingue 2 types de réels:

Initialisations:
Exemple d’une fenêtre Dev-C++
Environnement de developpement
Généralités
Algorithme: c’est méthode pour résoudre un problème.
Pour un problème donne, il peut y avoir plusieurs algorithmes
ou aucun !
NB: pour la plupart des problèmes intéressants, il n’existe pas
d’algorithme (ni aujourd’hui, ni demain !)
Dans les problèmes qui restent, la grande majorité ont des
algorithmes beaucoup trop durs pour être utilisés !
On cherche des algorithmes simples, efficaces, élégants. . .

Programme: il s’adresse à une machine !


Généralités
 Le C++ débute en 1983.

 C’est une amélioration du langage C

 Il est basé sur l’abstraction de données

 Il est orientée objet

 Il est générique très utilisé!


Généralités
Une fois trouve l’algorithme, programmer en C++
comporte 3 phases:

1. Editer le programme – avec votre éditeur de


texte favori. . .
2. Compiler le programme (avec g++)
3. Executer le programme
4. TESTER et DEBUGGER : retour au point 1! Ça
peut durer assez longtemps...
Généralités
Généralités…
Premier programmme
Quelques erreurs
Les Variables
Les variables
Déclaration de variables
Déclaration de variables…
Déclaration de variables…
Initialisation
Initialisation…
Déclaration de variables
Déclaration de variables…
Noms de variables
Types de variables
Affectations
Affectations…
Affectations…
Affectations…
Affectations…
Affectations…
Affectations…
Déclaration de constantes
Les variables : Lecture et Écriture
Lecture
Remarque
Déroulement du programme pas à pas
Quiz 1
Quiz 2
Quiz 3
Exemple
Ecriture: lire une valeur au clavier
lire une valeur au clavier…
lire une valeur au clavier…
Déroulement du programme pas à pas
Expressions et opérations
Les valeurs littérales et leurs types
Opérateurs
Opérateurs…
Opérateur relatif au type int
Operateur ++ et - -
Operateur ++ et - -

NB: il existe d’autres opérateurs


 & ET
 | | OU
 ^ OU EXCLUSIF
 ~ COMPLEMENT A UN
 « DECALAGE A GAUCHE
 » DECALAGE A DROITE.
Exemples: p = n « 3; // p est égale à n décalé de 3 bits à gauche
p = n » 3; // p est égale à n décalé de 3 bits à droite.
L'opérateur sizeof(type) renvoie le nombre d'octets réservés en
mémoire pour chaque type d'objet.
Exemple: n = sizeof(char); /* n vaut 1 */
Operateur ++ et - -
Exemple de conversions automatique de type sur
les scalaires:
Affectation d’une valeur décimale à une variable entière
Affectation d’une valeur décimale à une variable entière
Division entière
Fonctions mathématiques
Constantes mathématiques
Exemples 1
Exemples 2: Editer et tester le code ci-dessous :
Exemples 3:
 Soient a et b des entiers, a = -21430 b = 4782,
calculer et afficher a+b, a-b, a*b, a/b, a%b en
soignant l’interface homme/machine.

 Indication:
a/b donne le quotient de la division,
a%b donne le reste de la division.
Exercices:
1. Saisir un caractère au clavier, afficher son code ASCII à
l'écran. Soigner l'affichage.

2. Dans une élection, I est le nombre d’inscrits,V le


nombre de votants, P = 100V/I le pourcentage de votants,
M = V/2 le nombre de voix pour obtenir la majorité.
Ecrire un programme qui demande à l’utilisateur de saisir I
et V, puis calcule et affiche P et M.

3. Saisir 3 réels, calculer et afficher leur moyenne.


Chapitre 2

Les structures de contrôle et


branchements conditionnels
Branchements conditionnels
Branchements conditionnels
Organigramme:
Branchements conditionnels
Organigramme:
Branchements conditionnels
Organigramme:
Branchements conditionnels
Organigramme:
Branchements conditionnels
Les opérateurs logiques
Branchements conditionnels…
Branchements conditionnels…
Branchements conditionnels…
Branchements conditionnels…
Branchements conditionnels…
Branchements conditionnels…
Branchements conditionnels…
Branchements conditionnels…
Branchements conditionnels…
Branchements conditionnels…
Branchements conditionnels…
Branchements conditionnels…
Les choix imbriqués
Branchements conditionnels…
Branchements conditionnels…
Exemple
Branchements conditionnels…
Exemple
Branchements conditionnels…
Exercice:
1. L'utilisateur saisit un caractère, le programme teste s'il s'agit d'une lettre
majuscule, si oui il renvoie cette lettre en minuscule, sinon il renvoie un
message d'erreur.

2. Dans une élection, I est le nombre d’inscrits,V le nombre de votants, Q


le quorum, P = 100V/I le pourcentage de votants, M = V/2 + 1 le nombre de
voix pour obtenir la majorité absolue.
Le quorum est le nombre minimum de votants pour que le vote soit
déclaré valable.
Ecrire un programme qui
1- demande à l’utilisateur de saisir I, Q et V,
2- teste si le quorum est atteint,
3- si oui calcule et affiche P, M, sinon affiche un message d’avertissement.
Branchements conditionnels…
L’instruction switch:
Elle est utilisé si la condition si a plusieurs niveaux
Exemple1:
Branchements conditionnels…
L’instruction switch:
utilisé si la condition si a plusieurs niveaux
Exemple2:
Branchements conditionnels…
L’instruction switch:
L’utilisé si la condition si a plusieurs niveaux
Exemple2:
Branchements conditionnels…
L’instruction switch:
Branchements conditionnels…
Conditions
Branchements conditionnels…
Conditions…
Branchements conditionnels…
Les conditions simples : les opérateurs de comparaison
Branchements conditionnels…
Les conditions simples : les opérateurs de comparaison…
Branchements conditionnels…
Les conditions simples : les opérateurs de comparaison…
Branchements conditionnels…
Les conditions simples : les opérateurs de comparaison…
Branchements conditionnels…
Les conditions simples : les opérateurs de comparaison…
Branchements conditionnels…
Les opérateurs logiques
Branchements conditionnels…
Exemple avec l’opérateur logique AND
Branchements conditionnels…
Exemple avec l’opérateur logique AND…
Branchements conditionnels…
Branchements conditionnels…
Branchements conditionnels…
Les opérateurs logiques
Branchements conditionnels…
Erreurs de débutants :
Erreurs classiques
Branchements conditionnels…
Erreurs de débutants :
Erreurs classiques
Branchements conditionnels…
Erreurs de débutants :
Erreurs classiques
Branchements conditionnels…
Erreurs de débutants :
Erreurs classiques
Branchements conditionnels…
Erreurs de débutants :
Erreurs classiques
Branchements conditionnels…
Erreurs de débutants :
Erreurs classiques
Branchements conditionnels…
Le type booléen (bool)
Branchements conditionnels…
Le type booléen (bool)
Branchements conditionnels…
Le type booléen (bool)
Branchements conditionnels…
Le type booléen (bool)
Branchements conditionnels…
Le type booléen (bool)
Branchements conditionnels…
Le type booléen (bool)
Branchements conditionnels…
Le type booléen (bool)
Itération : Introduction
Itérations…
Itérations…
Itérations…

Syntaxe de la boucle for


Itérations…
Affichage d’une table de multiplication
Itérations…
Itérations…
Itérations…
Itérations : approfondissements et exemples
Exemples d’autre formes de boucles for
Itérations…
Boucles infinies
Itérations…
Pas de point virgule à la fin de l’instruction for
Itérations…
Attention aux accolades
Itérations…
Eviter de modifier une variable compteur à
l’intérieur d’une boucle for
Itérations…
Moyennes de 4 notes
Itérations…
Itérations…
Itérations…
Itérations…
Itérations…
Itérations…
Boucles imbriquées
Itérations…
Itérations…
Itérations…
Itérations: Quiz
Itérations…
Itérations…
Les boucles conditionnelles
Itérations…
Itérations…
Les Boucles Conditionnelles
Les Boucles Conditionnelles
Les Boucles Conditionnelles…
Syntaxe de l’instruction do … while
Les Boucles Conditionnelles…
L’instruction while
Les Boucles Conditionnelles…
Exemple
Les Boucles Conditionnelles…
Erreurs classiques
Les Boucles Conditionnelles…
Les Boucles Conditionnelles…
Les Boucles Conditionnelles…
Les Boucles Conditionnelles…
Les Boucles Conditionnelles…
Les Boucles Conditionnelles…
Les Boucles Conditionnelles…
Les Boucles Conditionnelles…
Les Boucles Conditionnelles…
Les Boucles Conditionnelles…
TP: Saisir les lignes de code ci-dessous et expliquez ce que fait le code.
Les Boucles Conditionnelles…
TP: Saisir les lignes de code ci-dessous et expliquez ce que fait ce code.
Les Boucles Conditionnelles…
Les blocs
Les Boucles Conditionnelles…
Les blocs…
Les Boucles Conditionnelles…
Notion de portée :
Les Boucles Conditionnelles…
Notion de portée :
Les Boucles Conditionnelles…
Notion de portée
Les Boucles Conditionnelles…
Notion de portée
Les Boucles Conditionnelles…
Règle de résolution de portée
Les Boucles Conditionnelles…
Portée : cas des itérations

Exemple à ne pas suivre :

Que produit ce programme ?


Les Boucles Conditionnelles…
Notion de réutilisabilité
Les Fonctions
Fonctions
Notion de réutilisabilité
Fonctions
Fonctions…
Fonctions…
Exemple complet
Fonctions…
Fonctions…
Fonctions…
Fonctions…
NB: Quelques exemples de fonctions et procédures de la
bibliothèque standard de C++ :
Fonctions…
NB:
Une fonction peut appeler une autre fonction.
Il faut simplement respecter la règle d’or: avoir prototypé
la fonction avant l’appel.
On peut préciser la valeur prise par défaut par un argument de
fonction.
void f1(int n = 3); // par défaut le paramètre n vaut 3
void f2(int n, float x = 2.35); //par défaut le paramètre x vaut
2.35
f1() // l’argument n prend la valeur par défaut.
int i= 2
f2(i); // le second paramètre prend la valeur par défaut
f2(); // interdit
Fonctions…
Passage par valeur
Fonctions…
Fonctions…
Fonctions…
Exemple : passage par valeur
Fonctions…
Exemple passage par référence :
Fonctions…
Fonctions…
Prototypage
Fonctions…
Fonctions…
Que signifie chacune des instructions suivantes?
Fonctions…
Fonctions…
Fonctions…
Fonctions…
Fonctions…
Fonctions…
Fonctions…
Fonctions…
Fonctions…
Fonctions…
Fonctions…
Fonctions…
Fonctions…
Fonctions…
Fonctions…
Fonctions…
Fonctions…
Surcharge de fonctions
Avec les surcharges de fonctions, plusieurs fonction
peuvent avoir le même nom avec différents arguments,

Exemple:
int maFonction(int x)
float maFonction(float x)
double maFonction(double x, double y)
Fonctions…
Surcharge de fonctions
Exemple: Considérons l’exemple ci-dessous ayant deux fonctions qui font
chacune la somme de deux nombres de types différents:

int plusFoncInt(int x, int y) {


return x + y;
}
double plusFoncDouble(double x, double y) {
return x + y;
}
int main() {
int Nbre1 = plusFoncInt(8, 5);
double Nbre2 = plusFoncDouble(4.3, 6.26);
cout << "Int: " << Nbre1 << "\n";
cout << "Double: " << Nbre2 ;
return 0;
}
Fonctions…
Surcharge de fonctions
Au lieu de définir 2 fonctions dans l’exemple précèdent, il serait mieux de surcharger
une fonction.

Exemple:
int plusFonc(int x, int y) {
return x + y;
}
double plusFonc(double x, double y) {
return x + y;
}
int main() {
int Nbre1 = plusFonc(8, 5);
double Nbre2 = plusFonc(4.3, 6.26);
cout << "Int: " << Nbre1 << "\n";
cout << "Double: " << Nbre2 ;
return 0;
}
Fonctions…
Conversions de type lors de l’appel d’une fonction
Le C++, contrairement au C, autorise, dans une certaine mesure, le non-
respect du type des arguments lors d’un appel à fonction: le compilateur
opère alors une conversion de type.
Exemple:
double ma_fonction(int u, float f)
{
.....; // fonction avec passage de deux paramètres
.....;
}
main()
{
char c; int i, j; float r; double r1, r2, r3, r4;
r1 = ma_fonction( i, r ); // appel standard
r2 = ma_fonction( c, r); // appel correct, c est converti en int
r3 = ma_fonction( i, j); // appel correct, j est converti en float
r4 = ma_fonction( r, j); // appel correct, r est converti en int
// et j est converti en float
}
Fonctions…
Exercices:
1) Ecrire une fonction float puissance(float x,int n) qui renvoie xn.
2) Ecrire une fonction qui renvoie la valeur de la valeur absolue d’un
nombre.
3) Ecrire une fonction qui renvoie la valeur de la factorielle d’un entier.
4) Ecrire une fonction qui renvoie la valeur du périmetre et de la surface
d’un rectangle.
5) Écrire un programme qui implémente une fonction qui retourne
la somme des entiers pairs inférieurs ou égaux à un entier n
donné (passé en argument). Le programme principal doit afficher
le résultat final.
Fonctions…
Exercices:

6) Écrire un programme qui implémente une fonction qui lit les


données relatives à un étudiant appartenant à une institution
universitaire telles que son nom, son prénom, son Matricule ainsi
que les notes obtenues dans 12 modules. Le programme
principal doit afficher toutes ces données lues par la fonction
ainsi que la moyenne des notes.
7) Écrire une fonction qui ne renvoie aucune valeur et qui
détermine la valeur maximale et la valeur minimale d’un tableau
d’entiers (à un indice) de taille quelconque. Il faudra donc
prévoir 4 arguments : le tableau, sa dimension, le maximum et le
minimum.

Vous aimerez peut-être aussi