Vous êtes sur la page 1sur 11

La notion de variable

Les variables
Une variable est un certain endroit en mmoire permettant de stocker une valeur. En C++, les
variables sont types : elles contiennent soit un entier, un rel, un caractre, Le type va
exprimer la nature des donnes contenues dans notre variable. Les variables portent un nom
appel identificateur.

1. Dclaration des variables


Avant dutiliser une variable, il faut la dclarer, c'est--dire fournir son nom et son
type. La dclaration d'une variable est obligatoire. Le nom de la variable s'appelle
l'identificateur. Le type de la variable indique la nature des donnes que va contenir
cette variable : un entier, un rel, un caractre,
Syntaxe de la dclaration : type identificateur ;
Exemple : int a;
Cette dclaration dclare une variable a de type int.
2. Intrt de la dclaration
La dclaration des variables permet au programmeur d'indiquer la nature des donnes
qui vont tre stockes dans ces variables. Loin d'tre un handicap, la dclaration
permet d'viter de nombreux bogues. Il s'agit d'un garde-fou qui vite au programmeur
de nombreuses erreurs.
3. Initialisation des variables
En C++, les variables ont une valeur quelconque aprs leur dclaration. Le
programmeur doit donc initialiser les variables de son programme, sinon elles
contiendront n'importe quoi. L'oubli d'initialisation d'une variable est un bogue trs
frquent.
4. Identificateurs valides
Un identificateur est constitu d'une suite des lettres, de chiffres et _ (underscore). Un
identificateur ne peut pas commencer par un chiffre. Il ne peut pas contenir d'espaces,
ni contenir le caractres - (tiret) qui serait interprt comme un moins. Il doit tre
explicite c'est--dire qu'il doit tre en rapport avec ce que contient la variable. Si une
variable contient le prix d'un kg de tomates, on va appeler notre identificateur
prix_tomate par exemple.
5. Le type int
Il s'agit d'un type de base prdfini dans le langage C++. Il permet de manipuler des
entiers positifs ou ngatifs. En gnral sur 32 bits : les donnes sont reprsentes en
complment 2. On peut alors reprsenter tous les entiers de -2^31 2^31-1. Le
nombre de bits et le systme de reprsentation des donnes n'est pas dtermine en
C++, ce qui pose de gros problme de portabilit des programmes. La manipulation
des entiers est exacte sans erreur de calcul !
6. L'affectation
L'affectation permet d'effectuer des calculs et de transfrer le rsultat dans une certaine
variable.
Syntaxe : identificateur= expression ;

On commence par valuer lexpression. On met le rsultat dans la variable


identificateur. L'criture d'une valeur dans une variable remplace la valeur prcdente
qui est "crase". Il doit y avoir une correspondance des types.
7. Exemple 1 : utilisation d'une variable entire

8. #include <iostream.h>
9. int main()
10. {
11. int a;
12. a = 80 + 20;
13. cout << "La valeur de a est : " << a << endl;
14. return 0;
15. }
o Dans cet exemple, nous dclarons une variable entire a grce la dclaration
int a;.
o Nous utilisons ensuite l'affectation pour mettre dans a le rsultat de
l'expression 80+20, c'est--dire 100.
o Nous affichons alors la valeur de a grce cout.
o Excution de l'exemple 1
Lorsqu'on excute notre programme, il s'affiche l'cran :
La valeur de a est 100

16. Exemple 2 : incrmentation d'une variable


17. #include <iostream.h>
18. int main()
19. {
20. int a;
21. a = 80;
22. a = a + 1;
23. cout << "La valeur de a est : " << a << endl;
24. return 0;
25. }
o L'expression a = a + 1; peut paraitre trange : elle permet d'augmenter de 1 la
valeur de a; a vaut 80 avant l'excution de cette instruction. a vaut 81 aprs
cette excution.
o A la place de a=a+1; , on peut galement crire a++;.
o Excution de l'exemple 2
Lorsqu'on excute notre programme, il s'affiche l'cran :
La valeur de a est 81
26. Exemple 3 : utilisation de plusieurs variables
27. #include <iostream.h>
28. int main()

