Chapitre 4: LIRE ET ÉCRIRE DES DONNÉES Algeri10
Chapitre 4: LIRE ET ÉCRIRE DES DONNÉES Algeri10
Vous souhaitez réagir à ce message ? Créez un compte en quelques clics ou connectez-vous pour continuer.



 
AccueilPortailDernières imagesS'enregistrerConnexion
Le Deal du moment :
SSD interne Crucial BX500 2,5″ SATA – 500 ...
Voir le deal
29.99 €
anipassion.com

 

 Chapitre 4: LIRE ET ÉCRIRE DES DONNÉES

Aller en bas 
AuteurMessage
Djallilus
Admin
Admin
Djallilus


Masculin
Nombre de messages : 1334
Age : 36
Localisation : Mostaganem
Emploi/loisirs : Demasquer les faux
Humeur : g pas trouver une fixe
Réputation : 5
Points : 1650
Date d'inscription : 24/09/2008

Chapitre 4: LIRE ET ÉCRIRE DES DONNÉES Empty
MessageSujet: Chapitre 4: LIRE ET ÉCRIRE DES DONNÉES   Chapitre 4: LIRE ET ÉCRIRE DES DONNÉES Icon_minitimeJeu 25 Déc - 19:34

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


4.1. Écriture formatée de données



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.
Revenir en haut Aller en bas
http://www.univ-vision.com
Djallilus
Admin
Admin
Djallilus


Masculin
Nombre de messages : 1334
Age : 36
Localisation : Mostaganem
Emploi/loisirs : Demasquer les faux
Humeur : g pas trouver une fixe
Réputation : 5
Points : 1650
Date d'inscription : 24/09/2008

Chapitre 4: LIRE ET ÉCRIRE DES DONNÉES Empty
MessageSujet: Re: Chapitre 4: LIRE ET ÉCRIRE DES DONNÉES   Chapitre 4: LIRE ET ÉCRIRE DES DONNÉES Icon_minitimeJeu 25 Déc - 19:35

* 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.

Exemple 1

La suite d'instructions:

int A = 1234; int B = 567; printf("%i fois %i est %li\n", A, B, (long)A*B);


va afficher sur l'écran:

1234 fois 567 est 699678


Les arguments de printf
sont

-

la partie format

"%i
fois %i est %li"


-

la variable

A


-

la variable

B


-

l'expression

(long)A*B





Le 1er

spécificateur (%i)
indique que la valeur de A


sera imprimée comme entier relatif

==>1234


Le 2e

spécificateur (%i)
indique que la valeur de B


sera imprimée comme entier relatif

==> 567


Le 3e

spécificateur (%li)
indique que la valeur de
(long)A*Bsera
imprimée comme entier relatif long

==> 699678


Exemple 2

La suite d'instructions:

char B = 'A'; printf("Le caractère %c a le code %i !\n", B, B);


va afficher
sur l'écran:

Le caractère A a le code 65 !


La valeur de
B est donc affichée sous deux formats différents:

%c

comme caractère:

A


%i


comme entier relatif:

65


Spécificateurs de format pour
printf
Revenir en haut Aller en bas
http://www.univ-vision.com
Djallilus
Admin
Admin
Djallilus


Masculin
Nombre de messages : 1334
Age : 36
Localisation : Mostaganem
Emploi/loisirs : Demasquer les faux
Humeur : g pas trouver une fixe
Réputation : 5
Points : 1650
Date d'inscription : 24/09/2008

Chapitre 4: LIRE ET ÉCRIRE DES DONNÉES Empty
MessageSujet: Re: Chapitre 4: LIRE ET ÉCRIRE DES DONNÉES   Chapitre 4: LIRE ET ÉCRIRE DES DONNÉES Icon_minitimeJeu 25 Déc - 19:35

SYMBOLE

TYPE

IMPRESSION COMME

%d ou %i


int


entier relatif

%u


int


entier naturel (unsigned)

%o


int


entier exprimé en octal

%x


int


entier exprimé en hexadécimal

%c


int


caractère

%f


double


rationnel en notation décimale

%e


double


rationnel en notation scientifique

%s


char*


chaîne de caractères

1. Arguments du type long

Les spécificateurs %d, %i, %u,
%o, %x peuvent seulement représenter des valeurs du type int
ou unsigned int. Une valeur trop grande pour être codée dans deux
octets est coupée sans avertissement si nous utilisons %d.

Pour pouvoir traiter correctement les
arguments du type long, il faut utiliser les spécificateurs %ld,
%li
, %lu, %lo, %lx.

