17
Introduction au langage C++ Chapitre 2 Variables, Expressions et Instructions Youssouf EL ALLIOUI, [email protected] Université Hassan Premier de Settat Ce cours est disponible en format électronique sur http://fr.slideshare.net/yelallioui/ Objectif de ce chapitre Notions fondamentales en développement informatique : Variables, et constantes, Conversion des types de variables, Expressions et Instructions. Opérateurs arithmétiques Opérateurs d’incrémentation et de décrémentation Opérateurs d’affectation Voir comment demander des informations à l'utilisateur et comment les stocker dans la mémoire : Lecture depuis la console Afficher la valeur d'une variable Découvrir la directive cmath.h Entraînez-vous via Exercices applicatifs QCM fourni à la fin de la séance Les TPs 2016

Chapitre 02 : Variables, Expressions et Instructions

Embed Size (px)

Citation preview

Introduction au langage C++

Chapitre 2

Variables, Expressions et Instructions

Youssouf EL ALLIOUI, [email protected]

Université Hassan Premier de Settat

Ce cours est disponible en format électronique sur http://fr.slideshare.net/yelallioui/

Objectif de ce chapitre

Notions fondamentales en développement informatique :

Variables, et constantes,

Conversion des types de variables, Expressions et

Instructions.

Opérateurs arithmétiques

Opérateurs d’incrémentation et de décrémentation

Opérateurs d’affectation

Voir comment demander des informations à l'utilisateur et comment les stocker

dans la mémoire :

Lecture depuis la console Afficher la valeur d'une variable

Découvrir la directive cmath.h

Entraînez-vous via

Exercices applicatifs

QCM fourni à la fin de la séance

Les TPs

2016

1 | 16

1 Introduction au langage C++ | Chapitre 2 : Variables, Expressions et Instructions

Sommaire

I. Variables __________________________________________________________ 2

II. Constantes ________________________________________________________ 5

III. Références ______________________________________________________ 6

IV. Expressions ______________________________________________________ 7

V. Instructions _______________________________________________________ 14

VI. L'en-tête cmath _________________________________________________ 14

VII. Ce que vous devez retenir ! ________________________________________ 16

Références

Cours de C/C++ [Ouvrage] / aut. Casteyde Christian. - 2001. - Vol. Version 1.40.1 : p. 501.

Programmez avec le langage C++ [Ouvrage] / aut. Mathieu Nebra et Matthieu Schaller. - [s.l.] : le Livre du Zéro, 2015.

2 | 16

2 Introduction au langage C++ | Chapitre 2 : Variables, Expressions et Instructions

I. Variables

I. 1. Qu’est-ce qu’une variable ?

J'imagine que vous avez tous déjà utilisé une calculatrice sur laquelle vous trouvez les

touches M+, M-, MC, etc. qui vous permettent de stocker dans la mémoire de la calculatrice

le résultat intermédiaire d'un calcul et de reprendre ce nombre plus tard.

Le principe de base est le même sur votre ordinateur. Il possède aussi des composants

électroniques qui sont capables de contenir une valeur et de la conserver pendant un

certain temps. Nous n'avons absolument pas besoin de comprendre comment cela marche.

La seule et unique chose que vous ayez besoin de savoir, c'est qu'une variable est une

partie de la mémoire que l'ordinateur nous prête pour y mettre des valeurs pour pouvoir

les réutiliser plus tard.

I. 2. Terminologie

Une variable est caractérisée par :

- Son nom : mot composé de lettres ou chiffres, commençant par une lettre (le

caractère « - » tient lieu de lettre),

- Son type : précisant la nature de cette variable (nombre entier, caractère, objet

etc.),

- Sa valeur : qui peut être modifiée à tout instant.

8

Mémoire

Figure 1 : Exemple de la définition des trois caractéristiques d'une variable

I. 3. Noms de variables

En C++, il y a quelques règles qui régissent les différents noms autorisés ou interdits :

- Les noms de variables sont constitués de lettres, de chiffres et du tiret-bas « _ »

uniquement ;

- Le premier caractère doit être une lettre (majuscule ou minuscule) ;

- On ne peut pas utiliser d'accents ;

- On ne peut pas utiliser d'espaces dans le nom.

Exemple : noms valides & noms invalides

Les noms ageBebe, nom_du_Bebe ou encore NOMBRE_DE_BEBES sont tous des noms

valides. ageBébé et _nom_du_Bebe, en revanche, ne le sont pas.