29. {
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41. }

int a, bb = 9, c80;
a = 80;
a++;
bb = bb + a;
c80 = bb - 10;
cout << "La valeur de a est : " << a << endl;
cout << "La valeur de bb est : " << bb << endl;
cout << "La valeur de c80 est : " << c80 << endl;
return 0;
o
o
o
o

Dans ce nouvel exemple, nous dclarons dans un premier temps 3 variables


a,bb et c80.
Nous effectuons diffrentes affectations sur ces variables.
Nous affichons finalement le contenu final de ces variables.
Excution de l'exemple 3
Lorsqu'on excute notre programme, il s'affiche l'cran :
La valeur de a est 81
La valeur de bb est 90
La valeur de c80 est 80

42. Diffrentes oprations


On peut additionner 2 entiers grce l'oprateur +.
On peut soustraire 2 entiers grce l'oprateur -.
On peut multiplier 2 entiers grce l'oprateur *.
On peut diviser 2 entiers grce l'oprateur /. Il y a alors arrondi par troncature du
rsultat.
On peut calculer le reste de la division de a par b grce l'oprateur %
43. Exemple 4 : utilisation de diffrentes oprations
44. #include <iostream.h>
45. int main()
46. {
47. int a = 10, b = 20, c, d, e, f;
48. c = a + b;
49. d = a * c;
50. d = d - 80;
51. e = d / 7;
52. f = e % 4;
53.
54. cout << "La valeur de f est : " << f << endl;
55.
56. return 0;

57. }
Lorsqu'on excute notre programme, il s'affiche l'cran :
La valeur de f est 3

58. cin
Il sagit du flux dentre du programme. Par dfaut le flux d'entre d'un programme en
C++ provient du clavier. En pratique, le cin permet denvoyer le contenu de ce qui est
saisit au clavier dans une variable.
Exemple : cin>>i;
Lorsque le programme excute cette instruction, le programme s'arrte et attend que
l'utilisateur tape au clavier une valeur entire. Lorsque l'utilisateur appuiera sur entre
la valeur tape ira dans la variable i.
59. Exemple 5 : utilisation de cin
60. #include <iostream.h>
61. int main()
62. {
63. int a;
64. cout << "Tapez la valeur de a : ";
65. cin >> a;
66. a = a + 10;
67. cout << "La valeur de a est : " << a << endl;
68.
69. return 0;
70. }
o Dans cet exemple, nous dclarons une variable a.
o Nous saisissons ensuite au clavier la valeur de a.
o Nous effectuons un calcul sur cette variable.
o Nous affichons ensuite la valeur finale de a.
o Lorsqu'on excute notre programme, il s'affiche l'cran :
Tapez la valeur de a : 80
La valeur de a est 90.
Remarque : dans cet exemple, l'utilisateur a choisi de taper la valeur 80 pour
a.

71. Le type double


Le type double est un autre type prdfini du langage C++. Il permet de stocker un
rel. En gnral sur 64 bits, le format de reprsentation est souvent le format IEEE754.
La taille et le systme de reprsentation n'est pas impos par le langage. Chaque
opration peut tre entache dune minuscule erreur de calcul. La propagation de cette
erreur de calcul peut devenir dramatique !

72. Exemple 6 : utilisation du type double


73. #include <iostream.h>
74.
75. int main()
76. {
77. double a, b, moy;
78.
79. cout << "Tapez une valeur relle : ";
80. cin >> a;
81. cout << "Tapez une valeur relle : ";
82. cin >> b;
83.
84. moy = (a + b) / 2;
85.
86. cout << "la moyenne des 2 rels est : " << moy <<endl;
87.
88. return 0;
89. }
o Dans ce programme, on demande l'utilisateur de taper successivement 2
valeurs relles a et b.
o On calcule dans la variable moy la moyenne de a et de b.
o On affiche ensuite cette moyenne.
o Excution de l'exemple 6
Lorsqu'on excute notre programme, il s'affiche l'cran :
Tapez une valeur relle : 6.4
Tapez une valeur relle : 3.2
La moyenne des 2 rels est : 4.8

90. Compatibilit int-double


