Exood4 Studio - Video Game Development, Toulouse (France)
Exood4 Studios Exood4 Tutorials

   
L a n g a g e   C

P r s e n t a t i o n   g n r a l e






Les lments du langage


Les mots cls

 Un mot cl est un symbole dfini et rserv par le langage. Un mot cl ne peut donc tre redfini par le programmeur. La liste des mots cls du langage C est la suivante :


auto break case char const
continue default do double else
enum extern float for goto
if int long register return
short signed sizeof static struct
switch typedef union unsigned void
volatile while      


Les constantes

 Une constante possde une valeur fixe et un type particulier. Pour faciliter la modification des programmes il est conseill de dclarer les constantes en dbut de programme.


1) Constante entire

 C'est une squence de chiffres ventuellement prcde du signe moins "-". Elle peut s'exprimer dans plusieurs bases : dcimal, octal ou hexadcimal

Base
Reprsentation
Exemples
Hexadcimal
0x[0-9;A-F]
0x0, 0X0000, 0x123, 0xFFFF, 0X1a2BD ...
Octal
0[0-7]
012, -034, 01234 ...
Dcimal
[0-9]
1234, -123, 2003, 0 ...


2) Constante relle

 C'est une squence de chiffres signe (partie entire) suivie d'un point et d'une autre squence de chiffres (partie dcimale), d'un e ou E et d'une squence de chiffre signe (puissance de dix). Sont obligatoires soit la partie entire soit la partie dcimale, et d'autre part soit le e soit le point.

Exemple : 123. , .234, 12e34, 12E34, -12E-34


3) Constante caractre

 C'est un caractre entour d'apostrophes. Sa valeur est gale son code ASCII. Certains caractres non imprimables (retour chariot, retour arrire, ...) sont identifiables par une mnmonique pouvant tre code par un caractre, une valeur dcimale, hexadcimale ou octale (voir table des codes ASCII).


\0 \000 \0x00 caractre nul NUL
\a \007 \0x07 signal sonore BELL
\b \010 \0x08 retour arrire Backspace
\t \011 \0x09 tabulation Tabulation
\n \012 \0x0A saut de ligne Line Feed
\f \014 \0x0C saut de page Form Feed
\r \015 \0x0D retour chariot Carriage Return


 Tout autre caractre prcd du '\' sera affich tel quel : \' \" \c ... cela permet notamment d'insrer des guillemets dans une chane de caractres : "Ce \"mot\" est entre guillemets" (sinon la chane se termine au second guillemet rencontr)


4) Constante chane de caractres

 C'est une suite de caractres dlimite par des guillemets. Tout caractre valide peut tre inclus y compris les caractres spciaux. Une chane de caractres se termine implicitement par le caractre nul ('\0'). Une chane de caractre peut tre vide, c'est dire qu'elle ne comporte que le caractre nul final.


"Bonjour" 'B', 'o', 'n', 'j', 'o', 'u', 'r', '\0'
" " ' ', '\0'
"" '\0'
"\0" '\0', '\0'


 Il n'y a pas de limite sur la longueur d'une chane. Pour reprsenter une chane de plus d'une ligne (dans le code d'un programme en langage C) on utilise le caractre \ :

 "Cette chane de caractres n'est en fait qu'une seule chane crite \
 sur deux lignes ..."

Ce qui peut s'crire aussi :

 "Cette chane de caractres n'est en fait qu'une seule chane crite "
 "sur deux lignes ..."


5) Variables valeur constante

 Il est galement possible de dclarer des variables dont le contenu ne changera pas au cours de l'excution du programme. On peut dclarer ce genre de variable au compilateur en utilisant le mot cl const.


Exemple de dclaration :

const int valeur = 15;


6) Variables volatiles

 A l'inverse de const, les variables volatiles sont utilises dans le cas o la valeur d'une variable peut tout moment tre change l'extrieur du programme excutant. On retrouve ce genre d'utilisation dans les programmes multi-threads ou pour accder aux registres de la machine. Dclarer une variable volatile indique au compilateur qu'aucune optimisation ne doit tre applique cette variable. Le contenu de la variable sera lu chaque fois que l'on accdera celle-ci (mme si l'on vient de s'en servir).


Exemple de dclaration :

volatile int valeur;



Les oprateurs

 Voici une liste des oprateurs classe par priorit dcroissante :

Oprateurs
Fonction
Associativit

-> et .
[]
()

slection de champ
fonction d'accs un lment
appel de fonction
gauche
++
--
~
!
+ -
& et *
()
sizeof
pr- et post-incrmentation
pr- et post-dcrmentation
complment 1
ngation
plus et moins unaire
rfrence et indirection
cast
taille
droite
* et /
%
multiplication et division
modulo
gauche
+ et - addition et soustraction
gauche
<< et >> dcalage gauchet et droite
gauche
< et >
<= >=
infireur et suprieur
infrieur ou gal et suprieur ou gal
gauche
== != gal et diffrent
gauche
& AND opration bit bit
gauche
^ XOR (ou exclusif) opration bit bit
gauche
| OR (ou inclusif) opration bit bit
gauche
&& AND logique
gauche
|| OR logique
gauche
?: oprateur conditionnel
gauche
= += -= *= /= %= <<= >>= &= != ^= affectation + modification
droite
, valuation squentielle
gauche


Les sparateurs

 Tout identificateur, constante, mot cl etc.. doit tre dlimit par un sparateur (espace, tabulation ...) ou des oprateurs.


1) Les commentaires

 En langage C les commentaires sont dlimits par les symboles /* pour commencer un commentaire et */ pour le terminer. Il est possible d'imbriquer plusieurs commentaires :

/* commentaire 1 /* commentaire 2 /* commentaire 3 */ fin commentaire 2 */ fin commentaire 1 */


2) Les identificateurs

 Un identificateur est un nom attribu une entit du programme (variable, constante, fonction, type ...). Il est compos de caractres (minuscules ou majuscules), de chiffre et du signe '_'. Il ne peut en aucun cas commencer par un chiffre.

Exemple : mavariable, MaVariable, _MaVariable, Ma_Variable, MA_VARIABLE ...


Structure d'un programme


 Un programme C est une succession de dclarations et de dfinitions de fonctions, variables et types. Des commentaires et des directives pour le prprocesseur (lignes commenant par un #) peuvent complter le programme. L'une des fonctions doit s'appeler main correspondant la fonction principale d'un programme. L'excution d'un programme commence toujours par la fonction main :


/* ---------------------------- */
/* Simple programme en C */
/* ---------------------------- */

#include <stdio.h> /* pour le prprocesseur */

int carre(int); /* prototype de la fonction carre */

int main() /* dfinition de la fonction main */
{
 int i, j; /* dclaration des variables */

 scanf("%d", &i);
 j = carre(i);
 printf("%d\n", j);

 return 0;
}

int carre(int i) /* dfinition de la fonction carre */
{
 return i*i;
}


 La librairie standard :

 Contrairement la plupart des langages, le langage C ne possde aucune autre instruction que les mot-cls vus prcdemment : aucune instruction d'entre/sortie, de calcul mathmatique, de gestion de la mmoire, de gestion des fichiers... Pour avoir accs de telles actions, on doit faire appel des fonctions contenues dans la librairie standard du langage C (stdio, stdlib, ...)


Transformation d'un programme source en excutable


 La ralisation d'un programme commence par la traduction en C des algorithmes. Cette phase de rdaction se fait l'aide d'un diteur de texte. Le programme source ainsi rdig est ensuite trait par le prprocesseur qui, suivant les directives de compilation, substitue des symboles, inclut des fichiers sources etc... Le fichier source d'origine est retravaill et prsent au compilateur.

 Le compilateur examine chaque ligne, vrifie la syntaxe et gnre un code intermdiaire.

 Il reste alors rassembler les codes intermdiaires (dans le cas o le programme est dcoup en plusieurs fichiers sources) et les lier aux diverses librairies. C'est le rle de l'diteur de liens (linker) qui produit le code excutable du programme.



  Retour en haut de page Page suivante