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 éléments du langage


Les mots clés

 Un mot clé est un symbole défini et réservé par le langage. Un mot clé ne peut donc être redéfini par le programmeur. La liste des mots clés 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 possède une valeur fixe et un type particulier. Pour faciliter la modification des programmes il est conseillé de déclarer les constantes en début de programme.


1) Constante entière

 C'est une séquence de chiffres éventuellement précédée du signe moins "-". Elle peut s'exprimer dans plusieurs bases : décimal, octal ou hexadécimal

Base
Représentation
Exemples
Hexadécimal
0x[0-9;A-F]
0x0, 0X0000, 0x123, 0xFFFF, 0X1a2BD ...
Octal
0[0-7]
012, -034, 01234 ...
Décimal
[0-9]
1234, -123, 2003, 0 ...


2) Constante réelle

 C'est une séquence de chiffres signée (partie entière) suivie d'un point et d'une autre séquence de chiffres (partie décimale), d'un e ou E et d'une séquence de chiffre signée (puissance de dix). Sont obligatoires soit la partie entière soit la partie décimale, et d'autre part soit le e soit le point.

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


3) Constante caractère

 C'est un caractère entouré d'apostrophes. Sa valeur est égale à son code ASCII. Certains caractères non imprimables (retour chariot, retour arrière, ...) sont identifiables par une mnémonique pouvant être codée par un caractère, une valeur décimale, hexadécimale ou octale (voir table des codes ASCII).


\0 \000 \0x00 caracètre nul NUL
\a \007 \0x07 signal sonore BELL
\b \010 \0x08 retour arrière 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 caractère précédé du '\' sera affiché tel quel : \' \" \c ... cela permet notamment d'insérer des guillemets dans une chaîne de caractères : "Ce \"mot\" est entre guillemets" (sinon la chaîne se termine au second guillemet rencontré)


4) Constante chaîne de caractères

 C'est une suite de caractères délimitée par des guillemets. Tout caractère valide peut être inclus y compris les caractères spéciaux. Une chaîne de caractères se termine implicitement par le caractère nul ('\0'). Une chaîne de caractère peut être vide, c'est à dire qu'elle ne comporte que le caractère 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 chaîne. Pour représenter une chaîne de plus d'une ligne (dans le code d'un programme en langage C) on utilise le caractère \ :

 "Cette chaîne de caractères n'est en fait qu'une seule chaîne écrite \
 sur deux lignes ..."

Ce qui peut s'écrire aussi :

 "Cette chaîne de caractères n'est en fait qu'une seule chaîne écrite "
 "sur deux lignes ..."


5) Variables à valeur constante

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


Exemple de déclaration :

const int valeur = 15;


6) Variables volatiles

 A l'inverse de const, les variables volatiles sont utilisées dans le cas où la valeur d'une variable peut à tout moment être changée à l'extérieur du programme exécutant. On retrouve ce genre d'utilisation dans les programmes multi-threads ou pour accéder aux registres de la machine. Déclarer une variable volatile indique au compilateur qu'aucune optimisation ne doit être appliquée à cette variable. Le contenu de la variable sera lu chaque fois que l'on accédera à celle-ci (même si l'on vient de s'en servir).


Exemple de déclaration :

volatile int valeur;



Les opérateurs

 Voici une liste des opérateurs classée par priorité décroissante :

Opérateurs
Fonction
Associativité

-> et .
[]
()

sélection de champ
fonction d'accès à un élément
appel de fonction
gauche
++
--
~
!
+ -
& et *
()
sizeof
pré- et post-incrémentation
pré- et post-décrémentation
complément à 1
négation
plus et moins unaire
référence et indirection
cast
taille
droite
* et /
%
multiplication et division
modulo
gauche
+ et - addition et soustraction
gauche
<< et >> décalage à gauchet et à droite
gauche
< et >
<= >=
inféireur et supérieur
inférieur ou égal et supérieur ou égal
gauche
== != égal et différent
gauche
& AND opération bit à bit
gauche
^ XOR (ou exclusif) opération bit à bit
gauche
| OR (ou inclusif) opération bit à bit
gauche
&& AND logique
gauche
|| OR logique
gauche
?: opérateur conditionnel
gauche
= += -= *= /= %= <<= >>= &= != ^= affectation + modification
droite
, évaluation séquentielle
gauche


Les séparateurs

 Tout identificateur, constante, mot clé etc.. doit être délimité par un séparateur (espace, tabulation ...) ou des opérateurs.


1) Les commentaires

 En langage C les commentaires sont délimités 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 caractères (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 déclarations et de définitions de fonctions, variables et types. Des commentaires et des directives pour le préprocesseur (lignes commençant par un #) peuvent compléter le programme. L'une des fonctions doit s'appeler main correspondant à la fonction principale d'un programme. L'exécution d'un programme commence toujours par la fonction main :


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

#include <stdio.h> /* pour le préprocesseur */

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

int main() /* définition de la fonction main */
{
 int i, j; /* déclaration des variables */

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

 return 0;
}

int carre(int i) /* définition de la fonction carre */
{
 return i*i;
}


 La librairie standard :

 Contrairement à la plupart des langages, le langage C ne possède aucune autre instruction que les mot-clés vus précédemment : aucune instruction d'entrée/sortie, de calcul mathématique, de gestion de la mémoire, de gestion des fichiers... Pour avoir accès à 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 exécutable


 La réalisation d'un programme commence par la traduction en C des algorithmes. Cette phase de rédaction se fait à l'aide d'un éditeur de texte. Le programme source ainsi rédigé est ensuite traité par le préprocesseur qui, suivant les directives de compilation, substitue des symboles, inclut des fichiers sources etc... Le fichier source d'origine est retravaillé et présenté au compilateur.

 Le compilateur examine chaque ligne, vérifie la syntaxe et génère un code intermédiaire.

 Il reste alors à rassembler les codes intermédiaires (dans le cas où le programme est découpé en plusieurs fichiers sources) et à les lier aux diverses librairies. C'est le rôle de l'éditeur de liens (linker) qui produit le code exécutable du programme.



  Retour en haut de page Page suivante