SlideShare une entreprise Scribd logo
1  sur  99
Nous formons les experts de demain
ECOLE SUPERIEURE D’INGENIERIE ET D’INNOVATION TECHNOLOGIQUE
Reproduction interdite
Nous formons les experts de demain
ECOLE SUPERIEURE D’INGENIERIE ET D’INNOVATION
TECHNOLOGIQUE
PROGRAMMATION EN LANGAGE C
Licence Professionnelle Informatique
1ère année Tronc commun
Nous formons les experts de demain
ECOLE SUPERIEURE D’INGENIERIE ET D’INNOVATION TECHNOLOGIQUE
Reproduction interdite
Nous formons les experts de demain
ECOLE SUPERIEURE D’INGENIERIE ET D’INNOVATION
TECHNOLOGIQUE
Présentation DE L’ENSEIGNANT
M. Olyvier NZIGHOU
Master 2 Gestion de Projets Informatiques de l’Université de
Strasbourg.
Enseignant vacataire à l’IST, EPL, IAI, SUP’MANAGEMENT
Tél. : 066049840 / 077684285
Reproduction interdite
Reproduction interdite
Reproduction interdite
Reproduction interdite
Objectifs du cours
3
 Initier les étudiants à la programmation impérative à
travers le langage C.
 Ce module vient compléter le cours d’algorithmes et
structures de données vu au 1er semestre..
Reproduction interdite
Reproduction interdite
Reproduction interdite
Reproduction interdite
Evaluation
4
 Contrôles (40%) inclus
 Devoirs
 Interrogations
 TP
 Examen final (60%)
Reproduction interdite
Reproduction interdite
Reproduction interdite
Reproduction interdite
Enseignement
5
 Cours
Magistral
 TD/TP
Reproduction interdite
Reproduction interdite
Reproduction interdite
Reproduction interdite
Contenu du cours
6
1. Introduction
2. Types, opérateurs et expressions
3. Les entrées-sorties (printf, scanf, …)
4. Les structures de contrôle
5. Les tableaux
6. Les pointeurs
7. Les fonctions
8. Les chaînes de caractères
9. Les structures
Reproduction interdite
Reproduction interdite
Reproduction interdite
Reproduction interdite
PROGRAMMATION EN LANGAGE C
7
CHAPITRE 1 Introduction
Reproduction interdite
Reproduction interdite
Reproduction interdite
Reproduction interdite
Langages informatiques
8
 Un langage informatique est un outil permettant de
donner des ordres (instructions) à la machine.
 A chaque instruction correspond une action du
processeur.
 Intérêt : écrire des programmes (suite consécutive
d’instructions) destinés à effectuer une tache donnée.
 Exemple: un programme de gestion de comptes
bancaires.
 Contrainte : être compréhensible par la machine.
Reproduction interdite
Reproduction interdite
Reproduction interdite
Reproduction interdite
Langage machine
9
 Langage binaire : l’information est exprimée et manipulée
sous forme d’une suite de bits.
 Un bit (binary digit) = 0 ou 1 (2 états électriques)
 Une combinaison de 8 bits = 1 Octet  28 = 256 possibilités
qui permettent de coder tous les caractères alphabétiques,
numériques, et symboles tels que ?,*,&, …
 Le code ASCII (American Standard Code for Information
Interchange) donne les correspondances entre les
caractères alphanumériques et leurs représentation
binaire,
Ex. A = 01000001, ? = 00111111
 Les opérations logiques et arithmétiques de base (addition,
multiplication, … ) sont effectuées en binaire
Reproduction interdite
Reproduction interdite
Reproduction interdite
Reproduction interdite
L’ASSEMBLEUR
10
 Problème : le langage machine est difficile à comprendre par
l'humain
 Idée : trouver un langage compréhensible par l'homme qui
sera ensuite converti en langage machine
 Assembleur : exprimer les instructions élémentaires de
façon symbolique
 + : déjà plus accessible que le langage machine
 - : dépend du type de la machine (n’est pas portable)
 - : pas assez efficace pour développer des applications
complexes
Reproduction interdite
Reproduction interdite
Reproduction interdite
Reproduction interdite
Langages haut niveau
11
 Intérêts multiples pour le haut niveau :
 proche du langage humain « anglais »
(compréhensible)
 permet une plus grande portabilité (indépendant du
matériel)
 Manipulation de données et d’expressions complexes
(réels, objets, a*b/c, …)
 Nécessité d’un traducteur (compilateur/interpréteur),
exécution plus ou moins lente selon le traducteur
Reproduction interdite
Reproduction interdite
Reproduction interdite
Reproduction interdite
Compilateur/interpréteur
12
 Compilateur : traduire le programme entier une fois pour
toutes
 + plus rapide à l’exécution
 + sécurité du code source
 - il faut recompiler à chaque modification
Reproduction interdite
Reproduction interdite
Reproduction interdite
Reproduction interdite
Compilateur/interpréteur
13
 Interpréteur : traduire au fur et à mesure les instructions
du programme à chaque exécution
 + exécution instantanée appréciable pour les débutants
 - exécution lente par rapport à la compilation
Reproduction interdite
Reproduction interdite
Reproduction interdite
Reproduction interdite
Langages de programmation
14
 Deux types de langages :
 Langages procéduraux
 Langages orientés objets
 Exemples de langages :
 Fortran, Cobol, Pascal, C, …
 C++, Java, …
Reproduction interdite
Reproduction interdite
Reproduction interdite
Reproduction interdite
Historique du C
15
 Le langage C a été conçu en 1972 dans «Bell Laboratories» par
Dennis Ritchie avec l’objectif d’écrire un système
d'exploitation (UNIX).
 En 1978, une première définition rigoureuse du langage C
(standard K&R-C) a été réalisée par Kernighan et Ritchie en
publiant le livre «The C Programming Language ».
 Le succès du C et l’apparition de compilateurs avec des
extensions particulières ont conduit à sa normalisation.
 En 1983, l’organisme ANSI (American National Standards
Institute) chargeait une commission de mettre au point une
définition explicite et portable pour le langage C. Le résultat
est le standard ANSI-C.
Reproduction interdite
Reproduction interdite
Reproduction interdite
Reproduction interdite
Caractéristiques du C
16
 Universel : n'est pas orienté vers un domaine d'application
particulier (applications scientifiques, de gestion, …)
 Près de la machine : offre des opérateurs qui sont proches
de ceux du langage machine (manipulations de bits,
d’adresses, …)  efficace.
 Modulaire: peut être découpé en modules qui peuvent être
compilés séparément
 Portable: en respectant le standard ANSI-C, il est possible
d'utiliser le même programme sur plusieurs systèmes
(hardware, système d'exploitation)
Remarque : Une programmation efficace et compréhensible en
C n’est pas facilement accessible à des débutants
Reproduction interdite
Reproduction interdite
Reproduction interdite
Reproduction interdite
Programme source, objet et exécutable
17
 Un programme écrit en langage C forme un texte qu’on
nomme programme ou code source, qui peut être formé de
plusieurs fichiers sources
 Chaque fichier source est traduit par le compilateur pour
obtenir un fichier ou module objet (formé d’instructions
machine)
 Ce fichier objet n’est pas exécutable tel quel car il lui
manque les instructions exécutables des fonctions
standards appelées dans le fichier source (printf, scanf,
…) et éventuellement d’autres fichiers objets
Reproduction interdite
Reproduction interdite
Reproduction interdite
Reproduction interdite
Programme source, objet et exécutable
18
 L’éditeur de liens réunit les différents modules objets
et les fonctions de la bibliothèque standard afin de
former un programme exécutable
Remarque : la compilation est précédée par une phase de
prétraitement (inclusion de fichiers en-tête) réalisé par le
préprocesseur
Reproduction interdite
Reproduction interdite
Reproduction interdite
Reproduction interdite
Création du fichier exécutable
19
Reproduction interdite
Reproduction interdite
Reproduction interdite
Reproduction interdite
Compilateurs C
20
 Pour pouvoir écrire des programmes en C, vous avez besoin
d’un compilateur C sur votre machine.
 Il existe plusieurs compilateurs respectant le standard ANSI-
C. Une bonne liste est disponible sur :
c.developpez.com/compilateurs/
 Nous allons utiliser l'environnement de développement Dev-
C++ avec le système d’exploitation Windows.
 Vous pouvez télécharger Dev-C++ librement, par exemple
sur le site www.bloodshed.net
Reproduction interdite
Reproduction interdite
Reproduction interdite
Reproduction interdite
Cycle de développement
21
 Étape 1 : Utilisez un éditeur pour créer le code source.
Par convention, ce fichier doit avoir l’extension .c (par
exemple, monprog.c, database.c, etc.).
 Étape 2 : Compilez votre programme. Si le
compilateur ne rencontre pas d’erreur dans votre code
source, vous obtenez un fichier objet du même nom
que votre fichier source avec une extension .obj ou .o
(par exemple, monprog.c est compilé en monprog.o). Si
le code source contient des erreurs, le compilateur
échoue et vous les affiche pour correction.
Reproduction interdite
Reproduction interdite
Reproduction interdite
Reproduction interdite
Cycle de développement
22
 Étape 3 : Exécutez la liaison. Si aucune erreur
n’apparaît, vous obtenez un programme exécutable dans
un fichier du même nom que le fichier objet (avec une
extension .exe sur Windows par exemple, monprog.obj
devient monprog.exe).
 Étape 4 : Exécutez votre programme. Contrôlez les
résultats obtenus et recommencez à l’étape 1 si des
modifications sont nécessaires dans le fichier source.
Reproduction interdite
Reproduction interdite
Reproduction interdite
Reproduction interdite
Cycle de développement
23
Reproduction interdite
Reproduction interdite
Reproduction interdite
Reproduction interdite
Exemple d’une fenêtre Dev-C++
24
Reproduction interdite
Reproduction interdite
Reproduction interdite
Reproduction interdite
Composantes d’un programme C
25
 Directives du préprocesseur
 inclusion des fichiers d'en-tête (fichiers avec extension
.h)
 définitions des constantes avec #define
 déclaration des variables globales
 définition des fonctions (En C, le programme principal et
les sous-programmes sont définis comme fonctions )
 Les commentaires : texte ignoré par le compilateur, destiné
à améliorer la compréhension du code
Reproduction interdite
Reproduction interdite
Reproduction interdite
Reproduction interdite
Composantes d’un programme C
26
Exemple :
#include<stdio.h>
main()
{
printf("notre premier programme C n");
/*ceci est un commentaire*/
}
Reproduction interdite
Reproduction interdite
Reproduction interdite
Reproduction interdite
Remarques sur ce premier programme
27
 #include<stdio.h> informe le compilateur d’inclure le
fichier stdio.h qui contient les fonctions d’entrées-sorties
dont la fonction printf
 La fonction main est la fonction principale des
programmes en C : Elle se trouve obligatoirement dans
tous les programmes. L'exécution d’un programme
entraîne automatiquement l'appel de la fonction main.
Reproduction interdite
Reproduction interdite
Reproduction interdite
Reproduction interdite
Remarques sur ce premier programme
28
 L’appel de printf avec l’argument "notre premier programme
Cn" permet d’afficher : notre premier programme C et n
ordonne le passage à la ligne suivante
 En C, toute instruction simple est terminée par un point-
virgule ;
 Un commentaire en C est compris entre // et la fin de la
ligne ou bien entre /* et */
Reproduction interdite
Reproduction interdite
Reproduction interdite
Reproduction interdite
PROGRAMMATION EN LANGAGE C
29
CHAPITRE 2 Variables, types,
opérateurs et expressions
Reproduction interdite
Reproduction interdite
Reproduction interdite
Reproduction interdite
Les variables
30
 Les variables servent à stocker les valeurs des données
utilisées pendant l’exécution d’un programme
 Les variables doivent être déclarées avant d’être
utilisées, elles doivent être caractérisées par :
 un nom (Identificateur)
 un type (entier, réel, …)
 une valeur
Reproduction interdite
Reproduction interdite
Reproduction interdite
Reproduction interdite
Les identificateurs
31
 Le choix d’un identificateur (nom d’une variable ou d’une
fonction) est soumis à quelques règles :
 doit être constitué uniquement de lettres, de chiffres et
du caractère souligné (‘_’) (Eviter les caractères de
ponctuation et les espaces)
 Correct : PRIX_HT, prixHT
 incorrect : PRIX-HT, prix HT, prix.HT
 doit commencer par une lettre (y compris le caractère
souligné)
 correct : _A1,
 incorrect : 1A
Reproduction interdite
Reproduction interdite
Reproduction interdite
Reproduction interdite
Les identificateurs
32
 doit être différent des mots réservés du langage :
Remarque : C distingue les majuscules et les minuscules. NOMBRE et
nombre sont des identificateurs différents
Reproduction interdite
Reproduction interdite
Reproduction interdite
Reproduction interdite
Les types de base
33
 Le type d’une variable détermine l’ensemble des valeurs qu’elle
peut prendre et le nombre d'octets à lui réserver en mémoire
 En langage C, il n’y a que deux types de base les entiers et les
réels avec différentes variantes pour chaque type
Remarques :
 Un type de base est un type pour lequel une variable peut
prendre une seule valeur à un instant donné contrairement
aux types agrégés
Reproduction interdite
Reproduction interdite
Reproduction interdite
Reproduction interdite
Les types de base
34
 Le type caractère apparaît en C comme cas particulier
du type entier (un caractère est un nombre entier, il
s’identifie à son code ASCII)
 En C il n'existe pas de type spécial pour chaînes de
caractères. Les moyens de traiter les chaînes de
caractères seront présentés aux chapitres suivants
 Le type booléen n’existe pas. Un booléen est représenté
par un entier (un entier non nul équivaut à vrai et la
valeur zero équivaut à faux)
Reproduction interdite
Reproduction interdite
Reproduction interdite
Reproduction interdite
Types Entier
35
 4 variantes d’entiers :
 char : caractères (entier sur 1 octet : -128 à 127)
 short ou short int : entier court (entier sur 2 octets :
-32768 à 32767)
 int : entier standard (entier sur 2 ou 4 octets )
 long ou long int : entier long (entier sur 4 octets :
-2147483648 à 2147483648)
Reproduction interdite
Reproduction interdite
Reproduction interdite
Reproduction interdite
Types Entier
36
 Si on ajoute le préfixe unsigned à la définition d'un type
