Chap 1
Chap 1
Variables Opérateurs ES en C
Pr Mostafa SAADI – ENSAK
21 novembre 2020
1/102
Pr Mostafa SAADI – ENSAK Programmation C : CH1 - Introduction générale
Plan du Cours I
1 Un peu d’histoire
2 La compilation
3 Les composants élémentaires du C
Les identificateurs
Les mots-clefs
Les commentaires
4 Structure d’un programme C
5 Les types prédéfinis
Le type caractère
Les types entiers
Les types flottants
6 Les variables & Les constantes
Introduction
Les variables
Les constantes
Les constantes entières 2/102
Pr Mostafa SAADI – ENSAK Programmation C : CH1 - Introduction générale
Plan du Cours II
Les constantes réelles
Les constantes caractères
Les constantes chaı̂nes de caractères
7 Les opérateurs
L’affectation
Les opérateurs arithmétiques
Les opérateurs relationnels
Les opérateurs logiques booléens
Les opérateurs logiques bit à bit
Les opérateurs d’affectation composée
Les opérateurs d’incrémentation et de décrémentation
L’opérateur virgule
L’opérateur conditionnel ternaire
L’opérateur de conversion de type
L’opérateur adresse
Les priorités des opérateurs 3/102
Pr Mostafa SAADI – ENSAK Programmation C : CH1 - Introduction générale
Plan du Cours III
8 Les fonctions d’entrées-sorties classiques
La fonction d’écriture printf
La fonction de saisie scanf
Impression et lecture de caractères
10 Références
4/102
Pr Mostafa SAADI – ENSAK Programmation C : CH1 - Introduction générale
1⇒ Un peu d’histoire
1 Un peu d’histoire
5/102
Pr Mostafa SAADI – ENSAK Programmation C : CH1 - Introduction générale
6/102
Pr Mostafa SAADI – ENSAK Programmation C : CH1 - Introduction générale
2⇒ La compilation
2 La compilation
7/102
Pr Mostafa SAADI – ENSAK Programmation C : CH1 - Introduction générale
8/102
Pr Mostafa SAADI – ENSAK Programmation C : CH1 - Introduction générale
3⇒ Les composants élémentaires du C
9/102
Pr Mostafa SAADI – ENSAK Programmation C : CH1 - Introduction générale
Les Composants élémentaires du C
10/102
Pr Mostafa SAADI – ENSAK Programmation C : CH1 - Introduction générale
Definition d’un Identificateur
11/102
Pr Mostafa SAADI – ENSAK Programmation C : CH1 - Introduction générale
Definition d’un Identificateur
12/102
Pr Mostafa SAADI – ENSAK Programmation C : CH1 - Introduction générale
Definition d’un Identificateur
13/102
Pr Mostafa SAADI – ENSAK Programmation C : CH1 - Introduction générale
Identificateur : Exmples
14/102
Pr Mostafa SAADI – ENSAK Programmation C : CH1 - Introduction générale
Les mots-clefs du C
Mots-clefs
v Un certain nombre de mots, appelés mots-clefs, sont réservés
pour le langage lui-même et ne peuvent pas être utilisés
comme identificateurs. L’ANSI C compte 32 mots clefs.
v Les mots réservés du langage C doivent être écrits en
minuscules.
15/102
Pr Mostafa SAADI – ENSAK Programmation C : CH1 - Introduction générale
Les mots-clefs du C
mots-clefs
auto double int struct
break else long switch
case enum register typedef
char extern return union
const float short unsigned
continue for signed void
default goto sizeof volatile
do if static while
16/102
Pr Mostafa SAADI – ENSAK Programmation C : CH1 - Introduction générale
Les mots-clefs du C
17/102
Pr Mostafa SAADI – ENSAK Programmation C : CH1 - Introduction générale
Les commentaires
18/102
Pr Mostafa SAADI – ENSAK Programmation C : CH1 - Introduction générale
4⇒ Structure d’un programme C
19/102
Pr Mostafa SAADI – ENSAK Programmation C : CH1 - Introduction générale
Structure d’un programme C
Expression
Une expression est une suite de composants élémentaires
syntaxiquement correcte, par exemple :
x=0
// ou bien
(i >= 0) && (i < 10) && (p[i] != 0)
// ou bien
somme + = 20
20/102
Pr Mostafa SAADI – ENSAK Programmation C : CH1 - Introduction générale
Structure d’un programme C
Instruction
v Une instruction est une expression suivie d’un point-virgule ;.
v Plusieurs instructions peuvent être rassemblées par des
accolades et pour former une instruction composée ou bloc
qui est syntaxiquement équivalent à une instruction.
if (x != 0)
{
z = y / x;
t = y % x;
}
21/102
Pr Mostafa SAADI – ENSAK Programmation C : CH1 - Introduction générale
Structure d’un programme C
Déclaration
C’est une instruction composée d’un spécificateur de type et
d’une liste d’identificateurs séparés par une virgule. Par exemple,
int a;
int b = 2, c;
double x = 2.38e4;
char message[80];
Attention
En C, toute variable doit faire l’objet d’une déclaration avant d’être
utilisée.
22/102
Pr Mostafa SAADI – ENSAK Programmation C : CH1 - Introduction générale
Structure d’un programme C
[directives au préprocesseur]
[déclarations de variables externes]
[fonctions secondaires]
main()
{
déclarations de variables internes,
instructions
}
23/102
Pr Mostafa SAADI – ENSAK Programmation C : CH1 - Introduction générale
Structure d’un programme C I
void main()
{ /∗ début du bloc de la fonction main∗/
int i; /∗ définition des variables locales ∗/
i=0;
fonc1(i) ; //appel de la fonction fonc1
fonc2(i) ; // appel de la fonction fonc2
24/102
Pr Mostafa SAADI – ENSAK Programmation C : CH1 - Introduction générale
Structure d’un programme C II
int fonc1(int x) {
return x;
}
int fonc2(int x) {
return (x ∗ x);
}
25/102
Pr Mostafa SAADI – ENSAK Programmation C : CH1 - Introduction générale
Structure d’un programme C
#include<fichier.h>
26/102
Pr Mostafa SAADI – ENSAK Programmation C : CH1 - Introduction générale
Structure d’un programme C
préprocesseur
v Le préprocesseur effectue un prétraitement du programme
source avant qu’il soit compilé.
v Ce préprocesseur exécute des instructions particulières
appelées directives.
v Ces directives sont identifiées par le caractère # en tête.
v Inclusion de fichiers
1 #include < nom − de − fichier > /* répertoire standard */
2 #include ”nom − de − fichier ” /* répertoire courant */
27/102
Pr Mostafa SAADI – ENSAK Programmation C : CH1 - Introduction générale
Structure d’un programme C
28/102
Pr Mostafa SAADI – ENSAK Programmation C : CH1 - Introduction générale
Structure d’un programme C
La fonction main
v 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.
v Syntaxe :
main()
{
<déclarations>
<instructions>
return 0; // return 0 indique que le programme s'est
terminé avec succès
}
30/102
Pr Mostafa SAADI – ENSAK Programmation C : CH1 - Introduction générale
5⇒ Les types prédéfinis
31/102
Pr Mostafa SAADI – ENSAK Programmation C : CH1 - Introduction générale
Les types prédéfinis
Introduction
v Le C est un langage typé.
v Cela signifie en particulier que toute variable, constante ou
fonction est d’un type précis.
v Le type d’un objet définit la façon dont il est représenté en
mémoire.
32/102
Pr Mostafa SAADI – ENSAK Programmation C : CH1 - Introduction générale
Les types prédéfinis
introduction
v La mémoire de l’ordinateur se décompose en une suite
continue d’octets.
v Chaque octet de la mémoire est caractérisé par son adresse,
qui est un entier.
v Deux octets contigus en mémoire ont des adresses qui
diffèrent d’une unité.
v Quand une variable est définie, il lui est attribué une adresse.
Cette variable correspondra à une zone mémoire dont la
longueur (le nombre d’octets) est fixée par le type.
v La taille mémoire correspondant aux différents types dépend
des compilateurs ;
v la norme ANSI spécifie un certain nombre de contraintes
(float codé sur 4octets).
33/102
Pr Mostafa SAADI – ENSAK Programmation C : CH1 - Introduction générale
Les types prédéfinis
Types de base
v Les types de base en C concernent les caractères, les entiers
et les flottants (nombres réels).
v Ils sont désignés par les mots-clefs suivants :
34/102
Pr Mostafa SAADI – ENSAK Programmation C : CH1 - Introduction générale
Le type caractère
35/102
Pr Mostafa SAADI – ENSAK Programmation C : CH1 - Introduction générale
Le type caractère
main()
{
char c = 'A';
printf(”%c”, c + 1);
}
36/102
Pr Mostafa SAADI – ENSAK Programmation C : CH1 - Introduction générale
Les types entiers
37/102
Pr Mostafa SAADI – ENSAK Programmation C : CH1 - Introduction générale
Les types entiers
38/102
Pr Mostafa SAADI – ENSAK Programmation C : CH1 - Introduction générale
Les types flottants
39/102
Pr Mostafa SAADI – ENSAK Programmation C : CH1 - Introduction générale
6⇒ Les variables & Les constantes
40/102
Pr Mostafa SAADI – ENSAK Programmation C : CH1 - Introduction générale
Les variables & Les constantes
Introduction
v Les variables et les constantes sont les données principales qui
peuvent être manipulées par un programme.
v Les déclarations introduisent les variables qui sont utilisées,
fixent leur type et parfois aussi leur valeur de départ.
v Les opérateurs contrôlent les actions que subissent les valeurs
des données.
v Pour produire de nouvelles valeurs, les variables et les
constantes peuvent être combinées à l’aide des opérateurs
dans des expressions.
v Le type d’une donnée détermine :
l’ensemble des valeurs admissibles,
le nombre d’octets à réserver en mémoire,
l’ensemble des opérateurs qui peuvent y être appliqués.
41/102
Pr Mostafa SAADI – ENSAK Programmation C : CH1 - Introduction générale
Les variables & Les constantes
Definition
1 Constante : Elle ne change pas de valeur pendant l’exécution
du programme
2 Variable : Elle peut changer sa valeur pendant l’exécution du
programme
Caractèristiques
Une variable ou une constante est définie par :
1 L’identificateur : c’est le nom de la variable ou la constante
2 Le type : entier, caractère, chaine de caractère, réel, booléen
ou structure.
42/102
Pr Mostafa SAADI – ENSAK Programmation C : CH1 - Introduction générale
Les variables
Syntaxe de déclaration en C
<Type> <NomVar1>,<NomVar2>,...,<NomVarN> ;
Exemples:
int i, j,k;
float x, y ;
double z=1.5; // déclaration et initialisation
short compteur;
char c=`A`;
43/102
Pr Mostafa SAADI – ENSAK Programmation C : CH1 - Introduction générale
Les variables
Types de base
44/102
Pr Mostafa SAADI – ENSAK Programmation C : CH1 - Introduction générale
Les variables
Remarques
v Le préfixe unsigned indique des valeurs positives.
v Une expression est estimée fausse si elle vaut 0, et est estimée
vraie pour toute autre valeur.
v Il n’existe pas de type spécial chaı̂ne en C. Une chaı̂ne de
caractères est traitée comme un tableau à une dimension de
caractères (vecteur de caractères).
45/102
Pr Mostafa SAADI – ENSAK Programmation C : CH1 - Introduction générale
Les variables
Syntaxe :
(<type>) <expression>
Exemple :
int n, p ;
(double) (n / p); // convertit l?entier n / p en double
46/102
Pr Mostafa SAADI – ENSAK Programmation C : CH1 - Introduction générale
Les constantes
Définition
v Une constante est une valeur qui apparaı̂t littéralement dans
le code source d’un programme.
v Le type de la constante étant déterminé par la façon dont la
constante est écrite.
v Les constantes peuvent être de 4 types : entier, flottant
(nombre réel), caractère, énumération.
v Ces constantes vont être utilisées, par exemple, pour initialiser
une variable.
47/102
Pr Mostafa SAADI – ENSAK Programmation C : CH1 - Introduction générale
Les Constantes
Déclaration
En C, il y a deux façons pour déclarer une constante :
1 la directive #define :
48/102
Pr Mostafa SAADI – ENSAK Programmation C : CH1 - Introduction générale
Les constantes entières
49/102
Pr Mostafa SAADI – ENSAK Programmation C : CH1 - Introduction générale
Les constantes entières
50/102
Pr Mostafa SAADI – ENSAK Programmation C : CH1 - Introduction générale
Les constantes réelles
51/102
Pr Mostafa SAADI – ENSAK Programmation C : CH1 - Introduction générale
Les constantes réelles
52/102
Pr Mostafa SAADI – ENSAK Programmation C : CH1 - Introduction générale
Les constantes cacartères : imprimable
caractère imprimable
v Pour désigner un caractère imprimable, il suffit de le mettre
entre apostrophes ’ ’ (par ex. ’A’ ou ’$’).
v Les seuls caractères imprimables qu’on ne peut pas représenter
de cette façon sont l’antislash et l’apostrophe, qui sont
respectivement désignés par \\ et \’.
v Le point d’intérrogation et les guillemets peuvent aussi être
désignés par les notations \ ? et \”.
53/102
Pr Mostafa SAADI – ENSAK Programmation C : CH1 - Introduction générale
Les constantes caractères : non imprimables
54/102
Pr Mostafa SAADI – ENSAK Programmation C : CH1 - Introduction générale
Les constantes caractères : non imprimables
\n nouvelle ligne
\r retour chariot
\t tabulation horizontale
\f saut de page
\v tabulation verticale
\a signal d'alerte
\b retour arrière
55/102
Pr Mostafa SAADI – ENSAK Programmation C : CH1 - Introduction générale
Les constantes chaı̂nes de caractères
chaı̂ne de caractères
v Une chaı̂ne de caractères est une suite de caractères
entourés par des guillemets. Par exemple,
”Ceci est une chaı̂ne de caractères”
v Une chaı̂ne de caractères peut contenir des caractères non
imprimables, désignés par les représentations vues
précédemment.
Par exemple :
”ligne 1 \n ligne 2”
56/102
Pr Mostafa SAADI – ENSAK Programmation C : CH1 - Introduction générale
Les constantes chaı̂nes de caractères
chaı̂ne de caractères
v A l’intérieur d’une chaı̂ne de caractères, le caractère ” doit
être désigné par \”.
v Le caractère \ suivi d’un passage à la ligne est ignoré. Cela
permet de faire tenir de longues chaı̂nes de caractères sur
plusieurs lignes.
Exemple :
”ceci est une longue longue longue longue longue longue longue
longue \ chaı̂ne de caractères”
57/102
Pr Mostafa SAADI – ENSAK Programmation C : CH1 - Introduction générale
7⇒ Les opérateurs
7 Les opérateurs
L’affectation
Les opérateurs arithmétiques
Les opérateurs relationnels
Les opérateurs logiques booléens
Les opérateurs logiques bit à bit
Les opérateurs d’affectation composée
Les opérateurs d’incrémentation et de décrémentation
L’opérateur virgule
L’opérateur conditionnel ternaire
L’opérateur de conversion de type
L’opérateur adresse
Les priorités des opérateurs
58/102
Pr Mostafa SAADI – ENSAK Programmation C : CH1 - Introduction générale
L’affectation
L’affectation
v En C, l’affectation est un opérateur à part entière.
v Elle est symbolisée par le signe =. Sa syntaxe est la suivante :
variable = expression
59/102
Pr Mostafa SAADI – ENSAK Programmation C : CH1 - Introduction générale
L’affectation
L’affectation
v L’affectation effectue une conversion de type implicite : la
valeur de l’expression (terme de droite) est convertie dans
le type du terme de gauche.
Exemple, le programme suivant :
main()
{
int i, j = 2;
float x = 2.5;
i = j + x;
x = x + i;
printf(”\n %f \n”,x);
}
imprime pour x la valeur 6.5 (et non 7), car dans l’instruction i = j
+ x ;, l’expression j + x a été convertie en entier. 60/102
Pr Mostafa SAADI – ENSAK Programmation C : CH1 - Introduction générale
Les opérateurs arithmétiques
61/102
Pr Mostafa SAADI – ENSAK Programmation C : CH1 - Introduction générale
Les opérateurs arithmétiques
Les spécificités
v le C ne dispose que de la notation / pour désigner à la fois
la division entière et la division entre flottants.
v Si les deux opérandes sont de type entier, l’opérateur /
produira une division entière (quotient de la division).
v Par contre, il délivrera une valeur flottante dès que l’un des
opérandes est un flottant.
Par exemple,
float x;
x = 3 / 2;
affecte à x la valeur 1. Par contre
x = 3 / 2. ;
affecte à x la valeur 1.5.
62/102
Pr Mostafa SAADI – ENSAK Programmation C : CH1 - Introduction générale
Les opérateurs arithmétiques
Les spécificités
v L’opérateur % ne s’applique qu’à des opérandes de type
entier.
v Si l’un des deux opérandes est négatif, le signe du reste
dépend de l’implémentation, mais il est en général le même
que celui du dividende.
v Il n’y a pas en C d’opérateur effectuant l’élévation à la
puissance.
63/102
Pr Mostafa SAADI – ENSAK Programmation C : CH1 - Introduction générale
Les opérateurs relationnels
> supérieur
>= supérieur ou égal
< strictement inférieur
<= inférieur ou égal
== égal
!= différent
Leur syntaxe est
expression1 op expression2
v Les deux expressions sont évaluées puis comparées.
v La valeur rendue est de type int (il n’y a pas de type booléen
en C) ;
v La valeur vaut 1 si la condition est vraie, et 0 sinon.
64/102
Pr Mostafa SAADI – ENSAK Programmation C : CH1 - Introduction générale
Les opérateurs relationnels
ATTENTION
ATTENTION : à ne pas confondre l’opérateur de test d’égalité
= = avec l’opérateur d’affection =. Ainsi, le programme
main()
{
int a = 0;
int b = 1;
if (a = b)
printf(”\n a et b sont egaux \n”);
else
printf(”\n a et b sont differents \n”);
}
imprime à l’écran a et b sont egaux !
65/102
Pr Mostafa SAADI – ENSAK Programmation C : CH1 - Introduction générale
Les opérateurs logiques booléens
&& et logique
|| ou logique
! négation logique
66/102
Pr Mostafa SAADI – ENSAK Programmation C : CH1 - Introduction générale
Les opérateurs logiques booléens
int i;
int p[10];
if ((i >= 0) && (i <= 9) && !(p[i] == 0))
...
la dernière clause ne sera pas évaluée si i n’est pas entre 0 et 9.
67/102
Pr Mostafa SAADI – ENSAK Programmation C : CH1 - Introduction générale
Les opérateurs logiques bit à bit
& et
| ou inclusif
ˆ ou exclusif
˜ complément à 1
<< décalage à gauche
>> décalage à droite
68/102
Pr Mostafa SAADI – ENSAK Programmation C : CH1 - Introduction générale
Les opérateurs d’affectation composée
+= −= ∗= /= %=
&= ˆ= |= <<= >>=
Pour tout opérateur op, l’expression :
expression1 op = expression2
est équivalente à
69/102
Pr Mostafa SAADI – ENSAK Programmation C : CH1 - Introduction générale
Les opérateurs d’incrémentation et de décrémentation
incrémentation ++ et de décrémentation - -
v Les opérateurs d’incrémentation ++ et de décrémentation –
s’utilisent aussi bien en suffixe (i++) qu’en préfixe (++i).
v Dans les deux cas la variable i sera incrémentée
1 la notation suffixe la valeur retournée sera l’ancienne valeur
de i
2 la notation préfixe se sera la nouvelle.
Par exemple :
int a = 3, b, c;
b = ++a; /∗ a et b valent 4 ∗/
c = b++; /∗ c vaut 4 et b vaut 5 ∗/
70/102
Pr Mostafa SAADI – ENSAK Programmation C : CH1 - Introduction générale
Les opérateurs d’incrémentation et de décrémentation
incrémentation ++ et de décrémentation - -
1 int a = 0;
2 int b = 10;
3 a = b++; //ici, a prend l'ancienne valeur de b, c'est−à−dire 10
; et b prend 11 (10+1).
4 a = 0;
5 a = ++b; //ici, b est incrémenté et vaut 12 (11+1), et a prend
la nouvelle valeur de b, c'est−à−dire 12.
6 a = a++; //ici, a prend la valeur retournée par a++, c'est son
ancienne valeur, 12, donc a reste inchang´e et vaut 12.
7 a = 0;
8 a = a++ + ++a; //a prend la valeur retourn´ee par a++ +
++a. Dans cette expression, a++ renvoie 0 et passe a à 1, et
++a passe a à 2 et renvoie 2. On a donc finalement a = 2.
71/102
Pr Mostafa SAADI – ENSAK Programmation C : CH1 - Introduction générale
Les opérateurs d’incrémentation et de décrémentation
Affectation combin´ee
v Pour gagner du temps, on peut compacter l’écriture de la
somme d’une expression à une variable.
v On prendra l’exemple de la somme, mais il est possible
d’effectuer ce genre d’op´erations pour la soustraction, le
produit et le quotient.
1 a+ =< expression > calcule l’expression, lui ajoute a (Si a est
modifié dans l’expression, c’est la dernière valeur prise par a
qui est retournée) et retourne le résultat dans a,
2 a = + < expression > ajoute à a (la valeur de a à l’instruction
précédente) la valeur de l’expression et retourne le résultat
dans a.
72/102
Pr Mostafa SAADI – ENSAK Programmation C : CH1 - Introduction générale
Les opérateurs d’incrémentation et de décrémentation
incrémentation ++ et de décrémentation - -
1 int a = 2;
2 int b = 10;
3 a += a++ + b; //ici, a++ renvoie 2 et a vaut alors 3, (a++
+ b) vaut donc 12 (10+2), on ajoute a (3) et on stocke le
résultat (2+10+3=15) dans a.
73/102
Pr Mostafa SAADI – ENSAK Programmation C : CH1 - Introduction générale
L’opérateur virgule
L’opérateur virgule ,
v Une expression peut être constituée d’une suite
d’expressions séparées par des virgules :
expression1, expression2, ... , expressionN
v Cette expression est alors évaluée de gauche à droite.
v Sa valeur sera la valeur de l’expression de droite.
Exemple, le programme
main()
{
int a, b;
b = ((a = 3), (a + 2));
printf(”\n b = %d \n”,b);
}
imprime b = 5.
74/102
Pr Mostafa SAADI – ENSAK Programmation C : CH1 - Introduction générale
L’opérateur conditionnel ternaire
x >= 0 ? x : −x
correspond à la valeur absolue d’un nombre. De même l’instruction
cast ( )
v L’opérateur de conversion de type, appelé cast, permet de
modifier explicitement le type d’un objet.
v (type) objet
Exemple
main()
{
int i = 3, j = 2;
printf(”%f \n”,(float)i/j);
}
retourne la valeur 1.5.
76/102
Pr Mostafa SAADI – ENSAK Programmation C : CH1 - Introduction générale
L’opérateur adresse
&objet
77/102
Pr Mostafa SAADI – ENSAK Programmation C : CH1 - Introduction générale
Les priorités des opérateurs
Les priorités des opérateurs
v L’ordre de l’évaluation des différentes parties d’une
expression correspond en principe à celle que nous connaissons
des mathématiques.
v On dit alors que la multiplication a la priorité sur l’addition et
que la multiplication et l’addition ont la priorité sur
l’affectation.
v Si nous voulons forcer l’ordinateur à commencer par un
opérateur avec une priorité plus faible, nous devons (comme
en mathématiques) entourer le terme en question par des
parenthèses.
Exemple
X = 2∗(A+3)∗B+4∗C;
l’ordinateur évalue d’abord l’expression entre parenthèses, ensuite
les multiplications, ensuite l’addition et enfin l’affectation. 78/102
Pr Mostafa SAADI – ENSAK Programmation C : CH1 - Introduction générale
Les priorités des opérateurs
Classes de priorités
79/102
Pr Mostafa SAADI – ENSAK Programmation C : CH1 - Introduction générale
Les priorités des opérateurs
80/102
Pr Mostafa SAADI – ENSAK Programmation C : CH1 - Introduction générale
Les priorités des opérateurs
Exemple 1
Pour A=4 et B=7, l’expression A *= B += 3 sera évaluée comme
suit : A=40
Exemple 2
Pour A=1 et B=4, l’expression !–A==++ !B sera évaluée comme
suit : 1 (vrai)
81/102
Pr Mostafa SAADI – ENSAK Programmation C : CH1 - Introduction générale
8⇒ Les fonctions d’entrées-sorties classiques
82/102
Pr Mostafa SAADI – ENSAK Programmation C : CH1 - Introduction générale
Lire et Ecrire des données
entrées-sorties standards
v Il s’agit des fonctions de la librairie standard stdio.h utilisées
avec les unités classiques d’entrées-sorties, qui sont
respectivement le clavier et l’écran.
v L’appel à la librairie stdio.h par la directive au préprocesseur
#include <stdio.h>
83/102
Pr Mostafa SAADI – ENSAK Programmation C : CH1 - Introduction générale
Lire et Ecrire des données
entrées-sorties standards
v La bibliothèque standard < stdio.h > contient un ensemble de
fonctions qui assurent la communication de la machine
avec le monde extérieur. Nous allons en discuter les plus
importantes :
84/102
Pr Mostafa SAADI – ENSAK Programmation C : CH1 - Introduction générale
La fonction d’écriture printf
printf
v La fonction printf est une fonction d’impression formatée,
ce qui signifie que les données sont converties selon le format
particulier choisi.
v Sa syntaxe est
86/102
Pr Mostafa SAADI – ENSAK Programmation C : CH1 - Introduction générale
La fonction d’écriture printf I
87/102
Pr Mostafa SAADI – ENSAK Programmation C : CH1 - Introduction générale
La fonction d’écriture printf I
largeur minimale
v En plus du caractère donnant le type des données, on peut
éventuellement préciser certains paramètres du format
d’impression, qui sont spécifiés entre le % et le caractère de
conversion dans l’ordre suivant :
v largeur minimale du champ d’impression : %10d spécifie
qu’au moins 10 caractères seront réservés pour imprimer
l’entier.
v Par défaut, la donnée sera alignée à droite du champ.
v Le signe - avant le format signifie que la donnée sera alignée à
gauche du champ (%-10d).
88/102
Pr Mostafa SAADI – ENSAK Programmation C : CH1 - Introduction générale
La fonction d’écriture printf I
précision
v précision : %.12f signifie qu’un flottant sera imprimé avec 12
chiffres après la virgule.
v De même %10.2f signifie que l’on réserve 12 caractères
(incluant le caractère .) pour imprimer le flottant et que 2
d’entre eux sont destinés aux chiffres après la virgule.
v Lorsque la précision n’est pas spécifiée, elle correspond par
défaut à 6 chiffres après la virgule.
v Pour une chaı̂ne de caractères, la précision correspond au
nombre de caractères imprimés.
v %30.4s signifie que l’on réserve un champ de 30 caractères
pour imprimer la chaı̂ne mais que seulement les 4 premiers
caractères seront imprimés (suivis de 26 blancs).
89/102
Pr Mostafa SAADI – ENSAK Programmation C : CH1 - Introduction générale
La fonction de saisie scanf
scanf
v La fonction scanf permet de saisir des données au clavier
et de les stocker aux adresses spécifiées par les arguments
de la fonction.
scanf(”chaı̂ne de contrôle”,argument1,...,argumentN)
scanf
v Les données à entrer au clavier doivent être séparées par des
blancs ou des < RETURN > sauf s’il s’agit de caractères.
v On peut fixer le nombre de caractères de la donnée à lire.
%3s pour une chaı̂ne de 3 caractères,
%10d pour un entier qui s’étend sur 10 chiffres, signe inclus.
#include <stdio.h>
main()
{
int i;
printf(”entrez un entier sous forme hexadecimale i = ”);
scanf(”%x”,&i);
printf(”i = %d\n”,i);
}
Si on entre au clavier la valeur 3c, le programme affiche i = 60. 91/102
Pr Mostafa SAADI – ENSAK Programmation C : CH1 - Introduction générale
La fonction de saisie scanf
92/102
Pr Mostafa SAADI – ENSAK Programmation C : CH1 - Introduction générale
La fonction de saisie scanf
getchar et putchar
v Les fonctions getchar et putchar permettent respectivement
de lire et d’imprimer des caractères.
v Il s’agit de fonctions d’entrées-sorties non formatées.
94/102
Pr Mostafa SAADI – ENSAK Programmation C : CH1 - Introduction générale
Impression et lecture de caractères
getchar
v La fonction getchar retourne un int correspondant au
caractère lu.
v Pour mettre le caractère lu dans une variable caractere, on
écrit
caractere = getchar();
95/102
Pr Mostafa SAADI – ENSAK Programmation C : CH1 - Introduction générale
Impression et lecture de caractères
putchar
v La fonction putchar écrit caractere sur la sortie standard :
putchar(caractere);
96/102
Pr Mostafa SAADI – ENSAK Programmation C : CH1 - Introduction générale
9⇒ Quelques conseils pour l’écriture d’un programme C
97/102
Pr Mostafa SAADI – ENSAK Programmation C : CH1 - Introduction générale
Quelques conseils pour l’écriture d’un programme C
Conseils
v Il existe très peu de contraintes dans l’écriture d’un
programme C.
v Ne prendre aucune précaution aboutirait à des programmes
illisibles.
Aussi existe-t-il un certain nombre de conventions.
v On n’écrit qu’une seule instruction par ligne : le point
virgule d’une instruction ou d’une déclaration est toujours le
dernier caractère de la ligne.
v Les instructions sont disposées de telle façon que la structure
modulaire du programme soit mise en évidence.
v Une accolade { ouvrante marquant le début d’un bloc doit
être seule sur sa ligne.
98/102
Pr Mostafa SAADI – ENSAK Programmation C : CH1 - Introduction générale
Quelques conseils pour l’écriture d’un programme C
Conseils
v { est alignée sur le caractère de gauche de la ligne précédente,
v } est alignée avec l’accolade ouvrante correspondante,
v après { , on commence à écrire deux caractères plus à droite.
v On laisse un blanc entre les mots-clefs if, while, do, switch et
la parenthèse ouvrante qui suit, après une virgule, de part et
d’autre d’un opérateur binaire.
v On ne met pas de blanc entre un opérateur unaire et son
opérande, ni entre les deux caractères d’un opérateur
d’affectation composée.
v Les instructions doivent être indentées afin que toutes les
instructions d’un même bloc soient alignées.
v Le mieux est d’utiliser le mode C d’Emacs (ou un autre
éditeur de texte équivalent).
99/102
Pr Mostafa SAADI – ENSAK Programmation C : CH1 - Introduction générale
10⇒ Références
10 Références
100/102
Pr Mostafa SAADI – ENSAK Programmation C : CH1 - Introduction générale
v Delannoy (C.). – Programmer en langage C. – Eyrolles, 2007.
v https ://[Link]/cours/
101/102
Pr Mostafa SAADI – ENSAK Programmation C : CH1 - Introduction générale
The End
102/102
Pr Mostafa SAADI – ENSAK Programmation C : CH1 - Introduction générale