Identificateurs
Types
Variables & Constantes
Accueil

du site


IDENTIFICATEURS &TYPES


Les mathématiques ont fait un bond en avant considérable le jour où quelqu'un, au lieu de désigner une grandeur de valeur inconnue par une phrase expliquant ce qu'elle est censée représenter, l'a tout simplement désignée par la lettre X.

X est l'identificateur de la valeur représentée.

La lettre X n'y est pour rien, la même valeur peut être représentée par v (plutôt utilisée pour une vitesse) , t (plutôt utilisée pour un temps) ou n'importe quelle lettre ou symbole : X1, Y2, etc... ou par un mot : "poids" ou "lng" pour une longueur, par exemple.

Notons, qu'en informatique on ne traite pas seulement des nombres, mais aussi des caractères, des chaînes de caractères et tous autres objets non forcément numériques que nous désignons provisoirement par le mot vague d' "objet informatique" (rien à voir avec la programmation orientée objet - quoique...).

Type d'un "objet informatique"

Pour être pris en compte par l'unité centrale de l'ordinateur, un "objet informatique" tel qu'une grandeur numérique doit obligatoirement être enregistré sous forme binaire dans une mémoire.

Cet emplacement est plus ou moins vaste suivant la nature de l' "objet informatique" traité.
Par exemple, le code ASCII d'un caractère alphanumérique s'écrit sur un octet.
Un entier s'écrit sur deux ou quatre octets, un nombre réel signé peut s'écrire sur 4, 8 ou 10 octets. Voir "Représentation binaire des réels"

Le format binaire utilisé pour représenter un "objet informatique" s'appelle son type.

Les types simples du langage C sont :

Nom Français
Nom anglais
Nombre d'octets
Mot réservé en C
caractère
character
1 ou 2
char
entier court
short integer
2
short
entier
integer
2 ou 4
int
entier long
long integer
4
long
reel flottant
floating
4 ou 8
float
double précision
double
8 ou 10
double
booléen
boolean
1 ou 2
bool

Le nombre d'octets pour chaque type dépend du compilateur utilisé.
Voir la notice de votre compilateur à la rubrique : "Représentation des types"

Nous verrons plus tard ce qu'est un "booléen".

 

DECLARATIONS


Déclaration d'un "objet informatique"

Dans un langage informatique, on appelle "déclaration" une double opération qui consiste :

  1. A réserver de la mémoire pour cet "objet informatique" (il faudra en préciser le type)
  2. A lui attribuer un nom identificateur

Exemple

#include <stdio.h>

int main()
{
---
//Déclarations :

---int nbPattesHomme;
---int nbPattesAnimal,nbPattesInsecte,nbPattesArachnide;

---//On peut déclarer les valeurs une par une ou plusieurs à la fois

---//Les instructions qui précèdent déclarent 4 valeurs
---//Leurs identifiants désignent desormais les contenus
---//de quatre espaces mémoires différents automatiquement réservés par le compilateur
---//et pouvant contenir chacun un entier, puisque déclarés avec le type int

---//Pour le moment, les contenus de ces quatre emplacements mémoire
--- //sont indéterminés


---//Nous n'explicitons pas la suite du programme
---return 0;
}



Affectation d'une valeur à un "objet informatique"

Les quatre "objets informatiques" qui viennent d'être déclarés sont appelés des variables du fait que, par programme, on peut à tout moment leur attribuer ou réattribuer n'importe quelle valeur.

#include <stdio.h>

int main()
{
---//Déclarations :

---int nbPattesHomme;
---int nbPattesAnimal,nbPattesInsecte,nbPattesArachnide;

---//Affectation de la valeur "2" à la variable "nbPattesHomme" :
---nbPattesHomme = 2;

---// A ce point, les variables :
---// nbPattesAnimal, nbPattesInsecte, nbPattesArachnide
---//
sont déclarées mais leurs valeurs sont indeterminées.

---// Contrairement à la variable "nbPattesHomme"
---// qui, elle, a (contient) la valeur 2

---//Nous n'explicitons pas la suite du programme
---return 0;
}

Observez attentivement le rôle du signe "égal" "=" en C.
Il permet d'affecter à la variable de gauche "nbPattesHomme" la valeur de ce qui se trouve à droite du signe égal, à savoir "2"
En C, et dans la plupart des langages, le signe égal n'a rien à voir avec l'égalité mais avec l'afféctation.

 

VARIABLES & CONSTANTES