Valeur

(8) Type

(Entier)

Nom

(ageUtilisateur)

3 | 16

3 Introduction au langage C++ | Chapitre 2 : Variables, Expressions et Instructions

I. 4. Types de base

Après l’identification du nom de la variable, L'ordinateur doit connaitre ce qu'il a dans

cette variable, il faut donc indiquer quel type (nombre, mot, lettre, ou …) d'élément va

contenir la variable que nous aimerions utiliser.

Voici donc la liste des types de variables que l'on peut utiliser en C++ (Tableau 1) :

Nom du type Ce qu'il peut contenir

bool Une valeur parmi deux possibles, vrai (true) ou faux (false).

char Un caractère.

int Un nombre entier.

unsigned int Un nombre entier positif ou nul.

double Un nombre à virgule.

string Une chaîne de caractères, c'est-à-dire un mot ou une phrase.

Tableau 1 : Types de variables en langage C++

Il existe également d'autres types avec d'autres limites mais ils sont utilisés plus

rarement (Tableau 2). A titre d’exemple, il y a des nombres qui sont trop grands pour

un int. Cela ne devrait donc pas vous poser de problème, sachez tout simplement que ces

limites sont bien assez grandes pour la plupart des utilisations courantes.

Type de donnée Signification Taille (en octets) Plage de valeurs acceptée

char Caractère 1 -128 à 127

unsigned char Caractère non

signé

1 0 à 255

short int Entier court 2 -32 768 à 32 767

unsigned short int Entier court non

signé

2 0 à 65 535

int Entier 2 (sur processeur 16 bits)

4 (sur processeur 32 bits)

-32 768 à 32 767

-2 147 483 648 à 2 147 483 647

unsigned int Entier non signé 2 (sur processeur 16 bits)

4 (sur processeur 32 bits)

0 à 65 535

0 à 4 294 967 295

long int Entier long 4 -2 147 483 648 à 2 147 483 647

unsigned long int Entier long non

signé

4 0 à 4 294 967 295

float Flottant (réel) 4 -3.4*10-38 à 3.4*1038

double Flottant double 8 -1.7*10-308 à 1.7*10308

long double Flottant double

long

10 -3.4*10-4932 à 3.4*104932

bool

Booléen Même taille que le type int,

parfois 1 sur quelques

compilateurs

Prend deux valeurs :

true et false mais une conversion

implicite (valant 0 ou 1) est faite par le

compilateur lorsque l'on affecte un

4 | 16

4 Introduction au langage C++ | Chapitre 2 : Variables, Expressions et Instructions

entier (en réalité toute autre valeur que

0 est considérée comme égale à true).

Tableau 2 : Types de variables en langage C++ (version détaillée)

Le mot unsigned qui précède le nom d’un type entier signifie un entier non signé, c’est à

dire toujours un entier toujours positif (Tableau 1 et Tableau 2).

Le mot bool signifie que la variable ne peut prendre que l’une des deux valeurs, true ou

false. On les utilise par exemple pour stocker des informations indiquant si la lumière

est allumée, si l'utilisateur a le droit d'utiliser une fonctionnalité donnée, ou encore si le

mot de passe est correct. Si vous avez besoin de conserver le résultat d'une question de

ce genre, alors pensez type bool.

I. 5. Déclaration des variables

Avant d’utiliser une variable, il faut indiquer à l'ordinateur le type de la variable que nous

voulons, son nom et enfin sa valeur c.-à-d. les trois caractéristique de la variable (revoir I.

2. Terminologie). En effet, en C++, toute variable doit être déclarée avant d’être utilisée.

Une variable se déclare de la façon suivante (Figure 2) :

type Nom_de_la_variable (valeur) ;

Figure 2 : Syntaxe d'initialisation d'une variable en C++

ou bien utiliser la même syntaxe que dans le langage C (Figure 3).

type Nom_de_la_variable = valeur ;

Figure 3 : Syntaxe d'initialisation d'une variable en C++, héritée de C

Soit l’exemple suivant, dans lequel nous déclarons une variable pour stocker l’âge de

l’utilisateur.

1 #include <iostream> 2 using namespace std; 3 int main() 4 { 5 string nomUtilisateur("Albert Einstein"); 6 int ageUtilisateur(16); 7 int nombreAmis(432); //Le nombre d'amis de l'utilisateur 8 double pi(3.14159); 9 bool estMonAmi(true); //Cet utilisateur est-il mon ami ? 10 char lettre('a'); 11 return 0; 12 }

