ISET de Bizerte TI1X
Chapitre1
Petite histoire du C
Introduction au Langage C
Le langage C a t mis au point par D.Ritchie et B.W.Kernighan au d but des ann es 70.
Leur but tait de permettre de d velopper un langage qui permettrait d'obtenir un syst me
d'exploitation de type UNIX portable. D.Ritchie et B.W.Kernighan se sont inspir s des
langages B et BCPL, pour cr er un nouveau langage : le langage C.
La premi re d finition de ce langage a t donn e dans leur livre commun The C
programminglanguage .
Toutefois, suite l'apparition de nombreux compilateurs C, l'ANSI (abr viation deAmerican
National Standards Institute) a d cid de normaliser ce langage pour donner ce que l'on
appelle le C-ANSI. Suite cette norme, Ritchie et Kernighan ont sorti une deuxi me dition
du livre en int grant les modifications apport es par l'ANSI.
Les atouts du C
Le langage C reste un des langages les plus utilis s actuellement. Cela est d au fait que le
langage C est un langage qui comporte des instructions et des structures de haut niveau
(contrairement l'assembleur par exemple) tout en g n rant un code tr s rapide gr ce un
compilateur tr s performant.
Un des principaux int r ts du C est que c'est un langage tr s portable. Un programme crit en
C en respectant la norme ANSI est portable sans modifications sur n'importe quel syst me
d'exploitation disposant d'un compilateur C : Windows, UNIX.
De plus, une des caract ristiques du C est qu'il est un langage faiblement typ : les types
de donn es qu'il manipule sont tr s restreints, et proches de la repr sentation interne par le
processeur : par exemple, le type 'Cha ne de caract res' n'existe pas en C. A l'inverse,
comparer un entier et un caract re a un sens en C car un caract re est bien repr sent en
interne par le processeur par une valeur de type entier (le code ASCII).
Enfin et pour conclure, il est inexact que le C est un langage difficile apprendre ! Au
contraire : le C dispose de peu d'instructions, les structures de donn es sont limit es, etc.
1
ISET de Bizerte TI1X
Le C++ par rapport au C
Le C++ est un langage bas sur le langage C, auquel on a rajout des l ments de telle
mani re int grer le concept objet. C'est Bjarne Stroustrup qui a cr la premi re version de
ce langage, appel C++.
Les biblioth ques de fonctions pr d finies
Utilisation des biblioth ques de fonctions
La pratique en C exige l'utilisation de biblioth ques de fonctions. Ces biblioth ques sont
disponibles dans leur forme pr compil e (extension: .LIB). Pour pouvoir les utiliser, il faut
inclure des fichiers en-t te (header files - extension .H) dans nos programmes. Ces fichiers
contiennent des 'prototypes' des fonctions d finies dans les biblioth ques et cr ent un lien
entre les fonctions pr compil es et nos programmes.
#include
L'instruction #include ins re les fichiers en-t te indiqu s comme arguments dans le texte du
programme au moment de la compilation.
Identification des fichiers
Lors de la programmation en Borland C, nous travaillons donc avec diff rents types de
fichiers qui sont identifi s par leurs extensions:
fichiers source
*.C
*.OBJ fichiers compil s (versions objet)
*.EXE fichiers compil s et li s (versions ex cutables)
*.LIB biblioth ques de fonctions pr compil es
*.H
fichiers en-t te (header files)
Exemple
Nous avons crit un programme qui fait appel des fonctions math matiques pr d finies.
Pour pouvoir utiliser ces fonctions, le programme a besoin des biblioth ques:
MATHS.LIB
Nous devons donc inclure les fichiers en-t te correspondants dans le code source de notre
programme l'aide des instructions:
#include <math.h>
#include <graphics.h>
Apr s la compilation, les fonctions precompil es des biblioth ques seront ajout es notre
programme pour former une version ex cutable du programme.
2
ISET de Bizerte TI1X
3
ISET de Bizerte TI1X
Chapitre2
Notions de bases
Avant de pouvoir comprendre ou m me crire des programmes, il faut conna tre la
composition des programmes dans le langage de programmation. Dans ce chapitre, nous
allons discuter un petit programme en mettant en vidence les structures fondamentales d'un
programme en C.
1. Hello C !
Suivons la tradition et commen ons la d couverte de C par l'in vitable programme 'hello
world'. Ce programme ne fait rien d'autre qu'imprimer les mots suivants sur l' cran:
Comparons d'abord la d finition du programme en C avec celle en langage algorithmique.
HELLO_WORLD en langage algorithmique
programme HELLO_WORLD
| ( Notre premier programme en C )
| crire "hello, world"
fprogramme
HELLO_WORLD en C
#include<stdio.h>
|main()
|/ Notre premier programme en C /
|{
| printf("hello, world\n");
| return 0;
|}
Dans la suite du chapitre, nous allons discuter les d tails de cette impl mentation.
2. Les composantes d'un programme en C
Programmes, fonctions et variables
Les programmes en C sont compos s essentiellement de fonctions et de variables. Pour la
pratique, il est donc indispensable de se familiariser avec les caract ristiques fondamentales
de ces l ments.
4
ISET de Bizerte TI1X
1. Les fonctions
En C, le programme principal et les sous-programmes sont d finis comme fonctions. Il
n'existe pas de structures sp ciales pour le programme principal ni les proc dures (comme en
Pascal ou en langage algorithmique).
Le programme principal tant aussi une 'fonction', nous devons nous int resser d s le d but
la d finition et aux caract ristiques des fonctions en C. Commen ons par comparer la syntaxe
de la d finition d'une fonction en C avec celle d'une fonction en langage algorithmique:
D finition d'une fonction en langage algorithmique
fonction<NomFonct> (<NomPar1>, <NomPar2>, ...):<TypeR s>
| <d clarations des param tres>
| <d clarations locales>
| <instructions>
ffonction
D finition d'une fonction en C
|<TypeR s><NomFonct> (<TypePar1><NomPar1>,
| <TypePar2><NomPar2>, ... )
|{
| <d clarations locales>
| <instructions>
|}
En C, une fonction est d finie par:
- une ligne d clarative qui contient:
<TypeR s> - le type du r sultat de la fonction
<NomFonct> - le nom de la fonction
<TypePar1><NomPar1>, <TypePar2><NomPar2>, ...
les types et les noms des param tres de la fonction
- un bloc d'instructions d limit par des accolades { }, contenant:
<d clarations locales> - les d clarations des donn es locales (c.- -d.: des donn es qui sont
uniquement connues l'int rieur de la fonction)
<instructions> - la liste des instructions qui d finit l'action qui doit tre ex cut e
R sultat d'une fonction
Par d finition, toute fonction en C fournit un r sultat dont le type doit tre d fini. Si aucun
type n'est d fini explicitement, C suppose par d faut que le type du r sultat est int (integer).
5
ISET de Bizerte TI1X
Le retour du r sultat se fait en g n ral la fin de la fonction par l'instruction return.
Le type d'une fonction qui ne fournit pas de r sultat (comme les proc dures en langage
algorithmique ou en Pascal), est d clar comme void (vide).
Param tres d'une fonction
La d finition des param tres (arguments) d'une fonction est plac e entre parenth ses (
Publicité
) derri re le nom de la fonction. Si une fonction n'a pas besoin de param tres, les parenth ses
restent vides ou contiennent le mot void.
Instructions
En C, toute instruction simple est termin e par un point-virgule ; (m me si elle se trouve en
derni re position dans un bloc d'instructions). Par exemple:
printf("hello, world\n");
La fonction main
La fonction main est la fonction principale des programmes en C: Elle se trouve
les programmes. L'ex cution d'un programme entra ne
obligatoirement dans
automatiquement l'appel de la fonctionmain.
tous
Dans les premiers chapitres, nous allons simplement 'traduire' la structure programme du
langage algorithmique par une d finition quivalente de la fonction main :
D finition du programme principal en langage algorithmique
programme<NomProgramme>
| <d clarations>
| <instructions>
fprogramme
D finition de la fonction main en C
|main()
|{
| <d clarations>
| <instructions>
| return 0;
|}
R sultat de main
- En principe tout programme devrait retourner une valeur comme code d'erreur son
environnement. Par cons quent, le type r sultat de main est toujours int. En g n ral, le type
de main n'est pas d clar explicitement, puisque c'est le type par d faut. Nous allons terminer
nos programmes par l'instruction:
6
ISET de Bizerte TI1X
return 0; qui indique l'environnement que le programme s'est termin avec succ s, sans
anomalies ou erreurs fatales.
Param tres de main
- Si la liste des param tres de la fonction main est vide, il est d'usage de la d clarer par ().
- Si nous utilisons des fonctions pr d finies (par exemple: printf), il faut faire pr c der la
d finition de main par les instructions #include correspondantes.
Remarque avanc e:
Il est possible de faire passer des arguments de la ligne
de commande un programme. Dans ce cas, la liste des
param tres doit contenir les d clarations
correspondantes. Dans notre cours, nous n'allons pas
utiliser des arguments de la ligne de commande. Ainsi la
liste des param tres de la fonction main sera vide (void)
dans tous nos exemples et nous pourrons employer la d claration suivante qui fait usage des valeurs
par d faut:
main() { ... }
Les variables contiennent les valeurs qui sont utilis es pendant l'ex cution du programme. Les noms
des variables sont des identificateurs quelconques.
2. Les variables
a. Les identificateurs
Les noms des fonctions et des variables en C sont compos s d'une suite de lettres et de chiffres. Le
premier caract re doit tre une lettre. Le symbole '_' est aussi consid r comme une lettre.
- L'ensemble des symboles utilisables est donc:
{0,1,2,...,9,A,B,...,Z,_,a,b,...,z}
- Le premier caract re doit tre une lettre (ou le symbole '_')
- C distingue les majuscules et les minuscules, ainsi: 'Nom_de_variable' est diff rent
de 'nom_de_variable'
- La longueur des identificateurs n'est pas limit e, mais C distingue 'seulement' les 31 premiers
caract res.
7
ISET de Bizerte TI1X
Exemples
Identificateurs corrects:
Identificateurs incorrects:
nom1
nom_2
1nom
nom.2
_nom_3
-nom-3
Nom_de_variable
Nom de variable
deuxieme_choix
deuxi me_choix
mot_francais
mot_fran ais
b. Les commentaires
Un commentaire commence toujours par les deux symboles '/' et se termine par les symboles '/'
Exemples
/ Ceci est un commentaire correct /
8
ISET de Bizerte TI1X
Chapitre 3: TYPES DE BASE, OP RATEURS ET
EXPRESSIONS
R capitulation du vocabulaire
Les variables et les constantes sont les donn es principales qui peuvent tre manipul es par un
programme. Les d clarations introduisent les variables qui sont utilis es, fixent leur type et parfois
aussi leur valeur de d part. Les op rateurs contr lent les actions que subissent les valeurs des
donn es. Pour produire de nouvelles valeurs, les variables et les constantes peuvent tre combin es
l'aide des op rateurs dans des expressions. Le type d'une donn e d termine l'ensemble des valeurs
admissibles, le nombre d'octets r server en m moire et l'ensemble des op rateurs qui peuvent y
tre appliqu s.
Motivation
La grande flexibilit de C nous permet d'utiliser des op randes de diff rents types dans un m me
calcul. Cet avantage peut se transformer dans un terrible pi ge si nous ne pr voyons pas
correctement les effets secondaires d'une telle op ration (conversions de type automatiques,
arrondissements, etc.). Une tude minutieuse de ce chapitre peut donc aider viter des
ph nom nes parfois 'inexplicables' ...
1. Les types entiers
Avant de pouvoir utiliser une variable, nous devons nous int resser deux caract ristiques de son
type num rique:
(1) le domaine des valeurs admissibles
(2) le nombre d'octets qui est r serv pour une variable
Le tableau suivant r sume les caract ristiques des types num riques entiers de C :
d finition
description
domaine min domaine max nombre d'octets
char
caract re
-128
127
short
entier court
-32768
32767
int
entier standard -32768
32767
1
2
2
long
entier long
-2147483648 2147483647 4
- char : caract re
Une variable du type char peut contenir une valeur entre -128 et 127 et elle peut subir les m mes
op rations que les variables du type short, int ou long.
- int : entier standard
Sur chaque machine, le type int est le type de base pour les calculs avec les entiers. Le codage des
variables du type int est donc d pendant de la machine. Sur les IBM-PC sous MS-DOS, une variable
du type int est cod e dans deux octets.
9
ISET de Bizerte TI1X
- short : entier court
Le type short est en g n ral cod dans 2 octets. Comme une variable int occupe aussi 2 octets sur
notre syst me, le type short devient seulement n cessaire, si on veut utiliser le m me programme sur
d'autres machines, sur lesquelles le type standard des entiers n'est pas forc ment 2 octets.
Publicité
- Les modificateurs signed/unsigned:
Si on ajoute le pr fixe unsigned la d finition d'un type de variables enti res, les domaines des
variables sont d plac s comme suit:
d finition
description
domaine min domaine max nombre d'octets
unsigned char caract re
unsigned short entier court
0
0
255
65535
unsignedint
entier standard 0
65535
1
2
2
unsigned long entier long
0
4294967295 4
2. Les types rationnels
En C, nous avons le choix entre trois types de rationnels: float, double et long double. Dans le
tableau ci-dessous, vous trouverez leurs caract ristiques:
min et max
repr sentent les valeurs minimales et maximales
positives. Les valeurs n gatives peuvent varier dans
les m mes domaines.
d finition
pr cision domaine min domaine max nombre d'octets
float
simple 3.4 10-38 3.4 1038 4
double
double 1.7 10-308 1.7 10308 8
long double suppl. 3.4 10-4932 1.1 104932 10
3. La d claration des variables simples
Maintenant que nous connaissons les principaux types de variables, il nous faut encore la syntaxe
pour leur d claration:
D claration de variables en langage algorithmique
<Type><NomVar1>,<NomVar2>,...,<NomVarN>
D claration de variables en C
10
ISET de Bizerte TI1X
<Type><NomVar1>,<NomVar2>,...,<NomVarN>;
Exemple :
Int compteur,X,Y;
Float hauteur,largeur;
Double masse_atomique;
char touche;
int t_pressee;
Langage algorithmique --> C
En g n ral. Nous avons le choix entre plusieurs types et nous devons trouver celui qui correspond le
mieux au domaine et aux valeurs traiter. Voici quelques r gles g n rales qui concernent la
traduction des d clarations de variables num riques du langage algorithmique en C :
- La syntaxe des d clarations en C ressemble celle du langage algorithmique. Remarquez quand
m me les points-virgules la fin des d clarations en C.
entier : Nous avons le choix entre tous les types entiers (inclusivement char) dans leurs
formes signed ou unsigned. Si les nombres deviennent trop grands pour unsigned long, il faut
utiliser un type rationnel (p.ex.: double)
r el : Nous pouvons choisir entre les trois types rationnels
caract re : Toute variable du type char peut contenir un (seul) caract re. En C, il faut toujours tre
conscient que ce 'caract re' n'est autre chose qu'un nombre correspondant un code (ici: code
ASCII). Ce nombre peut tre int gr dans toute sorte d'op rations alg briques ou logiques ...
cha ne : 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 d crits dans le chapitre chaines de caract res.
bool en : En C il n'existe pas de type sp cial pour variables bool ennes. Tous les types de variables
num riques peuvent tre utilis s pour exprimer des op rations logiques:
valeur logique faux
<=> valeur num rique z ro
valeur logique vrai <=> toute valeur diff rente de z ro
Si l'utilisation d'une variable bool enne est indispensable, le plus naturel sera d'utiliser une
variable du type Int.
Les op rations logiques en C retournent toujours des r sultats du type Int:
0 pour faux
1 pour vrai
11
ISET de Bizerte TI1X
4. Initialisation des variables
Initialisation
En C, il est possible d'initialiser les variables lors de leur d claration:
Int MAX = 1023;
Const
En utilisant l'attribut const, nous pouvons indiquer que la valeur d'une variable ne change pas au
cours d'un programme:
Const int MAX = 767;
5. Affectation en C
<NomVariable> = <Expression>;
- L'affectation avec des valeurs constantes
- L'affectation avec des valeurs de variables
- L'affectation avec des valeurs d'expressions
Observations
Les op rateurs et les fonctions arithm tiques utilis es dans les expressions seront introduites dans la
suite du chapitre. Observons d j que:
- il n'existe pas de fonction standard en C pour calculer le carr d'une valeur; on peut se r f rer la
fonction plus g n rale pow(x, y) qui calcule xy.
- le test d' galit en C se formule avec deux signes d' galit == , l'affectation avec un seul = .
6. Les op rateurs connus
a. Op rateurs arithm tiques
addition
+
- soustraction
- multiplication
/ division (enti re et rationnelle!)
% modulo (reste d'une div. enti re)
b. Op rateurs logiques
12
ISET de Bizerte TI1X
et logique (and)
&&
|| ou logique (or)
! n gation logique (not)
c. Op rateurs de comparaison
==
!=
gal
diff rent de
<, <=, >, >= plus petit que, ...
d. Op rations logiques
Les r sultats des op rations de comparaison et des op rateurs logiques sont du type Int:
- la valeur 1 correspond la valeur bool enne vrai
- la valeur 0 correspond la valeur bool enne faux
Les op rateurs logiques consid rent toute valeur diff rente de z ro comme vrai et z ro
comme faux:
32 && 2.3
!65.34
1
0
0||!(32 > 12)
0
7. Les op rateurs particuliers de C
Les op rateurs d'affectation
Op rateurs d'incr mentation et de d cr mentation
- Les op rateurs d'affectation
Op rateurs d'affectation
En pratique, nous retrouvons souvent des affectations comme:
i = i + 2
En C, nous utiliserons plut t la formulation plus compacte:
i += 2
L'op rateur += est un op rateur d'affectation.
13
Publicité
ISET de Bizerte TI1X
Pour la plupart des expressions de la forme:
expr1 = (expr1) op (expr2)
Il existe une formulation quivalente qui utilise un op rateur d'affectation:
expr1 op= expr2
Op rateurs d'affectation
ajouter
+=
-= diminuer de
*= multiplier par
/= diviser par
%= modulo
- Op rateurs d'incr mentation et de d cr mentation
Les affectations les plus fr quentes sont du type:
I = I + 1 et I = I - 1
En C, nous disposons de deux op rateurs inhabituels pour ces affectations:
I++ ou ++I
pour l'incr mentation
(augmentation d'une unit )
I-- ou --I pour la d cr mentation (diminution d'une unit )
Les op rateurs ++ et -- sont employ s dans les cas suivants:
incr menter/d cr menter une variable. Dans ce cas il n'y a pas de diff rence entre
notation pr fixe (++I --I) et la notation postfixe (I++ I--).
incr menter/d cr menter une variable et en m me temps affecter sa valeur une autre variable.
Dans ce cas, nous devons choisir entre la notation pr fixe et postfixe:
X = I++
passe d'abord la valeur de I X et incr mente apr s
X = I-- passe d'abord la valeur de I X et d cr mente apr s
X = ++I incr mente d'abord et passe la valeur incr ment e X
X = --I d cr mente d'abord et passe la valeur d cr ment e X
Exemple
14
ISET de Bizerte TI1X
Supposons que la valeur de N est gal 5:
Incr m. postfixe:
X = N++; R sultat: N=6 et X=5
Incr m. pr fixe: X = ++N; R sultat: N=6 et X=6
Entre les op rateurs que nous connaissons jusqu'ici, nous pouvons distinguer les classes de priorit s
suivantes:
8. Priorit des op rateurs
Classes de priorit s
Priorit 1 (la plus forte): ()
Priorit 2:
Priorit 3:
Priorit 4:
Priorit 5:
Priorit 6:
Priorit 7:
! ++ --
- / %
+ -
<<= >>=
== !=
&&
Priorit 8:
Priorit 9 (la plus faible): = += -= *= /= %=
||
Evaluation d'op rateurs de la m me classe
--> Dans chaque classe de priorit , les op rateurs ont la m me priorit . Si nous avons une suite
d'op rateurs binaires de la m me classe, l' valuation se fait en passant de la gauche vers la
droite dans l'expression.
<-- Pour les op rateurs unaires (!,++,--) et pour les op rateurs d'affectation (=,+=,-
=,*=,/=,%=), l' valuation se fait de droite gauche dans l'expression.
9. Les fonctions arithm tiques standard
Les fonctions suivantes sont pr d finies dans la biblioth que standard <math>. Pour pouvoir les
utiliser, le programme doit contenir la ligne:
#include<math.h>
Type des donn es
Les arguments et les r sultats des fonctions arithm tiques sont du type double.
Fonctions arithm tiques
COMMANDE C EXPLICATION
exp(X)
fonction exponentielle
log(X)
logarithme naturel
LANG. ALGORITHMIQUE
eX
ln(X), X>0
15
ISET de Bizerte TI1X
log10(X)
logarithme base 10
pow(X,Y)
X exposant Y
sqrt(X)
fabs(X)
racine carr e de X
valeur absolue de X
floor(X)
arrondir en moins
ceil(X)
arrondir en plus
log10(X), X>0
XY
pour X>0
|X|
int(X)
fmod(X,Y)
reste rationnel de X/Y (m me signe que X) pour X diff rent de 0
sin(X) cos(X) tan(X)
sinus, cosinus, tangente de X
asin(X) acos(X) atan(X) arcsin(X), arccos(X), arctan(X)
sinh(X) cosh(X) tanh(X) sinus, cosinus, tangente hyperboliques de X
10. Les conversions de type automatiques
Calculs et affectations
Si un op rateur a des op randes de diff rents types, les valeurs des op randes sont converties
automatiquement dans un type commun.
Ces manipulations implicites convertissent en g n ral des types plus 'petits' en des types plus 'larges';
de cette fa on on ne perd pas en pr cision.
Lors d'une affectation, la donn e droite du signe d' galit est convertie dans le type gauche du
signe d' galit . Dans ce cas, il peut y avoir perte de pr cision si le type de la destination est plus
faible que celui de la source.
R gles de conversion automatique
Conversions automatiques lors d'une op ration avec,
(1) deux entiers:
D'abord, les types char et short sont convertis en int. Ensuite, l'ordinateur choisit le plus large des
deux types dans l' chelle suivante:
Int, unsigned int, long, unsigned long
(2) un entier et un rationnel:
Le type entier est converti dans le type du rationnel.
(3) deux rationnels:
L'ordinateur choisit le plus large des deux types selon l' chelle suivante:
Float, double, long double
(4) affectations et op rateurs d'affectation:
Lors d'une affectation, le r sultat est toujours converti dans le type de la destination. Si ce type est
plus faible, il peut y avoir une perte de pr cision.
16
ISET de Bizerte TI1X
11. Les conversions de type forc es (casting)
Il est possible de convertir explicitement une valeur en un type quelconque en for ant la
transformation l'aide de la syntaxe:
Casting (conversion de type forc e)
(<Type>) <Expression>
Exemple
Nous divisons deux variables du type entier. Pour avoir plus de pr cision, nous voulons avoir un
r sultat de type rationnel. Pour ce faire, nous convertissons l'une des deux op randes en float.
Automatiquement C convertira l'autre op rande en float et effectuera une division rationnelle:
char A=3;
int B=4;
float C;
Publicité
C = (float)A/B;
La valeur de A est explicitement convertie en float. La valeur de B est automatiquement convertie
en float (r gle 2). Le r sultat de la division (type rationnel, valeur 0.75) est affect C.
R sultat: C=0.75
Attention !
Les contenus de A et de B restent inchang s; seulement les valeurs utilis es dans les calculs sont
converties !
17
ISET de Bizerte TI1X
Chapitre 4: LIRE ET CRIRE DES DONN ES
La biblioth que standard <stdio> contient un ensemble de fonctions qui assurent la communication de
la machine avec le monde ext rieur. Dans ce chapitre, nous allons en discuter les plus importantes:
printf()
criture format e de donn es
scanf()
lecture format e de donn es
putchar() criture d'un caract re
getchar() lecture d'un caract re
printf()
La fonction printf est utilis e pour transf rer du texte, des valeurs de variables ou des r sultats
d'expressions vers le fichier de sortie standard stdout (par d faut l' cran).
Ecriture format e en langage algorithmique
crire<Expression1>,<Expression2>, ...
Ecriture format e en C
printf("<format>",<Expr1>,<Expr2>, ... )
"<format>" : format de repr sentation
<Expr1>,... : variables et expressions dont les valeurs sont repr senter
La partie "<format>" est en fait une cha ne de caract res qui peut contenir:
- du texte
- des s quences d' chappement
- des sp cificateurs de format
- Les sp cificateurs de format indiquent la mani re dont les valeurs des expressions <Expr1..N>
sont imprim es.
- La partie "<format>" contient exactement un sp cificateur de format pour chaque expression
<Expr1..N>.
- Les sp cificateurs de format commencent toujours par le symbole % et se terminent par un ou deux
caract res qui indiquent le format d'impression.
- Les sp cificateurs de format impliquent une conversion d'un nombre en cha ne de caract res. Ils
sont encore appel s symboles de conversion.
18
ISET de Bizerte TI1X
Sp cificateurs de format pour printf
SYMBOLE
TYPE
%d ou %i int
IMPRESSION COMME
entier relatif
%u
%o
%x
%c
%f
%e
%s
int
int
int
entier naturel (unsigned)
entier exprim en octal
entier exprim en hexad cimal
caract re
int
double rationnel en notation d cimale
double rationnel en notation scientifique
char* cha ne de caract res
Largeur minimale pour les entiers
Pour les entiers, nous pouvons indiquer la largeur minimale de la valeur afficher. Dans le champ
ainsi r serv , les nombres sont justifi s droite.
Exemples
( _ <=> position libre)
printf("%4d", 123); ==> _123
printf("%4d", 1234); ==> 1234
printf("%4u", 0);
==> ___0
printf("%4X", 123); ==> __7B
printf("%4x", 123); ==> __7b
Largeur minimale et pr cision pour les rationnels
Pour les rationnels, nous pouvons indiquer la largeur minimale de la valeur afficher et la pr cision du
nombre afficher. La pr cision par d faut est fix e six d cimales. Les positions d cimales sont
arrondies la valeur la plus proche.
Exemples
printf("%f", 100.123);
printf("%12f", 100.123);
printf("%.2f", 100.123);
printf("%5.0f", 100.123); ==> __100
printf("%10.3f", 100.123); ==> ___100.123
printf("%.4f", 1.23456);
==> 100.123000
==> __100.123000
==> 100.12
==> 1.2346
19
ISET de Bizerte TI1X
Lecture format e de donn es
scanf()
La fonction scanf est la fonction sym trique printf; elle nous offre pratiquement les m mes
conversions que printf, mais en sens inverse.
Lecture format e en langage algorithmique
lire<NomVariable1>,<NomVariable2>, ...
Lecture format e en C
scanf("<format>",<AdrVar1>,<AdrVar2>, ...)
: format de lecture des donn es
"<format>"
<AdrVar1>,... : adresses des variables auxquelles les donn es seront attribu es
- La fonction scanf re oit ses donn es partir du fichier d'entr e standard stdin (par d faut le clavier).
- La cha ne de format d termine comment les donn es re ues doivent tre interpr t es.
- Les donn es re ues correctement sont m moris es successivement aux adresses indiqu es
par <AdrVar1>,... .
- L'adresse d'une variable est indiqu e par le nom de la variable pr c d du signe &.
criture d'un caract re
La commande,
putchar('a');
Exemples
char A = 225;
char B = '\a';
int C = '\a';
putchar('x'); / afficher la lettre x /
putchar('?'); / afficher le symbole ? /
putchar('\n'); / retour la ligne /
putchar(65); / afficher le symbole avec /
/ le code 65 (ASCII: 'A') /
putchar(A); / afficher la lettre avec /
/ le code 225 (ASCII: ' ') /
putchar(B); / beep sonore /
putchar(C); / beep sonore /
20
ISET de Bizerte TI1X
Lecture d'un caract re
Type du r sultat
Le type r sultat de getchar est int. En g n ral, getchar est utilis dans une affectation:
int C;
C = getchar();
getchar lit les donn es de la zone tampon de stdin. La biblioth que <conio> contient une fonction du
nom getch qui fournit imm diatement le prochain caract re entr au clavier.
21