Exemple

long N = 1500000;

printf("%ld,
%lx", N, N);


==>
1500000, 16e360


printf("%x,
%x" , N);


==>
e360, 16


printf("%d,
%d" , N);


==>
-7328, 22


2. Arguments rationnels

Les spécificateurs %f et %e
peuvent être utilisés pour représenter des arguments du type float oudouble. La mantisse des nombres représentés par %e contient
exactement un chiffre (non nul) devant le point décimal. Cette représentation
s'appelle la notation scientifique des rationnels.

Pour pouvoir traiter correctement les
arguments du type long double, il faut utiliser les
spécificateurs %Lf et %Le.

Exemple

float N = 12.1234;

double M
= 12.123456789;


long
double P = 15.5;


printf("%f",
N);


==>
12.123400


printf("%f",
M);


==>
12.123457


printf("%e",
N);


==>
1.212340e+01


printf("%e",
M);


==>
1.212346e+01


printf("%Le",
P);


==>
1.550000e+01

Revenir en haut Aller en bas
http://www.univ-vision.com
Djallilus
Admin
Admin
Djallilus


Masculin
Nombre de messages : 1334
Age : 36
Localisation : Mostaganem
Emploi/loisirs : Demasquer les faux
Humeur : g pas trouver une fixe
Réputation : 5
Points : 1650
Date d'inscription : 24/09/2008

Chapitre 4: LIRE ET ÉCRIRE DES DONNÉES Empty
MessageSujet: Re: Chapitre 4: LIRE ET ÉCRIRE DES DONNÉES   Chapitre 4: LIRE ET ÉCRIRE DES DONNÉES Icon_minitimeJeu 25 Déc - 19:36

3. 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("%4d",
12345);


==>


12345


printf("%4u",
0);


==>


___0


printf("%4X",
123);


==>


__7B


printf("%4x",
123);


==>


__7b


Largeur minimale et précision pour
les rationnels


4. 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);


==>


100.123000


printf("%12f",
100.123);


==>


__100.123000


printf("%.2f",
100.123);


==>


100.12


printf("%5.0f",
100.123);


==>


__100


printf("%10.3f",
100.123);


==>


___100.123


printf("%.4f",
1.23456);


==>


1.2346

Revenir en haut Aller en bas
http://www.univ-vision.com
Djallilus
Admin
Admin
Djallilus


Masculin
Nombre de messages : 1334
Age : 36
Localisation : Mostaganem
Emploi/loisirs : Demasquer les faux
Humeur : g pas trouver une fixe
Réputation : 5
Points : 1650
Date d'inscription : 24/09/2008

Chapitre 4: LIRE ET ÉCRIRE DES DONNÉES Empty
MessageSujet: Re: Chapitre 4: LIRE ET ÉCRIRE DES DONNÉES   Chapitre 4: LIRE ET ÉCRIRE DES DONNÉES Icon_minitimeJeu 25 Déc - 19:36

Exercice
4.1










#include <stdio.h>main(){ int N=10, P=5, Q=10, R; char C='S'; N = 5; P = 2; Q = N++ > P || P++ != 3; printf ("C : N=%d P=%d Q=%d\n", N, P, Q); N = 5; P = 2; Q = N++ < P || P++ != 3; printf ("D : N=%d P=%d Q=%d\n", N, P, Q); N = 5; P = 2; Q = ++N == 3 && ++P == 3; printf ("E : N=%d P=%d Q=%d\n", N, P, Q); N=5; P=2; Q = ++N == 6 && ++P == 3; printf ("F : N=%d P=%d Q=%d\n", N, P, Q); N=C; printf ("G : %c %c\n", C, N); printf ("H : %d %d\n", C, N); printf ("I : %x %x\n", C, N); return 0;}


a) Sans
utiliser l'ordinateur, trouvez et notez les résultats du programme ci-dessus.

b) Vérifiez vos résultats à l'aide de
l'ordinateur.

4.2. 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>, ...
Revenir en haut Aller en bas
http://www.univ-vision.com
Djallilus
Admin
Admin
Djallilus


Masculin
Nombre de messages : 1334
Age : 36
Localisation : Mostaganem
Emploi/loisirs : Demasquer les faux
Humeur : g pas trouver une fixe
Réputation : 5
Points : 1650
Date d'inscription : 24/09/2008