de variables entières, alors la plage des valeurs change :
 unsigned char : 0 à 255
 unsigned short : 0 à 65535
 unsigned int : dépend du codage (sur 2 ou 4 octets)
 unsigned long : 0 à 4294967295
Remarque : Une variable du type char peut subir les mêmes
opérations que les variables du type short, int ou long
Reproduction interdite
Reproduction interdite
Reproduction interdite
Reproduction interdite
Types Réel
37
 3 variantes de réels :
 float : réel simple précision codé sur 4 octets de -3.4*1038 à
3.4*1038
 double : réel double précision codé sur 8 octets de -1.7*10308
à 1.7*10308
 long double : réel très grande précision codé sur 10 octets de
-3.4*104932 à 3.4*104932
Reproduction interdite
Reproduction interdite
Reproduction interdite
Reproduction interdite
Déclaration des variables
38
 Les déclarations introduisent les variables qui seront
utilisées, fixent leur type et parfois aussi leur valeur de
départ (initialisation)
 Syntaxe de déclaration en C
<Type> <NomVar1>,<NomVar2>,...,<NomVarN>;
 Exemple:
int i,j,k;
float x,y;
double z = 1.5; // déclaration et initialisation
short compteur;
char c = ‘A’;
Reproduction interdite
Reproduction interdite
Reproduction interdite
Reproduction interdite
Déclaration des constantes
39
 Une constante conserve sa valeur pendant toute
l’exécution d’un programme
 En C, on associe une valeur à une constante en utilisant :
 la directive #define :
#define <nom_constante> valeur
Ici la constante ne possède pas de type.
Exemple : #define PI 3.141592
Reproduction interdite
Reproduction interdite
Reproduction interdite
Reproduction interdite
Déclaration des constantes
40
 le mot clé const :
const type <nom> = expression;
Dans cette instruction la constante est typée
Exemple : const float PI = 3.141592;
Remarque : L’intérêt des constantes est de donner un nom
parlant à une valeur, par exemple NB_LIGNES, aussi ça facilite la
modification du code
Reproduction interdite
Reproduction interdite
Reproduction interdite
Reproduction interdite
Constantes entières
41
 On distingue 3 formes de constantes entières :
 forme décimale : c’est l’écriture usuelle. Ex : 372, 200
 forme octale (base 8) : on commence par un 0 suivi de
chiffres octaux. Ex : 0477
 forme hexadécimale (base 16) : on commence par 0x (ou
0X) suivis de chiffres hexadécimaux (0-9 a-f).
Ex : 0x5a2b, 0Xa9f
Reproduction interdite
Reproduction interdite
Reproduction interdite
Reproduction interdite
Remarques sur les constantes entières
42
 Le compilateur attribue automatiquement un type aux
constantes entières. Il attribue en général le type le plus
économique parmi (int, unsigned int, long int, unsigned
long int)
 On peut forcer la machine à utiliser un type de notre choix en
ajoutant les suffixes suivants :
 u ou U pour unsigned int, Ex : 100U, 0xAu
 l ou L pour long, Ex : 15l, 0127L
 ul ou UL pour unsigned long, Ex : 1236UL, 035ul
Reproduction interdite
Reproduction interdite
Reproduction interdite
Reproduction interdite
Constantes réelles
43
 On distingue 2 notations :
 notation décimale Ex : 123.4, .27, 5.
 notation exponentielle Ex : 1234e-1 ou 1234E-1
 Remarques :
 Les constantes réelles sont par défaut de type double
 On peut forcer la machine à utiliser un type de notre
choix en ajoutant les suffixes suivants :
 f ou F pour le type float, Ex : 1.25f
 l ou L pour le type long double, Ex : 1.0L
Reproduction interdite
Reproduction interdite
Reproduction interdite
Reproduction interdite
Les constantes caractères
44
 Se sont des constantes qui désignent un seul caractère,
elles sont toujours indiquées entre des apostrophes, Ex :
‘b’, ‘A’, ‘?’
 La valeur d’une constante caractère est le code ASCII du
caractère
 Les caractères constants peuvent apparaître dans des
opérations arithmétiques ou logiques
 Les constantes caractères sont de type int
Reproduction interdite
Reproduction interdite
Reproduction interdite
Reproduction interdite
Expressions et opérateurs
45
 Une expression peut être une valeur, une variable ou une
opération constituée par des valeurs, des constantes et des
variables reliées entre eux par des opérateurs. Exemples : 1, b,
a*2, a+3*b-c, …
 Un opérateur est un symbole qui permet de manipuler une ou
plusieurs variables pour produire un résultat. On distingue :
 les opérateurs binaires qui nécessitent deux opérandes Ex : a
+ b
 les opérateurs unaires qui nécessitent un seul opérande Ex :
a++
 l'opérateur conditionnel ? : , le seul qui nécessite trois
opérandes
 Une expression fournit une seule valeur, elle est évaluée en
respectant des règles de priorité et d’associativité
Reproduction interdite
Reproduction interdite
Reproduction interdite
Reproduction interdite
Opérateurs en C
46
 Le langage C est riche en opérateurs. Outre les opérateurs
standards, il comporte des opérateurs originaux d’affectation,
d’incrémentation et de manipulation de bits
 On distingue les opérateurs suivants en C :
 les opérateurs arithmétiques : +, -, *, /, %
 les opérateurs d’affectation : =, +=, -=,*=,/=,…
 les opérateurs logiques : &&, ||, !
 les opérateurs de comparaison : ==, !=, <, >, <=, >=
 les opérateurs d’incrémentation et de décrémentation : ++, --
 les opérateurs sur les bits : <<, >>, &, |, ~, ^
 d’autres opérateurs particuliers : ?:, sizeof, cast
Reproduction interdite
Reproduction interdite
Reproduction interdite
Reproduction interdite
Opérateurs arithmétiques
47
 binaires : + - * / et % (modulo) et unaire : -
 Les opérandes peuvent être des entiers ou des réels sauf pour
% qui agit uniquement sur des entiers
 Lorsque les types des deux opérandes sont différents il y’a
conversion implicite dans le type le plus fort
 L’opérateur / retourne un quotient entier si les deux
opérandes sont des entiers (5 / 2  2). Il retourne un
quotient réel si l’un au moins des opérandes est un réel (5.0
/ 2  2.5)
Reproduction interdite
Reproduction interdite
Reproduction interdite
Reproduction interdite
Conversions implicites
48
 Les types short et char sont systématiquement convertis en int
indépendamment des autres opérandes
 La conversion se fait en général selon une hiérarchie qui n'altère
pas les valeurs int long  float  double  long double
 Ex1 : n * x + p (int n,p; float x;)
 exécution prioritaire de n * x : conversion de n en float
 exécution de l'addition : conversion de p en float
 Ex2 : p1 * p2 + p3 * x (char p1, short p2, p3; float x;)
 p1, p2 et p3 d'abord convertis en int
 p3 converti en float avant multiplication
Reproduction interdite
Reproduction interdite
Reproduction interdite
Reproduction interdite
Exemple de conversion
49
Exemple : n * p + x (int n; long p; float x;)
n * p + x
long conversion de n en long
multiplication par p
n * p de type long
conversion de n * p en float
addition
résultat de type float
*
long
float
+
float
Reproduction interdite
Reproduction interdite
Reproduction interdite
Reproduction interdite
Opérateur d’affectation simple =
50
 L’opérateur = affecte une valeur ou une expression à une
variable
 Exemple : double x, y, z; x=2.5; y=0.7; z=x*y-3;
 Le terme à gauche de l’affectation est appelé lvalue (left value)
 L'affectation est interprétée comme une expression. La valeur
de l'expression est la valeur affectée
 On peut enchainer des affectations, l’évaluation se fait de
droite à gauche
 Exemple : i=j=k=5 (est équivalente à k=5, j=k et ensuite
i=j)
 La valeur affectée est toujours convertie dans le type de la
lvalue, même si ce type est plus faible (ex : conversion de float
en int, avec perte d'information)
Reproduction interdite
Reproduction interdite
Reproduction interdite
Reproduction interdite
Opérateurs relationnels
51
 Opérateurs
 < : inférieur à <= : inférieur ou égal à
 > : supérieur à >= : supérieur ou égal à
 == : égal à != : différent de
 Le résultat de la comparaison n’est pas une valeur booléenne,
mais 0 si le résultat est faux et 1 si le résultat est vrai
 Les expressions relationnelles peuvent donc intervenir dans
des expressions arithmétiques
 Exemple : a = 2, b = 7, c = 4
 B == 3  0 (faux)
 A != b  1 (vrai)
 4 * (a < b) + 2 * (c >= b)  4
Reproduction interdite
Reproduction interdite
Reproduction interdite
Reproduction interdite
Opérateurs logiques
52
 && : ET logique || : OU logique !: NON logique
 && retourne vrai si les deux opérandes sont vrais (valent 1)
et 0 sinon
 || retourne vrai si l’une des opérandes est vrai (vaut 1) et
0 sinon
 Les valeurs numériques sont acceptées : toute valeur non
nulle correspond à vraie et 0 correspond à faux
 Exemple : 5 && 11  1
!13.7  0
Reproduction interdite
Reproduction interdite
Reproduction interdite
Reproduction interdite
Évaluation de && et ||
53
 Le 2ème opérande est évalué uniquement en cas de nécessité
 a && b : b évalué uniquement si a vaut vrai (si a vaut faux,
évaluation de b inutile car a && b vaut faux)
 A || b : b évalué uniquement si a vaut faux (si a vaut vrai,
évaluation de b inutile car a || b vaut vrai)
 Exemples
 if ((d != 0) && (n / d == 2)) : pas de division si d vaut 0
 if ((n >=0) && (sqrt(n) < p)) : racine non calculée si n < 0
 L’intérêt est d’accélérer l’évaluation et d’éviter les traitements
inappropriés
Reproduction interdite
Reproduction interdite
Reproduction interdite
Reproduction interdite
Incrémentation et décrémentation
54
 Les opérateurs ++ et -- sont des opérateurs unaires permettant
respectivement d'ajouter et de retrancher 1 au contenu de leur
opérande
 Cette opération est effectuée après ou avant l'évaluation de
l'expression suivant que l'opérateur suit ou précède son opérande
 k = i++ (post-incrémentation) affecte d'abord la valeur de i à
k et incrémente après (k = i++; ⟺ k = i; i = i+1;)
 k = ++i (pré-incrémentation) incrémente d'abord et après
affecte la valeur incrémentée à k (k = ++i ; ⟺ i = i+1 ; k =
i;)
 Exemple : i = 5 ; n = ++i - 5; i vaut 6 et n vaut 1
i = 5 ; n = i++ - 5; i vaut 6 et n vaut 0
 Remarque : idem pour l’opérateur de décrémentation --
Reproduction interdite
Reproduction interdite
Reproduction interdite
Reproduction interdite
Opérateurs de manipulations de bits
55
 Opérateurs arithmétiques bit à bit :
& : ET logique | : OU logique ^ : OU exclusif ~ : NON
logique
 Les opérandes sont de type entier. Les opérations s'effectuent bit à
bit suivant la logique binaire
 Ex : 14 = 1110, 9 = 1001  14 & 9 = 1000 = 8, 14 | 9 = 1111 = 15
Reproduction interdite
Reproduction interdite
Reproduction interdite
Reproduction interdite
Opérateurs de décalage de bits
56
 Il existe deux opérateurs de décalage :
>> : décalage à droite << : décalage à gauche
 L’opérande gauche constitue l’objet à décaler et l’opérande droit
le nombre de bits de décalage
 Dans le cas d'un décalage à gauche les bits les plus à gauche sont
perdus. Les positions binaires rendues vacantes sont remplies
par des 0
Exemples : char x=14; (14=00001110)  14<<2 = 00111000 = 56
char y=-7; (-7=11111001)  -7<<2 = 11100100 = -28
 Remarque : un décalage à gauche de k bits correspond (sauf
débordement) à la multiplication par 2k
Reproduction interdite
Reproduction interdite
Reproduction interdite
Reproduction interdite
Opérateurs de décalage de bits
57
 Lors d'un décalage à droite les bits les plus à droite sont perdus.
 si l'entier à décaler est non signé, les positions binaires
rendues vacantes sont remplies par des 0
 s'il est signé le remplissage dépend de l’implémentation (en
général le remplissage se fait par le bit du signe)
Ex : char x=14; (14=00001110)  14>>2 = 00000011 = 3
 Remarque : un décalage à droite (n >> k) correspond à la
division entière par 2k si n est non signé
Reproduction interdite
Reproduction interdite
Reproduction interdite
Reproduction interdite
Opérateurs d’affectation combinés
58
 Soit un opérateur de calcul op et deux expressions exp1 et exp2.
L’expression exp1 = exp1 op exp2 peut s’écrire en général de
façon équivalente sous la forme exp1 op= exp2
 Opérateurs utilisables :
 += -= *= /= %=
 <<= >>= &= ^= |=
 Exemples :
 a=a+b s’écrit : a+=b
 n=n%2 s’écrit : n%=2
 x=x*i s’écrit : x*=i
 p=p>>3 s’écrit : p>>=3
Reproduction interdite
Reproduction interdite
Reproduction interdite
Reproduction interdite
Opérateur de forçage de type (cast)
59
 Il est possible d’effectuer des conversions explicites ou de forcer
le type d’une expression
 Syntaxe : (<type>)<expression>
 Exemple : int n, p ;
(double)(n/p); convertit l’entier n / p en double
 Remarque : la conversion (ou casting) se fait après calcul
(double)(n/p) ≠ (double)n/p ≠ (double)(n)/(double)(p)
 float n = 4.6, p = 1.5;
(int)n/(int)p = 4/1 = 4
(int)n/p = 4/1.5 = 2.66
n/(int)p = 4./1 = 4.6
n/p = 4.6/ 1.5 = 3.06
Reproduction interdite
Reproduction interdite
Reproduction interdite
Reproduction interdite
Opérateur conditionnel ? :
60
 Syntaxe : exp1 ? exp2 : exp3
