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

Algorithmes et structures de données Discussion :

Réduction de code


Sujet :

Algorithmes et structures de données

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    176
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 176
    Par défaut Réduction de code
    Bonjour, je me pose une petite question :

    J'ai remarqué que pour faire le test suivant qui prend 3 lignes de code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Si B > A
      alors A = B
    fin si
    On pouvait également le résumer sur une seule ligne "plus longue" avec :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    A = B*(B>A) + A*(A>=B)
    (Avec B>A et A>=B deux opérations logiques qui renvoient 0 ou 1)


    Je me demandais s'il existait une façon de faire encore plus court ?

    Merci

  2. #2
    Expert confirmé
    Avatar de Jedai
    Homme Profil pro
    Enseignant
    Inscrit en
    Avril 2003
    Messages
    6 245
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Avril 2003
    Messages : 6 245
    Par défaut
    Dans certains langages tu auras :
    Dans d'autres "if else" est une expression :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    A = (if B > A then B else A);
    En bref ça dépend du langage, et comme tu n'as pas précisé...

    --
    Jedaï

  3. #3
    Rédacteur

    Avatar de khayyam90
    Homme Profil pro
    Architecte de système d’information
    Inscrit en
    Janvier 2004
    Messages
    10 371
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Architecte de système d’information

    Informations forums :
    Inscription : Janvier 2004
    Messages : 10 371
    Par défaut
    Certains langages autorisent l'opérateur ternaire pour obtenir
    mais quelle est la raison de cette recherche de code minimal ? L'utilisation d'un if donnera bien souvent le code le plus rapide, même si tu as 3 lignes de plus.

    EDIT: grilled

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    176
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 176
    Par défaut
    Oki merci pour vos réponses

    Le langage en question est Matlab et apparemment, il n'autorise pas l'opérateur ternaire.

    La raison de cette réduction de code est que j'ai une dizaine de variables à comparer à chaque fois à une valeur fixe qui correspond au maximum.

    Donc le code me donne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    if var1 > var1_max
      var1_max = var1;
    end
    if var2 > var2_max
      var2_max = var2;
    end
     
    ...
    Et je ne trouvais pas ça très esthétique ni très lisible de lister une 10aine de if end à la suite.

    C'est simplement pour ça :-)

  5. #5
    Expert confirmé
    Avatar de Jedai
    Homme Profil pro
    Enseignant
    Inscrit en
    Avril 2003
    Messages
    6 245
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Avril 2003
    Messages : 6 245
    Par défaut
    Et tu ne pourrais pas plutôt utiliser un tableau et faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    for i = 1 to 10
      if var[i] > var_max[i]
      then var_max[i] <- var[i]
    ??

    --
    Jedaï

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    176
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 176
    Par défaut
    Si en effet merci pour l'idée, mais le code étant déjà assez "complexe" comme ça j'ai préféré rester clair avec des noms explicites.

    En plus mes variables "max" sont déjà des tableaux lol. Donc ça aurait fait des tableaux à double indice alors que là je suis avec des noms explicites comme Temps_max, Energie_max,...

    C'est sur qu'avec plus de 10 variables j'aurai fait une boucle je pense.

    Mais ma question était juste par curiosité pour voir s'il n'existait pas une méthode simple


    Au final, j'en suis resté à l'utilisation de la fonction max comme ça mon code tient sur 10 lignes au lieu de 30 et il reste lisible.

    Merci pour vos idées

  7. #7
    Expert confirmé
    Avatar de Jedai
    Homme Profil pro
    Enseignant
    Inscrit en
    Avril 2003
    Messages
    6 245
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Avril 2003
    Messages : 6 245
    Par défaut
    Il y a aussi la possibilité d'écrire une fonction maximum() qui prend ton tableau/truc en paramètre et te renvoie son maximum, ça sera nettement plus clair déjà (d'ailleurs je serais surpris que ça n'existe pas déjà en Matlab).

    --
    Jedaï

  8. #8
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    176
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 176
    Par défaut
    Citation Envoyé par Jedai Voir le message
    (d'ailleurs je serais surpris que ça n'existe pas déjà en Matlab).

    Oui c'est la solution que j'ai adoptée au final

    C'est plus compréhensible que l'opérateur ternaire lol (même si ça parait moins "scientifique" mdr)

    Voilà sujet résolu merci

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Recherche plugin pour les réductions de code Java
    Par voyager75 dans le forum Eclipse Java
    Réponses: 5
    Dernier message: 24/07/2011, 07h52
  2. Compression & Réduction du code
    Par Arnaud F. dans le forum jQuery
    Réponses: 2
    Dernier message: 28/08/2010, 13h01
  3. réduction de code
    Par levaron dans le forum Langage
    Réponses: 3
    Dernier message: 02/06/2009, 09h16
  4. réduction de code
    Par lefelinherbivore dans le forum ActionScript 1 & ActionScript 2
    Réponses: 1
    Dernier message: 24/04/2008, 21h49
  5. Réduction de code
    Par mouaa dans le forum VBA Access
    Réponses: 13
    Dernier message: 27/12/2007, 14h45

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