Chapitre 4: LIRE ET ÉCRIRE DES DONNÉES Empty
MessageSujet: Re: Chapitre 4: LIRE ET ÉCRIRE DES DONNÉES   Chapitre 4: LIRE ET ÉCRIRE DES DONNÉES Icon_minitimeJeu 25 Déc - 19:37

Lecture formatée en C

scanf("<format>",<AdrVar1>,<AdrVar2>, ...)

"<format>"

:

format de lecture des données

<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 &.

Exemple

La suite d'instructions:

int JOUR, MOIS, ANNEE; scanf("%i %i %i", &JOUR, &MOIS, &ANNEE);


lit trois entiers relatifs, séparés par des espaces,
tabulations ou interlignes. Les valeurs sont attribuées respectivement aux
trois variables JOUR,
MOIS et ANNEE.

* scanf retourne comme résultat le nombre de données correctement
reçues (type int).

Spécificateurs de format pour scanf

SYMBOLE

LECTURE D'UN(E)

TYPE

%d ou %i


entier relatif

int*

%u


entier naturel (unsigned)

int*

%o


entier exprimé en octal

int*

%b


entier exprimé en hexadécimal

int*

%c


caractère

char*

%s


chaîne de caractères

char*

%f ou %e


rationnel en notation décimale ou exponentielle
(scientifique)

float*

Le symbole * indique que l'argument n'est pas une variable, mais l'adresse
d'une variable de ce type (c.-à-d.: un pointeur sur une variable - voir
chapitre 9 'Les pointeurs').
Revenir en haut Aller en bas
http://www.univ-vision.com
Djallilus
Admin
Admin
Djallilus


Masculin
Nombre de messages : 1334
Age : 36
Localisation : Mostaganem
Emploi/loisirs : Demasquer les faux
Humeur : g pas trouver une fixe
Réputation : 5
Points : 1650
Date d'inscription : 24/09/2008

Chapitre 4: LIRE ET ÉCRIRE DES DONNÉES Empty
MessageSujet: Re: Chapitre 4: LIRE ET ÉCRIRE DES DONNÉES   Chapitre 4: LIRE ET ÉCRIRE DES DONNÉES Icon_minitimeJeu 25 Déc - 19:37

1. Le type long

Si nous voulons lire une donnée du type long, nous devons utiliser
les spécificateurs %ld, %li, %lu, %lo,
%lx. (Sinon, le nombre
est simplement coupé à la taille de int).

2. Le type double

Si nous voulons lire une donnée du type double, nous devons utiliser
les spécificateurs %le ou
%lf.

3. Le type long double

Si nous voulons lire une donnée du type long double, nous devons
utiliser les spécificateurs %Le
ou %Lf.

4. Indication de la largeur maximale

Pour tous les spécificateurs, nous pouvons indiquer la largeur maximale
du champ à évaluer pour une donnée. Les chiffres qui passent au-delà du champ
défini sont attribués à la prochaine variable qui sera lue !

Exemple

Soient les instructions:

int A,B; scanf("%4d %2d", &A, &B);


Si nous entrons le nombre 1234567, nous obtiendrons les affectations
suivantes:

A=1234 B=56


le chiffre 7 sera gardé pour la prochaine instruction de
lecture.

5. Les signes d'espacement

Lors de l'entrée des données, une suite de signes d'espacement (espaces,
tabulateurs, interlignes) est évaluée comme un seul espace. Dans la chaîne de
format, les symboles \t, \n, \r ont le même effet qu'un simple espace.

Exemple

Pour la suite d'instructions

int JOUR, MOIS, ANNEE; scanf("%i %i %i", &JOUR, &MOIS, &ANNEE);


les entrées suivantes sont correctes et équivalentes:



















12 4 1980 ou 12 004 1980 ou 12 4 1980
Revenir en haut Aller en bas
http://www.univ-vision.com
Djallilus
Admin
Admin
Djallilus


Masculin
Nombre de messages : 1334
Age : 36
Localisation : Mostaganem
Emploi/loisirs : Demasquer les faux
Humeur : g pas trouver une fixe
Réputation : 5
Points : 1650
Date d'inscription : 24/09/2008

Chapitre 4: LIRE ET ÉCRIRE DES DONNÉES Empty
MessageSujet: Re: Chapitre 4: LIRE ET ÉCRIRE DES DONNÉES   Chapitre 4: LIRE ET ÉCRIRE DES DONNÉES Icon_minitimeJeu 25 Déc - 19:37

6. Formats 'spéciaux'

