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

Langage C++ Discussion :

? instruction if


Sujet :

Langage C++

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    41
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 41
    Par défaut ? instruction if
    Bonjour,
    Faut il respecter un nombre limité d’instruction if pour qu’un programme tourne correctement ?

  2. #2
    Membre Expert
    Avatar de poukill
    Profil pro
    Inscrit en
    Février 2006
    Messages
    2 155
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 2 155
    Par défaut
    euh... non.
    Maintenant, if else if else etc... n'est pas un super design en général, mais on s'éloigne de la question !

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    41
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 41
    Par défaut
    C’est juste point de vu esthétique il y a sans doute mieux, ça m’intéresserais de connaître votre méthode.

  4. #4
    adundev
    Invité(e)
    Par défaut
    Tu peux avoir un bloc switch pour éviter l'enchainement de if else if else successifs par exemple :

    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
     
    if ("chien" == animal) {
       // ...
    } 
    else if ("chat" == animal) {
       // ...
    }
    else if ("oiseau" == animal) {
       // ...
    }
    else if ("poisson" == animal) {
       // ...
    }
    else {
       // ...
    }
    devient
    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
     
    switch(animal) {
       case "chien":
          // ...
          break;
       case "chat":
          // ...
          break;
       case "oiseau":
          // ...
          break;
       case "poisson":
          // ...
          break;
       default:
         // ...
    }
    Tu peux avoir rencontrer l'opérateur arithmétique ' ? : '
    (condition) ? si_vrai : si_faux

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    int maximum(int x, int y) {
       if (x > y) 
          return x;
       else
          return y;
    }
    devient
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    int maximum(int x, int y) {
       return (x > y) ? x : y;
    }
    j'espère que ca répond a ta question

  5. #5
    Membre chevronné
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2006
    Messages
    507
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Mai 2006
    Messages : 507
    Par défaut
    Bonjour,
    Citation Envoyé par adundev Voir le message
    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
     
    if ("chien" == animal) {
       // ...
    } 
    else if ("chat" == animal) {
       // ...
    }
    else if ("oiseau" == animal) {
       // ...
    }
    else if ("poisson" == animal) {
       // ...
    }
    else {
       // ...
    }
    Argh !
    Citation Envoyé par adundev Voir le message
    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
     
    switch(animal) {
       case "chien":
          // ...
          break;
       case "chat":
          // ...
          break;
       case "oiseau":
          // ...
          break;
       case "poisson":
          // ...
          break;
       default:
         // ...
    }
    Aaaaaarrrrrrggggghhh !

    On est dans un forum C++ ici, pas Java, et encore je suis méchant, je suis même pas sûr que le java accepte ça !

    La seule et unique manière de comparer des chaînes de caractères est "strlen" !
    Et sauf erreur de ma part ton switch, il ne compile pas !!!

  6. #6
    Membre averti
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2008
    Messages
    42
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Serbie

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2008
    Messages : 42
    Par défaut
    Java acceptera les strings dans switch dans la version 7: http://tech.puredanger.com/java7/#switch

  7. #7
    Membre confirmé Avatar de Furr
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2009
    Messages
    153
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Nord (Nord Pas de Calais)

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

    Informations forums :
    Inscription : Avril 2009
    Messages : 153
    Par défaut
    Citation Envoyé par Fabllot
    On est dans un forum C++ ici, pas Java, et encore je suis méchant, je suis même pas sûr que le java accepte ça !

    La seule et unique manière de comparer des chaînes de caractères est "strlen" !
    Euh... En C++ il est tout à fait possible de comparer des chaines à l'aide de l'opérateur == . De plus, vous dîtes être sur un forum C++, et vous conseillez d'utiliser une fonction C, je n'en vois pas l'intérêt... Et d'ailleurs, quitte à conseiller une fonction C, conseillez la bonne... strlen permet de connaitre la longueur d'une chaine, et non de la comparer à une autre. J'imagine que la fonction à laquelle vous pensiez était plutôt strcmp

    Citation Envoyé par Fabllot
    Et sauf erreur de ma part ton switch, il ne compile pas !!!
    Oui, mais c'est surtout car un switch s'utilise avec des entiers, il n'est en effet pas possible de "switcher" des strings.

  8. #8
    Membre chevronné
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2006
    Messages
    507
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Mai 2006
    Messages : 507
    Par défaut
    Citation Envoyé par Furr Voir le message
    Euh... En C++ il est tout à fait possible de comparer des chaines à l'aide de l'opérateur == . De plus, vous dîtes être sur un forum C++, et vous conseillez d'utiliser une fonction C, je n'en vois pas l'intérêt...
    C'est en utilisant std::string alors... il est vrai que dans le code proposé, les variables n'était pas typées...
    J'avoue aussi que lorsque je code en C++, j'ai toujours des frameworks avancés qui ont des types efficaces pour les chaines de caractères... donc j'ai tendance à oublier std::string...
    Et puis comme je suis de mauvaise foi je vais aussi dire que je switch (c'est le cas de le dire) entre les forums C et C++ et n'ai pas fait bien attention au forum sur lequel j'étais!
    Et d'ailleurs, quitte à conseiller une fonction C, conseillez la bonne... strlen permet de connaitre la longueur d'une chaine, et non de la comparer à une autre. J'imagine que la fonction à laquelle vous pensiez était plutôt strcmp
    Mea culpa ! On va dire faute de frappe !

    Oui, mais c'est surtout car un switch s'utilise avec des entiers, il n'est en effet pas possible de "switcher" des strings.
    C'est bien sûr ce que je voulais dire au fond... http://cpp.developpez.com/faq/cpp/?p...GS_switch_case

    Et pour revenir qu sujet initial de al9000m, l'exemple avec les switch était bon dans le fond (l'idée du switch au lieu des if) mais pas sur la forme (les switch qu'avec des entiers).
    Et pour la question initiale
    Faut il respecter un nombre limité d’instruction if pour qu’un programme tourne correctement ?
    En théorie, non.
    Dans la pratique, ça dépend de toi et de ta capacité à lire et à maintenir un code complexe avec énormément de if... En fait, il n'y a pas de loi... Un prof disait "jamais plus de 3 if ou boucles imbriqués" mais ça n'a aucune valeur de "standard"... Il est toujours plus interessant d'avoir du code bien découpé (avec des fonctions/méthodes) que des gros blocs de codes...

  9. #9
    Membre Expert
    Avatar de Joel F
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Septembre 2002
    Messages
    918
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2002
    Messages : 918
    Par défaut
    Citation Envoyé par Fabllot Voir le message
    Un prof disait "jamais plus de 3 if ou boucles imbriqués"
    Dur pour faire du calcul sur des matrices à 5 dimensions :€

  10. #10
    Rédacteur
    Avatar de 3DArchi
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    7 634
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 7 634
    Par défaut
    Citation Envoyé par Joel F Voir le message
    Dur pour faire du calcul sur des matrices à 5 dimensions :€
    Ca veut dire que t'es en O(n^5)...

    Pour aller dans le sens de Fallbot, c'est un indicateur : en général après 3 imbrications de if, la lecture et par conséquent la compréhension devient plus difficile rendant la probabilité de bug plus élevé. Dans la réalité, cela s'avère souvent vrai !

  11. #11
    Membre émérite
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    780
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mai 2006
    Messages : 780
    Par défaut
    Je dirais qu'il faut être clair... et ça il y aura beau avoir toutes les règles que tu veux, c'est une question de discipline personnelle.

    Faire des fonctions quand il faut, indenter, faire des commentaires judicieux...


    et puis la std::string, ça suffira dans 99% des cas non? Je sais c'est pas trop le sujet mais je pense aux gens qui lisent le forum et se font des fausses idées.

  12. #12
    Membre Expert
    Avatar de Joel F
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Septembre 2002
    Messages
    918
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2002
    Messages : 918
    Par défaut
    Citation Envoyé par 3DArchi Voir le message
    Ca veut dire que t'es en O(n^5).
    je boutadais

Discussions similaires

  1. Instructions ROL et ROR
    Par bigbang dans le forum Assembleur
    Réponses: 13
    Dernier message: 01/03/2003, 02h06
  2. Passer de la zone d'édition vers une instruction sql
    Par tripper.dim dans le forum C++Builder
    Réponses: 2
    Dernier message: 27/11/2002, 14h44
  3. Instruction pour créer un fichier text ???
    Par Soulsurfer dans le forum Langage
    Réponses: 2
    Dernier message: 06/08/2002, 11h17
  4. [Crystal Report][VB6] instruction PrintReport
    Par yyyeeeaaahhh dans le forum SDK
    Réponses: 4
    Dernier message: 29/07/2002, 14h58
  5. [TASM] Problème concernant l'instruction LGDT
    Par Ninkosen dans le forum Assembleur
    Réponses: 3
    Dernier message: 15/07/2002, 19h09

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