Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2953 connectés 

  FORUM HardWare.fr
  Programmation

  [Newbie] Vous préferez quoi : Case ou des If imbriqués ?

 



 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[Newbie] Vous préferez quoi : Case ou des If imbriqués ?

n°116685
Jubijub
Parce que je le VD bien
Posté le 24-03-2002 à 01:12:46  profilanswer
 

Je sais pas si ca existe pour tous les langages...
 
en algo ca donne :  
 

Code :
  1. SELON CAS
  2. CAS condition 1
  3.      traitement 1
  4. CAS condition 2
  5.      traitement 2
  6. CAS condition x
  7.      traitement x
  8. CAS autre
  9.      traitement autre
  10. FINCAS
  11. et pour IF
  12. SI
  13.    ALORS
  14.        SI
  15.           ALORS
  16.           SINON
  17.        FINSI
  18.    SINON
  19.        SI
  20.           ALORS
  21.           SINON
  22.        FINSI
  23. FINSI


 
Vous préférez quelle méthode, et pourquoi ?

 

[jfdsdjhfuetppo]--Message édité par Jubijub--[/jfdsdjhfuetppo]


---------------
Jubi Photos : Flickr - 500px
mood
Publicité
Posté le 24-03-2002 à 01:12:46  profilanswer
 

n°116691
chrisbk
-
Posté le 24-03-2002 à 01:35:50  profilanswer
 

boaf depends des cas, generalement si il y a beaucoup de choix un switch/case est ptet mieux, si y'en a juste 2/3 if/else fera tres bien l'affaire.....

n°116716
LeGreg
Posté le 24-03-2002 à 04:31:37  profilanswer
 

ca depend du langage
en Caml, le pattern matching trop fort.
En C/C++, ben tu ne peux faire un switch..case
que sur des types entiers donc c'est vite vu..
 
LEGREG

n°116722
juju_le_ba​rbare
Vous fiez pas aux apparences !
Posté le 24-03-2002 à 09:18:27  profilanswer
 

visuellement le selon cas est mieux, mais niveau compilation c'est moins bien il me semble...
 
@++


---------------
Visitez mon site : http://www.jujubarbare.linux-fan.com
n°116731
THE REAL S​MILEY
The Real Résistance!
Posté le 24-03-2002 à 09:46:29  profilanswer
 

Le Case  :bounce:


---------------
༼ つ ◕_◕ ༽つ
n°116737
gizmo
Posté le 24-03-2002 à 10:28:09  profilanswer
 

legreg a écrit a écrit :

ca depend du langage
en Caml, le pattern matching trop fort.
En C/C++, ben tu ne peux faire un switch..case
que sur des types entiers donc c'est vite vu..
 
LEGREG  




 
En c++ tu peux faire des swith/case sur des string aussi.

n°116738
gizmo
Posté le 24-03-2002 à 10:29:55  profilanswer
 

Mais sinon pour répondre à la question original, le case est bien plus lisible, flexible et permet au compilateur de choisir plus facilement la meilleur approche suivant le système.

n°116739
THE REAL S​MILEY
The Real Résistance!
Posté le 24-03-2002 à 10:30:05  profilanswer
 

gizmo a écrit a écrit :

 
 
En c++ tu peux faire des swith/case sur des string aussi.  




Correct, par contre en Java on peut pas, et c'est bien embêtant


---------------
༼ つ ◕_◕ ༽つ
n°116741
gizmo
Posté le 24-03-2002 à 10:40:05  profilanswer
 

oui mais bon, si je devais dire tout le bien que je pense de java, je serais grossier :D

n°116746
THE REAL S​MILEY
The Real Résistance!
Posté le 24-03-2002 à 10:47:22  profilanswer
 

gizmo a écrit a écrit :

oui mais bon, si je devais dire tout le bien que je pense de java, je serais grossier :D  




t'es pas sympa, perso, je commence à apprécier, ne serait-ce que pour la portabilité


---------------
༼ つ ◕_◕ ༽つ
mood
Publicité
Posté le 24-03-2002 à 10:47:22  profilanswer
 