Si la chaîne de format contient aussi d'autres caractères que des signes
d'espacement, alors ces symboles doivent être introduits exactement dans
l'ordre indiqué.

Exemple

La suite d'instructions

int JOUR, MOIS, ANNEE; scanf("%i/%i/%i", &JOUR, &MOIS, &ANNEE);

accepte les entrées:

rejette les entrées:

12/4/1980




















12 ...



12/04/01980


12 /4
/1980


7. Nombre de valeurs lues

Lors de l'évaluation des données, scanf s'arrête si la chaîne de
format a été travaillée jusqu'à la fin ou si une donnée ne correspond pas au
format indiqué. scanf retourne comme résultat le nombre d'arguments
correctement reçus et affectés.

Exemple

La suite d'instructions

int JOUR, MOIS, ANNEE, RECU; RECU = scanf("%i %i %i", &JOUR, &MOIS, &ANNEE);


réagit de la façon suivante ( - valeur indéfinie):

Introduit:

RECU


JOUR


MOIS


ANNEE


12 ...

==>


3


12


4


1980

12/4/1980


==>


1


12


-


-


12.4 1980


==>


1


12


-


-


12 4
19.80


==>


3


12


4


19

Revenir en haut Aller en bas
http://www.univ-vision.com
Djallilus
Admin
Admin
Djallilus


Masculin
Nombre de messages : 1334
Age : 36
Localisation : Mostaganem
Emploi/loisirs : Demasquer les faux
Humeur : g pas trouver une fixe
Réputation : 5
Points : 1650
Date d'inscription : 24/09/2008

Chapitre 4: LIRE ET ÉCRIRE DES DONNÉES Empty
MessageSujet: Re: Chapitre 4: LIRE ET ÉCRIRE DES DONNÉES   Chapitre 4: LIRE ET ÉCRIRE DES DONNÉES Icon_minitimeJeu 25 Déc - 19:38

Exercice 4.2









En vous référant aux exemples du chapitre 4.2, écrivez un programme qui lit
la date du clavier et écrit les données ainsi que le nombre de données
correctement reçues sur l'écran.

Exemple:

Introduisez la date (jour mois année):

















11 11 1991 données reçues : 3 jour : 11 mois : 11 année : 1991


* Testez les réactions du programme à vos entrées. Essayez
d'introduire des nombres de différents formats et différentes grandeurs.

* Changez la partie format du programme de façon à séparer les différentes
données par le symbole '-' .

4.3. Écriture d'un caractère



La commande,

putchar('a');


transfère le caractère a vers le fichier standard de
sortie stdout. Les arguments de la fonction putchar sont ou bien
des caractères (c.-à-d. des nombres entiers entre 0 et 255) ou bien le symbole EOF
(End Of File).

EOF est une constante définie dans <stdio> qui marque la
fin d'un fichier. La commande putchar(EOF); est utilisée dans le cas où stdout
est dévié vers un fichier.

Type de l'argument

Pour ne pas être confondue avec un caractère, la constanteEOF
doit nécessairement avoir une valeur qui sort du domaine des caractères (en
général EOF a la valeur -1). Ainsi, les arguments de putchar sont
par définition du type int et toutes les valeurs traitées par putchar
(même celles du type char) sont d'abord converties en int.

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 */
Revenir en haut Aller en bas
http://www.univ-vision.com
Djallilus
Admin
Admin
Djallilus


Masculin
Nombre de messages : 1334
Age : 36
Localisation : Mostaganem
Emploi/loisirs : Demasquer les faux
Humeur : g pas trouver une fixe
Réputation : 5
Points : 1650
Date d'inscription : 24/09/2008

Chapitre 4: LIRE ET ÉCRIRE DES DONNÉES Empty
MessageSujet: Re: Chapitre 4: LIRE ET ÉCRIRE DES DONNÉES   Chapitre 4: LIRE ET ÉCRIRE DES DONNÉES Icon_minitimeJeu 25 Déc - 19:38

4.4. Lecture d'un caractère



Une fonction plus souvent utilisée que putchar est la fonction getchar,
qui lit le prochain caractère du fichier d'entrée standard stdin.

Type du résultat

Les valeurs retournées par getchar sont ou bien des caractères (0 -
255) ou bien le symbole EOF. Comme la valeur du symbole EOF sort
du domaine des caractères, 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 et fournit
les données seulement après confirmation par 'Enter'. La bibliothèque <conio>
contient une fonction du nom getch qui fournit immédiatement le prochain
caractère entré au clavier.