Il y a trois choses importantes à remarquer concernant cet exemple :

- les variables de type bool ne peuvent avoir pour valeur que true ou false, c'est

donc une de ces deux valeurs qu'il faut mettre entre les parenthèses.

- pour le type char, il faut mettre la lettre souhaitée entre apostrophes. Il faut

écrire char lettre('a'); et pas char lettre(a);.

5 | 16

5 Introduction au langage C++ | Chapitre 2 : Variables, Expressions et Instructions

- Pour le type string,

o il faut ajouter une petite ligne au début de votre programme pour indiquer

au compilateur que nous souhaitons utiliser des strings. Sans cela, il

n'inclurait pas les outils nécessaires à leur gestion. La ligne à ajouter

est #include <string>.

o Un peu comme pour le char, il faut mettre la chaine de caractères entre

guillemets et non pas entre des apostrophes

Si vous avez plusieurs variables du même type à déclarer, vous pouvez le faire sur une

seule ligne en les séparant par une virgule (,). Voici comment :

5 float x(2.33), y(21.6);// déclare deux réels x, y 6 int a(2),b(4),c(-1); //On déclare trois cases mémoires nommées a, b et c et

qui contiennent respectivement les valeurs 2, 4 et -1

7 string prenom("Albert"), nom("Einstein"); //On déclare deux cases pouvant contenir des chaînes de caractères

I. 6. Déclaration sans initialisation

Il arrive parfois que l'on ne sache pas quelle valeur donner à une variable lors de sa

déclaration. C++ nous permet alors d'effectuer uniquement l'allocation de la mémoire sans

l'initialisation de la variable. Pour cela, il suffit d'indiquer le type et le nom de la variable

sans spécifier de valeur (Figure 4).

type Nom_de_la_variable = valeur ;

Figure 4 : Déclaration d'une variable sans initialisation

Un exemple de cela est le suivant :

1 #include <iostream> 2 #include <string> 3 using namespace std; 4 int main() 5 { 6 string nomJoueur; 7 int nombreJoueurs; 8 bool aGagne; //Le joueur a-t-il gagné ? 9 return 0; 10 }

II. Constantes Contrairement aux variables les constantes ne peuvent pas être initialisées après leur

déclaration et leur valeur ne peut pas être modifiée après initialisation. Elles doivent être

déclarées avec le mot clé const et obligatoirement initialisées dès sa définition.

Voyons donc comment déclarer une telle constante (Figure 5).

const <type> <NomConstante> = <valeur>;

Figure 5 : Syntaxe de la déclaration d'une constante en C++

6 | 16

6 Introduction au langage C++ | Chapitre 2 : Variables, Expressions et Instructions

Cela marche bien sûr avec tous les types de variables. Voici un exemple :

6 //exemple de constante caractère 7 const char c ('A'); 8 //exemple de constante entière 9 const int i (2016); 10 //exemple de constante rèel 11 const double PI (3.14); 12 //exemple de constante chaine de caractères 13 string const motDePasse("wAsTZsaswQ");

III. Références Dans la vie quotidienne, on peut mettre plusieurs étiquettes sur un objet donné. Disant

des synonymes comme c’est le cas pour le mot ordinateur qu’est computer qu’est PC. Vous

dites ordinateur ou computer ou PC ça revient au même objet !

En C++, c'est la même chose, on peut coller plusieurs étiquettes à la même case mémoire

(ou variable). On obtient alors un deuxième moyen d'y accéder. On parle parfois d'alias,

mais le mot correct en C++ est référence.

Pour déclarer une référence sur une variable, on utilise une esperluette (&). Voyons cela

avec un petit exemple.

6 int ageUtilisateur(16); //Déclaration d'une variable. 7 int& maVariable(ageUtilisateur); //Déclaration d'une référence nommée

maVariable qui est accrochée à la variable ageUtilisateur

On peut schématiser ce code comme suit (Figure 6) :

8

Mémoire

Figure 6 : déclaration d'une référence sur une variable

On dit que maVariablefait référence à ageUtilisateur.

Pratiquement, On peut afficher l'âge de l'utilisateur soit via le nom de la variable soit

via une référence sur cette variable.

1 #include <iostream> 2 using namespace std; 3 int main() 4 { 5 int ageUtilisateur(18); //Une variable pour contenir l'âge de