n°116752
_gtm_
Posté le 24-03-2002 à 11:37:37  profilanswer
 

Ben moi je préfère des fonctions virtuelles et des classes dérivées :D

n°116800
Jubijub
Parce que je le VD bien
Posté le 24-03-2002 à 14:53:43  profilanswer
 

arf vous m'avez fait peur sur le C++ ...
 
même en script VDbase 5.5 on peut le faire :D ...c d'ailleurs tout chelou comme language, c  un mélange de Dos shell, de basic et de pascal...


---------------
Jubi Photos : Flickr - 500px
n°116801
verdoux
And I'm still waiting
Posté le 24-03-2002 à 14:58:58  profilanswer
 

gizmo a écrit a écrit :

 
 
En c++ tu peux faire des swith/case sur des string aussi.  




??

n°116802
Tetragramm​aton IHVH
dieu unique => pensée unique
Posté le 24-03-2002 à 15:15:50  profilanswer
 

Le case, c'est fait pour et en plus c'est clair.  
 
Le if imbriqué, ça allait au temps du basic...


---------------
"Dieu a exploité tous nos complexes d'infériorité, en commençant par notre incapacité de croire à notre propre divinité." - Emil Michel Cioran
n°116803
Tetragramm​aton IHVH
dieu unique => pensée unique
Posté le 24-03-2002 à 15:16:38  profilanswer
 

_gtm_ a écrit a écrit :

Ben moi je préfère des fonctions virtuelles et des classes dérivées :D  




 
Bien vu, moi aussi  ;)


---------------
"Dieu a exploité tous nos complexes d'infériorité, en commençant par notre incapacité de croire à notre propre divinité." - Emil Michel Cioran
n°116820
_gtm_
Posté le 24-03-2002 à 15:55:25  profilanswer
 

Pour un switch sur une string : je pense pas. Mais voici une petite proposition :  
 
On prend une fonction qui à une chaine associe un nombre.
Comme on écrit des cases, on connait deja toutes les possibilités, donc on peut vérifier si la fonction donne bien un résultat différent pour chaque possibilité.
Et ensuite on fait le case sur les nombres calculés.
 
En gros, je propose d'utiliser une fonction de hachage et de faire le case sur le résultat. Il se peut même qu'en perf on y gagne, selon la fonction utilisée, car il n'y a qu'une opération sur des chaines à faire

n°116830
farib
Posté le 24-03-2002 à 16:26:30  profilanswer
 

le probleme du case, c'est que tu ne peux comparer qu'a des constantes

n°116836
THE REAL S​MILEY
The Real Résistance!
Posté le 24-03-2002 à 16:36:34  profilanswer
 

farib a écrit a écrit :

le probleme du case, c'est que tu ne peux comparer qu'a des constantes  




voir plus haut, ca dépend des langages


---------------
༼ つ ◕_◕ ༽つ
n°116893
Jubijub
Parce que je le VD bien
Posté le 24-03-2002 à 17:55:15  profilanswer
 

c vrai que tu peux faire une procédure de translation en string pour comparer...


---------------
Jubi Photos : Flickr - 500px
n°116975
LeGreg
Posté le 24-03-2002 à 22:48:47  profilanswer
 

gizmo a écrit a écrit :

 
En c++ tu peux faire des swith/case sur des string aussi.  




 
tu as un exemple de code qui compile??
 
LEGREG

n°117008
gizmo
Posté le 24-03-2002 à 23:34:34  profilanswer
 

me suis trompé de nom, c'est pas des string, mais des char, honte sur moi :o

n°117071
antp
Super Administrateur
Champion des excuses bidons
Posté le 25-03-2002 à 09:43:21  profilanswer
 

juju_le_barbare a écrit a écrit :

visuellement le selon cas est mieux, mais niveau compilation c'est moins bien il me semble...
 
@++  




 
Moi j'avais entendu dire le contraire...
Ce qui semblerait logique, le compilateur crée son if de la manière la plus optimisée possible.
D'ailleurs un truc intéressant:
if expression then
  valeur := 1
else
  valeur := autrechose;
 
Il arrive que ce soit traduit par le compilateur en:
valeur := 1;
if not expression then
  valeur := autrechose;
 
J'ai déjà observé ce phénomène dans Delphi, pas moyen de mettre un breakpoint sur valeur := 1 suivant le if, car la ligne n'existait pas dans le programme compilé :o


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
n°117134
matafan
Posté le 25-03-2002 à 13:37:23  profilanswer
 

Ma remarque est un peu hors-sujet mais avec un bon design objet (donc avec un langage orienté objet, en général), l'emploi de switch ou de if imbriqués devrait vraiment être exceptionnel. Il est bien plus propre, lisible, extensible, maintenable (...) de faire jouer le polymorphisme.
 
Maintenant c'est sur que des fois ça dépanne, et qu'on ne peut pas toujours se permettre de reprendre le design pour éviter un switch à deux cas.

n°117276
LeGreg
Posté le 25-03-2002 à 17:03:31  profilanswer
 

Matafan a écrit a écrit :

Ma remarque est un peu hors-sujet mais avec un bon design objet (donc avec un langage orienté objet, en général), l'emploi de switch ou de if imbriqués devrait vraiment être exceptionnel. Il est bien plus propre, lisible, extensible, maintenable (...) de faire jouer le polymorphisme.




 
design objet, design objet..
ca remplace juste le switch sur des types
pas sur des valeurs..

Code :
  1. switch (nbChambres) {
  2.   case 0 :
  3.     print "aucune chambre";
  4.   case 1 :
  5.     print "une chambre";
  6.   case 2 :
  7.     print "deux chambres";
  8.   default :
  9.     print "plein de chambres";   
  10. }


 
mais je dois etre de la vieille ecole..
 
LEGREG

n°117299
antp
Super Administrateur
Champion des excuses bidons
Posté le 25-03-2002 à 17:29:36  profilanswer
 

Matafan a écrit a écrit :

avec un bon design objet (donc avec un langage orienté objet, en général), l'emploi de switch ou de if imbriqués devrait vraiment être exceptionnel. Il est bien plus propre, lisible, extensible, maintenable (...) de faire jouer le polymorphisme.




 
:heink:
C'est quoi le rapport ?


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
n°117361
matafan
Posté le 25-03-2002 à 19:27:32  profilanswer
 

Le rapport entre mon post et le topic ou entre les switch et le polymorphisme ?

n°117377
antp
Super Administrateur
Champion des excuses bidons
Posté le 25-03-2002 à 20:04:52  profilanswer
 

Bhen je vois pas trop en quoi l'orienté objet peut éviter dans quasi tout les cas les switch et les if imbriqué :/
Ok pas besoin de faire des
if objet is TMachin then
else if objet is TTruc then
else if objet is TBrol then
...
Mais y a quand même d'autres utilisations...


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
n°117391
matafan
Posté le 25-03-2002 à 20:33:25  profilanswer
 

Ben disons qu'il faut prendre le problème dans l'autre sens. Il ne s'agit pas de créer son arborescence d'objets puis de constater a posteriori que certains switch portent sur le type d'objet alors que d'autres portent sur un de leur attribut ; il s'agit de créer son arborescence d'objets de façon à ce que ces switch portent autant que possible sur des types d'objets.
 
