print · rss · source

< En avant ! | TutoCFrench | Les variables plus en détail >


Manipuler des valeurs

Notions :

  • variable
  • nom de variable
  • type de donnée (entiers, flottant, signés, non-signés, constantes)
  • déclaration
  • affectation
  • opérateurs arithmétiques
  • expression, évaluation, priorités
  • printf(), scanf()

Dans la section précédente, nous avons vu un premier programme qui ne fait qu'afficher une phrase à l'écran. Dans cette page, nous allons voir comment le C nous permet de manipuler des valeurs et d'effectuer des calculs simples.

Les variables

Une variable est un contenant qui stocke une valeur, comme un nombre, un flottant ou un caractère. Une variable peut donc être vue comme une boite qui va stocker une donnée d'un type particulier :

Nommage

Chaque variable est identifiée par un nom. Ce nom de la variable doit commencer par une lettre ou bien par le caractère "_". La suite peut être composée de chiffres, de lettres ou de "_" (attention, le compilateur fait la distinction entre minuscules et majuscules). Les noms suivants sont possibles :

  • mavar
  • ma_var1, ma_var2
  • ma_VAr1 (pas très lisible, mais possible)
  • _o_1 (possible, mais à éviter dans un soucis de lisibilité !)

Type de donnée

Chaque variable peut contenir un certain type de donnée. Ce type correspond au format et à la taille de la donnée pouvant être stockée à l'intérieur de la variable. Des types usuels sont :

  • char pour un caractère
  • int pour stocker un entier
  • float pour stocker un nombre décimal

Déclaration

Nous venons de voir qu'une variable a un nom et un type. Mais avant d'être utilisée, une variable doit être déclarée.
Pour déclarer une variable, c'est très simple, il suffit d'écrire son type suivit de son nom. Dans l'exemple ci-dessous, nous déclarons que nous allons utiliser la variable 'age' pour stocker un entier et la variable 'prix' pour stocker un nombre décimal :

int age;
float prix;

Il est aussi possible de déclarer plusieurs variables d'un même type sur la même ligne en les séparant par des virgules :

int age, truc;
float prix, taux;

Une variable doit être déclarée :

  • à l'intérieur d'une fonction (exceptées les variables globales)
  • avant toute instruction
int a, b;
a = 3;
b = 6 * (3 - 2) / 1;
a = 4;

On peut initialiser une variable au moment de sa déclaration en lui fournissant une valeur :

float pi = 3.14159;

Attention, avant d'utiliser le contenu d'une variable, il faut qu'elle ait été initialisée, sinon, le résultat est imprévisible :

a = (b + 21) * c + 5 / b;

Dans l'exemple ci-dessus, la partie à droite de l'opérateur d'affectation = s'appelle une expression. A l'exécution, cette expression est d'abord évaluée, c'est à dire remplacée par une valeur. Ensuite, la valeur calculée est affectée au membre de gauche.

Remarque : il est tout à fait licite d'écrire :

a = a + 1;

Des opérateurs arithmétiques particuliers

L'opérateur modulo : %

Ce opérateur renvoit le reste de la division entière.

L'opérateur d'incrémentation : ++

Cet opérateur permet d'incrémenter la valeur d'une variable. Ainsi, on peut écrire indifférement :

/* Une première incrémentation : */
a = a + 1;

/* Ou : */
a++;

/* Ou encore : */
++a;

On note que a++ et ++a sont équivalent... ou presque !
Une subtilité importante réside dans l'ordre de placement de l'opérateur ++. Si il est placé avant la variable, le contenu de la variable est modifié et ensuite le résultat de cette nouvelle affectation est renvoyé. Si l'opérateur est placé après, la valeur de la variable est d'abord renvoyée et ensuite le contenu de celle-ci est modifiée. Ces deux codes sont donc différents :

