Bonjour,
Faut il respecter un nombre limité d’instruction if pour qu’un programme tourne correctement ?
Bonjour,
Faut il respecter un nombre limité d’instruction if pour qu’un programme tourne correctement ?
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 !![]()
C’est juste point de vu esthétique il y a sans doute mieux, ça m’intéresserais de connaître votre méthode.
Tu peux avoir un bloc switch pour éviter l'enchainement de if else if else successifs par exemple :
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 if ("chien" == animal) { // ... } else if ("chat" == animal) { // ... } else if ("oiseau" == animal) { // ... } else if ("poisson" == animal) { // ... } else { // ... }
Tu peux avoir rencontrer l'opérateur arithmétique ' ? : '
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: // ... }
(condition) ? si_vrai : si_faux
devient
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; }
j'espère que ca répond a ta question
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; }![]()
Bonjour,
Argh !
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 !!!
Java acceptera les strings dans switch dans la version 7: http://tech.puredanger.com/java7/#switch
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 strcmpEnvoyé par Fabllot
Oui, mais c'est surtout car un switch s'utilise avec des entiers, il n'est en effet pas possible de "switcher" des strings.Envoyé par Fabllot
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!
Mea culpa ! On va dire faute de frappe !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![]()
C'est bien sûr ce que je voulais dire au fond... http://cpp.developpez.com/faq/cpp/?p...GS_switch_caseOui, mais c'est surtout car un switch s'utilise avec des entiers, il n'est en effet pas possible de "switcher" des strings.
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
En théorie, non.Faut il respecter un nombre limité d’instruction if pour qu’un programme tourne correctement ?
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...
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 !
Ressources proposées par 3DArchi - Les fonctions virtuelles en C++ - Cours et tutoriels C++ - FAQ C++ - Forum C++.
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.
Partager