En mathématiques, ces identificateurs désignent tantôt des variables, tantôt des constantes.

Exemple : dans la célèbre relation d'Albert Einstein donnant la valeur de l'énergie e libérée par la désintégration d'une masse de matière m :

e et m sont des variables représentant l'énergie et la masse,
c
est une constante universelle : la vitesse de la lumière.

On peut donner à m n'importe quelle valeur réelle, e prendra la valeur correspondante.


Pourquoi est-il utile de distinguer les constantes des variables dans un programme ?

Lors de la programmation, il est bon que toutes les précautions soient prises pour qu'une constante telle que 'c' ne puisse pas être modifiée par inadvertance.
L'expérience montre que cette précaution évite de nombreuses erreurs de programmation.

Il exsite en 'C' deux manières de procéder :

  • une pas très bonne mais fréquemment employée faute de mieux
  • une excellente mais que ne possèdent pas tous les compilateurs

La première, pas bonne, consiste à enregistrer une macroinstruction ( une macro pour les intimes ) :

#define c 300000000 ---// En mètres par seconde

 

C'est, disons-le tout de suite, une tricherie au point de vue informatique.
En effet, aucun espace mémoire n'est ici réservé pour la constante "c".

Tout se passe ici au niveau du "préprocesseur" : utilitaire qui, avant compilation, observe dans le texte source toutes les indications précédées d'un dièse "#" et transforme le texte source que vous avez écrit en conséquence.

Nous avons déjà rencontré le préprocesseur dans l'inclusion du fichier "stdio.h :
#include "stdio.h"

Lorsqu'il rencontre l'instruction : #define c 300000000
le préprocesseur
remplace systématiquement toutes les occurrences de "c" par "300000000" dans toute l'étendue du fichier source !

A la rigueur, si vous aviez écrit :

#define Machin "Salut les gars ! Cà va ?"

 

Il aurait remplacé toutes les occurrences de "Machin" par la phrase "Salut les gars ! Cà va ?"
et provoquerait une belle pagaille à la compilation !


Une bien meilleure manière de déclarer une valeur constante est la suivante :

const int nbPattesAnimal = 4;



Dans ces conditions, si, plus loin dans le programme vous écrivez :

nbPattesAnimal = 5;

 

Le compilateur s'arrêtera dès qu'il atteindra cette instruction et vous signalera gentiment que vous ne pouvez pas changer la valeur d'une constante.

Malheureusement, tous les compilateurs ne disposent pas du mot reservé "const" .
C'est la raison pour laquelle nous ne l'emploierons pas souvent dans nos exemples.

CONSTANTES CARACTERES
Fonction
Symbole en ASCII
Symbole en C
Aller à la ligne
NL ou LF
\n
Tabulation horizontale
HT
\t
Tabulation verticale
VT
\v
Retour d'un espace à gauche
BS
\b
Retour en début de la ligne courante
CR
\r
Saut de page
FF
\f
Alerte : bip du haut parleur du PC
BEL
\a
Backslash
\
\\
Point d'interrogation (éviter confusion avec le symbole ? deC)
?
\?
Apostrophe
'
\'
Guillemet
"
\"
Nombre octal
nombre
\nombre
Nombre hexadécimal
nombre
\xnombre

 

Règles à suivre pour les choix des identificateurs


Nous vous conseillons de choisir avec soin les identificateurs des variables ou constantes que vous utiliserez dans vos programmes.

Des noms tels que" X31_42z" ne vous aideront guère à déterminer à quoi cette variable fait référence.
En revanche, c'est un excellent moyen pour perdre totalement un concurrent qui voudrait "pirater" votre code.
Mais attention ! vous risquez de vous y perdre vous-même. Réflechissez.

En revanche, des noms trop longs risquent de vous faire perdre du temps à les écrire :
"PressionClapetDeSecoursDeLaPompeNumeroTreize" est parlant, certes, mais un peu bavard tout de même.
"PressionClapetSecoursPompe13" semble plus raisonnable.

Un identificateur s'écrit d'une seule traite :
Pression Clapet Secours Pompe 13 : ne représente pas UN identificateur mais QUATRE identificateurs différents et un nombre entier.

Restez dans le jeu de caractères anglo-saxon :
ForceDeRéaction provoque un refus du compilateur quii ne comprend pas les caractères accentués tels que "é". Pas plus qu'il ne reconnaîtrait un "ç"
Se reporter au mode d'emploi du compilateur pour obtenir la liste des caractères autorisés.

