Comme je vous l'ai dit la semaine dernière, nous allons cette fois-ci voir comment on peut faire des calculs en C++. D'une part, nous allons voir les opérateurs de base, et d'autre part, je vais introduire les types et les variables. Ce cours sera un peu plus lourd à digérer que le précédent, mais il nous faut tout ça si on veut arriver quelque part par la suite. Nous n'adopterons pas la même méthode que dans le cours précédent : aujourd'hui, je vais poser les principes et les points importants, et à la fin, nous en ferons un programme.
Les opérations de base
Bien évidemment, en C++, on peut faire des additions, des soustractions, des multiplications et des divisions. Ces quatre opérations là, tout le monde les connaît. A celles-ci vient se rajouter une cinquième opération : le calcul du reste de la division euclidienne. Je m'en vais illustrer tout ça. Je vous rappelle qu'il existe une annexe sur Les opérateurs, que vous pourrez consulter pour plus de détails. Je ne m'atarderais pas plus que ça sur les 4 premières opérations, tant elles sont basiques et bien connues. Je rappellerais juste que pour la division, il faut s'assurer que le diviseur soit non nul, sinon il en resulte une erreur et le programme se terminera automatiquement. Autrement dit, si vous écrivez :
a / b
dans votre programme, assurez vous toujours que b est différent de 0.
Venons-en à cette opération de reste de division euclidienne. Elle se fait grâce à l'opérateur modulo %. L'opération
a % b
calcule le reste de la division de a par b. Ainsi, par exemple, le résultat de
13 % 5
est 3, car 13 = 2*5 + 3. Par contre, le résultat de
15 % 5
est 0 car15 est un multiple de 5 (15 = 3*5 + 0)!
L'opérateur modulo est très pratique pour savoir par exemple si un nombre est pair ou impair, ou si il est le multiple d'un autre.
Bien sûr, il n'est pas très intéressant de faire un programme qui fasse à chaque fois le même calcul. Ce qui nous intéresserait d'avantage serait de pouvoir faire varier quelques valeurs, pour adapter à chaque fois le calcul. D'où l'utilisation de variables.
Une variable est un nombre qu'on désigne par son nom. Le fait de désigner ce nombre par son nom fait qu'on peut en changer la valeur. Prenons un exemple :
int a = 5;
Cette ligne crée une nouvelle variable appelée a, qui ne peut contenir que des valeurs entières (c'est la signification du mot clé int). Cette variable a, après cette ligne, contient la valeur 5. Si après, on écrit :
a + 3
le résultat est 8. Pour l'instant, c'est facile!
Il se peut après, qu'on ait envie de changer la valeur de a (après tout, c'est une variable!). Ceci se fait tout simplement en écrivant quelque chose comme ceci :
a = nouvelle valeur;
Voici quelques exemples:
|
|
|
|
![]() |
|
Les trois premiers exemples sont évidents. Le troisième vous montre qu'on peut utiliser d'autres variables pour affecter une valeur.
Le quatrième exemple est plus exotique : on utilise la valeur de a pour donner une nouvelle valeur à a. Si on avait a = 5 avant cette ligne, on aurait a = 6 après. Dans ce cas précis, on dit qu'on a incrémenté la variable a, c'est-à-dire qu'on lui a rajouté 1 (c'est une opération très courante en programmation). De la même façon, on aurait pu multiplier sa valeur par 2 en écrivant :
a = a * 2;
Il existe quelques conventions pour les noms de variables. Celles-ci sont décrites dans l'annexe Conventions nominatives.
Saisie d'une valeur
Cependant, on en revient presque au même problème que tout-à-l'heure : l'exécution d'un tel programme produirait à chaque fois le même résultat. Et si on avait envie de péciser soi-même la valeur d'une variable au moment de l'exécution? Il faut alors faire la saisie de la valeur d'une variable, grâce à l'instruction cin (notez la resemblance avec l'instruction cout!). Voici un petit exemple pour vous illustrer ceci :
int a; cin >> a; cout << "Le double vaut: " << (a * 2) << '\n'; |
Que font ces trois lignes?
Tout comme cout, cin est défini dans le fichier iostream.h.
Revenons un peu sur l'instruction cout: contrairement à la dernière fois, où nous n'affichions qu'une chaîne de caractères, cette fois ci, nous affichons à la suite une chaîne de caractères, une valeur numérique, puis un caractère. Les deux premières seront affichées l'une à la suite de l'autre, et le caractère '\n' effectura un retour à la ligne. L'instruction cout a1 << a2; veut donc dire quelque chose comme: à la suite de a1, afficher a2.
Notez qu'un caractère s'écrit différemment d'une chaîne de caractères : on utilise l'apostrophe au lieu de guillemets. Cependant, on aurait très bien pu noter "\n", ce qui aurait fait une chaîne de caractères contenant un seul caractère. Par contre, écrire 'ab' est une erreur, car on ne peut écrire plus d'un caractère, et dans ce cas là il faut utiliser "ab".
Les types de variables
Pour l'instant, nous n'avons utilisé que des variables de type int, c'est-à-dire des variables ne pouvant contenir que des valeurs entières. Il existe cependant 7 types fondamentaux en C++ qui se divisent en 3 catégories :
Tous ces types peuvent être déclarés signés (les entiers et les réels le sont par défaut) ou non signés avec les mots clés signed et unsigned. Voici quelques exemples de déclarations de variables :
|
|
|
|
|
Les valeurs maximales pour ces 7 types ainsi que leur taille en mémoire sont dicutées dans l'annexe Les types de variables.
Afin de vous laisser le temps de digérer un peu tout ça, je ne vais pas aller plus loin dans la description des types fondamentaux. Les précisions dont nous aurons besoins, nous les verrons en temps voulu plus tard. Nous utiliserons plutôt les int, les double et les char, les autres types étant un peu moins utilisés.
Cependant, voici les 7 types qui peuvent être utilisés pour déclarer une variable. Je vous rappelle que pour utiliser une variable, il faut la déclarer exactement une fois. En C++, si aucune valeur n'est précisée lors de la déclaration (comme dans le premier exemple du paragraphe Les variables), la variable vaut 0 par défaut.
![]() |
|
Le programme
Pour illustrer tout ce que nous avons vu aujourd'hui, nous allons faire un petit programme qui calcule la moyenne de trois nombres. Les trois nombres sont saisis pas l'utilisateur, et le programme en affiche la moyenne arithmétique.
1 2 3 4 19 |
#include <iostream.h> main() { double a, b, c; } |
Procédons à l'analyse du programme.
La ligne 4 nous montre qu'on peut initialiser plusieurs variables en une instruction : a, b et c sont toutes les trois de type double. Comme aucune valeur n'est précisée, elles valent toutes 0. Si je les ai déclarées toutes les trois en une ligne, c'était principalement pour vous montrer que c'était possible. Cependant, ce genre de déclarations rendent le programme plus compliqué à lire, et le mieux serait de toutes les déclarer les unes après les autres.
De 5 à 11, ce qui se passe est relativement évident: on saisit les valeurs de a, b et c.
Ligne 12, nous déclarons la variable moyenne, de type double également, et nous lui affectons sa valeur, caculée à partir de a, b et c.
Vous remarquerez que ligne 13 et 18, j'ai utilisé '\n' une fois, et "\n" l'autre fois, pour vous montrer qu'il s'agit de la même chose.
Puis, de 14 à18, nous modifions légèrement les valeurs entrées et nous recalculons la moyenne avec les nouvelles valeurs et nous affichons à nouveau le résultat.
Et si on remplaçait moyenne par (a + b + c) / 3 dans les lignes 13 et 18? Faites-le, et vous verrez que c'est tout à fait possible, et le résultat serait le même. En fait, cette variable ne sert pas réellement à grand chose, mis à part le fait qu'avec son nom, elle justifie sa valeur (on sait qu'il s'agit de la moyenne des trois nombres entrés) et que le programme en devient plus lisible. C'est une histoire de goût.
Voici donc les points importants à retenir de ce cours:
![]() |
|
Voici les petits exercices du jour:
![]() |
|
La prochaine fois, nous entrerons plus dans les détails avec le calcul, et nous verrons les expressions et les opérateurs. Nous reviendrons aussi sur l'opération d'incrémentation, si importante en informatique. Ah! oui, nous verrons également comment commenter nos programmes (très important!!!).
Voir aussi: Les opérateurs - Conventions nominatives - Les types de variables