Club Informatique VINCI

Le C.I.V représente un groupement d'étudiants constituant le club informatique de la Grande École Marocaine de l'Informatique et des Réseaux du Télécom VINCI -Rabat-. (L'utilisation de Internet explorer 6/7 n'est pas recommandée, on vous propose Firefox)

Les forums du C.I.V attend vos propositions en ce qui concerne le graphique, les catégories, et les sections.

Connexion

Récupérer mon mot de passe

Sondage

Quel est votre antivirus préféré ?
16% 16% [ 4 ]
32% 32% [ 8 ]
0% 0% [ 0 ]
0% 0% [ 0 ]
0% 0% [ 0 ]
36% 36% [ 9 ]
0% 0% [ 0 ]
0% 0% [ 0 ]
8% 8% [ 2 ]
8% 8% [ 2 ]

Total des votes : 25

Qui est en ligne ?

Il y a en tout 1 utilisateur en ligne :: 0 Enregistré, 0 Invisible et 1 Invité

Aucun


[ Voir toute la liste ]


Le record du nombre d'utilisateurs en ligne est de 23 le Mer 17 Oct - 12:31

Statistiques

Nos membres ont posté un total de 1292 messages dans 373 sujets

Nous avons 437 membres enregistrés

L'utilisateur enregistré le plus récent est intellection


    LES ENTRÉES-SORTIES CONVERSATIONELLES (A.Elghazi/S.Elhajji)

    Partagez
    avatar
    El Maligno Angelo
    Administrateur
    Administrateur

    Messages : 373
    Points : 4069
    Réputation : 8
    Date d'inscription : 25/04/2009
    Age : 28
    Localisation : ErRabat

    LES ENTRÉES-SORTIES CONVERSATIONELLES (A.Elghazi/S.Elhajji)

    Message par El Maligno Angelo le Mer 30 Sep - 6:14

    Introduction
    Jusqu'ici, nous avons utilisé de façon intuitive les fonctions printf pour afficher des informations à l'écran.
    Nous vous proposons maintenant d'étudier en détail les différentes possibilités de ces fonctions, ce qui
    nous permettra de répondre à des questions telles que :
    • quelles sont les écritures "autorisées" pour des nombres fournis en données ? Que se passe-t-il
    lorsque l'utilisateur ne les respecte pas ?
    • comment organiser les données lorsque l'on mélange les types numériques et les types caractères ?
    • que se produit-il lorsque, en réponse à scanf, on fournit trop ou trop peu d'informations ?
    • comment agir sur la présentation des informations à l'écran ?
    Les possibilités de la fonction printf()
    Nous avons déjà vu que le premier argument de printf est une chaîne de caractères qui spécifie à la fois
    des caractères à afficher tels quels, des "codes de format" repérés par %. Un "code de conversion" (tel que
    c, d ou f) y précise le type de l'information à afficher.
    D'une manière générale, il existe d'autres caractères de conversion soit pour d'autres types de valeurs, soit
    pour agir sur la précision de l'information que l'on affiche. De plus, un code de format peut contenir des
    informations complémentaires agissant sur le "cadrage", le "gabarit" ou la "précision". Ici, nous nous
    limiterons aux possibilités les plus usitées de printf1. Sachez toutefois que le paragraphe 1.2 de l'annexe
    A vous en fournit un panorama complet.
    La syntaxe de printf
    D'une manière générale, nous pouvons dire que l'appel à printf se présente ainsi :
    printf ( format, liste_d'expressions )
    format :
    • constante chaîne (entre " "),
    • pointeur sur une "chaîne de caractères" (cette notion sera étudiée ultérieurement).
    liste_d'expressions : suite d'expressions séparées par des virgules d'un type en accord avec le code format
    correspondant.
    Les principaux codes de conversion
    c char : caractère affiché (convient aussi à short ou à int compte tenu des conversions systématiques)
    d int (convient aussi à char ou à int, compte tenu des conversions systématiques)
    u unsigned int (convient aussi à unsigned char ou à unsigned short, compte tenu des conversions
    systématiques)
    ld long
    lu unsigned long
    Langage C
    12
    f double ou float (compte tenu des conversions systématiques float -> double) écrit en notation
    "décimale" avec six chiffres après le point (par exemple : 1.234500 ou 123.456789)
    Action sur le gabarit d'affichage
    Par défaut, les entiers sont affichés avec le nombre de caractères nécessaires (sans espaces avant ou après).
    Les flottants sont affichés avec six chiffres après le point (aussi bien pour le code e que f).
    Un nombre placé après % dans le code de format précise un gabarit d'affichage, c'est-à-dire un nombre
    minimal de caractères à utiliser. Si le nombre peut s'écrire avec moins de caractères, printf le fera
    précéder d'un nombre suffisant d'espaces ; en revanche, si le nombre ne peut s'afficher convenablement
    dans le gabarit imparti, printf utilisera le nombre de caractères nécessaires.
    Voici quelques exemples, dans lesquels nous fournissons, à la suite d'une instruction printf, à la fois des
    valeurs possibles des expressions à afficher et le résultat obtenu à l'écran. Notez que le symbole ^
    représente un espace.
    printf ("%3d", n) ; /* entier avec 3 caractères minimum */
    • n = 20
    ^20
    • n = 3 ^
    ^3
    • n = 2358
    2358
    • n = -5200
    -5200
    printf ("%f", x) ; /* notation décimale gabarit par défaut (6 chiffres après point) */
    • x = 1.2345
    1.234500
    • x = 12.3456789
    12.345679
    printf ("%10f", x) ; /* notation décimale gabarit mini 10 (toujours 6 chiffres après point) */
    • x = 1.2345
    ^^1.234500
    • x = 12.345
    ^12.345000
    • x = 1.2345E5
    123450.000000
    Actions sur la précision
    Pour les types flottants, on peut spécifier un nombre de chiffres (éventuellement inférieur à 6) après le
    point décimal (aussi bien pour la notation décimale que pour la notation exponentielle). Ce nombre doit
    apparaître, précédé d'un point, avant le code de format (et éventuellement après le gabarit). Voici
    quelques exemples :
    printf ("%10.3f", x) ;
    • x = 1.2345
    ^^^^^1.235
    • x = 1.2345E3
    ^^1234.500
    Langage C
    13
    • x = 1.2345E7
    12345000.000
    En cas d'erreur de programmation
    Deux types d'erreur de programmation peuvent apparaître dans l'emploi de printf.
    1. Code de format en désaccord avec le type de l'expression
    Lorsque le code de format, bien qu'erroné, correspond à une information de même taille (c'est-à-dire
    occupant la même place en mémoire) que celle relative au type de l'expression, les conséquences de
    l'erreur se limitent à une "mauvaise interprétation de l'expression". C'est ce qui se passe, par exemple,
    lorsque l'on écrit une valeur de type int en %u ou une valeur de type unsigned int en %d.
    En revanche, lorsque le code format correspond à une information de taille différente de celle relative au
    type de l'expression, les conséquences sont généralement plus désastreuses, du moins si d'autres valeurs
    doivent être affichées à la suite. En effet, tout se passe alors comme si, dans la "suite d'octets"
    (correspondant aux différentes valeurs à afficher) reçue par printf, le "repérage" des emplacements des
    valeurs suivantes se trouvait soumis à un "décalage".
    2. Nombre de codes de format différent u nombre d'expressions de la liste
    Dans ce cas, il faut savoir que C cherche toujours à satisfaire le contenu du format.
    Ce qui signifie que, si des expressions de la liste n'ont pas de code format, elles ne seront pas affichées.
    C'est le cas dans cette instruction où la valeur de p ne sera pas affichée : printf ("%d", n, p) ;
    En revanche, si vous prévoyez trop de codes de format, les conséquences seront là encore assez
    désastreuses puisque printf cherchera à afficher... n'importe quoi. C'est le cas dans cette instruction où
    deux valeurs seront affichées, la seconde étant (relativement) aléatoire : printf ("%d %d ", n) ;
    La macro putchar
    L'expression :
    putchar (c)
    joue le même rôle que :
    printf ("%c", c) ;
    Les possibilités de la fonction scanf
    La syntaxe de scanf
    D'une manière générale, l'appel de scanf se présente ainsi :
    scanf ( format, liste_d_adresses)
    format :
    -constante chaîne (entre " "),
    -pointeur sur une "chaîne de caractères" (cette notion sera étudiée ultérieurement)
    liste_d_adresses : liste de "lvalue", séparées par des virgules, d'un type en accord avec le code de format
    correspondant.
    Les principaux codes de conversion de scanf
    Pour chaque code de conversion, nous précisons le type de la "lvalue" correspondante.
    Langage C
    14
    c char
    d int
    u unsigned int
    hd short int
    hu unsigned short
    ld long int
    lu unsigned long
    f ou e float écrit indifféremment dans l'une des deux notations : décimale ou exponentielle (avec la lettre
    e ou E)
    lf ou le double avec la même présentation que ci-dessus
    s chaîne de caractères dont on fournit l'adresse (notion qui sera étudiée ultérieurement)
    Remarque :
    Contrairement à ce qui se passait pour printf, il ne peut plus y avoir ici de conversion automatique
    puisque l'argument transmis à scanf est l'adresse d'un emplacement mémoire. C'est ce qui justifie
    l'existence d'un code hd par exemple pour le type short ou encore celle des codes lf et le pour le type
    double.
    Action sur le gabarit
    Comme dans les codes de format de printf, on peut, dans un code de format de scanf, préciser un gabarit.
    Dans ce cas, le traitement d'un code de format s'interrompt soit à la rencontre d'un séparateur, soit lorsque
    le nombre de caractères indiqués a été atteint.
    La macro getchar
    L'expression : c = getchar() joue le même rôle que : scanf ("%c", &c) tout en étant plus rapide puisque ne
    faisant pas appel au mécanisme d'analyse d'un format. Notez bien que getchar utilise le même tampon
    (image d'une ligne) que scanf. En toute rigueur, getchar est une "macro" (comme putchar) dont les
    instructions figurent dans stdio.h. Là encore, l'omission d'une instruction #include appropriée conduit à
    une erreur à l'édition de liens.


    _________________
    it's awesome to feel...what others can't, but i think doin' what poeple cannot do make u surpass feelings step !!

      La date/heure actuelle est Dim 21 Jan - 7:42