« Discussion:Langage C++/Boucles & Structures Conditionnelles » : différence entre les versions

Le contenu de la page n’est pas pris en charge dans d’autres langues.
Une page de Wikiversité, la communauté pédagogique libre.
Contenu supprimé Contenu ajouté
Aucun résumé des modifications
on signe à la fin
Ligne 1 : Ligne 1 :
==Remarque 1==
--[[Special:Contributions/84.102.39.159|84.102.39.159]] 9 novembre 2008 à 17:24 (UTC)
Les recommandations données quant à (l') (la non) utilisation de ''else if'' sont très vivement critiquables. Les arguments donnés portent sur un exemple volontairement très mal écrit et intuitivement très mauvais : FaitAInferieurB() n'est pas appelé si a = 5, quelque soit b, c'est illogique. En utilisant ''else if'' on aurait tout aussi bien pu écrire l'exemple ainsi :
Les recommandations données quant à (l') (la non) utilisation de ''else if'' sont très vivement critiquables. Les arguments donnés portent sur un exemple volontairement très mal écrit et intuitivement très mauvais : FaitAInferieurB() n'est pas appelé si a = 5, quelque soit b, c'est illogique. En utilisant ''else if'' on aurait tout aussi bien pu écrire l'exemple ainsi :


Ligne 41 : Ligne 41 :


Ce qui n'est pas moins lisible que l'exemple final, au contraire. Je conseille donc vivement de supprimer l'incitation à ne pas utiliser les ''else if'' qui font partie intégrante du langage. Leur utilisation ou non se fait principalement en fonction du contexte. Il faut utiliser la syntaxe la plus intuitive et donc celle qui correspond le mieux à la pensée pour un problème donné. En règle général je dirais que l'utilisation de ''else if'' doit se faire dans un schéma à n "cas" (ici on a bien 3 cas distincts : inférieur, égal, supérieur), mais où l'utilisation de "switch" s'avère impossible à cause de la nature des tests (ce qui est très fréquent).
Ce qui n'est pas moins lisible que l'exemple final, au contraire. Je conseille donc vivement de supprimer l'incitation à ne pas utiliser les ''else if'' qui font partie intégrante du langage. Leur utilisation ou non se fait principalement en fonction du contexte. Il faut utiliser la syntaxe la plus intuitive et donc celle qui correspond le mieux à la pensée pour un problème donné. En règle général je dirais que l'utilisation de ''else if'' doit se faire dans un schéma à n "cas" (ici on a bien 3 cas distincts : inférieur, égal, supérieur), mais où l'utilisation de "switch" s'avère impossible à cause de la nature des tests (ce qui est très fréquent).
--[[Special:Contributions/84.102.39.159|84.102.39.159]] 9 novembre 2008 à 17:24 (UTC)

==Remarque 2==
--[[Special:Contributions/84.102.39.159|84.102.39.159]] 9 novembre 2008 à 18:04 (UTC)
Autre chose, l'utilisation d'accolades, qui est même vivement recommandée dans l'article au sein des ''case'' d'un ''switch'' ne sert strictement à rien... Elle n'améliore pas la lisibilité du programme, car dans ce cas elle est dépendante de l'indentation et n'a aucun effet sur son execution. De plus, l'instruction ''break'' peut être présente avant la fin d'un ''case'', au sein d'une structure conditionnelle par exemple. Pire, le ''break'' peut ne pas être présent et le case suivant sera donc executé (accolades ou pas) ! L'utilisation d'accolades peut donc même porter à confusion !
Autre chose, l'utilisation d'accolades, qui est même vivement recommandée dans l'article au sein des ''case'' d'un ''switch'' ne sert strictement à rien... Elle n'améliore pas la lisibilité du programme, car dans ce cas elle est dépendante de l'indentation et n'a aucun effet sur son execution. De plus, l'instruction ''break'' peut être présente avant la fin d'un ''case'', au sein d'une structure conditionnelle par exemple. Pire, le ''break'' peut ne pas être présent et le case suivant sera donc executé (accolades ou pas) ! L'utilisation d'accolades peut donc même porter à confusion !
--[[Special:Contributions/84.102.39.159|84.102.39.159]] 9 novembre 2008 à 18:04 (UTC)

Version du 9 novembre 2008 à 18:44

Remarque 1

Les recommandations données quant à (l') (la non) utilisation de else if sont très vivement critiquables. Les arguments donnés portent sur un exemple volontairement très mal écrit et intuitivement très mauvais : FaitAInferieurB() n'est pas appelé si a = 5, quelque soit b, c'est illogique. En utilisant else if on aurait tout aussi bien pu écrire l'exemple ainsi :

 if (a > b)
 {
   FaitASuperieurB();
 }
 else if (a == b)
 {
   FaitAEgalB();
 }
 else if (a != 5)
 {
   FaitAInferieurB();
 }
 else
 {
   FaisAInferieurBEtAEgalCinq();
 }
 FaitAutreChose();

Et avec des fonctions plus intuitives :

 if (a > b)
 {
   FaitASuperieurB();
 }
 else if (a == b)
 {
   FaitAEgalB();
 }
 else
 {
   FaitAInferieurB();
 }
 if (a == 5)
 {
   FaisAEgalCinq();
 }
 FaitLaSuite();

Ce qui n'est pas moins lisible que l'exemple final, au contraire. Je conseille donc vivement de supprimer l'incitation à ne pas utiliser les else if qui font partie intégrante du langage. Leur utilisation ou non se fait principalement en fonction du contexte. Il faut utiliser la syntaxe la plus intuitive et donc celle qui correspond le mieux à la pensée pour un problème donné. En règle général je dirais que l'utilisation de else if doit se faire dans un schéma à n "cas" (ici on a bien 3 cas distincts : inférieur, égal, supérieur), mais où l'utilisation de "switch" s'avère impossible à cause de la nature des tests (ce qui est très fréquent). --84.102.39.159 9 novembre 2008 à 17:24 (UTC)[répondre]

Remarque 2

Autre chose, l'utilisation d'accolades, qui est même vivement recommandée dans l'article au sein des case d'un switch ne sert strictement à rien... Elle n'améliore pas la lisibilité du programme, car dans ce cas elle est dépendante de l'indentation et n'a aucun effet sur son execution. De plus, l'instruction break peut être présente avant la fin d'un case, au sein d'une structure conditionnelle par exemple. Pire, le break peut ne pas être présent et le case suivant sera donc executé (accolades ou pas) ! L'utilisation d'accolades peut donc même porter à confusion ! --84.102.39.159 9 novembre 2008 à 18:04 (UTC)[répondre]