La fonction getch n'est pas compatible avec ANSI-C et elle peut
seulement être utilisée sous MS-DOS.





Exercice 4.3









Ecrire un programme qui lit un caractère au clavier et affiche le caractère
ainsi que son code numérique:

a) en employant getchar et printf,

b) en employant getch et printf.
Revenir en haut Aller en bas
http://www.univ-vision.com
Djallilus
Admin
Admin
Djallilus


Masculin
Nombre de messages : 1334
Age : 36
Localisation : Mostaganem
Emploi/loisirs : Demasquer les faux
Humeur : g pas trouver une fixe
Réputation : 5
Points : 1650
Date d'inscription : 24/09/2008

Chapitre 4: LIRE ET ÉCRIRE DES DONNÉES Empty
MessageSujet: Re: Chapitre 4: LIRE ET ÉCRIRE DES DONNÉES   Chapitre 4: LIRE ET ÉCRIRE DES DONNÉES Icon_minitimeJeu 25 Déc - 19:39

4.5. Exercices d'application







Exercice 4.4









Ecrire un programme qui permute et affiche les valeurs de trois variables A,
B, C de type entier qui sont entrées au clavier :


A ==> B , B ==> C , C ==> A







Exercice 4.5









Ecrire un programme qui affiche le quotient et le reste de la division
entière de deux nombres entiers entrés au clavier ainsi que le quotient
rationnel de ces nombres.







Exercice 4.6









Ecrire un programme qui affiche la résistance équivalente à trois
résistances R1, R2, R3 (type double),

- si les résistances sont branchées en série:

Rsér = R1+R2+R3

- si les résistances sont branchées en parallèle:





























Exercice 4.7









Ecrire un programme qui calcule et affiche l'aire d'un triangle dont il faut
entrer les longueurs des trois côtés. Utilisez la formule :

S2 = P(P-A)(P-B)(P-C)

où A, B, C sont les longueurs des trois côtés (type int) et P le
demi-périmètre du triangle.







Exercice 4.8









Ecrire un programme qui calcule la somme de quatre nombres du type int entrés
au clavier,

a) en se servant de 5 variables (mémorisation des valeurs entrées)
Revenir en haut Aller en bas
http://www.univ-vision.com
Djallilus
Admin
Admin
Djallilus


Masculin
Nombre de messages : 1334
Age : 36
Localisation : Mostaganem
Emploi/loisirs : Demasquer les faux
Humeur : g pas trouver une fixe
Réputation : 5
Points : 1650
Date d'inscription : 24/09/2008

Chapitre 4: LIRE ET ÉCRIRE DES DONNÉES Empty
MessageSujet: Re: Chapitre 4: LIRE ET ÉCRIRE DES DONNÉES   Chapitre 4: LIRE ET ÉCRIRE DES DONNÉES Icon_minitimeJeu 25 Déc - 19:39

b) en se servant de 2 variables (perte des valeurs entrées)







Exercice 4.9









a) Ecrire un programme qui calcule le prix TTC (type double)
d'un article à partir du prix net (type int) et du pourcentage de TVA
(type int) à ajouter. Utilisez la formule suivante en faisant attention
aux priorités et aux conversions automatiques de type:























b) Ecrire un programme qui calcule le prix net d'un article (type double)
à partir du prix TTC (type double) et du pourcentage de TVA (type int)
qui a été ajoutée.

(Déduisez la formule du calcul de celle indiquée ci-dessus)







Exercice 4.10









Ecrire un programme qui calcule et affiche la distance DIST (type double)
entre deux points A et B du plan dont les coordonnées (XA, YA) et (XB, YB) sont
entrées au clavier comme entiers.
Revenir en haut Aller en bas
http://www.univ-vision.com
Contenu sponsorisé





Chapitre 4: LIRE ET ÉCRIRE DES DONNÉES Empty
MessageSujet: Re: Chapitre 4: LIRE ET ÉCRIRE DES DONNÉES   Chapitre 4: LIRE ET ÉCRIRE DES DONNÉES Icon_minitime

Revenir en haut Aller en bas
 
Chapitre 4: LIRE ET ÉCRIRE DES DONNÉES
Revenir en haut 
Page 1 sur 1
 Sujets similaires
-

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
 :: Vision Sur l'Université :: 1 ére année-
Sauter vers:  
Créer un forum | © phpBB |  | Signaler un abus | Cookies
Ne ratez plus aucun deal !
Abonnez-vous pour recevoir par notification une sélection des meilleurs deals chaque jour.
IgnorerAutoriser