Attention aux majuscules et minuscules : le langage C les distingue !
Patte, patte, PATTE, sont trois identificateurs différents aux yeux du langage C

Attention aux mots réservés :
Vous ne pouvez pas utiliser les mots "main" "int" "float"
en tant qu'identificateurs, car ils ont déjà une autre signification dans ce langage. Ce sont des "mots réservés"
Se reporter au mode d'emploi du compilateur pour obtenir la liste des mots réservés.

 

Programme expérimental

 

Voici un fichier source :

#include <stdio.h>

int main()
{
---//Déclarations :

---int nbPattesHomme;
---int nbPattesAnimal,nbPattesInsecte,nbPattesArachnide;

---//Affectations

---nbPattesHomme = 2;
---nbPattesAnimal = nbPattesHomme + 2;
---nbPattesInsecte = nbPattesAnimal + nbPattesHomme;
---nbPattesArachnide = nbPattesAnimal * 2; //Multiplié par 2

---//Affichages écran

---printf("Nombre de pattes :\n");
---printf("Homme : %i\n", nbPattesHomme);
---printf("Animal : %i\n", nbPattesAnimal);
---printf("Insecte: %i\n", nbPattesInsecte);
---printf("Arachnide : %i\n", nbPattesArachnide);

---return 0;
}

Remarques :

#include <stdio.h>
Inclut le fichier de définitions des fonctions d'entrée-sortie, dont la fonction printf( )

Mode d'emploi partiel de la procédure d'affichage printf( ) :

printf("Nombre de pattes :\n");
Affiche à l'écran la phrase "Nombre de pattes :" suivie d'un retour à la ligne : caractère ' \n '

printf("Homme : %i\n", nbPattesHomme);
Affiche à l'écran la phrase "Homme
: 2"
suivie d'un retour à la ligne : caractère ' \n '
On observera le symbole % qui indique l'emplacement du nombre représenté par nbPattesHomme.
Le ' i ' qui suit indique que le nombre à afficher est un entier (integer)

Après compilation et lancement :

RESUMÉ

Concepts nouveaux :
type - identificateur - déclaration - affectation - variables & constantes -


Tout "objet informatique" tel qu'une valeur entière ou réelle, positive ou négative, un caractère alphanumérique ou graphique, un booléen, etc. doit être enregistré en mémoire sous forme binaire pour pouvoir être exploité par un programme.

type
Le nombre d'octets qu'occupe un objet en mémoire et certains traits de son comportement ultérieur sont fixés par ce que l'on appelle le type de cet objet.
Quelques types : caractère : char - entier : int - réel : float - réel double précision : double

identificateur
Vous accéderez à un objet grâce à un identificateur qui n'est autre qu'un nom que vous choisissez à votre guise en suivant cependant un certain nombre de règles limitatives.

déclaration
La réservation d'espace mémoire et l'attribution d'un identificateur se font en une seule fois dans l'opération dite de déclaration :

Syntaxe d'une déclaration :
type identificateur ;

Exemples de déclarations :

int population ;
float masse,accélération,vitesse ;
char sexe ;// 'M' ou 'F'

affectation
Une fois déclaré, un objet a sa place en mémoire ainsi qu'un identificateur, mais sa valeur est indéterminée.
Lui attribuer une valeur est le but de l'opération dite d'affectation.
Exemples :

Déclaration & Affectations:

Déclarations :

int population ;
float masse,accélération,vitesse ;
char sexe = 'M';// Déclaration & affectation simultanées

Affectations :

population = 60000000 ;
masse = acceleration = vitesse = 0 ;

variables & constantes
Da la grande majorité des cas,il est indispensable de pouvoir changer la valeur d'un objet au cours du programme.
C'est pourquoi ces objets s'appellent des variables.
Dans l'encadré ci-dessus : population,masse, accélération, vitesse, sexe, sont des variables

Dans certains cas on souhaite, au contraire, que l'on ne puisse pas modifier la valeur de l'objet.
Il faut alors le déclarer comme constante.
Exemple :
const float
pi = 3.14 ; //Ici on déclare en même temps qu'on affecte une valeur à la constante pi.
// Il n'est plus possible désormais de modifier la constante "pi" sans provoquer l'arrêt du compilateur.

L'attribut "const" n'existant pas dans tous les compilateurs, on fait souvent appel à une "macro" pour fixer une constante, exemple :

#define pi 3.14

 


Accueil

du site
La suite : Pointeurs
Sommaire Langage C - C++