exp1 est évaluée, si sa valeur est non nulle c’est exp2 qui est
exécutée, sinon exp3
 Exemple1 : max = a > b ? a : b
Si a>b alors on affecte à max le contenu de a càd a sinon on
lui affecte b
 Exemple2 : a>b ? i++ : i--;
Si a>b on incrémente i sinon on décrémente i
Reproduction interdite
Reproduction interdite
Reproduction interdite
Reproduction interdite
Opérateur séquentiel ,
61
 Utilité : regrouper plusieurs sous-expressions ou calculs en
une seule expression
 Les calculs sont évalués en séquence de gauche à droite
 La valeur de l’expression est celle de la dernière sous-
expression
 Exemples
 i++, i+j; // on évalue i++ ensuite i+j (on utilise la valeur
de i incrémentée)
 i++, j=i+k, a+b; // la valeur de l’expression est celle de
a+b
 for(i=1, k=0; …; …) { }
Reproduction interdite
Reproduction interdite
Reproduction interdite
Reproduction interdite
Opérateur SIZEOF
62
 Syntaxe : sizeof(<type>) ou sizeof(<variable>)
fournit la taille en octets d'un type ou d'une
variable
 Exemples
 int n;
 printf("%d n",sizeof(int)); // affiche 4
 printf("%d n",sizeof(n)); // affiche 4
Reproduction interdite
Reproduction interdite
Reproduction interdite
Reproduction interdite
Priorité et associativité des opérateurs
63
 Une expression est évaluée en respectant des règles de priorité et
d’associativité des opérateurs
 Ex: * est plus prioritaire que +, ainsi 2 + 3 * 7 vaut 23 et non
35
 Le tableau de la page suivante donne la priorité de tous les
opérateurs. La priorité est décroissante de haut en bas dans le
tableau.
 Les opérateurs dans une même ligne ont le même niveau de
priorité. Dans ce cas on applique les règles d’associativité selon le
sens de la flèche. Par exemple: 13 % 3 * 4 vaut 4 et non 1
 Remarque: en cas de doute il vaut mieux utiliser les parenthèses
pour indiquer les opérations à effectuer en priorité. Ex: (2 + 3) *
7 vaut 35
Reproduction interdite
Reproduction interdite
Reproduction interdite
Reproduction interdite
Priorités de tous les opérateurs
64
Reproduction interdite
Reproduction interdite
Reproduction interdite
Reproduction interdite
LA COMPILATION
70
 Le langage C est un langage compilé. Cela signifie que, pour
pouvoir exécuter un programme, vous devez d’abord traduire
sa forme lisible par un être humain (code source) en quelque
chose qu’une machine peut « comprendre » (code machine).
Cette traduction est effectuée par un programme appelé
compilateur.
 Le compilateur est plutôt pointilleux sur la syntaxe ! Comme
tous les programmeurs, vous passerez beaucoup de temps à
chercher des erreurs dans du code.
 Ce que le programmeur écrit est le code source (ou programme
source) et ce que l’ordinateur exécute s’appelle exécutable, code
objet ou code machine.
Reproduction interdite
Reproduction interdite
Reproduction interdite
Reproduction interdite
LA COMPILATION
71
 La plupart du temps, le code contient des erreurs ! Lorsque
vous coderez, le compilateur risque parfois de vous « agacer ».
Toutefois, il a généralement raison car vous avez certainement
écrit quelque chose qui n’est pas défini précisément par la
norme et qu’il empêche de produire du code objet.
 Le compilateur est dénué de bon sens et d’intelligence (il n’est pas humain)
et il est donc très pointilleux. Prenez en compte les messages d’erreur et
analysez les bien.
Reproduction interdite
Reproduction interdite
Reproduction interdite
Reproduction interdite
ÉDITION DES LIENS
72
 Un programme contient généralement plusieurs parties
distinctes, souvent développées par des personnes
différentes.
 Ces parties distinctes doivent être liées ensemble pour
former un programme exécutable. Le programme qui lie ces
parties distinctes s’appelle un éditeur de liens (linker).
 Le code objet et les exécutables ne sont pas portables
entre systèmes. Par exemple, si vous compilez pour
une machine Windows, vous obtiendrez un code
objet qui ne fonctionnera pas sur une machine Linux.
Reproduction interdite
Reproduction interdite
Reproduction interdite
Reproduction interdite
ÉDITION DES LIENS
73
Reproduction interdite
Reproduction interdite
Reproduction interdite
Reproduction interdite
ÉDITION DES LIENS
74
 Une bibliothèque n’est rien d’autre que du code (qui ne
contient pas de fonction « main »). Nous y accédons au
moyen de déclarations se trouvant dans un fichier d’en-tête.
 Une déclaration est une suite d’instructions qui indique
comment une portion de code (qui se trouve dans une
bibliothèque) peut être utilisée.
 Attention à ne pas confondre bibliothèques et
fichiers d’en-tête.
Reproduction interdite
Reproduction interdite
Reproduction interdite
Reproduction interdite
ÉDITION DES LIENS
75
 Une bibliothèque dynamique est une bibliothèque qui contient
du code qui sera intégré au moment de l’exécution du
programme.
 Les avantages sont que le programme est de taille plus
petite et qu’il sera à jour vis-à-vis de la mise à jour des
bibliothèques.
 L’inconvénient est que l’exécution dépend de l’existence de
la bibliothèque sur le système cible.
 Une bibliothèque dynamique, « Dynamic Link Library »
(.dll) pour Windows et « shared object » (.so) sous Linux,
est un fichier de bibliothèque logicielle utilisé par un
programme exécutable, mais n’en faisant pas partie.
Reproduction interdite
Reproduction interdite
Reproduction interdite
Reproduction interdite
LES ÉTAPES DE FABRICATION
76
Les différentes étapes de fabrication d’un programme sont :
1. Le préprocesseur (pré-compilation)
 Traitement des directives qui commencent toutes par le
symbole dièse « # » ;
 Inclusion de fichiers « .h » avec « #include » ;
 Substitutions lexicales : les « macros » avec « #define ».
2. La compilation
 Vérification de la syntaxe ;
 Traduction dans le langage d’assemblage de la machine
cible.
Reproduction interdite
Reproduction interdite
Reproduction interdite
Reproduction interdite
LES ÉTAPES DE FABRICATION
77
3. L’assemblage
 Traduction finale en code machine (appelé ici code
objet) ;
 Production d’un fichier objet (.o ou .obj).
4. L’édition de liens
 Unification des symboles internes ;
 Étude et vérification des symboles externes
(bibliothèques .so ou .dll) ;
 Production du programme exécutable.
Reproduction interdite
Reproduction interdite
Reproduction interdite
Reproduction interdite
LES ÉTAPES DE FABRICATION
78
Autrement dit :
 La transformation d’un texte écrit en langage C en un
programme exécutable par l’ordinateur se fait en deux
étapes : la compilation et l’édition de liens.
 La compilation est la traduction des fonctions écrites en C
en des procédures équivalentes écrites dans un langage
dont la machine peut exécuter les instructions.
 Le compilateur lit toujours un fichier, appelé fichier source,
et produit un fichier, dit fichier objet.
Reproduction interdite
Reproduction interdite
Reproduction interdite
Reproduction interdite
LES ÉTAPES DE FABRICATION
79
 Chaque fichier objet est incomplet, insuffisant pour être
exécuté, car il contient des appels de fonctions ou des
références à des variables qui ne sont pas définies dans le
même fichier.
 Par exemple, le premier programme que vous écrirez
contiendra déjà la fonction printf que vous n’aurez
certainement pas écrite vous-même.
Reproduction interdite
Reproduction interdite
Reproduction interdite
Reproduction interdite
LES ÉTAPES DE FABRICATION
80
 L’édition de liens est l’opération par laquelle plusieurs
fichiers objets sont mis ensemble pour se compléter
mutuellement : un fichier apporte des définitions de
fonctions et de variables auxquelles un autre fichier fait
référence et réciproquement.
 L’éditeur de liens (ou linker) prend en entrée plusieurs
fichiers objets et bibliothèques (une variété particulière de
fichiers objets) et produit un unique fichier exécutable.
 L’éditeur de liens est largement indépendant du langage de
programmation utilisé pour écrire les fichiers sources, qui
peuvent même avoir été écrits dans des langages différents.
Reproduction interdite
Reproduction interdite
Reproduction interdite
Reproduction interdite
LES ÉTAPES DE FABRICATION
81
 Chaque fichier source entrant dans la composition d’un
programme exécutable est fait d’une succession d’un nombre
quelconque d’éléments indépendants, qui sont :
 des directives pour le préprocesseur (lignes commençant
par #) ;
 des constructions de types (struct, union, enum, typedef)
;
 des déclarations de variables et de fonctions externes ;
 des définitions de variables ;
 des définitions de fonctions.
Reproduction interdite
Reproduction interdite
Reproduction interdite
Reproduction interdite
LES ÉTAPES DE FABRICATION
82
#include <stdio.h>
int main()
{
printf("Bonjour!n"); //Affiche Bonjour!
return 0;
}
Exemple de programme en C
Reproduction interdite
Reproduction interdite
Reproduction interdite
Reproduction interdite
LES COMMENTAIRES
83
 Les commentaires commencent par /* et se terminent par */.
/* Ce texte est un commentaire et sera donc ignoré par le
compilateur */
 Les langages C et C++ cohabitant dans la plupart des
compilateurs actuels, ces derniers acceptent également
comme commentaire tout texte compris entre le signe // et la
fin de la ligne où ce signe apparaît :
// Ceci est un commentaire
Reproduction interdite
Reproduction interdite
Reproduction interdite
Reproduction interdite
LES MOTS-CLÉS
84
 Les mots suivants sont réservés. Leur fonction est prévue
par la syntaxe du C et ils ne peuvent pas être utilisés dans un
autre but :
Reproduction interdite
Reproduction interdite
Reproduction interdite
Reproduction interdite
LES OPÉRATEURS
85
 Symboles simples :
 Symboles Composés :
Reproduction interdite
Reproduction interdite
Reproduction interdite
Reproduction interdite
LES OPÉRATEURS
86
 Tous ces symboles sont reconnus par le compilateur
comme des opérateurs.
 Il est interdit d’insérer des caractères blancs à l’intérieur
d’un symbole composé.
 En outre, il est conseillé d’encadrer par des blancs toute
utilisation d’un opérateur.
 Dans certaines circonstances cette règle est plus qu’un
conseil, car sa non-observance crée une expression
ambigüe.
Reproduction interdite
Reproduction interdite
Reproduction interdite
Reproduction interdite
LES CONSTANTES LITTÉRALES
87
Nombres entiers :
 Les constantes littérales numériques entières ou réelles
suivent les conventions habituelles, avec quelques
particularités.
 Les constantes littérales sont sans signe : l’expression −123
est comprise comme l’application de l’opérateur unaire −
à la constante 123; mais puisque le calcul est fait pendant
la compilation, cette subtilité n’a aucune conséquence
pour le programmeur.
 Notez aussi qu’en C original, comme il n’existe pas
d’opérateur + unaire, la notation +123 est interdite.
Reproduction interdite
Reproduction interdite
Reproduction interdite
Reproduction interdite
LES CONSTANTES LITTÉRALES
88
 Les constantes littérales entières peuvent aussi s’écrire en
octal et en hexadécimal :
 une constante écrite en octal (base 8) commence par 0
(zéro) ;
 une constante écrite en hexadécimal (base 16) commence
par 0x ou 0X.
 Voici par exemple trois manières d’écrire le même nombre :
27 033 0x1B
 On ne doit pas écrire de zéro non significatif à gauche
d’un nombre : 0123 ne représente pas la même valeur
que 123.
Reproduction interdite
Reproduction interdite
Reproduction interdite
Reproduction interdite
LES CONSTANTES LITTÉRALES
89
 Le type d’une constante entière est le plus petit type dans
lequel sa valeur peut être représentée. Ou, plus
exactement :
 si elle est décimale : si possible int, sinon long,
sinon unsigned long ;
 si elle est octale ou hexadécimale : si possible int,
sinon unsigned int, sinon unsigned long.
Reproduction interdite
Reproduction interdite
Reproduction interdite
Reproduction interdite
LES CONSTANTES LITTÉRALES
90
Nombres flottants :
Une constante littérale est l’expression d’un nombre flottant
si elle présente, dans l’ordre :
 une suite de chiffres décimaux (la partie entière) ;
 un point, qui joue le rôle de virgule décimale ;
 une suite de chiffres décimaux (la partie fractionnaire)
;
 une des deux lettres E ou e ;
 éventuellement un signe + ou - ;
 une suite de chiffres décimaux.
Reproduction interdite
Reproduction interdite
Reproduction interdite
Reproduction interdite
LES CONSTANTES LITTÉRALES
91
 Les trois derniers éléments forment l’exposant. Exemple :
123.456E-78.
 On peut omettre :
 la partie entière ou la partie fractionnaire, mais pas les
deux ;
 le point ou l’exposant, mais pas les deux.
Exemples : .5e7, 5.e6, 5000000., 5e6
 Une constante flottante est supposée de type double, à
moins de comporter un suffixe explicite :
 les suffixes F ou f indiquent qu’elle est du type float ;
 les suffixes L ou l indiquent qu’elle est du type long
double.
Exemples : 1.0L, 5.0e4f
Reproduction interdite
Reproduction interdite
Reproduction interdite
Reproduction interdite
LES CARACTÈRES ET LES CHAÎNES DE CARACTÈRES
92
 Une constante de type caractère se note en écrivant le
caractère entre apostrophes. Une constante de type chaîne
de caractères se note en écrivant ses caractères entre
guillemets.
Exemples, trois caractères : ’A’ ’2’ ’"’
Quatre chaînes de caractères : "A" "BTS SNIR" "" "'"
 On peut faire figurer n’importe quel caractère, même non
imprimable, dans une constante caractère ou chaîne de
caractères en utilisant les combinaisons suivantes, appelées
séquences d’échappement :
Reproduction interdite
Reproduction interdite
Reproduction interdite
Reproduction interdite
LES CARACTÈRES ET LES CHAÎNES DE CARACTÈRES
93
n nouvelle ligne (LF)
t tabulation (HT)
b espace-arrière (BS)
r retour-chariot (CR)
f saut de page (FF)
a signal sonore (BELL)
 
’ ’
" "
d3d2d1 le caractère qui a pour code le nombre
octal d3d2d1. S’il commence par un ou
deux zéros et si cela ne crée pas une
ambiguïté, on peut aussi le noter d2d1
ou d1 .
Reproduction interdite
Reproduction interdite
Reproduction interdite
Reproduction interdite
LES CARACTÈRES ET LES CHAÎNES DE CARACTÈRES
94
 Par exemple, la chaîne ci-dessous définit la suite des 9
caractères :
A, escape (de code ASCII 27), B, ”, C, saut de page, D,  et E :
33B"CfDE"
 Nous verrons que cette chaîne comporte un caractère de
plus qui en marque la fin.
 En standard le langage C ne prévoit pas le codage
Unicode des caractères.
 Une constante de type chaîne de caractères représente une
suite finie de caractères, de longueur quelconque.
Reproduction interdite
Reproduction interdite
Reproduction interdite
Reproduction interdite
LES CARACTÈRES ET LES CHAÎNES DE CARACTÈRES
95
 Le codage interne d’une chaîne de caractères est le suivant :
 les caractères constituant la chaîne sont rangés en
mémoire, de manière contigüe, dans l’ordre où ils
figurent dans la chaîne ;
 un caractère nul est ajouté immédiatement après le
dernier caractère de la chaîne, pour en indiquer la fin ;
 la constante chaîne représente alors, à l’endroit où elle
est écrite, l’adresse de la cellule où a été rangé le premier
caractère de la chaîne.
Reproduction interdite
Reproduction interdite
Reproduction interdite
Reproduction interdite
LES CARACTÈRES ET LES CHAÎNES DE CARACTÈRES
96
 Par conséquent, une constante chaîne de caractères a pour
type celui d’un tableau de caractères (c’est-à-dire « char[] »)
et pour valeur l’adresse d’une cellule de la mémoire.
 Par caractère nul on entend le caractère dont le code interne
est 0 ; on peut le noter indifféremment 0, ’000’ ou ’0’
(mais certainement pas ’0’) ; il est utilisé très fréquemment
en C.
Reproduction interdite
Reproduction interdite
Reproduction interdite
Reproduction interdite
LES TYPES FONDAMENTAUX
97
TYPE DE BASE
Nombres entiers
Anonymes
Petite taille
- signés char
- non signés unsigned char
Taille moyenne
- signés short
- non signés unsigned short
Reproduction interdite
Reproduction interdite
Reproduction interdite
Reproduction interdite
LES TYPES FONDAMENTAUX
98
TYPE DE BASE
Nombres entiers
Anonymes
Grande taille
- signés long
- non signés unsigned long
Nommés
enum
Reproduction interdite
Reproduction interdite
Reproduction interdite
Reproduction interdite
LES TYPES FONDAMENTAUX
99
TYPE DE BASE
Nombres flottants
Simples float
Grande précision double
Précision encore plus grande long double
TYPES DÉRIVÉS
Tableaux []
Fonctions ()
pointeurs *
Structures struct
Union union
Reproduction interdite
Reproduction interdite
Reproduction interdite
Reproduction interdite
Les types du langage C
100
 On dispose de deux sortes de types de base, les nombres
entiers et les nombres flottants, et d’une famille infinie
de types dérivés obtenus en appliquant quelques
procédés récursifs de construction soit à des types
fondamentaux soit à des types dérivés définis de la
même manière.
 Cette organisation révèle un trait de l’esprit de C : le
pragmatisme l’emporte sur l’esthétisme, parfois même
sur la rigueur.
Reproduction interdite
Reproduction interdite
Reproduction interdite
Reproduction interdite
LES INITIALISATIONS
101
 Le langage C permet l'initialisation des variables dans la
zone des déclarations :
char c; est équivalent à char c = 'A';
c = 'A';
int i; est équivalent à int i = 50;
i = 50;
 Cette règle s'applique à tous les nombres, char, int, float ...
Reproduction interdite
Reproduction interdite
Reproduction interdite
Reproduction interdite
LES TYPES FONDAMENTAUX
102
 Dans d’autres langages, les caractères, les booléens, les
constantes symboliques, etc., sont codés de manière
interne par des nombres, mais ce fait est officiellement
ignoré par le programmeur, qui reste obligé de
considérer ces données comme appartenant à des
ensembles disjoints.
 En C on a fait le choix opposé, laissant au
programmeur le soin de réaliser lui-même, à l’aide des
seuls types numériques, l’implantation des types de
niveau supérieur.
Reproduction interdite
Reproduction interdite
Reproduction interdite
Reproduction interdite
EXERCICE
103
Soit le programme en C ci-dessous :
Reproduction interdite
Reproduction interdite
Reproduction interdite
Reproduction interdite
EXERCICE
104
1) Entourez la fonction principale, la zone de déclaration,
la zone de définition et la ou les directive(s) de
compilation sur le programme ci-dessus.
2) Que permet de faire le programme ci-dessus ?
3) Que retourne la fonction principale ?
4) Quel est l’intérêt d’utiliser/de déclarer une constante ?
5) Que signifie la 1ère ligne du programme ?

