Vous êtes sur la page 1sur 6

Chapitre 1 Les éléments de base du langage C

Le C a été développé conjointement au système d'exploitation UNIX, dans les Laboratoires


BELL par Dennis Ritchie en 1971.
Le grand succès du langage C s'explique par les avantages suivants:

 universel :
C n'est pas orienté vers un domaine d'applications spéciales, comme par exemple FORTRAN
(applications scientifiques et techniques).

 compact et rapide:
C est basé sur un noyau de fonctions et d'opérateurs limité, qui permet la formulation
d'expressions simples, mais efficaces.

 portable :
En respectant le standard ANSI-C, il est possible d'utiliser le même programme sur tout autre
système (autre hardware, autre système d'exploitation), simplement en le recompilant.

 extensible :
C ne se compose pas seulement des fonctions standards; le langage est animé par des
bibliothèques de fonctions privées ou livrées par de nombreuses maisons de développement.

I Structure d’un programme C

Pour écrire un code C il faut :

 entrer un texte (le programme source) dans l'ordinateur (à l'aide d'un programme
appelé EDITEUR). Ce texte doit être enregistré avec l’extension (*.C) ou (*.CPP).
 le traduire en langage machine (c'est à dire en codes binaires compréhensibles par
l'ordinateur) : c'est la compilation et, si plusieurs modules ont été compilés
séparément, l'édition de liens (LINK ou BIND). On obtient ainsi un fichier objet
(*.obj).
 l'exécuter et on aura enfin un exécutable (*.exe).

Un programme en C comporte :

 Une entête (header) constitué de méta instructions ou directives destinées au pré


processeur (par exemple : inclusion de librairies de fonctions prédéfinies).
 Un bloc principal appelé main () : Qui représente la fonction principale (programme
principale en algorithmique).
 Le corps des fonctions placées avant ou après le main() dans un ordre quelconque,
les une après les autres. Partout, les variables et les fonctions font l’objet d’une
déclaration précisant leur type.

Exemple : calcul de la surface d’un cercle

1
En Pascal Langage C vers I Langage C vers II
Program surface_cercle ; #include <stdio.h> #include <stdio.h>
Const PI = 3.14 ; #define PI 3.14 #define PI 3.14
Function f_surface (rayon : real) : real ; float f_surface(float rayon) float f_surface(float);
Var s : real; {float s; void main ()
Begin s=rayon*rayon*PI; {
s:= rayon*rayon*PI; return(s); float surface;
f_surface :=s; } surface=f_surface (2.0);
End ; void main() printf ("%f\n", surface);
Var surface : real ; { }
Begin float surface; float f_surface(float rayon)
surface=f_surface (2.0); {float s;
Surface:=f_surface(2.0); printf ("%f\n", surface); s=rayon*rayon*PI;
writeln(surface); } return(s);
end; }

II Les composants élémentaires du C :


Un programme en langage C est constitué des six groupes de composants élémentaires
suivants :
 les identificateurs
 les mots-clefs
 les constantes
 les chaînes de caractères,
 les opérateurs
 les signes de ponctuation.
On peut ajouter à ces six groupes les commentaires, qui ne sont pas considérés par le pré
processeur.

II.1. Les identificateurs :


C'est le nom affecté à une variable. Le nombre de caractères peut être limité, cela
dépend du compilateur utilisé. L’identificateur d’une variable doit toujours être écrit de la
même façon : Mon_Identificateur ≠ mon_identificateur ≠ MON_IDENTIFICATEUR.

Les seuls caractères autorisés pour les noms de variables sont :

- lettres NON accentuées ;


- chiffres (sauf au début du nom) ;
- caractères souligné « _ »

II.2. Les mots clés :

Un certain nombre de mots sont réservés pour le langage C et ne peuvent donc pas être
utilisés comme identificateurs. L'ANSI-C compte 32 mots clefs :

auto double int struct


break else long switch
case enum register typedef

2
char extern return union
const float short unsigned
continue for signed void
default goto sizeof volatile
do if static while

II.3. Les commentaires :


Un commentaire débute par /* et se termine par */. Par exemple,
/* Ceci est un commentaire */
« // » permet d’écrire un commentaire sur une même ligne

II.4. Les constantes :


Une constante est une valeur qui apparaît littéralement dans le code source d'un programme,
le type de la constante étant déterminé par la façon dont la constante est écrite. Les constantes
vont être utilisées, par exemple, pour l’initialisation de variables.
II.4.1 Les constantes entières
Une constante entière peut être représentée de 3 manières différentes suivant la base dans
laquelle elle est écrite :
 décimale : par exemple, 0 et 2437 sont des constantes entières décimales.
 octale : la représentation octale d'un entier correspond à sa décomposition en base 8.
Les constantes octales doivent commencer par un zéro. Par exemple, les représentations
octales des entiers 0 et 255 sont respectivement 00 et 0377.
 hexadécimale : la représentation hexadécimale d'un entier correspond à sa
décomposition en base 16. Les lettres de a/A à f/F sont utilisées pour représenter les
nombres de 10 à 15. Les constantes hexadécimales doivent commencer par 0x ou 0X.
Par exemple, les représentations hexadécimales de 14 et 255 sont respectivement 0xe et
0xff.

Exemple :

int Nb_lignes ; /* déclaration d’une variable de type entier */


Nb_lignes = 15 ; /* initialisation de cette variable à 15 */
#define TEL 75410452
const int annee = 2002 ; /* affecte une valeur à une variable, cette valeur
ne pourra plus être changé par la suite */

II.4.2 Les constantes réelles


Elles sont de l’une des deux formes suivantes :

 En notation décimale. Exemple : 2.5 -123.47 ….


 En notation scientifique. Exemple : -14.5 e-2 (-14.5 10-2)

3
II.4.3 Les constantes caractères
Les constantes caractères permettent de désigner les valeurs entières correspondant aux codes
ASCII des caractères.

Elles sont sous une des formes suivantes :

 ‘x’ désigne le caractère imprimable x ( Sauf l’apostrophe et l’antislash et les guillemets)


 ‘\nnn’ désigne le caractère de code octal nnn (nnn est un nombre dans la base 8)
 Notion symbolique :
‘\n’ Passage à la ligne suivante
‘\r’ Retour du curseur en début de ligne
‘\b’ Déplacement du curseur d’un caractère vers la gauche
‘\f’ Déplacement à la page suivante
‘\t’ Déplacement du curseur d’une tabulation vers la droite
‘\v’ Déplacement du curseur d’une tabulation vers le bas

II.4.4 Les constantes chaînes de caractères


 Une constante chaîne de caractères est une suite de caractères entourés par des
guillemets. Par exemple, ''Ceci est une chaîne de caractères'' (ATTENTION : en pascal
une chaîne est entourée par deux apostrophes ‘ceci est une chaîne en pascal’).
 Elle peut contenir des caractères non imprimables, désignés par les représentations vues
précédemment. Par exemple, ''ligne 1 \n ligne 2''
A l'intérieur d'une chaîne de caractères, le caractère '' doit être désigné par \''.
Remarque :

 Le compilateur ajoute « \0 » à la fin de la chaîne dans la mémoire.


 Il faut savoir distinguer la constante caractère de la constante chaîne de caractère. Ainsi
‘x’ et "x" ne sont pas équivalents. Le premier représente la valeur numérique du caractère
x, le second est une chaîne ne comprenant qu’un caractère (la lettre x) en plus \0 final.

II.5 Les types de données


En C, il n’existe que quelques types fondamentaux de données :

 Le type char : représente un caractère.


 Le type int : un nombre entier.
 Le type float : un nombre en virgule flottante en simple précision.
 Le type double : un nombre en virgule flottante en double précision.
Des qualificatifs peuvent préciser le type int : short, long, unsigned, signed. Les qualificatifs
signed et unsigned peuvent préciser le type char. Le qualificatif long peut préciser le type
double. Quand une déclaration ne précise pas le type de base, int est supposé le type par
défaut.
Exemple :

short int x ;
unsigned long y ; /* int implicite */
Long double z ;

4
unsigned char ch ;

II.5.1 Déclaration de variables


Les variables doivent toutes être déclarées avant d’être utilisées. A une variable correspond un
espace en mémoire et un mécanisme permettant d’adresser cet emplacement. En C une
variable est caractérisé par :
 Son nom (un identificateur)
 Son type (type de base ou type définie par l’utilisateur)

Une déclaration de variables a la forme :

type liste de variables initialisées ou non;

Exemple:

int var_globale1=0, var_globale2;


float var ;
int i,j,k ;
char backslash=’\\’;
int i=0 ;/*décalaration et initialisation*/
float eps=1.0 e-5 ;

II.5.2 Déclaration de constantes


Les constantes doivent toutes être déclarées et initialisées avant d’être utilisées. Il existe 2
méthodes pour la déclaration des constantes.
Méthode 1 :
#define nom_cste valeur
/* Sans point virgule à la fin */
Exemple : #define PI 3.14
Le compilateur ne réserve pas de place en mémoire. Les constantes déclarées par #define
s'écrivent traditionnellement en majuscules, mais ce n'est pas une obligation.
Méthode 2 :
const type nom_cste = valeur ;
Exemple : const float PI = 3.14 ;
Dans ce cas, le compilateur réserve de la place en mémoire (ici 4 octets), pour la variable PI,
mais dont on ne peut changer la valeur.

II.5.3 Conversion de types


Le langage C permet d'effectuer des opérations de conversion de type: On utilise pour cela
5
l'opérateur de "cast" (). Une transformation de type est effectuée automatiquement, suivant
l'ordre :
char -> int -> long -> float -> double
signed -> unsigned

La syntaxe est : (type_résultat) valeur_à_transformer

Exemple : {float x;int a=5; x=(float)a;}

III Remarques générales


1- Le type Booléen n’existe pas dans le langage C.
2- Il n’y a pas de notion de procédure en langage C (On peut dire qu’une procédure en
langage C est une fonction sans résultats void nom_procedure(paramètres) ).
3- Le langage C ne permet pas de déclarer des fonctions à l’intérieur d’autres fonctions.
4- Le code ASCII (American Standard Code Information Interchange) est un code à 7
bits, il occupe 1 octet et il varie de 0 à 127 (27-1). Les 32 premiers codes (de 0 à 31)
sont réservés aux caractères de contrôles. Pour convertir un caractère majuscule en
minuscule, on ajoute au code ASCII de ce dernier (+32).
5- En langage C, le type char est un cas particulier du type entier: un caractère est un
entier de 8 bits. Par exemple, Le caractère 'b' a pour valeur 98 (son code ASCII).

Vous aimerez peut-être aussi