l'utilisateur 6 7 int& maReference(ageUtilisateur); //Et une référence sur la variable

'ageUtilisateur' 8 //On peut utiliser à partir d'ici 9 //'ageUtilisateur' ou 'maReference' indistinctement

ageUtilisateur maVariable

7 | 16

7 Introduction au langage C++ | Chapitre 2 : Variables, Expressions et Instructions

10 //Puisque ce sont deux étiquettes de la même case en mémoire 11 cout << "Vous avez " << ageUtilisateur << " ans. (via variable)" <<

endl; 12 //On affiche, de la manière habituelle 13 cout << "Vous avez " << maReference << " ans. (via reference)" << endl; 14 //Et on affiche en utilisant la référence 15 return 0; 16 }

Ce qui donne évidemment le résultat escompté.

Une fois qu'elle a été déclarée, on peut manipuler la référence comme si on manipulait la

variable elle-même. Il n'y a aucune différence entre les deux. Mais à quoi est-ce que cela

peut bien servir ?

Pour l'instant, cela vous paraît très abstrait et inutile ? Il faut juste savoir que c'est un

des éléments importants du C++ qui apparaîtra à de très nombreuses reprises dans ce

cours. Il est donc essentiel de se familiariser avec la notion avant de devoir l'utiliser dans

des cas plus compliqués.

IV. Expressions

II. 1. Définition

En combinant des noms de variables, des opérateurs, des parenthèses et des appels de

fonctions (nous allons voir les fonctions dans le chapitre 4), on obtient des expressions.

Une règle simple à retenir :

En C++, on appelle expression tout ce qui a une valeur

II. 2. Opérateurs arithmétiques

Opération Symbole Exemple

Addition + resultat = a + b; Si a=5 et b=2 resultat = 7

Soustaction - resultat = a - b; Si a=5 et b=2 resultat = 3

Multiplication * resultat = a * b; Si a=5 et b=2 resultat = 10

Division / resultat = a / b; Si a=5 et b=2 resultat = 2.5

Modulo % resultat = a % b; Si a=5 et b=2 resultat = 1

8 | 16

8 Introduction au langage C++ | Chapitre 2 : Variables, Expressions et Instructions

Le Modulo représente le reste de la division entière. Cet opérateur n'existe que pour les

nombres entiers !

Dans les expressions, les règles de priorité sont les règles usuelles des mathématiciens.

Par exemple, l’expression 5 + 3 * 2 a pour valeur 11 et non 16. En cas de doute, il ne faut

pas hésiter à mettre des parenthèses.

1 int a(2), b(4), c(5), d; //Quelques variables 2 d = ((a+b) * c ) - c; //Un calcul compliqué !

II. 3. Opérateurs d’incrémentation et de décrémentation

Opérateur d’incrémentation (++)

En pratique, nous retrouvons souvent des affectations comme : i = i + 1. Pensez par

exemple aux cas suivants :

- Passer du niveau 4 au niveau 5 d’une application de jeu

- Incrémenter le nombre des inscrits ou bien le nombre de téléchargement de notre

application, …

Les créateurs du C++ ont inventé un opérateur d’incrémentation raccourcie pour ajouter

1 à une variable. Il s’agit de l’opérateur ++. Voici comment.

6 //Notre application est téléchargée 100 fois 7 int nombreDeTelechargement(100); 8 ++nombreDeTelechargement; 9 //à partir d'ici, le nombre de téléchargement est 101

Opérateur de décrémentation (--)

La décrémentation est l'opération inverse, soustraire 1 à une variable. Il s’agit donc de

l’opérateur --.

Autres opérateurs

Opérateur Signification Exemple += ajouter à a += 2 équivalent à a = a + 2 -= diminuer de a -= 2 équivalent à a = a - 2 *= multiplier par a *= 2 équivalent à a = a * 2

/= diviser par a /= 2 équivalent à a = a / 2 %= modulo a %= 2 équivalent à a = a % 2

II. 4. Opérateurs d’affectation

La forme générale de l’expression d’affectation est la suivante :

variable = expression

Fonctionnement :

9 | 16

9 Introduction au langage C++ | Chapitre 2 : Variables, Expressions et Instructions

1) L’expression est d’abord évaluée ; cette valeur donne la valeur de l’expression

d’affectation

2) Effet de bord : la variable reçoit ensuite cette valeur

1 int unNombre(0); //Je crée une case mémoire nommée 'unNombre' et qui contient le nombre 0