Les int et les double ne sont pas du tout reprsents de la mme manire. On peut sans
problme copier un int dans un double :
91. int a;
92. double b;
93. b=a;
Pour mettre un double dans un int, il faut utiliser ce qu'on appelle un cast : on
demande explicitement au compilateur de transformer le double en int et il y a alors
troncature du double :
int a;
double b;
a=(int)b;

94. Exemple 7 : mettre un int dans un double


95. #include <iostream.h>
96.
97. int main()
98. {
99. int a;
100.
double b;
101.
cout << "Tapez une valeur entire : ";
102.
cin >> a;
103.
104.
b = a;
105.
106.
cout << "La valeur de b vaut : " << b <<endl;
107.
108.
return 0;
109. }
o Dans ce programme, on dclare une variable entire (de type int) a et une
variable relle (de type double) b.
o On demande l'utilisateur de saisir la valeur de a.
o On met la valeur de a dans la variable b : cette opration s'effectue sans cast.
o On affiche ensuite la valeur de b.
o Excution de l'exemple 7
Lorsqu'on excute notre programme, il s'affiche l'cran :
Tapez une valeur entire : 18
La valeur de b vaut : 18

110.
111.
112.
113.
114.
115.
116.
117.
118.
119.
120.
121.
122.
123.
124.
125.
126.

Exemple 8 : mettre un double dans un int


#include <iostream.h>
int main()
{
double a;
int b;
cout << "Tapez une valeur relle : ";
cin >> a;
b = (int)a;
cout << "La valeur de b vaut : " << b <<endl;
return 0;
}
o
o

Dans ce programme, on dclare une variable relle (de type double) a et une
variable entire (de type int) b.
On demande l'utilisateur de saisir la valeur de a.

o
o
o

On met la valeur de a dans la variable b : cette opration s'effectue avec un


cast. Il y aura troncature de la valeur de a.
On affiche ensuite la valeur de b.
Excution du l'exemple 8
Lorsqu'on excute notre programme, il s'affiche l'cran :
Tapez une valeur entire : 6.78
La valeur de b vaut : 6

127.
Les commentaires
Il est recommand d'inclure dans tout programme des commentaires permettant de
rendre le programme plus facilement comprhensible. Un programme doit tre
comprhensible par un autre programmeur : dans 6 mois, vous aurez oubli comment
marche votre programme ou un autre programmeur peut tre amen le modifier.Le
compilateur ne tient pas compte de tout ce qui est en commentaire !
Les commentaires se prsentent sous 2 formes:
o Commentaires sur plusieurs lignes commenant par /* et finissant par */.
/*kkkkkkk JJJJJJJJJJJJJJ*/
o Commentaires sur une seule ligne commenant par //
// kkkkkkkkkkkkkkkkkk

128.
129.
130.
131.
132.
133.
134.
135.
136.
137.
138.
139.
140.
141.
142.
143.
144.
145.
146.
147.
148.
149.
150.

Exemple 9 : les commentaires


/****************************************
MON PROGRAMME, AUTEUR : MOI
*****************************************/
#include <iostream.h>
int main()
{
double a; int b;
// Saisie de la variable a
cout << "Tapez une valeur relle : ";
cin >> a;
// On met a dans un entier
b = (int)a;
/* Affichage */
cout << "La valeur de b vaut : " << b <<endl;
return 0;
}

Exercices du chapitre 2
EXERCICE 1
crire un programme qui demande l'utilisateur de taper la largeur et la longueur d'un champ
et qui en affiche le primtre et la surface.
Solution
#include<iostream.h>
int main()
{
double largeur, longueur, surface, perimetre;
cout << "Tapez la largeur du champ : "; cin >> largeur;
cout << "Tapez la longueur du champ : "; cin >> longueur;
surface = largeur * longueur;
perimetre = 2 * (largeur + longueur);
cout << "La surface vaut : " << surface << endl;
cout << "Le primtre vaut : " << perimetre << endl;
return 0;
}
EXERCICE 2
crire un programme qui demande l'utilisateur de taper 5 entiers et qui affiche leur
moyenne. Le programme ne devra utiliser que 2 variables.
Solution
Cet exercice a pour but de vrifier les points techniques suivants :