int a = 3, b;
b = a++;
/* maintenant 'b' vaut 3 et 'a' vaut 4 */
int a = 3, b;
b = ++a;
/* maintenant 'b' vaut 4 et 'a' vaut 4 */

Pour un code plus clair, l'usage des parenthèses () permet de lever toute d'ambiguïté.

L'opérateur de décrémentation : --

Cet opérateur s'utilise comme l'incrémentation à la différence que :

/* Une décrémentation : */
a--;

/* La même chose : */
a = a - 1;

Racourcis d'écritures

La syntaxe :

variable operateur= (expression)

est un racourci de :

variable = (expression) operateur variable

Par exemple, au lieu d'écrire :

a = a + 2;

On peut écrire :

a += 2;

Un autre racourcis s'appuie sur le fait qu'une affectation est une expression qui renvoie une valeur. Cela permet de réaliser des affectations combinées. Le code suivant est donc tout à fait licite :

int a, b;  
b = (a = 10) + 1;  /* a vaut 10 et b vaut 11 */

Un autre exemple :

a = b = 10; /* a vaut 10 et b vaut 10 */

Saisir et afficher des données

Afficher des données

La commande printf() sert à afficher des données. Sa syntaxe est printf("...",e1,e2,...,en). Il existe des caractères spéciaux. Les plus utilisés sont :

  • \n Début de ligne suivante
  • \t Tabulation
  • \\ Affiche un barre inverse

Les indicateurs de formats les plus utilisés sont :

%ccaractère
%ddécimal
%xhexadécimal
%Xhexadécimal
%ffloat
%.2ffloat avec deux chiffres après la virgule
%schaîne de caractères

Exemples :

printf("hello world\n");
printf("Il y a %d jours dans %d année\n", 365, 1);

Autre exemple :

float pi = 3.14159;
printf("Pi = %.2f\n", pi);

Pour utiliser cette fonction, il faut mettre en en-tête du programme la directive suivante comme nous l'avons déjà vu dans le premier programme simple :

#include <stdio.h>

Saisir des données

La fonction scanf() sert à saisir des données et à les stocker des dans des variables. Sa syntaxe est un peu complexe, nous ne la détaillerons pas ici et nous nous contenterons d'exemples.

Pour utiliser cette fonction, il faut :

  • mettre en en-tête du programme la directive : #include <stdio.h>
  • utiliser la syntaxe suivante : scanf("type",&nom)

Remarque importante : cette syntaxe n'est pas vraie dans tous les cas mais il manque des notions pour comprendre son fonctionnement exact qui sera abordé au chapitre sur les Entrées / Sorties.

Exemple 1. Pour saisir un entier :

int a;
printf("entrer un entier: ");
scanf("%d", &a);

Exemple 2. Pour saisir un décimal :

float n;
printf("> ");
scanf("%f", &n);

Un programme simple

Voici un programme simple qui utilise des variables :

#include <stdio.h>

int main()
{
    float pi = 3.14159;
    float rayon;

    printf("rayon> ");
    scanf("%f", &rayon);
    printf("rayon = %.2f cm, circonférence = %.2f cm\n", rayon, rayon * 2 * pi);

    return 0;
}

Exercices

  1. "add.c" : Faire un programme qui saisit 2 entiers, les additionne et affiche le résultat.
  2. "taxe.c" : faire un programme qui saisit un prix H.T. et affiche le prix T.T.C. (pour une taxe de 19.6%).

Solutions

add.c

#include <stdio.h>

int main()
{
        int a, b;

        printf("> ");
        scanf("%d", &a);

        printf("> ");
        scanf("%d", &b);

        printf("%d\n", a + b);

        return 0;
}

taxe.c

#include <stdio.h>

int main()
{
        float ht;

        printf("> ");
        scanf("%f", &ht);

        printf("%.2f\n", ht*1.196);

        return 0;
}

< En avant ! | TutoCFrench | Les variables plus en détail >

print · rss · source
Page last modified on June 12, 2008, at 08:20 AM