Contenu connexe

Similaire à Programmation-en-C-ESIITECH-2023-2024.pptx

Développer des codes de simulation numérique avec une équipe "non geek" à l'ULg
Développer des codes de simulation numérique avec une équipe "non geek" à l'ULgDévelopper des codes de simulation numérique avec une équipe "non geek" à l'ULg
Développer des codes de simulation numérique avec une équipe "non geek" à l'ULgRomain Boman
 
Cours_C_for_Etudiant.pdf
Cours_C_for_Etudiant.pdfCours_C_for_Etudiant.pdf
Cours_C_for_Etudiant.pdfHailisara
 
COURS C++ [Enregistrement automatique]Complet (1).pptx
COURS C++ [Enregistrement automatique]Complet (1).pptxCOURS C++ [Enregistrement automatique]Complet (1).pptx
COURS C++ [Enregistrement automatique]Complet (1).pptxLuneSabsPericolo1
 
Support Formation Samsung - Python - Session 1 - 2022.pptx
Support Formation Samsung - Python - Session 1 - 2022.pptxSupport Formation Samsung - Python - Session 1 - 2022.pptx
Support Formation Samsung - Python - Session 1 - 2022.pptxbpmana
 
Le langage C.pdf
Le langage C.pdfLe langage C.pdf
Le langage C.pdfNoamHaythem
 
Cours VB 2012 seance 1
Cours VB 2012 seance 1Cours VB 2012 seance 1
Cours VB 2012 seance 1ISIG
 
Chap XIII : calcul scientifique avec python
Chap XIII : calcul scientifique avec pythonChap XIII : calcul scientifique avec python
Chap XIII : calcul scientifique avec pythonMohammed TAMALI
 
LUP IRT 2021_2022 - Cours - Programmation Python (Partie I).pdf
LUP IRT 2021_2022 - Cours - Programmation Python (Partie I).pdfLUP IRT 2021_2022 - Cours - Programmation Python (Partie I).pdf
LUP IRT 2021_2022 - Cours - Programmation Python (Partie I).pdfRedaBelattar
 
Cours SE linux
Cours SE linuxCours SE linux
Cours SE linuxIdriss22
 
1758yyui3-jjjujujjiopoooooAcetatesA0.ppt
1758yyui3-jjjujujjiopoooooAcetatesA0.ppt1758yyui3-jjjujujjiopoooooAcetatesA0.ppt
1758yyui3-jjjujujjiopoooooAcetatesA0.pptMohamed827334
 
Introduction aux logiciels libres et à Linux
Introduction aux logiciels libres et à LinuxIntroduction aux logiciels libres et à Linux
Introduction aux logiciels libres et à LinuxBruno Cornec
 

Similaire à Programmation-en-C-ESIITECH-2023-2024.pptx (20)

Développer des codes de simulation numérique avec une équipe "non geek" à l'ULg
Développer des codes de simulation numérique avec une équipe "non geek" à l'ULgDévelopper des codes de simulation numérique avec une équipe "non geek" à l'ULg
Développer des codes de simulation numérique avec une équipe "non geek" à l'ULg
 
Langage C
Langage CLangage C
Langage C
 
Chap1: Cours en C++
Chap1: Cours en C++Chap1: Cours en C++
Chap1: Cours en C++
 
introduction au CPP
introduction au CPPintroduction au CPP
introduction au CPP
 
SystemC
SystemCSystemC
SystemC
 
Cours_C_for_Etudiant.pdf
Cours_C_for_Etudiant.pdfCours_C_for_Etudiant.pdf
Cours_C_for_Etudiant.pdf
 
Td pascal tdD
Td pascal tdDTd pascal tdD
Td pascal tdD
 
COURS C++ [Enregistrement automatique]Complet (1).pptx
COURS C++ [Enregistrement automatique]Complet (1).pptxCOURS C++ [Enregistrement automatique]Complet (1).pptx
COURS C++ [Enregistrement automatique]Complet (1).pptx
 
Tp1 - Eclipse
Tp1 - EclipseTp1 - Eclipse
Tp1 - Eclipse
 
openFrameworks
openFrameworksopenFrameworks
openFrameworks
 
Support Formation Samsung - Python - Session 1 - 2022.pptx
Support Formation Samsung - Python - Session 1 - 2022.pptxSupport Formation Samsung - Python - Session 1 - 2022.pptx
Support Formation Samsung - Python - Session 1 - 2022.pptx
 
Le langage C.pdf
Le langage C.pdfLe langage C.pdf
Le langage C.pdf
 
Cours VB 2012 seance 1
Cours VB 2012 seance 1Cours VB 2012 seance 1
Cours VB 2012 seance 1
 
Chap XIII : calcul scientifique avec python
Chap XIII : calcul scientifique avec pythonChap XIII : calcul scientifique avec python
Chap XIII : calcul scientifique avec python
 
LUP IRT 2021_2022 - Cours - Programmation Python (Partie I).pdf
LUP IRT 2021_2022 - Cours - Programmation Python (Partie I).pdfLUP IRT 2021_2022 - Cours - Programmation Python (Partie I).pdf
LUP IRT 2021_2022 - Cours - Programmation Python (Partie I).pdf
 
Cours SE linux
Cours SE linuxCours SE linux
Cours SE linux
 
Cours compilation
Cours compilationCours compilation
Cours compilation
 
1758yyui3-jjjujujjiopoooooAcetatesA0.ppt
1758yyui3-jjjujujjiopoooooAcetatesA0.ppt1758yyui3-jjjujujjiopoooooAcetatesA0.ppt
1758yyui3-jjjujujjiopoooooAcetatesA0.ppt
 
Chapitre 1
Chapitre 1Chapitre 1
Chapitre 1
 
Introduction aux logiciels libres et à Linux
Introduction aux logiciels libres et à LinuxIntroduction aux logiciels libres et à Linux
Introduction aux logiciels libres et à Linux
 

Plus de OlyvierNzighou1

Programmation-en-C-ESIITECH-2023-2024-bis.pptx
Programmation-en-C-ESIITECH-2023-2024-bis.pptxProgrammation-en-C-ESIITECH-2023-2024-bis.pptx
Programmation-en-C-ESIITECH-2023-2024-bis.pptxOlyvierNzighou1
 
Algorithmique et programmation-ESIITECH-2023-2024-Revu2-Ok.pptx
Algorithmique et programmation-ESIITECH-2023-2024-Revu2-Ok.pptxAlgorithmique et programmation-ESIITECH-2023-2024-Revu2-Ok.pptx
Algorithmique et programmation-ESIITECH-2023-2024-Revu2-Ok.pptxOlyvierNzighou1
 
Programmation en Python CPGE sup management
Programmation en Python CPGE sup managementProgrammation en Python CPGE sup management
Programmation en Python CPGE sup managementOlyvierNzighou1
 
