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

Caml Discussion :

Utilisation superflue d'une instruction ? & fonctionnement de begin/end


Sujet :

Caml

  1. #1
    Invité
    Invité(e)
    Par défaut Utilisation superflue d'une instruction ? & fonctionnement de begin/end
    Bonjour,
    Pour un pôlynome p = x2 + 2x + 3
    Modélisé par ce tableau d'entiers:
    Code OCaml : Sélectionner tout - Visualiser dans une fenêtre à part
    # let fullPolynomial = [|3; 2; 1|];;
    Où le coefficient de valeur 3 et de degrès 0 est à l'indice 0, le coefficient de valeur 2 et de degrès 1 est à l'indice 1 et le coefficient de valeur 1 et de degrès 2 est à l'indice 2.
    Pour imprimer le pôlynome sous la forme 3 + 2x + x^2 j'ai ce code valide :
    Code OCaml : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    (* Définition de la fonction d'impression des monômes *)
    # let printMonomial(coef)(degr) =
        if degr = 0 then print_int(coef) else
        if coef <> 0 then
            begin
                print_string(" + ");
                if coef <> 1 then print_int(coef); print_string("x");
                if degr <> 1 then
                    begin print_string("^"); print_int(degr) end
            end;;
    Code OCaml : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    (* Définition de la fonction d'impression du polynôme *) 
    # let printPolynomial(p) =
        for i = 0 to Array.length(p) - 1 do printMonomial(p.(i))(i) done;;
    Code OCaml : Sélectionner tout - Visualiser dans une fenêtre à part
    # printPolynomial(fullPolynomial); print_newline();;
    Dans la fonction d'impression des monômes je ne comprends pas à quoi sert la ligne 4 (if coef <> 0 then), le code fonctionne sans cette instruction et de toute façon le coefficient ne peut être que différent de zéro??

    Et j'ai du mal avec begin/end, je ne comprends pas vraiment comment ça fonctionne (en fait j'y vais au pif).
    De mes explorations avec:
    Code OCaml : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    # let printMonomial(coef)(degr) =
        if degr = 0 then print_int(coef) else print_string(" + ");
            if coef <> 1 then print_int(coef); print_string("x");
            if degr <> 1 then print_string("^"); print_int(degr);;
    ET:
    Code OCaml : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    # let printMonomial(coef)(degr) =
        if degr = 0 then print_int(coef) else
            begin
                print_string(" + ");
                if coef <> 1 then print_int(coef); print_string("x");
                if degr <> 1 then print_string("^"); print_int(degr); 
            end;;
    J'obtient respectivement 33x^0 + 2x1 + x^2 et 3 + 2x1 + x^2, de même que pour le résultat du code valide je n'arrive pas à saisir le fonctionnement de begin/end dans ce programme (et très certainement en général).

  2. #2
    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 difficulté classique avec les parenthèses en ocaml
    de toute façon le coefficient ne peut être que différent de zéro ?
    Et si le polynôme est X² + 1 le coefficient de x est bien égal à zéro, n'est-ce-pas ?

    begin...end est exactement la même chose que (...) ce qui ne va pas t'aider beaucoup puisque tu as l'air d'être faché(e) avec les parenthèses en ocaml. Tu n'es pas la première ni la dernière personne à souffrir la syntaxe d'ocaml. Dis-toi que ce n'est qu'un sale moment à passer, plus tard tu pourras programmer en Shen.
    Du même auteur: mon projet, le dernier article publié, le blog dvp et le jeu vidéo.
    Avant de poser une question je lis les règles du forum.

  3. #3
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par SpiceGuid Voir le message
    Et si le polynôme est X² + 1 le coefficient de x est bien égal à zéro, n'est-ce-pas ?
    Exact, si p = x² + 1
    La modélisation devient let fullPolynomial = [|1; 0; 1|];; et le résultat avec if coef <> 0 then donne 1 + x^2
    Sans if coef <> 0 then ça donne 1 + 0x + x^2 ce qui est équivalent mais nettement moins pro.

    Citation Envoyé par SpiceGuid Voir le message
    begin...end est exactement la même chose que (...)...
    Oui, j'ai vu ça ce week-end...
    Citation Envoyé par SpiceGuid Voir le message
    ...ce qui ne va pas t'aider beaucoup puisque tu as l'air d'être faché(e) avec les parenthèses en ocaml.
    ...si, si ça m'a drôlement aidé et puis je n'ai absolument rien contre les parenthèses (mauvais procès ).
    Ceci dit avec Shen, à vu de nez, c'est son Zen que l'on doit finir par mettre en parenthèse,... enfin ça n'a pas l'air pire que Lisp.
    Merci pour ta réponse.

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 24/04/2009, 16h41
  2. Réponses: 16
    Dernier message: 15/09/2008, 09h24
  3. Réponses: 2
    Dernier message: 31/01/2008, 14h59
  4. Utilisation d'une dropdownlist (Fonctionnement)
    Par thierry007 dans le forum ASP.NET
    Réponses: 8
    Dernier message: 24/10/2007, 13h03
  5. Utiliser une instruction MMX
    Par pierabobl dans le forum x86 32-bits / 64-bits
    Réponses: 13
    Dernier message: 13/07/2006, 23h46

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