Introduction au Langage C et Bases de la Programmation

Institut Supérieur des Études Technologiques
Page 1 sur 21Lecteur de document UniversityLib

Introduction au Langage C et Bases de la Programmation

Institut Supérieur des Études Technologiques · Computer Science/Programming · lab

Voir tous les documents en programmation

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