Académique Documents
Professionnel Documents
Culture Documents
LANGAGE C 2021/2022
PROGRAMMATION 2
EN LANGAGE C
DÉFINITIONS
Qu’est-ce que la compilation?
Le code binaire est obtenu à partir du code La procédure de compilation varie en fonction du
source, en réalisant un traitement appelé langage de programmation. On s’intéresse ici au cas
compilation. Ce traitement est réalisé par un du langage C.
programme spécial appelé le compilateur.
Un programme C prend généralement la forme de
• Compilation : action de transformer un code plusieurs fichiers source distincts, que l’on veut
source en code binaire, de manière à obtenir compiler de manière à obtenir un seul fichier
un fichier exécutable à partir d’un fichier exécutable. La décomposition d’un programme en
source. plusieurs fichiers séparés permet de le rendre
modulaire, ce qui facilite la maintenance, le
Le code binaire est spécifique au processeur qui
débogage et l’évolution du programme.
va exécuter le programme. Par contre, le code
source en est généralement indépendant. Cela
signifie qu’un même code source sera compilé
différemment en fonction du processeur (et/ou
du système d’exploitation) que l’on veut utiliser
pour exécuter le programme.
PROGRAMMATION 3
EN LANGAGE C
DÉFINITIONS
Les étapes de la compilation
La première étape (en rouge) consiste à précompiler La troisième étape (en orange) est appelée l’assemblage,
les fichiers source, en appliquant les directives de pré- et consiste à transformer chaque fichier assembleur en un
compilation indiquées dans le code source au moyen fichier binaire. Là encore, on obtient autant de fichiers
du caractère #. Ces directives seront décrites plus binaires que de fichiers source originaux. Ces fichiers
tard, mais on peut déjà dire que le travail de pré- prennent généralement l’extension .o.
compilation consiste à transformer et compléter le
code source. On obtient ainsi une version complétée La quatrième et dernière étape (en vert) est l’édition des
de chaque fichier source traité. Les fichiers obtenus liens. Elle consiste à rassembler dans un seul fichier binaire
contiennent toujours du code source. tout le code binaire nécessaire à l’exécution du
programme. Ceci inclut à la fois la totalité ou une partie
La deuxième étape (en bleu) est la compilation des fichiers objets de l’étape précédente, mais aussi
proprement dite. Cependant, elle ne produit pas éventuellement de bibliothèques statiques préexistantes.
directement du code binaire, mais un code source On obtient finalement un seul fichier que l’on peut
intermédiaire, utilisant le langage assembleur. Ce exécuter.
langage est qualifié de bas-niveau, car son jeu
d’instructions correspond aux actions les plus simples
qu’un processeur peut effectuer. Par conséquent, un
programme assembleur se traduit très facilement en
un programme binaire. À ce stade de la procédure, on
obtient autant de fichiers assembleur qu’on avait
initialement de fichiers source.
PROGRAMMATION 4
EN LANGAGE C
DÉFINITIONS
Le schéma de compilation
PROGRAMMATION 7
EN LANGAGE C
UN PEU D’HISTOIRE
Le langage C Classement 2017-2018
On qualifie parfois le C de langage bas niveau
car il est relativement proche de l’assembleur.
Toutefois, il est de plus haut niveau que ce
dernier. Il s’agit du langage le plus utilisé au
monde, ou du moins figure-t-il parmi les trois
premiers, en fonction des classements
considérés.
Sa syntaxe a fortement influencé d’autres
langages de plus haut niveau apparus plus tard,
tels que C++, Java, C#, JavaScript ou PHP. Un
grand nombre de systèmes d’exploitation et de
jeux vidéo sont encore (complètement ou
partiellement) écrits en C aujourd’hui.
https://www.computerhistory.org/timeline/software-languages/ PROGRAMMATION 8
EN LANGAGE C
LE IDE CODE BLOCKS
Code Blocks
Pour pouvoir créer une programme en C, vous
avez besoin d’un logiciel qui vous permettra de :
• un éditeur de texte pour écrire le code
source du programme. En théorie un logiciel
comme le Bloc-notes sous Windows. L'idéal,
c'est d'avoir un éditeur de texte intelligent
qui colore tout seul le code, ce qui vous
permet de vous y repérer bien plus
facilement.
Ces tâches sont groupées dans un seul logiciel. Il
• un compilateur pour transformer (« compiler
existe plusieurs environnements de
») votre source en binaire (programme
exécutable). développement. Un des IDE préférable pour
débuter en programmation est Code::Blocks. Il
• un débogueur pour vous aider à retrouver est gratuit et fonctionne sur la plupart des
facilement les erreurs dans votre systèmes d'exploitation
programme, afin que de les corrigées.
Il est librement téléchargeable à partir de
l’adresse suivante :
http://www.codeblocks.org/downloads/26
PROGRAMMATION 9
EN LANGAGE C
LE IDE CODE BLOCKS
Téléchargement de Code Blocks
Taper l’adresse : http://www.codeblocks.org/downloads/26
Suivez les liens de téléchargement pour télécharger le fichier
codeblocks-17.12mingw-setup.exe
Exécutez ce fichier et suivez les étapes d’installation normale.
… et ensuite suivez les étapes de création d’un projet en C.
PROGRAMMATION 10
EN LANGAGE C
LE IDE CODE BLOCKS
Création d’un nouveau projet
Une fois vous lancez code blocks le premier interface apparait
pour vous inviter à créer un nouveau projet.
PROGRAMMATION 11
EN LANGAGE C
LE IDE CODE BLOCKS
Les éléments de l’interface
On distingue 4 grandes sections dans la fenêtre de code
blocks, ils sont numérotées sur l'image : 1- la barre d'outils : elle comprend de nombreux boutons,
mais seuls quelques-uns nous seront régulièrement utiles.
4- la zone de notification : c'est ici que vous verrez les erreurs de compilation
s'afficher si votre code comporte des erreurs. Le rapport des erreurs comporte
la raison et la nature des erreurs, ainsi que le numéro de la ligne ou elle se
trouve PROGRAMMATION 12
EN LANGAGE C
LES ÉLÉMENTS D’UN PROGRAMME EN C
Programme Hello world!
Lors de la création d’un projet en langage C avec
l’IDE Code blocks, un fichier source (main.c) est
créé automatiquement contenant une source
comme exemple du programme le plus simple
illustrant le commencement de l’apprentissage
de n’importe qu’elle langage de programmation :
le programme Hello world. Ce programme
consiste simplement à afficher un message Hello
world!! à l’écran. Nous examinons ici le syntaxe
d’un programme en C. les instructions du langage C sont obligatoirement
encapsulées dans des fonctions et il existe une
Remarquez que l’éditeur du code propose une
fonction privilégiée appelée main qui est le point
certaines colorations significatifs des parties de
de départ de tout programme (appelée aussi
code en fonction de leurs fonctionnalités. Par
programme principal)
exemple : les directives d’inclusion de
bibliothèques spéciales de fonctions sont en vert,
les mots clés sont en gras et en bleu foncé, les
messages à afficher en bleu clair, les délimiteurs
en rouge…
PROGRAMMATION 13
EN LANGAGE C
LES ÉLÉMENTS D’UN PROGRAMME EN C
Programme Hello world!
Lors de la création d’un projet en langage C avec
PROGRAMMATION 14
EN LANGAGE C
LES ÉLÉMENTS D’UN PROGRAMME EN C
Programme Hello world!
Pour examiner le résultat que donne ce
programme, il faut compiler se projet à travers le
bouton build . La compilation une
fois réussie (sans erreurs de compilation) génère
une fichier exécutable que nous pouvons
exécuter à partir du compilateur en appuyant sur
le bouton run . Nous pouvons aussi
faire ces deux tâche simultanément en appuyant
sur le bouton build & run , dans les
deux cas une fenêtre d’exécution (que nous Cette console représente la manière dont
appelons console) s’affiche à l’écran. communique le programme avec son utilisateur.
C’est la raison pour laquelle le type du projet
Dans la console apparait le message Hello world!
que nous avons créé est du type console
qui représente le résultat de ce programme.
application.
Le message qui suit :
Process returned 0 (0x0) execution time : 0.031 s
Press any key to continue.
PROGRAMMATION 18
EN LANGAGE C
LES VARIABLES EN C
Le type entier
• short int ou short (entier sur 16 bits :
- 32 768 à 32 767) Exemple: unsigned short x;
• int (entier sur 32 bits : - 2 147 483 648 à 2 x peut aller de 0 à 65 535
147 483 647) pas de bit réservé pour le signe
- C accepte les constantes entière en
• long int ou long (entier sur 32 bits ou notation décimale, hexadécimale ou
64 bits, selon les machines) octale.
Chacun des 3 peut être nuancé par l’utilisation
du qualificatif unsigned pour ne représenter
que des nombres positifs. Par conséquence, le
nombre maximal qui peut être stocké augmente
tout en utilisant la même capacité :
PROGRAMMATION 19
EN LANGAGE C
LES VARIABLES EN C
Le type réel (float)
float: codé sur 4 octets avec 1 bit de signe, 23
bits de mantisse et 8 bits d'exposant. Exemple
C accepte les constantes flottante en
double : codé sur 8 octets avec 1 bit de signe, notation décimale ou scientifique
52 bits de mantisse et 11 bits d'exposant. 3.5e+3 3500 2.43 -0.38 -.38
4. .27
long double : codé sur 10 octets avec 1 bit de
signe, 64 bits de mantisse et 15 bits
d'exposant.
3.4*10-38 à
float Flottant (réel) 4
3.4*1038
1.7*10-308 à
double Flottant double 8
1.7*10308
long Flottant double 3.4*10-4932 à
10
double long 3.4*104932
PROGRAMMATION 20
EN LANGAGE C
LES VARIABLES EN C
Le type char
En C, un caractère est un entier signé codé sur 1 NOTATION RESULTAT
octet.
\a cloche ou bip (alert ou audible bell)
Notation des constantes caractères : ‘a’ , ‘$’ ..
\b Retour arrière (Backspace)
\f Saut de page (Form Feed)
Important: ‘a’ ≠ ‘’a’’ \n Saut de Ligne (Line Feed)
\r Retour chariot (Carriage Return)
\t Tabulation horizontaLe (HorizontaL Tab)
Il existe des caractères non imprimables, tel que
le changement de ligne, de tabulation, … en voici \v Tabutation verticale (VerticaL Tab)
un tableau récapitulatif \\ \
\' ‘
\ '' ‘’
\? ?
PROGRAMMATION 21
EN LANGAGE C
LES VARIABLES EN C
La table code ASCII
PROGRAMMATION 22
EN LANGAGE C
LES VARIABLES EN C
A propos du type Booléen
Nous avons vu en algorithmique le type de
variable particulier dans lequel il est possible de
stocker seulement des valeurs logiques (vrai,
faux). Le type booléen n’existe pas en C alors
qu’il existe dans d’autres langages de
programmation.
Le type booléen est représenté par un entier. Il se
comporte comme la valeur booléenne : vraie si
cette valeur entière est non nulle.
Dans un contexte qui exige une valeur booléenne
(comme les tests, par exemple), un entier non
nul équivaut à vrai et la valeur zéro équivaut à
faux.
PROGRAMMATION 23
EN LANGAGE C
LES VARIABLES EN C
La déclaration de variables
char
unsigned short Exemples :
signed int x, y=0, z;
int
identificateur
float a,b;
long = expression
unsigned short n=1000;
float
double
long double
Les mots suivants sont réservés. Leur fonction est prévue par la syntaxe de C et ils ne peuvent pas être utilisés dans un autre
but :
auto break case char const continue default do
PROGRAMMATION 25
EN LANGAGE C
LES OPERATEURS EN C
Opérateurs arithmétiques en C
Conversions implicites :
On peut écrire des expressions mixtes dans lesquelles interviennent des opérandes de types différents:
Int n,p; float x;
n*x + p (int * float) + int On parle de
Conversion implicite: int float ( float*float) + int conversion d’ajustement de type:
intlongfloatdoublelong double
float + int
Même mécanisme : float + float float
Les opérateurs numériques ne sont pas définis pour le types char et short :
C prévoit que toute valeur char ou short soit d’abord convertie en int.
char n,p; float x; n*x + p
(char* float) + char
Conversion systématique: ( int * float) + int
Conversion implicite : float * float + int
PROGRAMMATION
float + float float EN LANGAGE C
26
LES OPERATEURS EN C
Les opérations relationnelles
PROGRAMMATION 27
EN LANGAGE C
LES OPERATEURS EN C
Opérateur d’affectation Opérateurs d’affectation élargie:
Opérateur d’affectation ordinaire Il existe aussi une équivalence en écritures de
• i = 5 est une expression qui réalisait une certaines opérations particulières d’affectations :
action : l'affectation de la valeur 5 à i. Cet
opérateur d'affectation (=) peut faire i=i+k i+=k
intervenir d'autres expressions comme
a=a*b a*=b
dans : c=b + 3
• Cet opérateur possède une associativité i=i-k i-=k
de droite à gauche : i = j = 5
a=a/b a/=b
PROGRAMMATION 28
EN LANGAGE C
LES OPERATEURS EN C
Opérateurs d’incrémentation et de décrémentation ( ++ - - )
PROGRAMMATION 29
EN LANGAGE C
LES OPERATEURS EN C
Opérateur de CAST Opérateur conditionnel
L’operateur CAST permet d’obliger une
(seul opérateur ternaire en C)
conversion vers un type particulier.
syntaxe : condition ? Valeur si vrai : valeur si faux
Exemple: z = (x==y) ? a : b ; on utilise la valeur de l’expression
n=10, p=3; a>b ? i++ : i-- ; la valeur de l’expression n’est pas utilisée
PROGRAMMATION 30
EN LANGAGE C
LES OPERATEURS EN C
Opérateurs bit à bit Exemple :
Le langage C définit six opérateurs permettant de
#include <stdio.h>
manipuler les bits d’une variable:
int main(void)
• l’opérateur « et »: &. {
int a = 99; /* 99 == 0110 0011 */
• l’opérateur « ou inclusif »: |.
int b = 42; /* 42 == 0010 1010 */
• l’opérateur « ou exclusif »: ^. int c = 37; /* 37 == 0010 0101 */
/* 0110 0011 & 0010 1010 == 0010 0010 == 34 */
• l’opérateur de négation ou de complément: ~. printf("%d\n", a & b);
/* 0110 0011 | 0010 1010 == 0110 1011 == 107 */
• l’opérateur de décalage à droite: >>.
printf("%d\n", a | b);
• l’opérateur de décalage à gauche: <<. /* 0110 0011 ^ 0010 1010 == 0100 1001 == 73 */
33
Les Operateurs en C
Exercices
34