2 3 unNombre = 5; //Je mets 5 dans la case mémoire 'unNombre'

On peut aussi directement affecter le contenu d'une variable à une autre.

1 int a(4), b(5); //Déclaration de deux variables 2 3 a = b; //Affectation de la valeur de 'b' à 'a'

On peut d'ailleurs afficher le contenu des deux variables pour vérifier.

1 #include <iostream> 2 using namespace std; 3 4 int main() 5 { 6 int a(4), b(5); //Déclaration de deux variables 7 8 cout << "a vaut : " << a << " et b vaut : " << b << endl; 9 10 cout << "Affectation !" << endl; 11 a = b; //Affectation de la valeur de 'b' à 'a'. 12 13 cout << "a vaut : " << a << " et b vaut : " << b << endl; 14 15 return 0;

Le résultat de l’exécution de ce programme est le suivant :

II. 5. Conversion de type

L’expression d’affectation peut provoquer une conversion de type. Par exemple, supposons

la déclaration de deux variables i de type entier et x de type réel :

1 int i; 2 float x;

Alors, si i vaut 3, l’expression x = i donne à x la valeur 3.0 (conversion entier → réel).

Inversement, si x vaut 4.21, l’expression i = x donne à i la valeur 4, partie entière de x

(conversions réel → entier).

Voici un exemple justifiant ce que je viens d’expliquer :

10 | 16

10 Introduction au langage C++ | Chapitre 2 : Variables, Expressions et Instructions

1 #include <iostream> 2 using namespace std; 3 int main() 4 { 5 int i; 6 double x; 7 i = 3; 8 x = i; 9 cout << "conversion entier vers reel :" << endl; 10 cout << "i = " << i << endl; 11 cout << "x = " << x << endl; 12 x = 4.21; 13 i = x; 14 cout << "conversion reel vers entier :" << endl; 15 cout << "x = " << x << endl; 16 cout << "i = " << i << endl; 17 return 0; 18 }

Le résultat obtenu après exécution est le suivant :

On peut également provoquer une conversion de type grâce à l’opérateur () (type casting).

Avec x comme ci-dessus, l’expression (int)x est de type int et sa valeur est la partie

entière de x. Nous allons voir cette astuce en détail dans les TPs.

II. 6. Opérateurs d’entrées-sorties

Ce sont les opérateurs << et >>, utilisés en conjonction avec des objets prédéfinis cout

et cin déclarés dans <iostream.h> (ne pas oublier la directive #include en début de

fichier).

Forme pour afficher la valeur d’une expression :

cout << expression // affichage à l’écran de la valeur de

expression

Forme pour la lecture d’une valeur depuis la console :

cin >> variable //lecture au clavier de la valeur de variable

Voyons ce que cela donne avec ce premier exemple.

1 #include <iostream> 2 using namespace std;

11 | 16

11 Introduction au langage C++ | Chapitre 2 : Variables, Expressions et Instructions

