Répondre à la discussion
Affichage des résultats 1 à 14 sur 14

programmation et code C



  1. #1
    combieul

    programmation et code C


    ------

    Bonjour a tous,

    Depuis peu je m'essaye à la programmation mais voila j'ai un petit soucis avec un code source que je ne comprend pas. Voici le code:

    "int pleinDeFric = 0, majeur = 0;
    long argentEnPoche = 10000, age = 19;

    pleinDeFric = argentEnPoche > 10000;
    majeur = !(age < 18);

    if (pleinDeFric && majeur)
    printf("Vous pouvez ouvrir un compte en banque !");
    else
    printf("Sortez d'ici ou j'appelle la securite");"

    Ce que je ne comprend pas c'est le "int" du début, j'ai vu que cela devrait étre un nombre entier, mais long en est un aussi? sa n'aurait pas pu etre long partout?? De plus si je change le code il y a toujours le même résultat. Est-ce que quelqu'un peut me l'expliquer Oo, la je bute un peu ^^.

    Merci a vous,

    Combieul

    -----
    La victoire est brillante et l'echec est mat (coluche)

  2. Publicité
  3. #2
    dumm

    Re : programmation et code C

    Bonjour
    En programmation, il y a plusieurs type de varaible notament les int et les long. Tu as raison quand au fait que les long et les int sont des entiers mais la différence est la taille qu'ils prennent en mémoire. Ainsi un int prendra, en géneral, deux octets en mémoire alors qu'un long, toujours en général, en prendra quatre.
    Le type de la variable utilisé dépend donc de ce que tu veux en faire.
    Par exemple, prend en considération qu'un int prendre deux octets en mémoire
    int i = 75552; ne sera pas accepté
    alors que int i = 512; le sera

    De plus si je change le code il y a toujours le même résultat.
    Qu'entends tu par changer ton code?


    Cordialement
    Dumm

  4. #3
    MaliciaR

    Re : programmation et code C

    Citation Envoyé par dumm Voir le message
    En programmation, il y a plusieurs type de varaible notament les int et les long.
    Non, pas en programmation. En certains langages, comme le C en l'occurrence.


    Sinon, combieul, pourrais-tu être plus explicite (erreurs, warnings, changements,...) et surtout mettre ton code entre balises CODE (le bouton dièze quand tu rédiges un message)?
    An expert is one who knows more and more about less and less.

  5. #4
    dumm

    Re : programmation et code C

    Non, pas en programmation. En certains langages, comme le C en l'occurrence.
    C'est vrai autant pour moi c'est un abus de langage que j'ai.

  6. A voir en vidéo sur Futura
  7. #5
    lou_ibmix_xi

    Re : programmation et code C

    Ainsi un int prendra, en géneral, deux octets en mémoire alors qu'un long, toujours en général, en prendra quatre.
    Non! La norme C dit ceci:

    -La taille d'un "int" dépends de l'architecture, et c'est la taille d'une adresse, donc 2 octets sur les architecture 16 bits, 4 sur les 32 bits et 8 sur les 64 bits...

    -un "short" fait toujours 2 octets,

    -un "long" fait toujours 4 octets,

    -un "long long" fait toujours 8 octets.

  8. #6
    Goldfish

    Re : programmation et code C

    Bonjour,
    Citation Envoyé par lou_ibmix_xi Voir le message
    -La taille d'un "int" dépends de l'architecture, et c'est la taille d'une adresse, donc 2 octets sur les architecture 16 bits, 4 sur les 32 bits et 8 sur les 64 bits...
    D'où l'intérêt d'utiliser des int !! Ceux-ci sont adapté à votre processeur et optimise donc la vitesse de calcul...

    En ce qui concerne le code, il me semble très très bizarre... En particulier, en C :
    Code:
    pleinDeFric = argentEnPoche > 10000;
    majeur = !(age < 18);
    N'a pas vraiment de sens... Ça ressemble plus à un type bool du C++, le code correct serait plutôt :

    Code:
    int argentEnPoche = 10000, age = 19;
    
    if (argentEnPoche > 10000 && age > 18){
      printf("Vous pouvez ouvrir un compte en banque !");
    }else{
      printf("Sortez d'ici ou j'appelle la securite");
    }
    Tout cela explique pourquoi lorsque tu fais un changement, il ne se passe rien... Essaie avec ce code, ça devrait marcher

    Notons au passage que l'oublie des {} du if/else est possible mais, si tu débute, mieux vaut les mettre.

    @ +
    }><(({*>

  9. Publicité
  10. #7
    Garlik

    Re : programmation et code C

    Le code d'origine est parfaitement correct :

    - "argentEnPoche > 10000" est une expression qui renvoit 1 (ou plus...) (vrai) si argentEnpoche est superieur a 10000, et 0 (faux) dans le cas contraire

    - "!(age < 18)" pareil : renvoit 0 (faux) si age est inferieur a 18, et 1 (vrai) dans le cas contraire.

    - argenEnPoche et majeur peuvent donc etre consideres comme des booleens, sauf que ce type n'existe pas en C standard, c'est pour cela que l'on utilise des int.

    - Note : une expression fausse renvoie toujours 0, une expression vrai peut renvoyer en revanche n'importe quel entier non nul. Notre comparaison ci dessus pourrait donc tout aussi bien renvoyer 35 ou 876, plutot que 1. Ca ne changerait rien.

    - dans le "if" on cherche a savoir si "argentEnPoche" et "majeur" sont tous les deux vrai en meme temps.

    Si on voulait rendre le code plus clair, on pourrait faire ainsi :
    Code:
    #define FAUX 0
    #define VRAI (!FAUX)
    typedef int BOOL;
    
    BOOL pleinDeFric = FAUX, majeur = FAUX;
    long argentEnPoche = 10000, age = 19;
    
    pleinDeFric = argentEnPoche > 10000;
    majeur = !(age < 18);
    
    if (pleinDeFric && majeur)
        printf("Vous pouvez ouvrir un compte en banque !");
    else
        printf("Sortez d'ici ou j'appelle la securite");"

  11. #8
    Goldfish

    Re : programmation et code C

    Salut !

    Citation Envoyé par Garlik Voir le message
    Le code d'origine est parfaitement correct
    Je suis tout à fait d'accord avec toi !

    Seulement il dit débuter et ce code ne ressemble pas vraiment à du C scolaire... C'est pourquoi je me suis permis de le rediriger vers un code plus classique qui marche tout aussi bien.

    Ce genre de raccourci (qui n'en sont pas vraiment ici...) ne rendent pas le code très clair et, je ne pense pas que commencer comme ça soit une bonne idée...

    @+
    }><(({*>

  12. #9
    whoami

    Re : programmation et code C

    Bonjour,
    Citation Envoyé par Goldfish Voir le message
    Ce genre de raccourci (qui n'en sont pas vraiment ici...) ne rendent pas le code très clair et, je ne pense pas que commencer comme ça soit une bonne idée...
    Pourquoi ?

    C'est du code C parfaitement valide, et qu'on utilise très fréquemment, alors autant l'apprendre. D'ailleurs, il ne devrait poser aucun problème pour qui a compris la syntaxe du langage, plus le fait qu'en C, toute valeur == 0 est considérée comme fausse, et toute valeur != 0 est considérée comme vraie.

  13. #10
    Goldfish

    Re : programmation et code C

    Salut !

    Question de point de vu... J'ai mis pas mal de temps avant d'utiliser ce genre de chose "implicite" qui ne sont pas vitale à l'écriture d'un programme.

    Elles ont un sens lorsqu'elles simplifient le code. Ici, on crée 2 variables en plus, on ajoute 3 lignes au code (sans les typedef et define de garlik) et on fait plusieurs opérations d'assignation supplémentaires...

    Je ne vois pas tellement l'intérêt et j'aurais tendance à conseiller à un débutant de se concentrer sur les choses élémentaires

    Encore une fois, ce n'est que mon avis et je n'aurais peut-être pas dû l'exposer aussi "brutalement"...

    @+
    }><(({*>

  14. #11
    Philou67
    coresponsable des forums

    Re : programmation et code C

    Citation Envoyé par Goldfish Voir le message
    D'où l'intérêt d'utiliser des int !! Ceux-ci sont adapté à votre processeur et optimise donc la vitesse de calcul...
    Je ne suis pas du tout d'accord : le type int, lorsqu'il est utilisé comme entier (et non comme booléen comme dans le cas présent), devrait être utilisé avec beaucoup de précaution, car il n'est pas portable. En l'occurrence, les calculs peuvent être très différents d'une machine à l'autre avec un int qui n'a pas toujours la même taille (donc la même étendue).
    Si le programme est sensé tourner sur plusieurs plateformes matérielles, ce qui est le cas sous windows (32 bits et 64 bits), mais encore plus pour du C embarqué (de 8 bits à 32 bits), il faut être vigilant et préférer les types de longueur fixe qui répondent à l'étendue des valeurs calculables par le programme (mais comme indiqué plus haut, pour un booléen, le type int est toujours préférable, puisqu'il couvre toujours l'étendue des valeurs booléennes, et qu'il est toujours adapté au processeur).

    Par ailleurs, il faut toujours faire confiance d'abord au compilateur pour optimiser les temps d'exécution. Sur une machine 32 bits, int ou long seront équivalent, on ne pénalisera donc pas les temps d'exécution en utilisant long au lieu de int.

    Sinon, je suis aussi de l'avis de whoami et Garlik.
    La sémantique "variable = expression booléenne" n'a rien de honteuse, et le fait d'assigner "un nom" à l'expression booléenne donne bien plus de sens que l'expression elle-même.
    Ainsi, on sait que lorsque l'on a "argentEnPoche > 10000", on considère que la condition "pleinDeFric" est vrai. Sans ce rapprochement par le nom, on aurait pu imaginé qu'elle signifiait plutôt "aDeGrandesPoches" ou bien encore "aGagneAuLoto".
    :'( Plus j'apprends, et plus je mesure mon ignorance

  15. #12
    invite765732342432
    Invité

    Re : programmation et code C

    Citation Envoyé par Philou67 Voir le message
    Sinon, je suis aussi de l'avis de whoami et Garlik.
    La sémantique "variable = expression booléenne" n'a rien de honteuse, et le fait d'assigner "un nom" à l'expression booléenne donne bien plus de sens que l'expression elle-même.
    Ainsi, on sait que lorsque l'on a "argentEnPoche > 10000", on considère que la condition "pleinDeFric" est vrai. Sans ce rapprochement par le nom, on aurait pu imaginé qu'elle signifiait plutôt "aDeGrandesPoches" ou bien encore "aGagneAuLoto".
    Pas trop d'accord. Ca c'est le boulot des fonctions (éventuellement inline).
    Là, si argentEnPoche change, pleinDeFric, elle, ne change pas automatiquement. Ce qui est parfait pour ne plus rien comprendre.

    Donc dans le cas présent ça me semble une très mauvaise idée.

  16. Publicité
  17. #13
    Philou67
    coresponsable des forums

    Re : programmation et code C

    Mmmm oui... je suis d'accord.
    Il faut voir ces variables comme des variables intermédiaires, comme par exemple de définir surface_base pour calculer la surface d'une parallélépipède et de le réutiliser pour calculer volume.
    Ma justification s'applique donc mieux aux fonctions qu'aux variables. Cependant on ne doit pas bannir pour autant les expressions booléennes dans des variables, ça permet d'obtenir des tests (if) plus "lisibles", car quand les conditions s'empilent, c'est vite "ingérable".
    :'( Plus j'apprends, et plus je mesure mon ignorance

  18. #14
    Goldfish

    Re : programmation et code C

    Salut !

    L'avantage tu type int est justement son adaptabilité à toutes ses plateformes, mais biensûr, tu as raison !

    Néanmoins, un type int convient très bien aux "calculs de tous les jours" et permet justement d'optimiser la vitesse du code sur toutes ces plateformes.

    @ bientôt,

    PS : 100% d'accord avec Faith
    }><(({*>

Discussions similaires

  1. Réponses: 10
    Dernier message: 25/04/2009, 19h15
  2. [programmation] code:blocks C++
    Par chwebij dans le forum Logiciel - Software - Open Source
    Réponses: 0
    Dernier message: 20/03/2008, 20h24
  3. Programmation en C
    Par persus9 dans le forum Logiciel - Software - Open Source
    Réponses: 3
    Dernier message: 27/12/2006, 10h55
  4. Mélanger du code C et du code C++
    Par Bleyblue dans le forum Logiciel - Software - Open Source
    Réponses: 4
    Dernier message: 04/07/2005, 15h40
  5. Echec 2 la programmation ds la zone de code a l'adresse 000h
    Par zanzeoo dans le forum Électronique
    Réponses: 16
    Dernier message: 24/10/2003, 10h45
Découvrez nos comparatifs produits sur l'informatique et les technologies.