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

Contribuez Discussion :

Best of des erreurs débutant


Sujet :

Contribuez

  1. #1
    Membre émérite
    Avatar de SpiceGuid
    Homme Profil pro
    Inscrit en
    Juin 2007
    Messages
    1 704
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire (Rhône Alpes)

    Informations forums :
    Inscription : Juin 2007
    Messages : 1 704
    Points : 2 990
    Points
    2 990
    Par défaut Best of des erreurs débutant
    À mon avis ces exemples n'ont pas leur place dans un cours.
    Pas plus dans une FAQ si on la limite à une liste de Q/R.
    Mais ce n'est pas une raison pour ne pas les collecter.
    Remarque: pensez quand même à préciser où sont les erreurs, et ce qu'il conviendrait de faire pour les corriger



    Exemple proposé par Alex_pi :
    Citation Envoyé par Enoncé
    • si p = 0 alors 1
    • si p = n alors 1
    • sinon C(n-1,p) + C(n-1,p-1)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    (* wrong code *)
    let rec binomial(n,p) =
      match p with 
      | 0 -> 1
      | n -> 1
      | _ -> binomial(n-1,p) + binomial(n-1,p-1)
      ;;
    Ce code est faux et incorrect par rapport à l'énoncé, il renverra toujours 1 quelque soient les valeurs de n et p.
    En effet, le compilateur vous explique que la 3ième clause ne sera jamais utilisée:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Characters 65-66:
    Warning U: this match case is unused.
        | _ -> binomial(n-1,p) + binomial(n-1,p-1)
    La raison c'est que la 2nd clause masque la 3ième parce que n est une nouvelle variable.
    Une clause dans un filtrage n'est pas une conditionnelle (comme if p = n then 1) mais une déclaration (comme let n = p in 1).
    Pour faire un test d'égalité utilisez plutôt une conditionnelle, comme ici:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    (* correct code *)
    let rec binomial(n,p) =
      if p = 0 or p = n then 1
      else binomial(n-1,p) + binomial(n-1,p-1) ;;

  2. #2
    Inactif  
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    1 958
    Détails du profil
    Informations personnelles :
    Âge : 59
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 1 958
    Points : 2 467
    Points
    2 467
    Par défaut
    C'est une bonne idée ce sujet.

Discussions similaires

  1. question d'un débutant sur la gestion des erreurs en VBA
    Par David1259 dans le forum VBA Access
    Réponses: 1
    Dernier message: 03/01/2009, 12h43
  2. [Débutant] Gestion des erreurs
    Par ghohm dans le forum Struts 1
    Réponses: 5
    Dernier message: 07/06/2007, 12h17
  3. [Débutant] Gestion des erreurs
    Par ghohm dans le forum Struts 1
    Réponses: 5
    Dernier message: 01/06/2007, 11h13
  4. Réponses: 12
    Dernier message: 21/06/2006, 09h31
  5. [Débutant][PL/SQL] Gestion des erreurs
    Par weebib dans le forum Oracle
    Réponses: 4
    Dernier message: 13/06/2006, 16h22

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