Algorithmique et programmation-ESIITECH-2023-2024 [Enregistrement automatique...
Algorithmique et programmation-ESIITECH-2023-2024 [Enregistrement automatique...Algorithmique et programmation-ESIITECH-2023-2024 [Enregistrement automatique...
Algorithmique et programmation-ESIITECH-2023-2024 [Enregistrement automatique...OlyvierNzighou1
 
0015- Sous-programmes (Partie 4 - Divers Bonnes Pratiques).ppt
0015- Sous-programmes (Partie 4 - Divers  Bonnes Pratiques).ppt0015- Sous-programmes (Partie 4 - Divers  Bonnes Pratiques).ppt
0015- Sous-programmes (Partie 4 - Divers Bonnes Pratiques).pptOlyvierNzighou1
 
Support de cours et de formation en langage python pour les débutants.
Support de cours et de formation en langage python pour les débutants.Support de cours et de formation en langage python pour les débutants.
Support de cours et de formation en langage python pour les débutants.OlyvierNzighou1
 
Support GESPRO-2023-2024.pptx
Support GESPRO-2023-2024.pptxSupport GESPRO-2023-2024.pptx
Support GESPRO-2023-2024.pptxOlyvierNzighou1
 
1- Exercices de révision sur les listes.pptx
1- Exercices de révision sur les listes.pptx1- Exercices de révision sur les listes.pptx
1- Exercices de révision sur les listes.pptxOlyvierNzighou1
 
Cybercriminalité et traitement des incidents.pptx
Cybercriminalité et traitement des incidents.pptxCybercriminalité et traitement des incidents.pptx
Cybercriminalité et traitement des incidents.pptxOlyvierNzighou1
 
Présentation_IBOGA_Commission_des_Lois_AN.pptx
Présentation_IBOGA_Commission_des_Lois_AN.pptxPrésentation_IBOGA_Commission_des_Lois_AN.pptx
Présentation_IBOGA_Commission_des_Lois_AN.pptxOlyvierNzighou1
 
Gestion_de_projetOK.pptx
Gestion_de_projetOK.pptxGestion_de_projetOK.pptx
Gestion_de_projetOK.pptxOlyvierNzighou1
 

Plus de OlyvierNzighou1 (14)

Programmation-en-C-ESIITECH-2023-2024-bis.pptx
Programmation-en-C-ESIITECH-2023-2024-bis.pptxProgrammation-en-C-ESIITECH-2023-2024-bis.pptx
Programmation-en-C-ESIITECH-2023-2024-bis.pptx
 
Algorithmique et programmation-ESIITECH-2023-2024-Revu2-Ok.pptx
Algorithmique et programmation-ESIITECH-2023-2024-Revu2-Ok.pptxAlgorithmique et programmation-ESIITECH-2023-2024-Revu2-Ok.pptx
Algorithmique et programmation-ESIITECH-2023-2024-Revu2-Ok.pptx
 
Programmation en Python CPGE sup management
Programmation en Python CPGE sup managementProgrammation en Python CPGE sup management
Programmation en Python CPGE sup management
 
Algorithmique et programmation-ESIITECH-2023-2024 [Enregistrement automatique...
Algorithmique et programmation-ESIITECH-2023-2024 [Enregistrement automatique...Algorithmique et programmation-ESIITECH-2023-2024 [Enregistrement automatique...
Algorithmique et programmation-ESIITECH-2023-2024 [Enregistrement automatique...
 
0015- Sous-programmes (Partie 4 - Divers Bonnes Pratiques).ppt
0015- Sous-programmes (Partie 4 - Divers  Bonnes Pratiques).ppt0015- Sous-programmes (Partie 4 - Divers  Bonnes Pratiques).ppt
0015- Sous-programmes (Partie 4 - Divers Bonnes Pratiques).ppt
 
Support de cours et de formation en langage python pour les débutants.
Support de cours et de formation en langage python pour les débutants.Support de cours et de formation en langage python pour les débutants.
Support de cours et de formation en langage python pour les débutants.
 
Support GESPRO-2023-2024.pptx
Support GESPRO-2023-2024.pptxSupport GESPRO-2023-2024.pptx
Support GESPRO-2023-2024.pptx
 
1- Exercices de révision sur les listes.pptx
1- Exercices de révision sur les listes.pptx1- Exercices de révision sur les listes.pptx
1- Exercices de révision sur les listes.pptx
 
Codage_Information.pptx
Codage_Information.pptxCodage_Information.pptx
Codage_Information.pptx
 
Algebre_Boole-1.pptx
Algebre_Boole-1.pptxAlgebre_Boole-1.pptx
Algebre_Boole-1.pptx
 
Cybercriminalité et traitement des incidents.pptx
Cybercriminalité et traitement des incidents.pptxCybercriminalité et traitement des incidents.pptx
Cybercriminalité et traitement des incidents.pptx
 
Présentation_IBOGA_Commission_des_Lois_AN.pptx
Présentation_IBOGA_Commission_des_Lois_AN.pptxPrésentation_IBOGA_Commission_des_Lois_AN.pptx
Présentation_IBOGA_Commission_des_Lois_AN.pptx
 
AG-15-12-2023.ppt
AG-15-12-2023.pptAG-15-12-2023.ppt
AG-15-12-2023.ppt
 
Gestion_de_projetOK.pptx
Gestion_de_projetOK.pptxGestion_de_projetOK.pptx
Gestion_de_projetOK.pptx
 

Dernier

Annie Ernaux Extérieurs. pptx. Exposition basée sur un livre .
Annie   Ernaux  Extérieurs. pptx. Exposition basée sur un livre .Annie   Ernaux  Extérieurs. pptx. Exposition basée sur un livre .
Annie Ernaux Extérieurs. pptx. Exposition basée sur un livre .Txaruka
 
666148532-Formation-Habilitation-ELECTRIQUE-ENTREPRISE-MARS-2017.pptx
666148532-Formation-Habilitation-ELECTRIQUE-ENTREPRISE-MARS-2017.pptx666148532-Formation-Habilitation-ELECTRIQUE-ENTREPRISE-MARS-2017.pptx
666148532-Formation-Habilitation-ELECTRIQUE-ENTREPRISE-MARS-2017.pptxSAID MASHATE
 
Saint Georges, martyr, et la lègend du dragon.pptx
Saint Georges, martyr, et la lègend du dragon.pptxSaint Georges, martyr, et la lègend du dragon.pptx
Saint Georges, martyr, et la lègend du dragon.pptxMartin M Flynn
 
Evaluation du systeme d'Education. Marocpptx
Evaluation du systeme d'Education. MarocpptxEvaluation du systeme d'Education. Marocpptx
Evaluation du systeme d'Education. MarocpptxAsmaa105193
 
Cours SE Le système Linux : La ligne de commande bash - IG IPSET
Cours SE Le système Linux : La ligne de commande bash - IG IPSETCours SE Le système Linux : La ligne de commande bash - IG IPSET
Cours SE Le système Linux : La ligne de commande bash - IG IPSETMedBechir
 
A3iFormations, organisme de formations certifié qualiopi.
A3iFormations, organisme de formations certifié qualiopi.A3iFormations, organisme de formations certifié qualiopi.
A3iFormations, organisme de formations certifié qualiopi.Franck Apolis
 
Présentation_ Didactique 1_SVT (S4) complet.pptx
Présentation_ Didactique 1_SVT (S4) complet.pptxPrésentation_ Didactique 1_SVT (S4) complet.pptx
Présentation_ Didactique 1_SVT (S4) complet.pptxrababouerdighi
 
Fondation Louis Vuitton. pptx
Fondation      Louis      Vuitton.   pptxFondation      Louis      Vuitton.   pptx
Fondation Louis Vuitton. pptxTxaruka
 
Formation M2i - Comprendre les neurosciences pour développer son leadership
Formation M2i - Comprendre les neurosciences pour développer son leadershipFormation M2i - Comprendre les neurosciences pour développer son leadership
Formation M2i - Comprendre les neurosciences pour développer son leadershipM2i Formation
 
Guide Final de rédaction de mémoire de fin d'étude
Guide Final de rédaction de mémoire de fin d'étudeGuide Final de rédaction de mémoire de fin d'étude
Guide Final de rédaction de mémoire de fin d'étudeBenamraneMarwa
 
7 PPT sue le project de fin d'étude.pptx
7 PPT sue le project de fin d'étude.pptx7 PPT sue le project de fin d'étude.pptx
7 PPT sue le project de fin d'étude.pptxrababouerdighi
 
Cours SE Gestion des périphériques - IG IPSET
Cours SE Gestion des périphériques - IG IPSETCours SE Gestion des périphériques - IG IPSET
Cours SE Gestion des périphériques - IG IPSETMedBechir
 
systeme expert_systeme expert_systeme expert
systeme expert_systeme expert_systeme expertsysteme expert_systeme expert_systeme expert
systeme expert_systeme expert_systeme expertChristianMbip
 

Dernier (15)

Annie Ernaux Extérieurs. pptx. Exposition basée sur un livre .
Annie   Ernaux  Extérieurs. pptx. Exposition basée sur un livre .Annie   Ernaux  Extérieurs. pptx. Exposition basée sur un livre .
Annie Ernaux Extérieurs. pptx. Exposition basée sur un livre .
 
666148532-Formation-Habilitation-ELECTRIQUE-ENTREPRISE-MARS-2017.pptx
666148532-Formation-Habilitation-ELECTRIQUE-ENTREPRISE-MARS-2017.pptx666148532-Formation-Habilitation-ELECTRIQUE-ENTREPRISE-MARS-2017.pptx
666148532-Formation-Habilitation-ELECTRIQUE-ENTREPRISE-MARS-2017.pptx
 
Pâques de Sainte Marie-Euphrasie Pelletier
Pâques de Sainte Marie-Euphrasie PelletierPâques de Sainte Marie-Euphrasie Pelletier
Pâques de Sainte Marie-Euphrasie Pelletier
 
Saint Georges, martyr, et la lègend du dragon.pptx
Saint Georges, martyr, et la lègend du dragon.pptxSaint Georges, martyr, et la lègend du dragon.pptx
Saint Georges, martyr, et la lègend du dragon.pptx
 
Evaluation du systeme d'Education. Marocpptx
Evaluation du systeme d'Education. MarocpptxEvaluation du systeme d'Education. Marocpptx
Evaluation du systeme d'Education. Marocpptx
 
Cours SE Le système Linux : La ligne de commande bash - IG IPSET
Cours SE Le système Linux : La ligne de commande bash - IG IPSETCours SE Le système Linux : La ligne de commande bash - IG IPSET
Cours SE Le système Linux : La ligne de commande bash - IG IPSET
 
A3iFormations, organisme de formations certifié qualiopi.
A3iFormations, organisme de formations certifié qualiopi.A3iFormations, organisme de formations certifié qualiopi.
A3iFormations, organisme de formations certifié qualiopi.
 
Présentation_ Didactique 1_SVT (S4) complet.pptx
Présentation_ Didactique 1_SVT (S4) complet.pptxPrésentation_ Didactique 1_SVT (S4) complet.pptx
Présentation_ Didactique 1_SVT (S4) complet.pptx
 
Fondation Louis Vuitton. pptx
Fondation      Louis      Vuitton.   pptxFondation      Louis      Vuitton.   pptx
Fondation Louis Vuitton. pptx
 
Evaluación Alumnos de Ecole Victor Hugo
Evaluación Alumnos de Ecole  Victor HugoEvaluación Alumnos de Ecole  Victor Hugo
Evaluación Alumnos de Ecole Victor Hugo
 
Formation M2i - Comprendre les neurosciences pour développer son leadership
Formation M2i - Comprendre les neurosciences pour développer son leadershipFormation M2i - Comprendre les neurosciences pour développer son leadership
Formation M2i - Comprendre les neurosciences pour développer son leadership
 
Guide Final de rédaction de mémoire de fin d'étude
Guide Final de rédaction de mémoire de fin d'étudeGuide Final de rédaction de mémoire de fin d'étude
Guide Final de rédaction de mémoire de fin d'étude
 
7 PPT sue le project de fin d'étude.pptx
7 PPT sue le project de fin d'étude.pptx7 PPT sue le project de fin d'étude.pptx
7 PPT sue le project de fin d'étude.pptx
 
Cours SE Gestion des périphériques - IG IPSET
Cours SE Gestion des périphériques - IG IPSETCours SE Gestion des périphériques - IG IPSET
Cours SE Gestion des périphériques - IG IPSET
 
systeme expert_systeme expert_systeme expert
systeme expert_systeme expert_systeme expertsysteme expert_systeme expert_systeme expert
systeme expert_systeme expert_systeme expert
 

Programmation-en-C-ESIITECH-2023-2024.pptx

  • 1. Nous formons les experts de demain ECOLE SUPERIEURE D’INGENIERIE ET D’INNOVATION TECHNOLOGIQUE Reproduction interdite Nous formons les experts de demain ECOLE SUPERIEURE D’INGENIERIE ET D’INNOVATION TECHNOLOGIQUE PROGRAMMATION EN LANGAGE C Licence Professionnelle Informatique 1ère année Tronc commun
  • 2. Nous formons les experts de demain ECOLE SUPERIEURE D’INGENIERIE ET D’INNOVATION TECHNOLOGIQUE Reproduction interdite Nous formons les experts de demain ECOLE SUPERIEURE D’INGENIERIE ET D’INNOVATION TECHNOLOGIQUE Présentation DE L’ENSEIGNANT M. Olyvier NZIGHOU Master 2 Gestion de Projets Informatiques de l’Université de Strasbourg. Enseignant vacataire à l’IST, EPL, IAI, SUP’MANAGEMENT Tél. : 066049840 / 077684285
  • 3. Reproduction interdite Reproduction interdite Reproduction interdite Reproduction interdite Objectifs du cours 3  Initier les étudiants à la programmation impérative à travers le langage C.  Ce module vient compléter le cours d’algorithmes et structures de données vu au 1er semestre..
  • 4. Reproduction interdite Reproduction interdite Reproduction interdite Reproduction interdite Evaluation 4  Contrôles (40%) inclus  Devoirs  Interrogations  TP  Examen final (60%)
  • 5. Reproduction interdite Reproduction interdite Reproduction interdite Reproduction interdite Enseignement 5  Cours Magistral  TD/TP
  • 6. Reproduction interdite Reproduction interdite Reproduction interdite Reproduction interdite Contenu du cours 6 1. Introduction 2. Types, opérateurs et expressions 3. Les entrées-sorties (printf, scanf, …) 4. Les structures de contrôle 5. Les tableaux 6. Les pointeurs 7. Les fonctions 8. Les chaînes de caractères 9. Les structures
  • 7. Reproduction interdite Reproduction interdite Reproduction interdite Reproduction interdite PROGRAMMATION EN LANGAGE C 7 CHAPITRE 1 Introduction
  • 8. Reproduction interdite Reproduction interdite Reproduction interdite Reproduction interdite Langages informatiques 8  Un langage informatique est un outil permettant de donner des ordres (instructions) à la machine.  A chaque instruction correspond une action du processeur.  Intérêt : écrire des programmes (suite consécutive d’instructions) destinés à effectuer une tache donnée.  Exemple: un programme de gestion de comptes bancaires.  Contrainte : être compréhensible par la machine.
  • 9. Reproduction interdite Reproduction interdite Reproduction interdite Reproduction interdite Langage machine 9  Langage binaire : l’information est exprimée et manipulée sous forme d’une suite de bits.  Un bit (binary digit) = 0 ou 1 (2 états électriques)  Une combinaison de 8 bits = 1 Octet  28 = 256 possibilités qui permettent de coder tous les caractères alphabétiques, numériques, et symboles tels que ?,*,&, …  Le code ASCII (American Standard Code for Information Interchange) donne les correspondances entre les caractères alphanumériques et leurs représentation binaire, Ex. A = 01000001, ? = 00111111  Les opérations logiques et arithmétiques de base (addition, multiplication, … ) sont effectuées en binaire
  • 10. Reproduction interdite Reproduction interdite Reproduction interdite Reproduction interdite L’ASSEMBLEUR 10  Problème : le langage machine est difficile à comprendre par l'humain  Idée : trouver un langage compréhensible par l'homme qui sera ensuite converti en langage machine  Assembleur : exprimer les instructions élémentaires de façon symbolique  + : déjà plus accessible que le langage machine  - : dépend du type de la machine (n’est pas portable)  - : pas assez efficace pour développer des applications complexes
  • 11. Reproduction interdite Reproduction interdite Reproduction interdite Reproduction interdite Langages haut niveau 11  Intérêts multiples pour le haut niveau :  proche du langage humain « anglais » (compréhensible)  permet une plus grande portabilité (indépendant du matériel)  Manipulation de données et d’expressions complexes (réels, objets, a*b/c, …)  Nécessité d’un traducteur (compilateur/interpréteur), exécution plus ou moins lente selon le traducteur
  • 12. Reproduction interdite Reproduction interdite Reproduction interdite Reproduction interdite Compilateur/interpréteur 12  Compilateur : traduire le programme entier une fois pour toutes  + plus rapide à l’exécution  + sécurité du code source  - il faut recompiler à chaque modification
  • 13. Reproduction interdite Reproduction interdite Reproduction interdite Reproduction interdite Compilateur/interpréteur 13  Interpréteur : traduire au fur et à mesure les instructions du programme à chaque exécution  + exécution instantanée appréciable pour les débutants  - exécution lente par rapport à la compilation
  • 14. Reproduction interdite Reproduction interdite Reproduction interdite Reproduction interdite Langages de programmation 14  Deux types de langages :  Langages procéduraux  Langages orientés objets  Exemples de langages :  Fortran, Cobol, Pascal, C, …  C++, Java, …
  • 15. Reproduction interdite Reproduction interdite Reproduction interdite Reproduction interdite Historique du C 15  Le langage C a été conçu en 1972 dans «Bell Laboratories» par Dennis Ritchie avec l’objectif d’écrire un système d'exploitation (UNIX).  En 1978, une première définition rigoureuse du langage C (standard K&R-C) a été réalisée par Kernighan et Ritchie en publiant le livre «The C Programming Language ».  Le succès du C et l’apparition de compilateurs avec des extensions particulières ont conduit à sa normalisation.  En 1983, l’organisme ANSI (American National Standards Institute) chargeait une commission de mettre au point une définition explicite et portable pour le langage C. Le résultat est le standard ANSI-C.
  • 16. Reproduction interdite Reproduction interdite Reproduction interdite Reproduction interdite Caractéristiques du C 16  Universel : n'est pas orienté vers un domaine d'application particulier (applications scientifiques, de gestion, …)  Près de la machine : offre des opérateurs qui sont proches de ceux du langage machine (manipulations de bits, d’adresses, …)  efficace.  Modulaire: peut être découpé en modules qui peuvent être compilés séparément  Portable: en respectant le standard ANSI-C, il est possible d'utiliser le même programme sur plusieurs systèmes (hardware, système d'exploitation) Remarque : Une programmation efficace et compréhensible en C n’est pas facilement accessible à des débutants
  • 17. Reproduction interdite Reproduction interdite Reproduction interdite Reproduction interdite Programme source, objet et exécutable 17  Un programme écrit en langage C forme un texte qu’on nomme programme ou code source, qui peut être formé de plusieurs fichiers sources  Chaque fichier source est traduit par le compilateur pour obtenir un fichier ou module objet (formé d’instructions machine)  Ce fichier objet n’est pas exécutable tel quel car il lui manque les instructions exécutables des fonctions standards appelées dans le fichier source (printf, scanf, …) et éventuellement d’autres fichiers objets
  • 18. Reproduction interdite Reproduction interdite Reproduction interdite Reproduction interdite Programme source, objet et exécutable 18  L’éditeur de liens réunit les différents modules objets et les fonctions de la bibliothèque standard afin de former un programme exécutable Remarque : la compilation est précédée par une phase de prétraitement (inclusion de fichiers en-tête) réalisé par le préprocesseur
  • 19. Reproduction interdite Reproduction interdite Reproduction interdite Reproduction interdite Création du fichier exécutable 19
  • 20. Reproduction interdite Reproduction interdite Reproduction interdite Reproduction interdite Compilateurs C 20  Pour pouvoir écrire des programmes en C, vous avez besoin d’un compilateur C sur votre machine.  Il existe plusieurs compilateurs respectant le standard ANSI- C. Une bonne liste est disponible sur : c.developpez.com/compilateurs/  Nous allons utiliser l'environnement de développement Dev- C++ avec le système d’exploitation Windows.  Vous pouvez télécharger Dev-C++ librement, par exemple sur le site www.bloodshed.net
  • 21. Reproduction interdite Reproduction interdite Reproduction interdite Reproduction interdite Cycle de développement 21  Étape 1 : Utilisez un éditeur pour créer le code source. Par convention, ce fichier doit avoir l’extension .c (par exemple, monprog.c, database.c, etc.).  Étape 2 : Compilez votre programme. Si le compilateur ne rencontre pas d’erreur dans votre code source, vous obtenez un fichier objet du même nom que votre fichier source avec une extension .obj ou .o (par exemple, monprog.c est compilé en monprog.o). Si le code source contient des erreurs, le compilateur échoue et vous les affiche pour correction.
  • 22. Reproduction interdite Reproduction interdite Reproduction interdite Reproduction interdite Cycle de développement 22  Étape 3 : Exécutez la liaison. Si aucune erreur n’apparaît, vous obtenez un programme exécutable dans un fichier du même nom que le fichier objet (avec une extension .exe sur Windows par exemple, monprog.obj devient monprog.exe).  Étape 4 : Exécutez votre programme. Contrôlez les résultats obtenus et recommencez à l’étape 1 si des modifications sont nécessaires dans le fichier source.
  • 23. Reproduction interdite Reproduction interdite Reproduction interdite Reproduction interdite Cycle de développement 23
  • 24. Reproduction interdite Reproduction interdite Reproduction interdite Reproduction interdite Exemple d’une fenêtre Dev-C++ 24
  • 25. Reproduction interdite Reproduction interdite Reproduction interdite Reproduction interdite Composantes d’un programme C 25  Directives du préprocesseur  inclusion des fichiers d'en-tête (fichiers avec extension .h)  définitions des constantes avec #define  déclaration des variables globales  définition des fonctions (En C, le programme principal et les sous-programmes sont définis comme fonctions )  Les commentaires : texte ignoré par le compilateur, destiné à améliorer la compréhension du code
  • 26. Reproduction interdite Reproduction interdite Reproduction interdite Reproduction interdite Composantes d’un programme C 26 Exemple : #include<stdio.h> main() { printf("notre premier programme C n"); /*ceci est un commentaire*/ }
  • 27. Reproduction interdite Reproduction interdite Reproduction interdite Reproduction interdite Remarques sur ce premier programme 27  #include<stdio.h> informe le compilateur d’inclure le fichier stdio.h qui contient les fonctions d’entrées-sorties dont la fonction printf  La fonction main est la fonction principale des programmes en C : Elle se trouve obligatoirement dans tous les programmes. L'exécution d’un programme entraîne automatiquement l'appel de la fonction main.
  • 28. Reproduction interdite Reproduction interdite Reproduction interdite Reproduction interdite Remarques sur ce premier programme 28  L’appel de printf avec l’argument "notre premier programme Cn" permet d’afficher : notre premier programme C et n ordonne le passage à la ligne suivante  En C, toute instruction simple est terminée par un point- virgule ;  Un commentaire en C est compris entre // et la fin de la ligne ou bien entre /* et */
  • 29. Reproduction interdite Reproduction interdite Reproduction interdite Reproduction interdite PROGRAMMATION EN LANGAGE C 29 CHAPITRE 2 Variables, types, opérateurs et expressions
  • 30. Reproduction interdite Reproduction interdite Reproduction interdite Reproduction interdite Les variables 30  Les variables servent à stocker les valeurs des données utilisées pendant l’exécution d’un programme  Les variables doivent être déclarées avant d’être utilisées, elles doivent être caractérisées par :  un nom (Identificateur)  un type (entier, réel, …)  une valeur
  • 31. Reproduction interdite Reproduction interdite Reproduction interdite Reproduction interdite Les identificateurs 31  Le choix d’un identificateur (nom d’une variable ou d’une fonction) est soumis à quelques règles :  doit être constitué uniquement de lettres, de chiffres et du caractère souligné (‘_’) (Eviter les caractères de ponctuation et les espaces)  Correct : PRIX_HT, prixHT  incorrect : PRIX-HT, prix HT, prix.HT  doit commencer par une lettre (y compris le caractère souligné)  correct : _A1,  incorrect : 1A
  • 32. Reproduction interdite Reproduction interdite Reproduction interdite Reproduction interdite Les identificateurs 32  doit être différent des mots réservés du langage : Remarque : C distingue les majuscules et les minuscules. NOMBRE et nombre sont des identificateurs différents
  • 33. Reproduction interdite Reproduction interdite Reproduction interdite Reproduction interdite Les types de base 33  Le type d’une variable détermine l’ensemble des valeurs qu’elle peut prendre et le nombre d'octets à lui réserver en mémoire  En langage C, il n’y a que deux types de base les entiers et les réels avec différentes variantes pour chaque type Remarques :  Un type de base est un type pour lequel une variable peut prendre une seule valeur à un instant donné contrairement aux types agrégés
  • 34. Reproduction interdite Reproduction interdite Reproduction interdite Reproduction interdite Les types de base 34  Le type caractère apparaît en C comme cas particulier du type entier (un caractère est un nombre entier, il s’identifie à son code ASCII)  En C il n'existe pas de type spécial pour chaînes de caractères. Les moyens de traiter les chaînes de caractères seront présentés aux chapitres suivants  Le type booléen n’existe pas. Un booléen est représenté par un entier (un entier non nul équivaut à vrai et la valeur zero équivaut à faux)
  • 35. Reproduction interdite Reproduction interdite Reproduction interdite Reproduction interdite Types Entier 35  4 variantes d’entiers :  char : caractères (entier sur 1 octet : -128 à 127)  short ou short int : entier court (entier sur 2 octets : -32768 à 32767)  int : entier standard (entier sur 2 ou 4 octets )  long ou long int : entier long (entier sur 4 octets : -2147483648 à 2147483648)
  • 36. Reproduction interdite Reproduction interdite Reproduction interdite Reproduction interdite Types Entier 36  Si on ajoute le préfixe unsigned à la définition d'un type de variables entières, alors la plage des valeurs change :  unsigned char : 0 à 255  unsigned short : 0 à 65535  unsigned int : dépend du codage (sur 2 ou 4 octets)  unsigned long : 0 à 4294967295 Remarque : Une variable du type char peut subir les mêmes opérations que les variables du type short, int ou long
  • 37. Reproduction interdite Reproduction interdite Reproduction interdite Reproduction interdite Types Réel 37  3 variantes de réels :  float : réel simple précision codé sur 4 octets de -3.4*1038 à 3.4*1038  double : réel double précision codé sur 8 octets de -1.7*10308 à 1.7*10308  long double : réel très grande précision codé sur 10 octets de -3.4*104932 à 3.4*104932
  • 38. Reproduction interdite Reproduction interdite Reproduction interdite Reproduction interdite Déclaration des variables 38  Les déclarations introduisent les variables qui seront utilisées, fixent leur type et parfois aussi leur valeur de départ (initialisation)  Syntaxe de déclaration en C <Type> <NomVar1>,<NomVar2>,...,<NomVarN>;  Exemple: int i,j,k; float x,y; double z = 1.5; // déclaration et initialisation short compteur; char c = ‘A’;
  • 39. Reproduction interdite Reproduction interdite Reproduction interdite Reproduction interdite Déclaration des constantes 39  Une constante conserve sa valeur pendant toute l’exécution d’un programme  En C, on associe une valeur à une constante en utilisant :  la directive #define : #define <nom_constante> valeur Ici la constante ne possède pas de type. Exemple : #define PI 3.141592
  • 40. Reproduction interdite Reproduction interdite Reproduction interdite Reproduction interdite Déclaration des constantes 40  le mot clé const : const type <nom> = expression; Dans cette instruction la constante est typée Exemple : const float PI = 3.141592; Remarque : L’intérêt des constantes est de donner un nom parlant à une valeur, par exemple NB_LIGNES, aussi ça facilite la modification du code
  • 41. Reproduction interdite Reproduction interdite Reproduction interdite Reproduction interdite Constantes entières 41  On distingue 3 formes de constantes entières :  forme décimale : c’est l’écriture usuelle. Ex : 372, 200  forme octale (base 8) : on commence par un 0 suivi de chiffres octaux. Ex : 0477  forme hexadécimale (base 16) : on commence par 0x (ou 0X) suivis de chiffres hexadécimaux (0-9 a-f). Ex : 0x5a2b, 0Xa9f
  • 42. Reproduction interdite Reproduction interdite Reproduction interdite Reproduction interdite Remarques sur les constantes entières 42  Le compilateur attribue automatiquement un type aux constantes entières. Il attribue en général le type le plus économique parmi (int, unsigned int, long int, unsigned long int)  On peut forcer la machine à utiliser un type de notre choix en ajoutant les suffixes suivants :  u ou U pour unsigned int, Ex : 100U, 0xAu  l ou L pour long, Ex : 15l, 0127L  ul ou UL pour unsigned long, Ex : 1236UL, 035ul
  • 43. Reproduction interdite Reproduction interdite Reproduction interdite Reproduction interdite Constantes réelles 43  On distingue 2 notations :  notation décimale Ex : 123.4, .27, 5.  notation exponentielle Ex : 1234e-1 ou 1234E-1  Remarques :  Les constantes réelles sont par défaut de type double  On peut forcer la machine à utiliser un type de notre choix en ajoutant les suffixes suivants :  f ou F pour le type float, Ex : 1.25f  l ou L pour le type long double, Ex : 1.0L
  • 44. Reproduction interdite Reproduction interdite Reproduction interdite Reproduction interdite Les constantes caractères 44  Se sont des constantes qui désignent un seul caractère, elles sont toujours indiquées entre des apostrophes, Ex : ‘b’, ‘A’, ‘?’  La valeur d’une constante caractère est le code ASCII du caractère  Les caractères constants peuvent apparaître dans des opérations arithmétiques ou logiques  Les constantes caractères sont de type int
  • 45. Reproduction interdite Reproduction interdite Reproduction interdite Reproduction interdite Expressions et opérateurs 45  Une expression peut être une valeur, une variable ou une opération constituée par des valeurs, des constantes et des variables reliées entre eux par des opérateurs. Exemples : 1, b, a*2, a+3*b-c, …  Un opérateur est un symbole qui permet de manipuler une ou plusieurs variables pour produire un résultat. On distingue :  les opérateurs binaires qui nécessitent deux opérandes Ex : a + b  les opérateurs unaires qui nécessitent un seul opérande Ex : a++  l'opérateur conditionnel ? : , le seul qui nécessite trois opérandes  Une expression fournit une seule valeur, elle est évaluée en respectant des règles de priorité et d’associativité
  • 46. Reproduction interdite Reproduction interdite Reproduction interdite Reproduction interdite Opérateurs en C 46  Le langage C est riche en opérateurs. Outre les opérateurs standards, il comporte des opérateurs originaux d’affectation, d’incrémentation et de manipulation de bits  On distingue les opérateurs suivants en C :  les opérateurs arithmétiques : +, -, *, /, %  les opérateurs d’affectation : =, +=, -=,*=,/=,…  les opérateurs logiques : &&, ||, !  les opérateurs de comparaison : ==, !=, <, >, <=, >=  les opérateurs d’incrémentation et de décrémentation : ++, --  les opérateurs sur les bits : <<, >>, &, |, ~, ^  d’autres opérateurs particuliers : ?:, sizeof, cast
  • 47. Reproduction interdite Reproduction interdite Reproduction interdite Reproduction interdite Opérateurs arithmétiques 47  binaires : + - * / et % (modulo) et unaire : -  Les opérandes peuvent être des entiers ou des réels sauf pour % qui agit uniquement sur des entiers  Lorsque les types des deux opérandes sont différents il y’a conversion implicite dans le type le plus fort  L’opérateur / retourne un quotient entier si les deux opérandes sont des entiers (5 / 2  2). Il retourne un quotient réel si l’un au moins des opérandes est un réel (5.0 / 2  2.5)
  • 48. Reproduction interdite Reproduction interdite Reproduction interdite Reproduction interdite Conversions implicites 48  Les types short et char sont systématiquement convertis en int indépendamment des autres opérandes  La conversion se fait en général selon une hiérarchie qui n'altère pas les valeurs int long  float  double  long double  Ex1 : n * x + p (int n,p; float x;)  exécution prioritaire de n * x : conversion de n en float  exécution de l'addition : conversion de p en float  Ex2 : p1 * p2 + p3 * x (char p1, short p2, p3; float x;)  p1, p2 et p3 d'abord convertis en int  p3 converti en float avant multiplication
  • 49. Reproduction interdite Reproduction interdite Reproduction interdite Reproduction interdite Exemple de conversion 49 Exemple : n * p + x (int n; long p; float x;) n * p + x long conversion de n en long multiplication par p n * p de type long conversion de n * p en float addition résultat de type float * long float + float
  • 50. Reproduction interdite Reproduction interdite Reproduction interdite Reproduction interdite Opérateur d’affectation simple = 50  L’opérateur = affecte une valeur ou une expression à une variable  Exemple : double x, y, z; x=2.5; y=0.7; z=x*y-3;  Le terme à gauche de l’affectation est appelé lvalue (left value)  L'affectation est interprétée comme une expression. La valeur de l'expression est la valeur affectée  On peut enchainer des affectations, l’évaluation se fait de droite à gauche  Exemple : i=j=k=5 (est équivalente à k=5, j=k et ensuite i=j)  La valeur affectée est toujours convertie dans le type de la lvalue, même si ce type est plus faible (ex : conversion de float en int, avec perte d'information)
  • 51. Reproduction interdite Reproduction interdite Reproduction interdite Reproduction interdite Opérateurs relationnels 51  Opérateurs  < : inférieur à <= : inférieur ou égal à  > : supérieur à >= : supérieur ou égal à  == : égal à != : différent de  Le résultat de la comparaison n’est pas une valeur booléenne, mais 0 si le résultat est faux et 1 si le résultat est vrai  Les expressions relationnelles peuvent donc intervenir dans des expressions arithmétiques  Exemple : a = 2, b = 7, c = 4  B == 3  0 (faux)  A != b  1 (vrai)  4 * (a < b) + 2 * (c >= b)  4
  • 52. Reproduction interdite Reproduction interdite Reproduction interdite Reproduction interdite Opérateurs logiques 52  && : ET logique || : OU logique !: NON logique  && retourne vrai si les deux opérandes sont vrais (valent 1) et 0 sinon  || retourne vrai si l’une des opérandes est vrai (vaut 1) et 0 sinon  Les valeurs numériques sont acceptées : toute valeur non nulle correspond à vraie et 0 correspond à faux  Exemple : 5 && 11  1 !13.7  0
  • 53. Reproduction interdite Reproduction interdite Reproduction interdite Reproduction interdite Évaluation de && et || 53  Le 2ème opérande est évalué uniquement en cas de nécessité  a && b : b évalué uniquement si a vaut vrai (si a vaut faux, évaluation de b inutile car a && b vaut faux)  A || b : b évalué uniquement si a vaut faux (si a vaut vrai, évaluation de b inutile car a || b vaut vrai)  Exemples  if ((d != 0) && (n / d == 2)) : pas de division si d vaut 0  if ((n >=0) && (sqrt(n) < p)) : racine non calculée si n < 0  L’intérêt est d’accélérer l’évaluation et d’éviter les traitements inappropriés
  • 54. Reproduction interdite Reproduction interdite Reproduction interdite Reproduction interdite Incrémentation et décrémentation 54  Les opérateurs ++ et -- sont des opérateurs unaires permettant respectivement d'ajouter et de retrancher 1 au contenu de leur opérande  Cette opération est effectuée après ou avant l'évaluation de l'expression suivant que l'opérateur suit ou précède son opérande  k = i++ (post-incrémentation) affecte d'abord la valeur de i à k et incrémente après (k = i++; ⟺ k = i; i = i+1;)  k = ++i (pré-incrémentation) incrémente d'abord et après affecte la valeur incrémentée à k (k = ++i ; ⟺ i = i+1 ; k = i;)  Exemple : i = 5 ; n = ++i - 5; i vaut 6 et n vaut 1 i = 5 ; n = i++ - 5; i vaut 6 et n vaut 0  Remarque : idem pour l’opérateur de décrémentation --
  • 55. Reproduction interdite Reproduction interdite Reproduction interdite Reproduction interdite Opérateurs de manipulations de bits 55  Opérateurs arithmétiques bit à bit : & : ET logique | : OU logique ^ : OU exclusif ~ : NON logique  Les opérandes sont de type entier. Les opérations s'effectuent bit à bit suivant la logique binaire  Ex : 14 = 1110, 9 = 1001  14 & 9 = 1000 = 8, 14 | 9 = 1111 = 15
  • 56. Reproduction interdite Reproduction interdite Reproduction interdite Reproduction interdite Opérateurs de décalage de bits 56  Il existe deux opérateurs de décalage : >> : décalage à droite << : décalage à gauche  L’opérande gauche constitue l’objet à décaler et l’opérande droit le nombre de bits de décalage  Dans le cas d'un décalage à gauche les bits les plus à gauche sont perdus. Les positions binaires rendues vacantes sont remplies par des 0 Exemples : char x=14; (14=00001110)  14<<2 = 00111000 = 56 char y=-7; (-7=11111001)  -7<<2 = 11100100 = -28  Remarque : un décalage à gauche de k bits correspond (sauf débordement) à la multiplication par 2k
  • 57. Reproduction interdite Reproduction interdite Reproduction interdite Reproduction interdite Opérateurs de décalage de bits 57  Lors d'un décalage à droite les bits les plus à droite sont perdus.  si l'entier à décaler est non signé, les positions binaires rendues vacantes sont remplies par des 0  s'il est signé le remplissage dépend de l’implémentation (en général le remplissage se fait par le bit du signe) Ex : char x=14; (14=00001110)  14>>2 = 00000011 = 3  Remarque : un décalage à droite (n >> k) correspond à la division entière par 2k si n est non signé
  • 58. Reproduction interdite Reproduction interdite Reproduction interdite Reproduction interdite Opérateurs d’affectation combinés 58  Soit un opérateur de calcul op et deux expressions exp1 et exp2. L’expression exp1 = exp1 op exp2 peut s’écrire en général de façon équivalente sous la forme exp1 op= exp2  Opérateurs utilisables :  += -= *= /= %=  <<= >>= &= ^= |=  Exemples :  a=a+b s’écrit : a+=b  n=n%2 s’écrit : n%=2  x=x*i s’écrit : x*=i  p=p>>3 s’écrit : p>>=3
  • 59. Reproduction interdite Reproduction interdite Reproduction interdite Reproduction interdite Opérateur de forçage de type (cast) 59  Il est possible d’effectuer des conversions explicites ou de forcer le type d’une expression  Syntaxe : (<type>)<expression>  Exemple : int n, p ; (double)(n/p); convertit l’entier n / p en double  Remarque : la conversion (ou casting) se fait après calcul (double)(n/p) ≠ (double)n/p ≠ (double)(n)/(double)(p)  float n = 4.6, p = 1.5; (int)n/(int)p = 4/1 = 4 (int)n/p = 4/1.5 = 2.66 n/(int)p = 4./1 = 4.6 n/p = 4.6/ 1.5 = 3.06
  • 60. Reproduction interdite Reproduction interdite Reproduction interdite Reproduction interdite Opérateur conditionnel ? : 60  Syntaxe : exp1 ? exp2 : exp3 exp1 est évaluée, si sa valeur est non nulle c’est exp2 qui est exécutée, sinon exp3  Exemple1 : max = a > b ? a : b Si a>b alors on affecte à max le contenu de a càd a sinon on lui affecte b  Exemple2 : a>b ? i++ : i--; Si a>b on incrémente i sinon on décrémente i
  • 61. Reproduction interdite Reproduction interdite Reproduction interdite Reproduction interdite Opérateur séquentiel , 61  Utilité : regrouper plusieurs sous-expressions ou calculs en une seule expression  Les calculs sont évalués en séquence de gauche à droite  La valeur de l’expression est celle de la dernière sous- expression  Exemples  i++, i+j; // on évalue i++ ensuite i+j (on utilise la valeur de i incrémentée)  i++, j=i+k, a+b; // la valeur de l’expression est celle de a+b  for(i=1, k=0; …; …) { }
  • 62. Reproduction interdite Reproduction interdite Reproduction interdite Reproduction interdite Opérateur SIZEOF 62  Syntaxe : sizeof(<type>) ou sizeof(<variable>) fournit la taille en octets d'un type ou d'une variable  Exemples  int n;  printf("%d n",sizeof(int)); // affiche 4  printf("%d n",sizeof(n)); // affiche 4
  • 63. Reproduction interdite Reproduction interdite Reproduction interdite Reproduction interdite Priorité et associativité des opérateurs 63  Une expression est évaluée en respectant des règles de priorité et d’associativité des opérateurs  Ex: * est plus prioritaire que +, ainsi 2 + 3 * 7 vaut 23 et non 35  Le tableau de la page suivante donne la priorité de tous les opérateurs. La priorité est décroissante de haut en bas dans le tableau.  Les opérateurs dans une même ligne ont le même niveau de priorité. Dans ce cas on applique les règles d’associativité selon le sens de la flèche. Par exemple: 13 % 3 * 4 vaut 4 et non 1  Remarque: en cas de doute il vaut mieux utiliser les parenthèses pour indiquer les opérations à effectuer en priorité. Ex: (2 + 3) * 7 vaut 35
  • 64. Reproduction interdite Reproduction interdite Reproduction interdite Reproduction interdite Priorités de tous les opérateurs 64
  • 65. Reproduction interdite Reproduction interdite Reproduction interdite Reproduction interdite LA COMPILATION 70  Le langage C est un langage compilé. Cela signifie que, pour pouvoir exécuter un programme, vous devez d’abord traduire sa forme lisible par un être humain (code source) en quelque chose qu’une machine peut « comprendre » (code machine). Cette traduction est effectuée par un programme appelé compilateur.  Le compilateur est plutôt pointilleux sur la syntaxe ! Comme tous les programmeurs, vous passerez beaucoup de temps à chercher des erreurs dans du code.  Ce que le programmeur écrit est le code source (ou programme source) et ce que l’ordinateur exécute s’appelle exécutable, code objet ou code machine.
  • 66. Reproduction interdite Reproduction interdite Reproduction interdite Reproduction interdite LA COMPILATION 71  La plupart du temps, le code contient des erreurs ! Lorsque vous coderez, le compilateur risque parfois de vous « agacer ». Toutefois, il a généralement raison car vous avez certainement écrit quelque chose qui n’est pas défini précisément par la norme et qu’il empêche de produire du code objet.  Le compilateur est dénué de bon sens et d’intelligence (il n’est pas humain) et il est donc très pointilleux. Prenez en compte les messages d’erreur et analysez les bien.
  • 67. Reproduction interdite Reproduction interdite Reproduction interdite Reproduction interdite ÉDITION DES LIENS 72  Un programme contient généralement plusieurs parties distinctes, souvent développées par des personnes différentes.  Ces parties distinctes doivent être liées ensemble pour former un programme exécutable. Le programme qui lie ces parties distinctes s’appelle un éditeur de liens (linker).  Le code objet et les exécutables ne sont pas portables entre systèmes. Par exemple, si vous compilez pour une machine Windows, vous obtiendrez un code objet qui ne fonctionnera pas sur une machine Linux.
  • 68. Reproduction interdite Reproduction interdite Reproduction interdite Reproduction interdite ÉDITION DES LIENS 73
  • 69. Reproduction interdite Reproduction interdite Reproduction interdite Reproduction interdite ÉDITION DES LIENS 74  Une bibliothèque n’est rien d’autre que du code (qui ne contient pas de fonction « main »). Nous y accédons au moyen de déclarations se trouvant dans un fichier d’en-tête.  Une déclaration est une suite d’instructions qui indique comment une portion de code (qui se trouve dans une bibliothèque) peut être utilisée.  Attention à ne pas confondre bibliothèques et fichiers d’en-tête.
  • 70. Reproduction interdite Reproduction interdite Reproduction interdite Reproduction interdite ÉDITION DES LIENS 75  Une bibliothèque dynamique est une bibliothèque qui contient du code qui sera intégré au moment de l’exécution du programme.  Les avantages sont que le programme est de taille plus petite et qu’il sera à jour vis-à-vis de la mise à jour des bibliothèques.  L’inconvénient est que l’exécution dépend de l’existence de la bibliothèque sur le système cible.  Une bibliothèque dynamique, « Dynamic Link Library » (.dll) pour Windows et « shared object » (.so) sous Linux, est un fichier de bibliothèque logicielle utilisé par un programme exécutable, mais n’en faisant pas partie.
  • 71. Reproduction interdite Reproduction interdite Reproduction interdite Reproduction interdite LES ÉTAPES DE FABRICATION 76 Les différentes étapes de fabrication d’un programme sont : 1. Le préprocesseur (pré-compilation)  Traitement des directives qui commencent toutes par le symbole dièse « # » ;  Inclusion de fichiers « .h » avec « #include » ;  Substitutions lexicales : les « macros » avec « #define ». 2. La compilation  Vérification de la syntaxe ;  Traduction dans le langage d’assemblage de la machine cible.
  • 72. Reproduction interdite Reproduction interdite Reproduction interdite Reproduction interdite LES ÉTAPES DE FABRICATION 77 3. L’assemblage  Traduction finale en code machine (appelé ici code objet) ;  Production d’un fichier objet (.o ou .obj). 4. L’édition de liens  Unification des symboles internes ;  Étude et vérification des symboles externes (bibliothèques .so ou .dll) ;  Production du programme exécutable.
  • 73. Reproduction interdite Reproduction interdite Reproduction interdite Reproduction interdite LES ÉTAPES DE FABRICATION 78 Autrement dit :  La transformation d’un texte écrit en langage C en un programme exécutable par l’ordinateur se fait en deux étapes : la compilation et l’édition de liens.  La compilation est la traduction des fonctions écrites en C en des procédures équivalentes écrites dans un langage dont la machine peut exécuter les instructions.  Le compilateur lit toujours un fichier, appelé fichier source, et produit un fichier, dit fichier objet.
  • 74. Reproduction interdite Reproduction interdite Reproduction interdite Reproduction interdite LES ÉTAPES DE FABRICATION 79  Chaque fichier objet est incomplet, insuffisant pour être exécuté, car il contient des appels de fonctions ou des références à des variables qui ne sont pas définies dans le même fichier.  Par exemple, le premier programme que vous écrirez contiendra déjà la fonction printf que vous n’aurez certainement pas écrite vous-même.
  • 75. Reproduction interdite Reproduction interdite Reproduction interdite Reproduction interdite LES ÉTAPES DE FABRICATION 80  L’édition de liens est l’opération par laquelle plusieurs fichiers objets sont mis ensemble pour se compléter mutuellement : un fichier apporte des définitions de fonctions et de variables auxquelles un autre fichier fait référence et réciproquement.  L’éditeur de liens (ou linker) prend en entrée plusieurs fichiers objets et bibliothèques (une variété particulière de fichiers objets) et produit un unique fichier exécutable.  L’éditeur de liens est largement indépendant du langage de programmation utilisé pour écrire les fichiers sources, qui peuvent même avoir été écrits dans des langages différents.
  • 76. Reproduction interdite Reproduction interdite Reproduction interdite Reproduction interdite LES ÉTAPES DE FABRICATION 81  Chaque fichier source entrant dans la composition d’un programme exécutable est fait d’une succession d’un nombre quelconque d’éléments indépendants, qui sont :  des directives pour le préprocesseur (lignes commençant par #) ;  des constructions de types (struct, union, enum, typedef) ;  des déclarations de variables et de fonctions externes ;  des définitions de variables ;  des définitions de fonctions.
  • 77. Reproduction interdite Reproduction interdite Reproduction interdite Reproduction interdite LES ÉTAPES DE FABRICATION 82 #include <stdio.h> int main() { printf("Bonjour!n"); //Affiche Bonjour! return 0; } Exemple de programme en C
  • 78. Reproduction interdite Reproduction interdite Reproduction interdite Reproduction interdite LES COMMENTAIRES 83  Les commentaires commencent par /* et se terminent par */. /* Ce texte est un commentaire et sera donc ignoré par le compilateur */  Les langages C et C++ cohabitant dans la plupart des compilateurs actuels, ces derniers acceptent également comme commentaire tout texte compris entre le signe // et la fin de la ligne où ce signe apparaît : // Ceci est un commentaire
  • 79. Reproduction interdite Reproduction interdite Reproduction interdite Reproduction interdite LES MOTS-CLÉS 84  Les mots suivants sont réservés. Leur fonction est prévue par la syntaxe du C et ils ne peuvent pas être utilisés dans un autre but :
  • 80. Reproduction interdite Reproduction interdite Reproduction interdite Reproduction interdite LES OPÉRATEURS 85  Symboles simples :  Symboles Composés :
  • 81. Reproduction interdite Reproduction interdite Reproduction interdite Reproduction interdite LES OPÉRATEURS 86  Tous ces symboles sont reconnus par le compilateur comme des opérateurs.  Il est interdit d’insérer des caractères blancs à l’intérieur d’un symbole composé.  En outre, il est conseillé d’encadrer par des blancs toute utilisation d’un opérateur.  Dans certaines circonstances cette règle est plus qu’un conseil, car sa non-observance crée une expression ambigüe.
  • 82. Reproduction interdite Reproduction interdite Reproduction interdite Reproduction interdite LES CONSTANTES LITTÉRALES 87 Nombres entiers :  Les constantes littérales numériques entières ou réelles suivent les conventions habituelles, avec quelques particularités.  Les constantes littérales sont sans signe : l’expression −123 est comprise comme l’application de l’opérateur unaire − à la constante 123; mais puisque le calcul est fait pendant la compilation, cette subtilité n’a aucune conséquence pour le programmeur.  Notez aussi qu’en C original, comme il n’existe pas d’opérateur + unaire, la notation +123 est interdite.
  • 83. Reproduction interdite Reproduction interdite Reproduction interdite Reproduction interdite LES CONSTANTES LITTÉRALES 88  Les constantes littérales entières peuvent aussi s’écrire en octal et en hexadécimal :  une constante écrite en octal (base 8) commence par 0 (zéro) ;  une constante écrite en hexadécimal (base 16) commence par 0x ou 0X.  Voici par exemple trois manières d’écrire le même nombre : 27 033 0x1B  On ne doit pas écrire de zéro non significatif à gauche d’un nombre : 0123 ne représente pas la même valeur que 123.
  • 84. Reproduction interdite Reproduction interdite Reproduction interdite Reproduction interdite LES CONSTANTES LITTÉRALES 89  Le type d’une constante entière est le plus petit type dans lequel sa valeur peut être représentée. Ou, plus exactement :  si elle est décimale : si possible int, sinon long, sinon unsigned long ;  si elle est octale ou hexadécimale : si possible int, sinon unsigned int, sinon unsigned long.
  • 85. Reproduction interdite Reproduction interdite Reproduction interdite Reproduction interdite LES CONSTANTES LITTÉRALES 90 Nombres flottants : Une constante littérale est l’expression d’un nombre flottant si elle présente, dans l’ordre :  une suite de chiffres décimaux (la partie entière) ;  un point, qui joue le rôle de virgule décimale ;  une suite de chiffres décimaux (la partie fractionnaire) ;  une des deux lettres E ou e ;  éventuellement un signe + ou - ;  une suite de chiffres décimaux.
  • 86. Reproduction interdite Reproduction interdite Reproduction interdite Reproduction interdite LES CONSTANTES LITTÉRALES 91  Les trois derniers éléments forment l’exposant. Exemple : 123.456E-78.  On peut omettre :  la partie entière ou la partie fractionnaire, mais pas les deux ;  le point ou l’exposant, mais pas les deux. Exemples : .5e7, 5.e6, 5000000., 5e6  Une constante flottante est supposée de type double, à moins de comporter un suffixe explicite :  les suffixes F ou f indiquent qu’elle est du type float ;  les suffixes L ou l indiquent qu’elle est du type long double. Exemples : 1.0L, 5.0e4f
  • 87. Reproduction interdite Reproduction interdite Reproduction interdite Reproduction interdite LES CARACTÈRES ET LES CHAÎNES DE CARACTÈRES 92  Une constante de type caractère se note en écrivant le caractère entre apostrophes. Une constante de type chaîne de caractères se note en écrivant ses caractères entre guillemets. Exemples, trois caractères : ’A’ ’2’ ’"’ Quatre chaînes de caractères : "A" "BTS SNIR" "" "'"  On peut faire figurer n’importe quel caractère, même non imprimable, dans une constante caractère ou chaîne de caractères en utilisant les combinaisons suivantes, appelées séquences d’échappement :
  • 88. Reproduction interdite Reproduction interdite Reproduction interdite Reproduction interdite LES CARACTÈRES ET LES CHAÎNES DE CARACTÈRES 93 n nouvelle ligne (LF) t tabulation (HT) b espace-arrière (BS) r retour-chariot (CR) f saut de page (FF) a signal sonore (BELL) ’ ’ " " d3d2d1 le caractère qui a pour code le nombre octal d3d2d1. S’il commence par un ou deux zéros et si cela ne crée pas une ambiguïté, on peut aussi le noter d2d1 ou d1 .
  • 89. Reproduction interdite Reproduction interdite Reproduction interdite Reproduction interdite LES CARACTÈRES ET LES CHAÎNES DE CARACTÈRES 94  Par exemple, la chaîne ci-dessous définit la suite des 9 caractères : A, escape (de code ASCII 27), B, ”, C, saut de page, D, et E : 33B"CfDE"  Nous verrons que cette chaîne comporte un caractère de plus qui en marque la fin.  En standard le langage C ne prévoit pas le codage Unicode des caractères.  Une constante de type chaîne de caractères représente une suite finie de caractères, de longueur quelconque.
  • 90. Reproduction interdite Reproduction interdite Reproduction interdite Reproduction interdite LES CARACTÈRES ET LES CHAÎNES DE CARACTÈRES 95  Le codage interne d’une chaîne de caractères est le suivant :  les caractères constituant la chaîne sont rangés en mémoire, de manière contigüe, dans l’ordre où ils figurent dans la chaîne ;  un caractère nul est ajouté immédiatement après le dernier caractère de la chaîne, pour en indiquer la fin ;  la constante chaîne représente alors, à l’endroit où elle est écrite, l’adresse de la cellule où a été rangé le premier caractère de la chaîne.
  • 91. Reproduction interdite Reproduction interdite Reproduction interdite Reproduction interdite LES CARACTÈRES ET LES CHAÎNES DE CARACTÈRES 96  Par conséquent, une constante chaîne de caractères a pour type celui d’un tableau de caractères (c’est-à-dire « char[] ») et pour valeur l’adresse d’une cellule de la mémoire.  Par caractère nul on entend le caractère dont le code interne est 0 ; on peut le noter indifféremment 0, ’000’ ou ’0’ (mais certainement pas ’0’) ; il est utilisé très fréquemment en C.
  • 92. Reproduction interdite Reproduction interdite Reproduction interdite Reproduction interdite LES TYPES FONDAMENTAUX 97 TYPE DE BASE Nombres entiers Anonymes Petite taille - signés char - non signés unsigned char Taille moyenne - signés short - non signés unsigned short
  • 93. Reproduction interdite Reproduction interdite Reproduction interdite Reproduction interdite LES TYPES FONDAMENTAUX 98 TYPE DE BASE Nombres entiers Anonymes Grande taille - signés long - non signés unsigned long Nommés enum
  • 94. Reproduction interdite Reproduction interdite Reproduction interdite Reproduction interdite LES TYPES FONDAMENTAUX 99 TYPE DE BASE Nombres flottants Simples float Grande précision double Précision encore plus grande long double TYPES DÉRIVÉS Tableaux [] Fonctions () pointeurs * Structures struct Union union
  • 95. Reproduction interdite Reproduction interdite Reproduction interdite Reproduction interdite Les types du langage C 100  On dispose de deux sortes de types de base, les nombres entiers et les nombres flottants, et d’une famille infinie de types dérivés obtenus en appliquant quelques procédés récursifs de construction soit à des types fondamentaux soit à des types dérivés définis de la même manière.  Cette organisation révèle un trait de l’esprit de C : le pragmatisme l’emporte sur l’esthétisme, parfois même sur la rigueur.
  • 96. Reproduction interdite Reproduction interdite Reproduction interdite Reproduction interdite LES INITIALISATIONS 101  Le langage C permet l'initialisation des variables dans la zone des déclarations : char c; est équivalent à char c = 'A'; c = 'A'; int i; est équivalent à int i = 50; i = 50;  Cette règle s'applique à tous les nombres, char, int, float ...
  • 97. Reproduction interdite Reproduction interdite Reproduction interdite Reproduction interdite LES TYPES FONDAMENTAUX 102  Dans d’autres langages, les caractères, les booléens, les constantes symboliques, etc., sont codés de manière interne par des nombres, mais ce fait est officiellement ignoré par le programmeur, qui reste obligé de considérer ces données comme appartenant à des ensembles disjoints.  En C on a fait le choix opposé, laissant au programmeur le soin de réaliser lui-même, à l’aide des seuls types numériques, l’implantation des types de niveau supérieur.
  • 98. Reproduction interdite Reproduction interdite Reproduction interdite Reproduction interdite EXERCICE 103 Soit le programme en C ci-dessous :
  • 99. Reproduction interdite Reproduction interdite Reproduction interdite Reproduction interdite EXERCICE 104 1) Entourez la fonction principale, la zone de déclaration, la zone de définition et la ou les directive(s) de compilation sur le programme ci-dessus. 2) Que permet de faire le programme ci-dessus ? 3) Que retourne la fonction principale ? 4) Quel est l’intérêt d’utiliser/de déclarer une constante ? 5) Que signifie la 1ère ligne du programme ?