Chapitre 4 : 2ème partie : Opérations

     Dans beaucoup de programmes C, il y a, à un moment ou un autre, besoin d’effectuer des calculs plus ou moins importants. C’est pour cela qu’il me semble nécessaire que nous apprenions a faire des maths depuis notre programme. Nous ne ferons pas de la grosse trigonométrie, pour le moment nous nous en tiendrons à ce que vous avez appris en CP/CE1 …

         1 – Expressions

    Qu’est ce qu’une expression ?

2 + 3
ageUtilisateur

Voila deux expressions. Fondamentalement toutes représentations de valeur en C est une expression La variable ageUtilisateur ( pour reprendre l’exemple du dessus ) représente bien une valeur : cette valeur sera sans doute un âge. Quand à 2 + 3, elle représente aussi une valeur ( 5 [besoin d’expliquer pourquoi … 2 + 3 … ]).

D’ailleurs on peut afficher cela avec un code tout simple :

Code c:
int main ()
{
printf( » 2 + 3 = %ld », 2 + 3);
return 0;
}


On suppose ici que le résultat est de type long ( le %ld rappelez vous ).
Normalement on voit apparaitre :

Code console:
2 + 3 = 5


Compliqué ? Non je sais

         2 – Les additions

    Vous savez tous, enfin j’espère, comment fonctionne une addition. Et bien en C, c’est pareil.
On additionne deux nombres, deux variables, grâce à l’opérateur arithmétique  » + « . Et de la même manière qu’au dessus on affiche le résultat dans un printf.

Comme un bon code vaut mieux qu’un long discours, voici un code dans lequel on trouve en premier :
– une variable dont la valeur est le résultat d’une addition toute simple
– une autre variable dont la valeur vaut celle de la précédente à laquelle on ajoute deux.
– une variable dont la valeur vaut la somme des valeurs des deux variables précédentes.


Code c

int main (){
long chiffre = 1 + 1;
long chiffre2 = chiffre + 2;
long chiffre3 = chiffre + chiffre2;

printf (« Chiffre vaut : %ld, chiffre2 vaut : %ld et l addition des deux vaut : %ld », chiffre, chiffre2, chiffre3);
return 0;
}

Attention il est important d’initialiser en premier  » chiffre « , puis  » chiffre2  » et enfin  » chiffre3  » sinon le compilateur plante … Je tenais à vous faire écrire ce code pour vous faire part de cette erreur assez répandue chez les débutants en C. Mais pas de panique on comprend très vite.

On peut aussi faire une addition de variables directement dans le printf. Mais j’avoue ça devient illisible quand on utilise trop de valeur. Il vaut donc mieux faire le calcul en dehors du printf.
Un petit code pour montrer ça :

Code c

int main (){
long chiffre = 1 + 1;
long chiffre2 = chiffre + 2;
printf (« L addition vaut %ld », chiffre + chiffre2);
return 0;
}

Tiens …

Maintenant que nous savons additionner pourquoi ne pas créer une petite calculette ?
Voila comment on va se dérouler le programme
– On demande deux nombres entiers à l’utilisateur.
– On les stocke dans deux variables
– On additionne ces variables et on stocke le résultat dans une troisième variable
– On affiche le résultat

Un jeu d’enfant … A vous de jouer …

Voici la solution :

Code c

int main (){
long premierNombre = 0;
long deuxiemeNombre = 0;
long resultat = 0;

/* t équivaut à une tabulation */
printf(« ttMa super calculettenn »);
printf(« Ce programme additionne 2 nombres entiers !!!n »);
printf(« Entrez le premier nombre svp : « );
scanf(« %ld », &premierNombre);
printf(« Deuxieme ombre svp : « );
scanf(« %ld », &deuxiemeNombre);

resultat = premierNombre + deuxiemeNombre;

printf(« nResultat : %ld », resultat);
return 0;
}

Ce qui nous donne :

Code console:
Entrez le premier nombre svp : 21
Deuxieme nombre svp : 56

Resultat : 77

C’est simple, c’est simple …
Maintenant passons aux soustractions

         3 – Les soustractions

    Et bien il s’agit exactement du même principe que l’addition si ce n’est qu’on utilise l’opérateur  » –  » et que le programme réalise une soustraction … Que dire d’autre ? Rien … Un petit code quand même pour illustrer :

Code c:
int main ()
{
long chiffre = 2;
long chiffre2 = 3;
long chiffre3 = chiffre – chiffre2;
long chiffre4 = 10 – 8;

printf(« chiffre3 vaut : %ld, chiffre4 vaut %ld. », chiffre3, chiffre4);
return 0;
}


Code console:
chiffre3 vaut : -1, chiffre4 vaut 2.


Passons aux multiplications

         4 – Les multiplications

    Toujours le même principe que l’addition, sauf que l’opérateur n’est pas  » x  » mais  » * « . Et bien entendu il s’effectue non plus une addition mais une multiplication. Le code fournie avec le produit
( jeu de mot … … Oula ! il est tard dis donc ).

Code c:
int main ()
{
long chiffre = 2;
long chiffre2 = 4;
long chiffre3 = chiffre * chiffre2;
long chiffre4 = 10 * 0;

printf(« chiffre3 vaut : %ld, chiffre4 vaut %ld. », chiffre3, chiffre4);
return 0;
}


Code console:
chiffre3 vaut : 8, chiffre4 vaut 0.


Passons à la division et au modulo.

         5 – Les divisions et modulos

    Toujours le même principe que l’addition sauf que l’opérateur de le division est  » /  » et celui du modulo est  » % « .

Quel différence entre les deux ?

Et bien la division est un peu complexe, en effet on ne prend pas en compte la possible virgule, ce qui fait que le résultat d’une division telle que 2 / 4 ne sera pas égale à 0.5 ( tout le monde avait trouvé hein ? ) mais à 0 ! C’est un petit peu le principe des divisions à reste. On ne s’occupe que du quotient et pas du reste.

Le modulo quand à lui s’occupe du reste. Si vous tapez dans un programme 2 % 4 alors le résultat sera égale au reste ( 2 ).

!!!!!!! ATTENTION !!!!!! UNE DIVISION PAR 0 EST INTERDITE !!!!

Le code qui résume :

Code c:
int main ()
{
long chiffre = 2 % 4;
long chiffre2 = 2 / 4;

printf(« chiffre vaut : %ld, chiffre2 vaut %ld. », chiffre, chiffre2);
return 0;
}


Code console:
chiffre vaut : 2, chiffre2 vaut 0.


Le résultat étant automatiquement un nombre entier, on a pas besoin d’un type de variable qui gère les nombres à virgule (double, …). En revanche si vous vouliez gérer les virgules, il ne faudrait non plus utliser un long mais un float ou un double


Dans le prochain chapitre nous parlerons des conditions, points essentiel en programmation.