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 :

programmation en caml light


Sujet :

Caml

  1. #1
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 5
    Points : 1
    Points
    1
    Par défaut programmation en caml light
    Bonjour
    Pouvez vous maider a repondre a ces questions dalgorithme et de programmation en caml light, je suis vraiment perdu...dc si vous pouviez me débloquer....
    Merci d'avance!


    On represente un polynome par une liste de coefficients.
    Le polynoe nul sera indifferement represente par une liste vide ou une liste de zéros.
    On envisage 2 representations possibles: ordonner la liste dans le sens croissant ou decroissant des degres.

  2. #2
    Membre averti
    Avatar de Strab
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    338
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 338
    Points : 330
    Points
    330
    Par défaut
    Tu n'as pas précisé quelle est le but du problème, ni où tu es bloqué...

  3. #3
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 5
    Points : 1
    Points
    1
    Par défaut
    on nous demande pour chacune des conventions de realiser le calcul de la dérivée d'un polynome. Or je nai jamais utilise Caml de ma vie ni fait de programmation donc si vous pouviez meclairer...ce serait sympa!

  4. #4
    Rédacteur/Modérateur

    Avatar de gorgonite
    Homme Profil pro
    Ingénieur d'études
    Inscrit en
    Décembre 2005
    Messages
    10 322
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur d'études
    Secteur : Transports

    Informations forums :
    Inscription : Décembre 2005
    Messages : 10 322
    Points : 18 679
    Points
    18 679
    Par défaut
    l'ordre décroissant donnerait cela...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    let rec deriv_aux poly n =
       match poly with
          [x] -> []
          a::q -> (n*a)::(deriv_aux q (n-1))
    in
     
    let deriv poly =
       let n = list_length poly in
       deriv_aux poly (n-1)
    in
    Evitez les MP pour les questions techniques... il y a des forums
    Contributions sur DVP : Mes Tutos | Mon Blog

  5. #5
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 5
    Points : 1
    Points
    1
    Par défaut
    mais....comment un programme peut-il finir par "in"?? je croyais que "let...in" devait designer une variable locale??

  6. #6
    Rédacteur/Modérateur

    Avatar de gorgonite
    Homme Profil pro
    Ingénieur d'études
    Inscrit en
    Décembre 2005
    Messages
    10 322
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur d'études
    Secteur : Transports

    Informations forums :
    Inscription : Décembre 2005
    Messages : 10 322
    Points : 18 679
    Points
    18 679
    Par défaut
    Citation Envoyé par sicav
    mais....comment un programme peut-il finir par "in"?? je croyais que "let...in" devait designer une variable locale??


    let ... in sert pour déclarer une variable (les fonctions sont aussi des variables un peu particulières,

    quand tu mets let ... ;; c'est que tu es au niveau du top level
    Evitez les MP pour les questions techniques... il y a des forums
    Contributions sur DVP : Mes Tutos | Mon Blog

  7. #7
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 5
    Points : 1
    Points
    1
    Par défaut
    il faut dc quapres le "in" jecrive la suite du programme!!...c'est a dire définir mon polynome??

  8. #8
    Rédacteur/Modérateur

    Avatar de gorgonite
    Homme Profil pro
    Ingénieur d'études
    Inscrit en
    Décembre 2005
    Messages
    10 322
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur d'études
    Secteur : Transports

    Informations forums :
    Inscription : Décembre 2005
    Messages : 10 322
    Points : 18 679
    Points
    18 679
    Par défaut
    Citation Envoyé par sicav
    il faut dc quapres le "in" jecrive la suite du programme!!...c'est a dire définir mon polynome??

    tu suis des cours de caml en ce moment ???
    si oui, faudrais que tu demandes vite de faire des tp


    voilà un exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    let rec deriv_aux poly n =
       match poly with
          [x] -> []
          a::q -> (n*a)::(deriv_aux q (n-1))
    in
     
    let deriv poly =
       let n = list_length poly in
       deriv_aux poly (n-1)
    in
     
    let p = 4::5::6::0::1::[] in
    let deriv_p = deriv p ;;
    Evitez les MP pour les questions techniques... il y a des forums
    Contributions sur DVP : Mes Tutos | Mon Blog

  9. #9
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 5
    Points : 1
    Points
    1
    Par défaut
    je suis désolé mais je ne comprends meme pas lexemple...(mais je ne veux pas desesperer!!)
    puvez vous mexpliquer pr loidre decroissant..puis je verifierai si jai bien compris avec lordre croissant???

  10. #10
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    63
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2007
    Messages : 63
    Points : 54
    Points
    54
    Par défaut
    Salut,

    Je ne suis vraiment pas un pro du Caml, mais je peux essayer de te faire un petit décryptage vite fait:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    let rec deriv_aux poly n =
       match poly with
          [x] -> []
          a::q -> (n*a) :: (deriv_aux q (n-1))
    in
    tu définis (localement) la fonction deriv_aux avec les variables poly et n ;
    si poly se résume à une constante (liste a un seul terme) tu ressors la liste vide;
    si c'est une liste à plusieurs termes ,
    donc avec la définition récursive, tu appliques à la partie q de la liste (c'est-à-dire la liste sans le terme a) la fonction deriv_aux mais avec (n-1);
    autrement dit, tu multiplies ton premier terme par n, le second par (n-1) et ainsi de suite.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    let deriv poly =
       let n = list_length poly in
       deriv_aux poly (n-1)
    in
    ta fonction deriv_aux sera donc définie uniquement pur ce qui suit (jusqu'à ton prochain ;; );
    deriv se contente d'appliquer deriv_aux à poly mais ca t'évite d'avoir à écrire à chaque fois le degré du polynome: avec let n = etc... , deriv ajuste le n variable de deriv_aux sur la taille de la liste poly

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    let p = 4::5::6::0::1::[] in
    let deriv_p = deriv p ;;
    tu définis le cas particulier du polynome sur lequel tu veux faire ta dérivée, en l'occurrence 1 + 6x^2 +5x^3 + 4x^4, toujours localement;
    comme tu ne peux pas simplement écrire
    deriv p;;
    tu définis deriv_p qui la valeur de deriv appliquée à p;
    (et c'est la seule chose qui ne soit pas définie localement ici)

    C'est plus clair?

  11. #11
    Rédacteur/Modérateur

    Avatar de gorgonite
    Homme Profil pro
    Ingénieur d'études
    Inscrit en
    Décembre 2005
    Messages
    10 322
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur d'études
    Secteur : Transports

    Informations forums :
    Inscription : Décembre 2005
    Messages : 10 322
    Points : 18 679
    Points
    18 679
    Par défaut
    excellente explication


    ps: en effet, j'avais oublié le rec
    Evitez les MP pour les questions techniques... il y a des forums
    Contributions sur DVP : Mes Tutos | Mon Blog

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

    Informations forums :
    Inscription : Juillet 2005
    Messages : 1 958
    Points : 2 467
    Points
    2 467
    Par défaut
    Citation Envoyé par gorgonite
    l'ordre décroissant donnerait cela...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    let rec deriv_aux poly n =
       match poly with
          [x] -> []
          a::q -> (n*a)::(deriv_aux q (n-1))
    in
     
    let deriv poly =
       let n = list_length poly in
       deriv_aux poly (n-1)
    in
    Vous vous rendez compte que vous etes entrain de donner une réponse d'une question qu'un prof lui a certainement posé dans un questionnaire de TP ??? (vous parce que vous êtes deux)

    Il faut aiguiller pour mener vers la solution mais pas lui donner une réponse toute machée !

    Chu outré là. Je ne pensais pas que le but du forum était de faire les devoirs des gens.

  13. #13
    Rédacteur/Modérateur

    Avatar de gorgonite
    Homme Profil pro
    Ingénieur d'études
    Inscrit en
    Décembre 2005
    Messages
    10 322
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur d'études
    Secteur : Transports

    Informations forums :
    Inscription : Décembre 2005
    Messages : 10 322
    Points : 18 679
    Points
    18 679
    Par défaut
    Citation Envoyé par Garulfo
    Vous vous rendez compte que vous etes entrain de donner une réponse d'une question qu'un prof lui a certainement posé dans un questionnaire de TP ??? (vous parce que vous êtes deux)

    Il faut aiguiller pour mener vers la solution mais pas lui donner une réponse toute machée !

    Chu outré là. Je ne pensais pas que le but du forum était de faire les devoirs des gens.

    vu la date des posts, il est probable qu'il s'agisse d'un élève de sup qui commence à avoir ses premiers tp de camllight...

    par ailleurs, je lui ai donné la solution de la moitié de son problème : il reste à gérer le cas des polynomes stockés dans des listes croissantes (ce qui est un peu plus subtil )

    j'espérais juste que cela l'inciterait à essayer de faire la deuxième question...


    par ailleurs, c'est son premier post ici... on a été gentil, ce qui ne signifie qu'on recommencera pour chaque exo qu'il postera à l'avenir
    Evitez les MP pour les questions techniques... il y a des forums
    Contributions sur DVP : Mes Tutos | Mon Blog

  14. #14
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    63
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2007
    Messages : 63
    Points : 54
    Points
    54
    Par défaut
    Citation Envoyé par Garulfo
    Vous vous rendez compte que vous etes entrain de donner une réponse d'une question qu'un prof lui a certainement posé dans un questionnaire de TP ??? (vous parce que vous êtes deux)

    Il faut aiguiller pour mener vers la solution mais pas lui donner une réponse toute machée !

    Chu outré là. Je ne pensais pas que le but du forum était de faire les devoirs des gens.

    Tu as probablement raison Garulfo, cela dit il a vraiment l'air de debuter vraiment, et ca aide quand meme d'avoir 3-4 bouts de codes commentes pour se lancer.

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

    Informations forums :
    Inscription : Juillet 2005
    Messages : 1 958
    Points : 2 467
    Points
    2 467
    Par défaut
    Citation Envoyé par Amergin
    Tu as probablement raison Garulfo, cela dit il a vraiment l'air de debuter vraiment, et ca aide quand meme d'avoir 3-4 bouts de codes commentes pour se lancer.
    Je ne suis pas d'accord.
    Quand je donne un exercice en classe, je n'aime pas voir que certains éléments ont été donné par une personne externe qui ne connaît rien à ce que j'enseigne (je parle du plan de cours, pas de la qualité de vos réponses )

    Le prof a peut-être une idée... il a peut être fourni des éléments.
    Il faut guider, mais pas donner.
    Au mieux, ça ne dérangera rien et effectivement la personne va tout comprendre. Mais au pire, ça peut faire couler un cours (en tout cas les miens) de ne pas suivre les consignes.

    Menfinbon, d'un autre côté... c'est un très bon forum...
    Je ne veux pas faire croire que je suis uniquement aigri

  16. #16
    Candidat au Club
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 2
    Points : 2
    Points
    2
    Par défaut
    J'irai même jusqu'à ajouter que l'élève en question n'as pas lu toute la consigne ou tout du moins a oublié de préciser la notion de coût algorythmique qui correspond en grande partie a l'interêt de l'exercice... Ainsi "On veillera à ne pas induire de surcoût en calculs (surtout en multiplications), pas plus qu'en parcours de liste"... Sinon tu peux aller voir le commentaire que j'ai laissé à ton camarade (ou peut-être est-ce toi) si mon humble avis sur ce genre de pratique t'interesse...

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

    Informations forums :
    Inscription : Juillet 2005
    Messages : 1 958
    Points : 2 467
    Points
    2 467
    Par défaut
    Citation Envoyé par Xaviersief
    J'irai même jusqu'à ajouter que l'élève en question n'as pas lu toute la consigne [...]
    LOL on a trouvé le prof

    Bon en tout cas, personnellement je n'apprécie pas ça quand j'enseigne et malheureusement ça se retourne très souvent contre l'étudiant car mes consignes sont précises et des normes départementales sont imposées.

    Donc votre gentillesse peut se retourner contre lui.

  18. #18
    Rédacteur/Modérateur

    Avatar de gorgonite
    Homme Profil pro
    Ingénieur d'études
    Inscrit en
    Décembre 2005
    Messages
    10 322
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur d'études
    Secteur : Transports

    Informations forums :
    Inscription : Décembre 2005
    Messages : 10 322
    Points : 18 679
    Points
    18 679
    Par défaut
    Citation Envoyé par Garulfo
    Le prof a peut-être une idée... il a peut être fourni des éléments.
    Il faut guider, mais pas donner.
    Au mieux, ça ne dérangera rien et effectivement la personne va tout comprendre. Mais au pire, ça peut faire couler un cours (en tout cas les miens) de ne pas suivre les consignes.

    vu la question, si cette personne est un(e) étudiant(e) français(e), je peux supposer qu'il (elle) est en Maths sup (MPSI option info), une filière très "bornée" qui formate les élèves pour passer une certain type de concours... et ayant moi-même suivi ce parcours, je pense que ça ne changera rien de donner une fois la réponse (puisque tous les élèves vont bachoter en plus des cours sur les quelques bouquins classiques... qui détaillent souvent cet exemple )
    Evitez les MP pour les questions techniques... il y a des forums
    Contributions sur DVP : Mes Tutos | Mon Blog

  19. #19
    Futur Membre du Club
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 5
    Points : 6
    Points
    6
    Par défaut
    sinon pour en revenir au probleme, personnellement je trouve l'ordre decroissant, cad [1;2;3] represente X²+2X+3; plus subtil et moins abordable que l'ordre croissant qui me prend 5 lignes (oui je sais, les programmes les plus courts ne sont pas les plus évidents, masi bon..), cependant je me suis passé de l'utilisation de list_length -qui implique un parcours de liste supplementaire- et cela implique de changer un peu la façon de tourner le probleme notamment pour cet ordre décroissant.

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

    Informations forums :
    Inscription : Juillet 2005
    Messages : 1 958
    Points : 2 467
    Points
    2 467
    Par défaut
    Citation Envoyé par gorgonite
    vu la question, si cette personne est un(e) étudiant(e) français(e), je peux supposer qu'il (elle) est en Maths sup (MPSI option info), une filière très "bornée" qui formate les élèves pour passer une certain type de concours... et ayant moi-même suivi ce parcours, je pense que ça ne changera rien de donner une fois la réponse (puisque tous les élèves vont bachoter en plus des cours sur les quelques bouquins classiques... qui détaillent souvent cet exemple )
    Je connais très bien les maths sup.
    J'ai immigré au Québec, mais je viens de France.

    Reste qu'il ne faut pas passer à côté du prof.
    Surtout quand celui-ci vient sur le site... non ?

    Sinon en université aussi on apprend le caml.

Discussions similaires

  1. pb pour forcer un typage avec caml-light
    Par Moi_Emilie dans le forum Caml
    Réponses: 24
    Dernier message: 19/04/2007, 09h40
  2. [Caml Light] Nombre de bits
    Par Nilss dans le forum Caml
    Réponses: 4
    Dernier message: 23/03/2007, 20h32
  3. [Caml Light] Librairie 'graphics" et Linux
    Par paf le chiot dans le forum Caml
    Réponses: 11
    Dernier message: 16/03/2007, 18h16
  4. Typage Caml light (je suis totalement perdu!)
    Par ficarre dans le forum Caml
    Réponses: 11
    Dernier message: 24/02/2007, 14h42
  5. Réponses: 3
    Dernier message: 07/12/2006, 10h15

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