La notion de variables et leur dclaration.


Calcul d'une moyenne.
Utilisation des types int et double.
L'utilisation de cin et de cout.
L'affectation.

Voici le fichier source :


#include<iostream.h>
int main()
{
int a; double s=0;

cout << "Tapez la valeur numero 1 : "; cin>>a; s=s+a;


cout << "Tapez la valeur numero 2 : "; cin>>a; s=s+a;
cout << "Tapez la valeur numero 3 : "; cin>>a; s=s+a;
cout << "Tapez la valeur numero 4 : "; cin>>a; s=s+a;
cout << "Tapez la valeur numero 5 : "; cin>>a; s=s+a;
s = s / 5.0;
cout << "La moyenne vaut : " << s << endl;
return 0;
}
EXERCICE 3
crire un programme qui demande lutilisateur de saisir 2 entiers A et B, qui change le
contenu des variables A et B puis qui affiche A et B.
Solution
Cet exercice a pour but de vrifier les points techniques suivants :

La notion de variables et leur dclaration.


L'utilisation de cin et de cout.
L'affectation.
Un "algorithme" rudimentaire : changer le contenu de 2 variables.

Voici le fichier source :


#include<iostream.h>
int main()
{
double a, b, temp;
cout << "Tapez la valeur de a : "; cin >> a;
cout << "Tapez la valeur de b : "; cin >> b;
temp = a;
a = b;
b = temp;
cout << "La valeur de a est " << a << endl;
cout << "La valeur de b est " << b << endl;
return 0;
}
EXERCICE 4

crire un programme qui demande l'utilisateur de taper le prix HT d'un kilo de tomates, le
nombre de kilos de tomates achets, le taux de TVA (Exemple 5.5, 19.6,...). Le programme
affiche alors le prix TTC des marchandises
Solution
Cet exercice a pour but de vrifier les points techniques suivants :

La notion de variables et leur dclaration.


Le choix d'identificateurs pertinents et explicites.
L'utilisation de cin et de cout.
L'affectation.
Modlisation d'un problme "conomique".

Voici le fichier source :


#include<iostream.h>
int main()
{
double prixht, poids, tva, total;
cout << "Tapez le prix HT d'un kilo de tomates : "; cin>>prixht;
cout << "Combien de kilos avez-vous achetes : "; cin>>poids;
cout << "Quel est le taux de TVA : "; cin>>tva;
total = (1 + tva / 100) * prixht * poids;
cout << "Le prix TTC est : " << total << endl;
return 0;
}
EXERCICE 5
Ecrire un programme qui demande lutilisateur de saisir les coordonnes de deux points du
plan A et B et qui affiche la distance entre A et B.
Indication 1 : on pourra utiliser le thorme de Pythagore.
Indication 2 : dans le fichier include cmath, il y a une fonction sqrt qui calcule la racine
carre.
Exemple dutilisation : x = sqrt(y)
x et y doivent tre des double.
Solution
Cet exercice a pour but de vrifier les points techniques suivants :

La notion de variables et leur dclaration.


L'utilisation de cin et de cout.
L'affectation.

Utilisation de variables explicites.


Utilisation de la bibliothque math.h.
Modlisation d'un problme issu de la gomtrie sous forme informatique.

Voici le fichier source :


#include<iostream.h>
#include<math.h>
int main()
{
double XA,YA,XB,YB, dx,dy, distance;
cout << "Tapez l'abscisse de A : "; cin >>XA;
cout << "Tapez l'ordonne de A : "; cin >>YA;
cout << "Tapez l'abscisse de B : "; cin >>XB;
cout << "Tapez l'ordonne de B : "; cin >>YB;
dx = XA-XB;
dy = YA-YB;
distance = sqrt(dx*dx + dy*dy);
cout << "La distance AB est : " << distance << endl;
return 0;
}
Fonction racine carr : sqrt(chiffre)
Fonction carr : pow(chiffre, 2)
Les rsultats renvoys par des deux fonctions prcdentes sont de type 'double'