On est d'accord, c'est pas toujours possible (enfin surtout, c'est pas toujours intéressant). Mais d'expérience, en java, j'en ai pas fait souvent des switch.

n°117870
Jubijub
Parce que je le VD bien
Posté le 26-03-2002 à 20:53:03  profilanswer
 

moi je débute en prog :D


---------------
Jubi Photos : Flickr - 500px
n°117950
BettaSplen​dens
Tout cul tendu mérite son dû
Posté le 27-03-2002 à 00:14:52  profilanswer
 

le CASE, c bcp mieux... sauf si tu n'as que 2 choix, mais sinon c le top quoi !
un IF/ELSE, c trop limité !


---------------
Tout cul tendu mérite son dû
n°118010
BENB
100% Lux.
Posté le 27-03-2002 à 09:53:09  profilanswer
 

Matafan a écrit a écrit :

Ma remarque est un peu hors-sujet mais avec un bon design objet (donc avec un langage orienté objet, en général), l'emploi de switch ou de if imbriqués devrait vraiment être exceptionnel. Il est bien plus propre, lisible, extensible, maintenable (...) de faire jouer le polymorphisme.
 
Maintenant c'est sur que des fois ça dépanne, et qu'on ne peut pas toujours se permettre de reprendre le design pour éviter un switch à deux cas.  




comment prendre un canon pour tuer une mouche...
 
chaque fois que tu as des switch/case dans une fonction tu dois declarer une hierachie de classe ? bonjour l'efficacite !

n°118025
MC
retour à la raison
Posté le 27-03-2002 à 10:29:31  profilanswer
 

En C, le switch pour la maintenance de code et la lisibilité, le if pour les cas avancés.
 
Eu niveau compil, le switch et les ifs imbriqués donnent a peu près le même code, sauf quand le nombre de case est elevé, ou le switch est plus optimisé/optimisable

n°118434
Jubijub
Parce que je le VD bien
Posté le 27-03-2002 à 22:46:19  profilanswer
 

donc case ou équivalent...
 
c surement une remarque conne, mais je trouve ca hyper lisible, et simple à maintenir...tu classes les occurences dans l'ordre décroissant de proba pour la rapidité, et tu met les récups d'erreur à la fin... ca donne
 
Case le plus probable
...
Case le moins probable
Case erreur la plus probable
Case erreur la moins probable


---------------
Jubi Photos : Flickr - 500px
n°118701
BettaSplen​dens
Tout cul tendu mérite son dû
Posté le 28-03-2002 à 14:47:19  profilanswer
 

complètement d'accord avec toi Jubijub, c klair que pour la maintenance, c vraiment le mieux, et de toute façon, à la compil, c comme des if imbriqués.. donc je vois pas pourquoi se priver de ça lors du codage, vu que c plus simple et plus compréhensible... en plus y'a moins de risque d'erreur de syntaxe..  
 
CASE poweeeeeeeeeer ;-)


---------------
Tout cul tendu mérite son dû
n°118718
Aricoh
gentil mais fo po pousser
Posté le 28-03-2002 à 15:12:38  profilanswer
 

En PERL, j'ai pris l'habitude de gérer mes switch par des hash, chaque clé représente un choix possible
 
Ca donne parfois un truc illisible mais l'expression apparaît sur une seule ligne


---------------
Samsung Galaxy S1 -> Samsung Galaxy S2 -> Samsung Note 2 -> Huawei Ascend Mate 7 -> ZTE Axon 7 -> OnePlus 6T -> Oppo Find X2 PRO
n°118753
Jubijub
Parce que je le VD bien
Posté le 28-03-2002 à 16:57:52  profilanswer
 

c quoi des hash ?
 
sous linux si tu met ca comme paramètre lors d'une décompression quelconque, ca te met des  ########### de progression....mais en prog ?


---------------
Jubi Photos : Flickr - 500px
mood
Publicité
Posté le   profilanswer
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation

  [Newbie] Vous préferez quoi : Case ou des If imbriqués ?

 

Sujets relatifs
[ C ] deux trois questions de newbie...Newbie---------> Need help
[plus que newbie inside] créer un exe à partir d'un raccourci et autreQUESTION d'un NEWBIE... Sur code des jeux :)
[Java] Problème avec int et Object vi encore une question de newbie :Dnewbie : comment tracer une grille sous dos en C
[Newbie]Besoin d'aide pour du batch scripting....[C++] pb de lecture fichier [newbie need help]
[NEWBIE] Aidez-moi à apprendre le Javascript...aide newbie SQL
Plus de sujets relatifs à : [Newbie] Vous préferez quoi : Case ou des If imbriqués ?


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR