Vous êtes sur la page 1sur 47

ATELIER DE PROGRAMMATION 1

CHAPITRE 1: GÉNÉRALITÉS
SUR LE LANGAGE C

Préparé par: Dr. L. Ketari

Année Académique 2019 / 2020


Semestre I
PLAN
• Introduction au langage C
– Historique et caractéristiques
– Étapes de mise en œuvre
– Concepts de base
• Types de base et opérateurs du langage C
– Variables
– Constantes
– Opérateurs
2
INTRODUCTION AU LANGAGE C
INTRODUCTION

• Historique
– Le langage C a été créé au milieu des années
1970, aux Laboratories Bell par Brian
Kernighan et Denis Ritchie.
– Initialement conçu pour écrire le système
d’exploitation Unix, la première version a été
rendue disponible vers 1977, sous forme d’un
ouvrage informel intitulé The C Programming
Language.
– En 1983, l’ANSI (American National Standards
Institute) a débuté les travaux de normalisations
du langage C. Ces travaux ont aboutit à la
définition de la norme ANSI C.
4
INTRODUCTION

• Principales Caractéristiques
– Universel: C’est un langage polyvalent, non
orienté vers un domaine spécifique
d’applications. Essentiellement, il permet le
développement de systèmes d’exploitation, de
programmes applicatifs scientifiques et de
gestion.
– Rapide: Le langage C offre des opérateurs (et
des expressions) qui sont très proches de ceux
du langage machine, ainsi que des fonctions qui
permettent un accès simple et direct aux
fonctions internes de l'ordinateur.
– Langage compilé: Un programme C ne peut
être exécuté que si toutes les instructions du
programme sont validées par le compilateur. 5
INTRODUCTION

• Principales Caractéristiques
– Portable (Transportable): En respectant le
standard ANSI-C, il est possible d’utiliser le
même programme sur tout autre système, en le
recompilant avec un minimum de modifications.
– Flexible (Extensible): Le langage C utilise des
bibliothèques de fonctions privées ou livrées par
de nombreuses maisons de développement,
dans le but d’étendre le langage.
– Programmation procédurale: Elle se base
principalement sur la notion de
procédure/fonction permettant de décomposer
un problème à résoudre en différents sous-
problèmes.
6
ÉTAPES DE MISE EN ŒUVRE

1
Édition du
programme
source
main()
{
printf(’’Bonjour!’’);
}

Test.c
2 Compilation Test.o Edition des liens Test.exe
3

7
CONCEPTS DE BASE

• Fonction
– Une fonction est un sous-programme.
• Fichiers
– Les fonctions d’un programme C peuvent faire
partie d’un même fichier source, comme elles
peuvent être réparties dans plusieurs fichiers.
Dans ce cas, une compilation séparée de
chaque fichier est nécessaire.
• L’éditeur de liens effectue la liaison entre
ces fonctions et les objets externes et
produit un module exécutable.

8
CONCEPTS DE BASE

• Fichiers
Fichiers include

: # include <stdio.h>
main()
{
printf(’’Bonjour!’’);
}

La directive #include inclut le fichier stdio.h au


Programme avant la compilation (pour pouvoir
utiliser la fonction prédéfinie printf.
On parle alors de préproceseur
9
CONCEPTS DE BASE

• Programme principal
– Dans le langage C, le programme principal est
une fonction particulière nommée main().
• C’est le point de départ de tout programme
C.

10
CONCEPTS DE BASE

11
CONCEPTS DE BASE
• Organisation d’un
programme C

12
TYPES DE BASE ET OPERATEURS
DU LANGAGE C
VARIABLES

• Définition
– Une variable sert à stocker une information
quelque part dans la mémoire. Elle désigne une
donnée utilisée pendant l’exécution d’un
programme.
– Toute variable est définie par:
• Un identificateur (nom de la variable): Permet
l’accès à la donnée stockée.
• Un type: Définit le type de la donnée à stocker.
Autrement dit, il décidera des valeurs possibles
que peut prendre la variable, ainsi que les
opérateurs qui lui sont applicables.
• Une valeur: La valeur de la variable peut
évoluer durant l’exécution du programme. 14
VARIABLES

• Identificateur d’une variable


– Un identificateur commence toujours par une
lettre. Il peut se composer de:
• chiffres (0→9)
• lettres minuscules (a→z) et lettres
majuscules (A→Z)
• symbole ‘_’

– La longueur des identificateurs n'est pas


limitée, mais C distingue uniquement les 31
premiers caractères.

15
VARIABLES

• Identificateur d’une variable


– Le langage C distingue les majuscules et les
minuscules.
• compteur et Compteur sont deux variables
différentes.

– Le choix des noms de variables est important


pour la lisibilité d’un programme. Il est
important de choisir des noms de variables
significatifs.
• Exemples
– pi, nombre_d_habitants, tauxTVA,
moyenne, age
16
VARIABLES

• Identificateur d’une variable


– Les lettres accentuées, les espaces et les
symboles divers (autre que ‘_’) sont interdits.
– Exemples

17
VARIABLES

• Déclaration
– Syntaxe
• <TypeVariable> <NomVar1>, ..,
<NomVarN>;
• Exemples
– int compteur, x,y;
– float hauteur;
– char c;

18
VARIABLES

• Initialisation
– Il est possible d’initialiser la variable (lui
affecter une valeur) au moment de sa
déclaration.
• Exemple
– int compteur = 0;
– char c = ‘R';
– float pi = 3.141593;

19
VARIABLES

• Types de base
– Types entiers
Syntaxe Type Nombre
d’octets
char caractère 1
short int entier court 2
int entier par défaut 2
long int entier long 4

– Les mots-clés short et long permettent


d'influer sur la taille mémoire des entiers.

20
VARIABLES

• Types de base
– Types entiers
• En langage C, le type char est un cas
particulier du type entier. A chaque
caractère correspond une valeur entière.
(Voir table ASCII, acétate suivante)
• Exemple
– Le caractère ‘b’ a pour valeur (entière)
98. Il s’agit de son code ASCII.

21
VARIABLES

TABLE ASCII
22
22
VARIABLES

• Types de base
– Types rationnels
• Souvent appelé flottant, une nombre
rationnel s’écrit avec un point et non avec
une virgule (exp: 2.25)
Syntaxe Type et précision Nombre
mantisse d’octets
float réel simple précision 4
(6 chiffres décimaux)
double réel double précision 8
(15 chiffres décimaux)
long réel précision 10
double étendue (19 chiffres
décimaux)

23
VARIABLES

• Types de base
– Remarques importantes
• Il n'existe pas de type spécial pour chaînes
de caractères dans le langage C. Toutefois,
il est possible de les traiter grâce aux
notions de tableaux et pointeurs.
• Le type Booléen n’existe pas en langage C.
Par convention, on utilisera la valeur entière
1 pour désigner la valeur vrai et la valeur 0
pour désigner la valeur faux.
Exemple
int flag;
flag = 0; 24
VARIABLES

• Initialisation d’une variable


– Il est possible d’initialiser la variable (lui
affecter une valeur) au moment de sa
déclaration.
• Exemple
– int compteur = 0;
– char c = ‘R';
– float moyenne = 1.5;
– long temp = 5L;

25
CONSTANTES

• Définition
– Il est possible de déclarer des constantes (dont
la valeur est non modifiable) en utilisant le
modificateur const (constante typée) ou avec
la commande #define (constante non typée).
– On distingue les:
• Constantes entières (1, 3, 17..)
• Constantes rationnelles (2.25, 3.14..)
• Caractères constants (‘a‘, ‘Z‘, ..)
• Constante chaîne de caractères (“Bonjour”,
“ ”)

26
CONSTANTES

• Remarques
– Caractères constants: On distingue des
caractères non imprimables (séquences
d’échappement) qui sont identifiés par leurs
codes internes commençant par \:
• \0 caractère NUL pour indiquer la fin d’une
chaîne de caractères. Le compilateur insère
automatiquement ce caractère spécial à la
fin de toute chaîne de caractères.
• \n nouvelle ligne
• \t tabulation
• \b curseur arrière
• \r retour au début de la ligne
27
CONSTANTES

• Constantes non typées


– Il est possible de définir une constante non
typée, dans le texte du programme principal
(au début), ou dans les fichiers d’entêtes, à
l’aide de la commande #define.
– Syntaxe: #define <nom_constante> <valeur>;
– Exemples
• # define MAX 100;
• # define PI 3.14;
• # define LANCAGE “Java”;

28
CONSTANTES

• Constantes typées
– Il est possible de définir une constante typée à
l’aide du modificateur const.
– Syntaxe
const <type_constante> <nom_constante> = <valeur>;
– Exemples
• const int MAX = 767;
• const float PI = 3.14;
• const char LETTRE = ‘a';

29
OPÉRATEURS

• Opérateur d’évaluation séquentielle


– Noté par un point virgule (,), il permet
d’exprimer plusieurs calculs successifs au sein
d’une même expression. Il permet de
regrouper plusieurs instructions en une seule.
• Exemple: L’expression: i ++, j = i + k
– Incrémente la valeur de i
– Puis évalue j = i + k

30
OPÉRATEURS

• Opérateurs arithmétiques
• + addition
• - soustraction
• * multiplication
• / division (types entiers et rationnels)
(équivalent de DIV en algorithmique)
• % modulo (types entiers et rationnels)
(équivalent de MOD en algorithmique)

31
OPÉRATEURS

• Opérateur d’affectation
– L’affectation consiste à donner une valeur (à droite)
à une variable (à gauche).
– Syntaxe : nom_variable = valeur;
– On définit aussi les opérateurs d’affectation
suivants:
• v += e (additionne e à v) ↔ v=v+e
• v -= e (soustrait e à v) ↔ v=v-e
• v *= e (multiplie e par v) ↔ v=v*e
• v /= e (divise e par v) ↔ v=v/e
• v %= e (v mod e) ↔ v = v mod e

32
OPÉRATEURS

• Opérateur d’affectation
– Quand il y a un opérateur d’affectation, les
expressions sont évaluées de gauche à droite.
– Exemple
• i += 2 ↔ i=i+2

33
OPÉRATEURS

• Opérateurs logiques
• && et logique (and)
• || ou logique (or)
• ! Négation logique (not)
– Exemples
(10 < 5) && (4 > 2) retourne 0
(6 < 50) || (4 > 2) retourne 1
! (9 > 20) retourne 1

34
OPÉRATEURS

• Opérateurs relationnels (de comparaison)


• == égal à
• != différent de
• <, <=, >, >=, plus petit que, plus petit ou égal
que, …
• L’expression contenant les opérateurs
relationnels sera évaluée de gauche à droite.
• Les résultats de comparaison et des
opérateurs logiques sont du type int.
La valeur 1 correspond à la valeur
booléenne vrai.
La valeur 0 correspond à la valeur
booléenne faux. 35
OPÉRATEURS

• Opérateur (unaire) d’incrémentaton (++)


– i = i + 1; devient i++ ou ++i;
– Incrémentation post-fixée
• X = I++ passe d'abord la valeur de I à X et
incrémente après.
– Incrémentation pré-fixée
• X = ++I incrémente d'abord et passe la
valeur incrémentée à X.

36
OPÉRATEURS

• Opérateur (unaire) de décrémentaton (--)


– i = i - 1; devient i-- ou --i;
– Décrémentation post-fixée
• X = I-- passe d'abord la valeur de I à X et
décrémente après.
– Décrémentation pré-fixée
• X = --I décrémente d'abord et passe la
valeur décrémentée à X.

37
OPÉRATEURS

• Opérateurs d’incrémentation/de
décrémentation
– Exemples : Supposons que la valeur de N est
égal à 5:
• Incrém. postfixe: X = N++; Résultat: N=6 et
X=5 .
• Incrém. préfixe: X = ++N; Résultat: N=6 et
X=6.
• Décrém. postfixe: X = N--; Résultat: N=4 et
X=5 .
• Décrém. préfixe: X = --N; Résultat: N=4 et
X=4.
38
OPÉRATEURS

• Opérateur (unaire) de conversion de type


– En langage C, il est possible d’effectuer la
conversion explicite d’un type particulier.
– Si Exp est une expression, alors (nom_type)
exp convertir exp en nom_type.
– Exemple
int x, y;
(double) (x/y); → Valeur de l’expression entiere x/y
sera convertie en double.
– Cette partie sera détaillée ultérieurement.

39
OPÉRATEURS

40
OPÉRATEURS

• Ordre de priorité des opérateurs


– La multiplication a la priorité sur l'addition et la
multiplication et l'addition ont la priorité sur
l'affectation.
– Pour forcer l'ordinateur à commencer par un
opérateur avec une priorité plus faible, il faut
utiliser les parenthèses.

41
OPÉRATEURS

• Ordre de priorité des opérateurs


– Évaluation des opérateurs de la même
classe:
• Dans chaque classe de priorité, les
opérateurs ont la même priorité. Si nous
avons une suite d'opérateurs binaires de la
même classe, l'évaluation se fait en passant
de la gauche vers la droite dans
l'expression.
• Pour les opérateurs unaires (!,++,--) et pour
les opérateurs d'affectation (=,+=,-
=,*=,/=,%=), l'évaluation se fait de droite à
gauche dans l'expression.
42
OPÉRATEURS

• Ordre de priorité des opérateurs


– Exemple-1: Soient A=5, B=10, C=1 et
l’instruction :
X = 2*(A+3)*B+4*C;
• L'ordinateur évalue d'abord l'expression
entre parenthèses, 5+3==> 8
• Ensuite il évalue les multiplications: 2*8*10
==> 160 , 4*1 ==> 4
• Ensuite il fait l'addition des résultats obtenus:
160+4 ==> 164
• A la fin, il affecte le résultat général à la
variable:
X = 164
43
OPÉRATEURS

• Ordre de priorité des opérateurs


– Exemple-2: Soient A=5, B=10, C=1 et
l’instruction :
X = 2*A+3*B+4*C;
L'ordinateur évalue d'abord les multiplications :
2*A ==> 10 , 3*B ==> 30 , 4*C ==> 4
Ensuite, il fait l'addition des trois résultats
obtenus : 10+30+4 ==> 44
A la fin, il affecte le résultat général à la
variablen : X = 44

44
GLOSSAIRE ET SYMBOLES
• Incrémenter : Augmenter de 1 un entier.
• Décrémenter : Diminuer de 1 un entier.
• Mot-clé : Mot faisant partie de la syntaxe du
langage C (automatiquement mis en gras dans
les éditeurs).
• Indentation : Décalage du code.
• ; Termine une instruction.
• , Est un séparateur.
• { } Délimite des blocs d’instructions.
• ( ) Délimite des expressions / encadre les
arguments de fonction.
45
TYPES DE FICHIERS
• *.h Fichiers entêtes (header files).
• *.c Fichiers sources.
• *.obj Fichiers compilés (version objet).
• *.exe Fichiers compilés et liés (versions exécutables).

46
Merci
Questions ?

47

Vous aimerez peut-être aussi