Apprentissage du langage c I généralités








télécharger 0.53 Mb.
titreApprentissage du langage c I généralités
page8/41
date de publication07.08.2018
taille0.53 Mb.
typeDocumentos
l.21-bal.com > loi > Documentos
1   ...   4   5   6   7   8   9   10   11   ...   41

5)L'affichage – La saisie


L'affichage d'une valeur (variable ou constante) se fait en utilisant la fonction "printf()" qui signifie "print formating"

Cette fonction s'utilise de la manière suivante :

Premier argument et le plus complexe : Message à afficher. Ce message, encadré par des " (double guillemets) constitue en fait tout le texte que le programmeur désire afficher. A chaque position du texte où il désire que soit reporté une variable ou une valeur d'expression, il doit l'indiquer en positionnant un signe "%" (pour cent) suivi d'un caractère indiquant la manière dont il désire afficher ladite valeur.

Autres arguments : Expressions et variables dont on désire afficher la valeur.

Exemple :

main()
{
int a=5;
int b=6;
printf("Le résultat de %d ajouté à %d plus 1 est %d", a, b, a + b + 1);
}

La saisie d'une variable se fait en utilisant la fonction "scanf()" qui signifie "scan formating"

Cette fonction s'utilise de la manière suivante :

Premier argument et le plus complexe : Masque de saisie. Ce masque, encadré par des " (double guillemets) constitue en fait tout ce que devra taper l'utilisateur quand il saisira ses variables. A chaque position du texte où le programmeur désire que soit reporté une variable à saisir, il doit l'indiquer en positionnant un caractère "%" (pour cent) suivi d'un caractère indiquant la manière dont il désire que soit saisie ladite valeur. Bien souvent, il n'y a aucun masque de saisie car c'est très contraignant.

Autres arguments : Variables à saisir, chacune précédée du caractère "&"

Exemple :

main()
{
int jj;
int mm;
int aa;
printf("Saisissez une date sous la forme jj/mm/aa  :\n");
scanf("%d/%d/%d", &jj, &mm, &aa);
}

Erreur fréquente :

main()
{
int i;

scanf("Saisissez un nombre : %d", &i); // Erreur => scanf n'affiche rien

// Une invite s'affiche avec "printf"
/* Il faut écrire :
printf(" Saisissez un nombre :\n");
scanf("%d", &i);
*/
}

L'ensemble des options de saisie et d'affichage sont mises en annexe.

6)La conversion de type (casting)

a)Généralités


Lorsque le langage doit faire un calcul avec des valeurs numériques ; ce calcul se fait dans la plus grande précision des nombres intervenants ; et non dans la précision du résultat attendu.

Exemple : float f=20 / 7;

Résultat :"f" vaut "2.0000" alors qu'il était sûrement attendu "2,8571". Mais "20" et "7" étant une écriture typique de nombres au format "int", le calcul a été entièrement fait en codage "int". Pour obtenir le bon résultat, il aurait fallu écrire aumoins une des deux constante dans une notation en virgule flottante en écrivant par exemple "float f = 20.0 / 7" ou bien "float f = 20 / 7e0".

b)Conversions de type explicites


Le problème précédent reste le même si on opère avec des variables de type "int" pour mettre le résultat dans un "float". Le résultat récupéré dans le "float" ne correspondra pas à la valeur attendue.

Exemple : int a=20, b=7; float f=a / b;
La seule façon d'avoir un résultat dans "f" correct est de forcer au moins une des deux variables à être considérée comme un "float". Cette opération se nomme "casting" (du verbe anglais "to cast" qui signifie "jouer un rôle").

On crée un "casting" sur une variable en indiquant, avant la variable et entre parenthèses, dans quel type elle doit être considérée.

Exemple :

int a=20;
int b=7;
float f;

f=(float)a / b; // Le calcul est effectué en considérant "a" comme un "float"
f=a / (float)b; // Le calcul est effectué en considérant "b" comme un "float"
f=(float)a / (float)b; // Les deux variables "a" et "b" sont considérées comme des "float"
// Dans ces trois écritures, on aura bien "f=2,8571"

c)Conversions de type implicites


Les conversions de type implicites se font de façon naturelle chaque fois que des variables de types différents sont utilisées dans une opération. A ce moment là, la variable de type le plus "étroit" est convertie dans la variable de type le plus "large" et le "cast" n'est pas nécessaire.

int a=20;
float b=7.0;
double f=a / b; // Conversion implicite de "a" en "float"

On peut aussi copier une variables d'un type dans une variable d'un autre type. Mais si la variable réceptrice est plus "étroite", il y a perte de données.
Conversion automatique sans perte de précision et sans perte de signe

char



int

le caractère est placé dans l'octet le moins significatif

short



long

expansion du signe

int



float

pas de problème

float



double

pas de problème


Conversions automatiques avec perte de précision

int



char

perte des octets les plus significatifs

long



short

perte des octets les plus significatifs

float



int

perte de la partie décimale

double



float

perte de précision
1   ...   4   5   6   7   8   9   10   11   ...   41

similaire:

Apprentissage du langage c I généralités iconI. apprentissage moteur et concepts associés A. l’apprentissage moteur
«Capacité acquise par apprentissage à atteindre des résultats fixés à l’avance avec un maximum de réussite et souvent un minimum...

Apprentissage du langage c I généralités iconSituation d’apprentissage

Apprentissage du langage c I généralités iconLe contrat d’apprentissage

Apprentissage du langage c I généralités iconAteliers d’apprentissage

Apprentissage du langage c I généralités iconIntroduction à L’Étude du langage

Apprentissage du langage c I généralités iconI generalites

Apprentissage du langage c I généralités iconGeneralites

Apprentissage du langage c I généralités iconL'apprentissage et l'enseignement des langues

Apprentissage du langage c I généralités iconBanque de situations d’apprentissage et d’évaluation compétence 3

Apprentissage du langage c I généralités icon70 Electricité / Généralités








Tous droits réservés. Copyright © 2016
contacts
l.21-bal.com