IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

 C Discussion :

Lecture d'un programme


Sujet :

C

  1. #1
    Invité
    Invité(e)
    Par défaut Lecture d'un programme
    Bonjour, est-ce que quelqu'un pourrait me faire un retour dans ma façon de lire le programme suivant svp car j'ignore si je le lis correctement ?

    1. Je génère un output que je mets dans stdio.h
    2. Je génère un output que je mets dans stdlib.h

    3. Je génère un input avec la fonction main et je reçois en paramètres d'entrées l'entier argc et le charactère argc[] // j'ignore pourquoi il y a un * avant le argv
    4. Je déclare l'eniter cpt
    5. Je l'initialise à 0

    6. J'affiche la valeur de cpt modulo d et le cpt s'incrémente
    7. J'affiche la valeur de cpt modulo d

    8. ????? // j'ignore pourquoi il y a un lieu d'initialiser
    9. si le cpt s'incrémente alors le programme va afficher le premier message si le compteur est à 1 .... // et ensuite je ne comprends pas pourquoi il y a des ++ avant le cpt

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
     
    #include <stdio.h>
    #include <stdlib.h>
     
    int main(int argc, char *argv[])
    {
        int cpt;
        cpt = 0; // ou int cpt = 0;
        printf("valeur de cpt %d\n", cpt++);
        printf("valeur de cpt %d\n", cpt);
        cpt = 0;
        if(cpt++)
          printf("message1 apparaissant si cpt vaut 1\n");
         cpt = 0;
        if(++cpt)
        printf("message2 apparaissant si cpt vaut 1\n"); 
      system("PAUSE");	
      return 0;
    }
    Merci pour les retours :-)

  2. #2
    Expert éminent sénior
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 431
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 431
    Points : 15 803
    Points
    15 803
    Par défaut
    je pense que ce code est écrit en C et la plupart de vos interrogations sont liées à des particularités de ce langage.

    par exemple la fonction "printf" affiche du texte en replaçant %d par le 2e argument de l'appel.
    https://man.developpez.com/man3/printf/

    ensuite cpt++ veut dire "retourne la valeur de cpt puis incrémente cpt".
    alors que ++cpt veut dire "commence par incrémenter cpt puis retourne la valeur de cpt".

  3. #3
    Rédacteur/Modérateur

    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Décembre 2013
    Messages
    4 144
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes
    Secteur : Conseil

    Informations forums :
    Inscription : Décembre 2013
    Messages : 4 144
    Points : 9 592
    Points
    9 592
    Par défaut
    Non, il n'y a à peu près rien de bon.
    Cette méthode pour apprendre est très mauvaise, tu ne peux pas apprendre comme ça.

    Si tu lis ce tutoriel par exemple, tu auras dès la 1ère page des réponses à certaines de tes questions.

  4. #4
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 382
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 382
    Points : 41 588
    Points
    41 588
    Par défaut
    Citation Envoyé par environnementBash Voir le message
    Bonjour, est-ce que quelqu'un pourrait me faire un retour dans ma façon de lire le programme suivant svp car j'ignore si je le lis correctement ?

    1. Je génère un output que je mets dans stdio.h
    2. Je génère un output que je mets dans stdlib.h

    3. Je génère un input avec la fonction main et je reçois en paramètres d'entrées l'entier argc et le charactère argc[] // j'ignore pourquoi il y a un * avant le argv
    Déjà tu commences par des contresens totaux (et possiblement une inversion du sens de "input" (entrée) et "output" (sortie).

    Les deux premières lignes sont des inclusions. Le compilateur va lire le contenu des fichiers <stdio.h> et <stdlib.h> au moment de lire ton fichier. La combinaison d'un fichier source C et des fichiers qu'il inclut avec #include est appelée une unité de compilation.

    La ligne 5 déclare la fonction main() (la fonction principale du programme) avec ses paramètres standard: Le nombre d'arguments sur la ligne de commande, et le tableau de chaînes de caractères (chacune contenant un des arguments).

    Les lignes 9 et 10 ne font pas de modulo: Le caractère % au sein d'une chaîne de format (chaîne passée en premier paramètre de printf()) indique le début d'un champ à afficher. "%d" signifie "un int à afficher en représentation décimale".

    La suite, c'est une démonstration des effets de la post-incrémentation et de la pré-incrémentation. if(cpt++) signifie "on teste si cpt est différent de zéro, puis on l'incrémente". if(++cpt) signifie "on incrémente cpt puis on teste s'il est différent de zéro".
    Dans cette démonstration, "message1" ne s'affichera pas parce que cpt était encore égal à zéro au moment du test ; mais "message2" s'affichera.

  5. #5
    Expert éminent sénior
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 735
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 735
    Points : 31 060
    Points
    31 060
    Billets dans le blog
    1
    Par défaut
    Bonjour
    Citation Envoyé par environnementBash Voir le message
    Bonjour, est-ce que quelqu'un pourrait me faire un retour dans ma façon de lire le programme suivant svp car j'ignore si je le lis correctement ?
    Tu connais le C ??? Sinon pour lire du C ça ne va pas être évident. C'est pareil pour moi. Je peux lire de l'allemand, le lire parfaitement. Mais ne connaissant pas l'allemand...

    Citation Envoyé par environnementBash Voir le message
    // j'ignore pourquoi il y a un * avant le argv
    Ok pointeur sur string... non checké !

    Citation Envoyé par environnementBash Voir le message
    8. ????? // j'ignore pourquoi il y a un lieu d'initialiser
    Peut-être parce que cpt a changé et que l'auteur veut le remette à 0...

    Citation Envoyé par environnementBash Voir le message
    et ensuite je ne comprends pas pourquoi il y a des ++ avant le cpt
    Cherche pré et post incrément sur un moteur de recherche quelconque. Sinon pour le reste c'est bien ce que je disais: il faut apprendre le C pour pouvoir lire un programme écrit en C.

  6. #6
    Invité
    Invité(e)
    Par défaut
    Merci pour tous ces précieux retours. Je vais consulter les liens de tbc et de Mathieu en particulier et je vous dirai quoi. A+

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [XL-2003] Lecture + remplacement cellules, programme qui boucle indéfiniment
    Par many6976 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 08/07/2013, 15h25
  2. [XL-2003] empêcher la lecture d'un programme sous EXCEL
    Par ilpleutbergere dans le forum Excel
    Réponses: 2
    Dernier message: 27/07/2011, 19h21
  3. Lecture de variable (programmation bash)
    Par anarchy_for_espa dans le forum Applications et environnements graphiques
    Réponses: 0
    Dernier message: 22/02/2008, 11h58
  4. Réponses: 4
    Dernier message: 19/06/2006, 21h38
  5. decompteur de lecture d'un programme
    Par LE CORRE dans le forum C
    Réponses: 4
    Dernier message: 31/12/2005, 00h37

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo