IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)

Le C en 20 heures


précédentsommairesuivant

III. Variables (1re partie)

III-A. Objectif

Afin de stocker des valeurs, calculer, effectuer un traitement quelconque, il est nécessaire d'enregistrer de manière temporaire des données. Cet enregistrement nécessite la déclaration d'un lieu de la mémoire qui servira à ce stockage : une variable.

III-B. Affichage : la fonction printf

 
Sélectionnez
#include <stdio.h> 
int main () {
   /* Affiche Coucou c'est moi à l'écran puis saute une ligne */
   printf ("Coucou c'est moi\n");
   return 0;
}

La fonction printf, tout comme puts vue précédemment, permet d'afficher une chaîne de caractères. Elle est cependant beaucoup plus puissante.

La syntaxe de printf est très complexe et pourrait à elle seule faire l'objet d'un chapitre, nous n'en verrons donc que des applications au fur et à mesure des besoins.

III-C. Notion de variable

Comme son nom l'indique, une variable est quelque chose qui varie. C'est vrai mais ce n'est pas suffisant. Une variable peut être considérée comme une boîte dans laquelle on met des données. Il est possible de lire le contenu de cette boîte ou d'écrire des données dans celle-ci.

La manière la plus immédiate de lire le contenu d'une variable est de simplement mentionner son nom.

La façon la plus simple d'affecter une valeur à une variable est l'opérateur d'affectation =.

Essayer d'utiliser une variable à laquelle nous n'avons encore affecté aucune valeur peut donner n'importe quel résultat (si on affiche le contenu d'une variable non initialisée par exemple, on pourra obtenir n'importe quelle valeur à l'écran).

Affecter une valeur à une variable ayant déjà une valeur revient à la modifier. En effet, une variable ne peut contenir qu'une seule chose à la fois. Si vous mettez une seconde donnée dans la variable, la précédente est effacée.

III-D. Déclaration d'une variable

La déclaration d'une variable se fait en utilisant la syntaxe suivante :

 
Sélectionnez
<son type> <son nom>;
Comme le montre le programme qui suit, il ne faut pas mettre les < et > comme cela apparaissait dans <son type> <son nom>;.
 
Sélectionnez
#include <stdio.h> 
int main () {
   int i;  /* déclare un entier de nom i */
   char c; /* déclare un caractère de nom c */
}

III-E. Application : exemples

Premier exemple, avec des variables du type entier

Lisez le programme, ainsi que les explications associées.

 
Sélectionnez
#include <stdio.h> 
int main () {
   int i;/* i : variable de type entier */
   int j;/* j : variable de type entier */
   i=22;/* i vaut 22 */
   j=i;/* on recopie la valeur de i dans j */
       /* donc j vaut aussi 22 à présent   */
   printf ("i vaut %d\n", i);/* Affiche la valeur de i */
   printf ("i+j vaut %d\n", i+j);/* Affiche la valeur de i+j */
   return 0;
}
  • printf ("i vaut %d\n", i); : %d signifie que l'on attend une valeur entière et qu'il faut l'afficher en décimal (base 10). Le %d sera remplacé par la valeur de i. Cette ligne provoquera donc l'affichage suivant : i vaut 22
  • printf ("i+j vaut %d\n", i+j);: dans ce cas, %d est remplacé par la valeur de l'expression i+j. Nous obtiendrons l'affichage suivant : i+j vaut 44

L'exécution complète de ce programme donne donc :

 
Sélectionnez
i vaut 22
i+j vaut 44

Second exemple, avec des variables du type caractère

À nouveau, lisez le programme ainsi que les explications associées.

 
Sélectionnez
#include <stdio.h> 
int main () {
   char car; /* car: variable de type caractère */
   char f;   /* f: variable de type caractère */
   car='E'; 
   f='e';
   printf("car=%c f=%c\n",car,f);
   return 0;
}

car='E': nous mettons dans la variable car la valeur (le code Ascii) du caractère E.
f='e': nous mettons dans la variable f la valeur (le code Ascii) du caractère 'e'. Notons au passage que, f=e signifierait affecter la valeur de la variable e (qui n'existe pas) à f. En oubliant les quotes (guillemets simples). '…' nous aurions donc obtenu une erreur de compilation (variable inexistante).

L'exécution complète de ce programme affiche donc :

 
Sélectionnez
car=E f=e

En informatique, tout n'est que nombre ; nous parlons donc de la valeur de 'E' plutôt que de 'E' car c'est le code Ascii du caractère 'E' qui est affecté à la variable. Nous reviendrons sur ce point un peu plus tard.

III-F. Utilisation de % dans printf

À l'intérieur du premier paramètre d'un printf (appelé le format), l'emploi de « %x » signifie qu'à l'exécution, %x doit être remplacé par la valeur correspondante qui figure dans les paramètres suivants, après transformation de ce paramètre dans le type puis le format désigné par x. Nous avons à notre disposition plusieurs formats d'affichage, comme : %d, %x

Exemple :

 
Sélectionnez
int i;
i=65;
printf ("Le caractère %d est %c",i,i);

nous donnera l'affichage suivant :

 
Sélectionnez
Le caractère 65 est A
  • le %d est remplacé par la valeur numérique de i c'est-à-dire 65.
  • le %c est remplacé par la valeur alphanumérique (ASCII) de i c'est-à-dire le caractère A (cf. table ASCII en annexePetit extrait de la table Ascii). Cette table est très utile car l'ordinateur ne « comprend » que des nombres. Elle donne une correspondance entre les lettres (que nous autres, êtres humains, comprenons) et leur codage par la machine. En résumé, chaque fois que nous manipulerons la lettre A, pour l'ordinateur, il s'agira de la valeur numérique 65

III-G. Exercices

Dans les exercices qui suivent, vous devez utiliser ce que nous venons de voir sur les variables, les caractères, et sur printf.

Image non disponible Exercice n°2.1 — Déclarer, afficher (a)

Déclarez des variables avec les valeurs suivantes 70, 82, 185 et 30 puis affichez le contenu de ces variables.

Image non disponible Exercice n°2.2 — Déclarer, afficher (b)

Faites la même chose avec les caractères c, o, u, C, O, U.

Une fois que vous avez votre propre solution, comparez avec celle qui se trouve à la fin du chapitre…

III-H. Réutilisation d'une variable

Il est possible de réutiliser une variable autant de fois que l'on veut. La précédente valeur étant alors effacée :

 
Sélectionnez
i = 3;

i = 5;

i = 7; // Maintenant, i contient 7, les autres valeurs ont disparu.

car = 'E';

car = 'G';

car = 'h'; // La variable car contient maintenant le caractère 'h'.

III-I. Caractères spéciaux

Certains caractères (« % » par exemple) nécessitent d'être précédés par le caractère \ pour pouvoir être affichés ou utilisés.

Pour afficher un % avec printf, nous écririons :

 
Sélectionnez
printf("La réduction était de 20\%") ;

Pour désigner le caractère quote ' on écrira :

 
Sélectionnez
char car;
car = '\'';

En effet, le compilateur serait perdu avec une expression du type :

 
Sélectionnez
char car;
car = ''';

Image non disponible Exercice n°2.3 — Erreur volontaire

Essayez d'écrire un programme contenant car=''' et constatez l'erreur obtenue à la compilation.

III-J. Exercices

Image non disponible Exercice n°2.4 — Okay!

Réalisez un programme qui permet d'obtenir l'affichage suivant :

 
Sélectionnez
C
'
e
s
t
Ok i vaut : 1

Pour pouvoir utiliser un caractère réservé à la syntaxe du C, on utilise le caractère \ comme préfixe à ce caractère (on dit que \ est un caractère d'échappement).

  • pour obtenir un ", on utilise donc \"
  • pour obtenir un ', on utilise donc \'

III-K. Corrigés des exercices du chapitre

Image non disponible Corrigé de l'exercice n°2.1 — Déclarer, afficher (a)

 
Sélectionnez
#include <stdio.h>  
int main () {
   int i,a,b,c;
   i=70;
   a=82;
   b=185;
   c=30;
   printf ("i vaut %d.\n",i);
   printf ("a vaut %d.\n",a);
   printf ("b vaut %d.\n",b);
   printf ("c vaut %d.\n",c);
   return 0;
}

Image non disponible Corrigé de l'exercice n°2.2 — Déclarer, afficher (b)

 
Sélectionnez
#include <stdio.h> 
int main () {
   char a,b,c,d,e,f;
   a='c';
   b='o';
   c='u';
   d='C';
   e='O';
   f='U';
   printf ("a vaut %c.\n",a);
   printf ("b vaut %c.\n",b);
   printf ("c vaut %c.\n",c);
   printf ("d vaut %c.\n",d);
   printf ("e vaut %c.\n",e);
   printf ("f vaut %c.\n",f);
   return 0;
}

Image non disponible Corrigé de l'exercice n°2.3 — Erreur volontaire

 
Sélectionnez
#include <stdio.h> 
int main () {
   char car;
   car='''; // erreur volontaire !!!
   return 0;
}
 
Sélectionnez
gcc -o essai essai.c
essai.c:5:6: error: empty character constant
essai.c: In function 'main':
essai.c:5: error: missing terminating ' character
essai.c:6: error: expected ';' before 'return'

Image non disponible Corrigé de l'exercice n°2.4 — Okay !

 
Sélectionnez
#include <stdio.h> 
int main () {
   char car;
   int i;
   i = 1;
   car = 'C';
   printf ("\n%c",car);
   car = '\'';
   printf ("\n%c",car);
   car = 'e';
   printf ("\n%c",car);
   car = 's';
   printf ("\n%c",car);
   car = 't';
   printf ("\n%c",car);
   printf ("\nOk i vaut : %d\n",i);
   return 0;
}

III-L. À retenir

Exemples de types de variables :

  • char permet de définir une variable de type caractère.
  • int permet de définir une variable de type entier.

Exemple de programme avec variables :

 
Sélectionnez
#include <stdio.h> 
int main () {
   char caractere;
   int entier;
   caractere = 'c';
   entier = 1;
   printf ("caractere vaut : %c\n",caractere);
   printf ("entier vaut : %d\n",entier);
   return 0;
}

précédentsommairesuivant

Licence Creative Commons
Le contenu de cet article est rédigé par Eric Berthomier et Daniel Schang et est mis à disposition selon les termes de la Licence Creative Commons Attribution 3.0 non transposé.
Les logos Developpez.com, en-tête, pied de page, css, et look & feel de l'article sont Copyright © 2013 Developpez.com.