3 4 int main() 5 { 6 cout << "Quel age avez-vous ?" << endl; 7 8 int ageUtilisateur(0); //On prepare une case mémoire pour stocker un

entier 9 10 cin >> ageUtilisateur; //On fait entrer un nombre dans cette case 11 12 cout << "Vous avez " << ageUtilisateur << " ans !" << endl; //Et on

l'affiche 13 14 return 0; 15 }

Si vous testez ce programme. Voici ce que cela donne avec mon âge :

Pour bien comprendre une astuce qui concerne les variables de type string dans ce

contexte, je vous invite à tester le programme suivant pour bien comprendre en détail ce

qui se passe.

1 #include <iostream> 2 #include <string> 3 using namespace std; 4 5 int main() 6 { 7 cout << "Quel est votre prenom ?" << endl; 8 string nomUtilisateur("Sans nom"); //On crée une case mémoire pour

contenir une chaine de caractères 9 cin >> nomUtilisateur; //On remplit cette case avec ce qu'écrit

l'utilisateur 10 11 cout << "Combien vaut pi ?" << endl; 12 double piUtilisateur(-1.); //On crée une case mémoire pour stocker un

nombre réel 13 cin >> piUtilisateur; //Et on remplit cette case avec ce qu'écrit

l'utilisateur 14 15 cout << "Vous vous appelez " << nomUtilisateur << " et vous pensez que

pi vaut " << piUtilisateur << "." << endl; 16 17 return 0; 18 }

12 | 16

12 Introduction au langage C++ | Chapitre 2 : Variables, Expressions et Instructions

Regardons ce que cela donne !

Vous voyez que l'ordinateur n'a rien demandé pour la variable pi et le nom de famille a

disparu !

C'est un problème d'espaces. Quand on appuie sur la touche Entrée, l'ordinateur copie ce

qui a été écrit par l'utilisateur dans la case mémoire. Mais il s'arrête au

premier espace ou retour à la ligne. Quand il s'agit d'un nombre, cela ne pose pas de

problème puisqu'il n'y a pas d'espace dans les nombres.

Pour les string, la question se pose. Il peut très bien y avoir un espace dans une chaîne

de caractères. Et donc l'ordinateur va couper au mauvais endroit, c'est-à-dire après le

premier mot. Et comme il n'est pas très malin, il va croire que le nom de famille correspond

à la valeur de pi !

En fait, il faudrait pouvoir récupérer toute la ligne plutôt que seulement le premier mot.

Et si je vous le propose, c'est qu'il y a une solution pour le faire !

Il faut utiliser la fonction getline(). Nous verrons plus loin ce que sont exactement les

fonctions mais, pour l'instant, voyons comment faire dans ce cas particulier.

Il faut remplacer la ligne cin >> nomUtilisateur; par un getline().

1 #include <iostream> 2 #include <string> 3 using namespace std; 4 5 int main() 6 { 7 cout << "Quel est votre nom ?" << endl; 8 string nomUtilisateur("Sans nom"); //On crée une case mémoire pour

contenir une chaine de caractères 9 getline(cin, nomUtilisateur); //On remplit cette case avec toute la

ligne que l'utilisateur a écrit 10 11 cout << "Combien vaut pi ?" << endl; 12 double piUtilisateur(-1.); //On crée une case mémoire pour stocker un

nombre réel 13 cin >> piUtilisateur; //Et on remplit cette case avec ce qu'écrit

l'utilisateur 14 15 cout << "Vous vous appelez " << nomUtilisateur << " et vous pensez que

pi vaut " << piUtilisateur << "." << endl;

13 | 16

13 Introduction au langage C++ | Chapitre 2 : Variables, Expressions et Instructions

16 17 return 0;

18 }

Cette fois le nom ne sera pas tronqué lors de la lecture.

Mais quand même il reste un petit problème ! Si on utilise d'abord cin

>> puis getline(), par exemple pour demander la valeur de pi avant de demander le nom,

le code ne fonctionne pas. L'ordinateur ne demande pas son nom à l'utilisateur et affiche

n'importe quoi. Vous pouvez essayer ça !

Pour pallier ce problème, il faut ajouter la ligne cin.ignore() après l'utilisation des

chevrons. En effet, Quand on mélange l'utilisation des chevrons et de getline(), il faut

toujours placer l'instruction cin.ignore() après la ligne cin >> a. C'est une règle à

apprendre.

1 #include <iostream> 2 #include <string> 3 using namespace std; 4 5 int main() 6 { 7 cout << "Combien vaut pi ?" << endl; 8 double piUtilisateur(-1.); //On crée une case mémoire pour stocker un

nombre réel 9 cin >> piUtilisateur; //Et on remplit cette case avec ce qu'écrit

l'utilisateur 10 11 cin.ignore(); 12 13 cout << "Quel est votre nom ?" << endl; 14 string nomUtilisateur("Sans nom"); //On crée une case mémoire pour

contenir une chaine de caractères 15 getline(cin, nomUtilisateur); //On remplit cette case avec toute la

ligne que l'utilisateur a écrit 16 17 cout << "Vous vous appelez " << nomUtilisateur << " et vous pensez que

pi vaut " << piUtilisateur << "." << endl; 18 19 return 0;

20 }

14 | 16

14 Introduction au langage C++ | Chapitre 2 : Variables, Expressions et Instructions

V. Instructions

Les instructions sont généralement identifiées par le point-virgule. C’est ce caractère qui

marque la fin d’une instruction. Il existe deux types d’instructions, qui permettent de

réaliser des opérations variées. Il y a l’instruction-expression et l’instruction-bloc.

III. 1. Instruction-expression

Elle a en générale la forme suivante :

< expression > ;

Les instructions les plus courantes sont sans doute les instructions qui effectuent des

opérations, c’est-à-dire les instructions qui contiennent des expressions utilisant des

opérateurs d’affectation, arithmétique, ou autres.

III. 2. Instruction-bloc

Ce type d’instruction a la forme suivante :

{

< Déclarations et expressions >

}

Il consiste à regrouper plusieurs expressions dans un seul bloc. Ce bloc d’instructions est

considéré comme une instruction unique. Il est donc inutile de mettre un point-virgule

pour marquer l’instruction, puisque le bloc lui-même est une instruction.

Exemple :

4 { 5 int i; 6 double x; 7 i = 3; 8 x = i / 2; 18 }

VI. L'en-tête cmath

Pour avoir accès à plus de fonctions mathématiques, il suffit d'ajouter une ligne en tête

de votre programme.

1 #include <cmath>

Comme il y a beaucoup de fonctions1, je vous propose de tout ranger dans un tableau.

Nom de la fonction Symbole Fonction Mini-exemple

puissance Pow (x, y) Pow() resultat = pow(valeur1, valeur2);

Racine carrée Sqrt(x)

sqrt() resultat = sqrt(valeur);

1 http://www.cplusplus.com/reference/cmath/

15 | 16

15 Introduction au langage C++ | Chapitre 2 : Variables, Expressions et Instructions

Sinus sin(x)

sin() resultat = sin(valeur);

Cosinus cos(x)

cos() resultat = cos(valeur);

Tangente tan(x)

tan() resultat = tan(valeur);

Exponentielle ex

exp() resultat = exp(valeur);

Logarithme népérien lnx

log() resultat = log(valeur);

Logarithme en base 10 log10x

log10() resultat = log10(valeur);

Valeur absolue |x|

fabs() resultat = fabs(valeur);

Les fonctions trigonométriques (sin(), cos(),… ) utilisent les radians comme unité

d'angles.

Je crois qu'on a enfin toutes les clés en main pour réaliser notre premier vrai

programme. Il s’agit d’un programme qui utilise la fonction pow() pour effectuer le calcul

de ab. Il serait bien mieux de demander à l'utilisateur les valeurs de a et de b !

Voici ma version :

1 #include <iostream> 2 #include <cmath> //Ne pas oublier ! 3 using namespace std; 4 5 int main() 6 { 7 double a(0), b(0); //Déclaration des variables utiles 8 9 cout << "Bienvenue dans le programme de calcul de a^b !" << endl; 10 11 cout << "Donnez une valeur pour a : "; //On demande le premier nombre 12 cin >> a; 13 14 cout << "Donnez une valeur pour b : "; //On demande le deuxième nombre 15 cin >> b; 16 17 double const resultat(pow(a, b)); //On effectue l'opération 18 //On peut aussi écrire comme avant : 19 //double const resultat = pow(a,b); 20 //Souvenez-vous des deux formes possibles 21 //De l'initialisation d'une variable 22 23 cout << a << " ^ " << b << " = " << resultat << endl; 24 //On affiche le résultat 25 26 return 0; 27 }

Voici le résultat que cela donne.

16 | 16

16 Introduction au langage C++ | Chapitre 2 : Variables, Expressions et Instructions

VII. Ce que vous devez retenir ! Une variable est une information stockée en mémoire.

il existe différents types de variables en fonction de la nature de l'information à

stocker : int, char, bool…

Une variable doit être déclarée avant qu’elle soit utilisée.

La valeur d'une variable peut être affichée à tout moment avec cout.

Les références sont des étiquettes qui permettent d'appeler une variable par un

autre nom.

Pour demander à l'utilisateur de saisir une information au clavier, on utilise cin

>> uneVariable;. La valeur saisie sera stockée dans la variable uneVariable.

Il ne faut pas confondre le sens des chevrons cout << et cin >>.

On peut faire toutes sortes d'opérations mathématiques de base en C++ : addition,

soustraction, multiplication… Exemple : x = 2 * (a + b) / 3;

Les constantes sont des variables qu'on ne peut pas modifier une fois qu'elles ont

été créées. On utilise le mot const pour les définir.

Pour ajouter 1 à la valeur d'une variable, on effectue ce qu'on appelle une

incrémentation : variable++;. L'opération inverse, appelée décrémentation,

existe aussi.

Si vous souhaitez utiliser des fonctions mathématiques plus complexes, comme la

racine carrée, il faut inclure l'en-tête <cmath> dans votre code et faire appel à la

fonction adéquate comme dans cet exemple : resultat = sqrt(100);