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 :

fonction paramétrée par n


Sujet :

Caml

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2012
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2012
    Messages : 7
    Points : 1
    Points
    1
    Par défaut fonction paramétrée par n
    Bonsoir,

    Je dois réaliser une fonction paramétrée par n, dont le résultat est un caractère. Je ne sais pas comment donner un caractère comme résultat!

    Naël

  2. #2
    Membre émérite
    Avatar de prgasp77
    Homme Profil pro
    Ingénieur en systèmes embarqués
    Inscrit en
    Juin 2004
    Messages
    1 306
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Eure (Haute Normandie)

    Informations professionnelles :
    Activité : Ingénieur en systèmes embarqués
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Juin 2004
    Messages : 1 306
    Points : 2 466
    Points
    2 466
    Par défaut
    Salut,
    quand on débute il est bien utile de consulter le manuel de référence. Celui d'OCaml est très bon (j'ai appris ce langage grâce à cet ouvrage), celui de Caml Light, je n'en sais rien (mais j'imagine qu'il est de même qualité). Tu peux trouver le manuel de référence d'OCaml en version html ou pdf. Pour Caml Light, je te laisse googueler.

    Pour répondre tout de même à ta question, les caractères simples sont décris en Caml entourés de guillemets simples ('). Ainsi, 'a' est du type char. Si tu avais d'autres question de ce genre, merci de ne pas les poser sur le forum mais de te référer au manuel (td; dr: RTFM ).

    Cdlt,
    -- Yankel Scialom

  3. #3
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2012
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2012
    Messages : 7
    Points : 1
    Points
    1
    Par défaut
    Je me suis mal exprimé je pense, je sais comment on écrit un caractère.. Pour m'aider à m'expliquer je voudrais savoir si vous connaissez le module Cartes?

    Merci quand même pour le cours, je vais le consulter !

  4. #4
    Membre émérite
    Avatar de prgasp77
    Homme Profil pro
    Ingénieur en systèmes embarqués
    Inscrit en
    Juin 2004
    Messages
    1 306
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Eure (Haute Normandie)

    Informations professionnelles :
    Activité : Ingénieur en systèmes embarqués
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Juin 2004
    Messages : 1 306
    Points : 2 466
    Points
    2 466
    Par défaut
    Tu ne m'expliques pas ton problème là ... Enfin, pour plus d'info sur les caractères en OCaml, le module Char peut aider (le manuel en parle ...).
    -- Yankel Scialom

  5. #5
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2012
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2012
    Messages : 7
    Points : 1
    Points
    1
    Par défaut
    Oui mais justement pour me permettre de m'expliquer je t'ai posé une question
    En cours je travaille sur un module qui s'appelle Cartes, c'est un simulateur qui permet de manipuler des tas de cartes (4 tas). Mon problème est donc celui-ci :

    "Réalisez une fonction couleur_en_char paramétrée par un numéro de tas n, dont le résultat est un caractère. Ce caractère est l'un des caractères suivants :
    • 'T' si la carte située au sommet du tas n est un trêfle;
    • 'K' si la carte située au sommet du tas n est un carreau;
    • 'C' si la carte située au sommet du tas n est un coeur;
    • 'P' si la carte située au sommet du tas n est un pique.

    Donc j'ai voulu commencer à écrire ma fonction en écrivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    let couleur_en_char (n) =
    if sommet_trèfle(n) then ...
    En gros je veux dire que "si le sommet est un trèfle, alors -> 'T' , si c'est un carreau -> 'K' , etc. Mais je ne vois pas comment faire! Merci

  6. #6
    Membre émérite
    Avatar de prgasp77
    Homme Profil pro
    Ingénieur en systèmes embarqués
    Inscrit en
    Juin 2004
    Messages
    1 306
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Eure (Haute Normandie)

    Informations professionnelles :
    Activité : Ingénieur en systèmes embarqués
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Juin 2004
    Messages : 1 306
    Points : 2 466
    Points
    2 466
    Par défaut
    Voila ! Une question bien posée ! Les quatre messages précédents ne servent à rien, si ton premier message avait été celui-ci tu aurais déjà eu une réponse.

    Alors la réponse se trouve dans le manuel de référence . Une première solution serait d'imbriquer des if :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    let couleur_en_char couleur =
    if couleur = Carte.pique
    then 'P'
    else if couleur = ...
    Mais OCaml te fournit une syntaxe bien plus agréable : le matching :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    match couleur with
    | Carte.pique -> valeur si pique
    | Carte.trefle -> valeur si trèfle
    ...
    Et enfin, une syntaxe particulière pour les fonctions faisant un matching d'un de ses arguments :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    let couleur_en_char = function
    | Carte.pique -> valeur si pique
    | Carte.trefle -> valeur si trèfle
    ...
    Mais lis le manuel !
    -- Yankel Scialom

  7. #7
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2012
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2012
    Messages : 7
    Points : 1
    Points
    1
    Par défaut
    Haha désolé !

    Merci pour les pistes que tu me donnes, je vais donc les suivre et lire le manuel au passage!

    Merci beaucoup, bonne journée!

  8. #8
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2012
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2012
    Messages : 7
    Points : 1
    Points
    1
    Par défaut
    Re-bonjour,

    J'ai essayé la première méthode, c'est à dire l'imbrication if ce qui donne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    open Cartes;;
     
    let couleur_en_char (n) =
    if sommet_trefle(n) = true 
    then 'T'
    else if sommet_pique(n) = true
    then 'P'
    else if sommet_coeur(n) = true
    then 'C'
    else if sommet_carreau(n) = true
    then 'K'
    end ;;
    Quand j'exécute le programme, j'ai ce message :
    File "couleur_en_char.ml", line 12, characters 0-3:
    Error: Syntax error
    Ca veut dire qu'il y a un problème avec "end" mais je ne vois pas lequel?

    Merci d'avance

  9. #9
    Membre émérite
    Avatar de prgasp77
    Homme Profil pro
    Ingénieur en systèmes embarqués
    Inscrit en
    Juin 2004
    Messages
    1 306
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Eure (Haute Normandie)

    Informations professionnelles :
    Activité : Ingénieur en systèmes embarqués
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Juin 2004
    Messages : 1 306
    Points : 2 466
    Points
    2 466
    Par défaut
    Il manque un else au dernier if. Sémantiquement tu n'en a pas besoin, mais la syntaxe d'OCaml l'impose. Si, après avoir testé les trois premières couleurs, tu es sûre que ta carte est de la quatrième, inutile de la tester : retourne directement le caractère pour cette quatrième couleur.
    Si tu souhaites tout de même vérifier (et donc gérer les cas erronés), tu peux retourner un caractère spécial (mais ce n'est pas conseillé, préférer le type 'a option), ou lève une erreur (failwith "message d'erreur").
    -- Yankel Scialom

  10. #10
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2012
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2012
    Messages : 7
    Points : 1
    Points
    1
    Par défaut
    Ah oui j'suis bête! J'ai rectifié ça et supprimer le end et ça marche !! Mon exam est demain, j'espère qu'avec ça ça va aller!

    En tout cas merci pour ton aide, tu m'as bien aidé.

Discussions similaires

  1. [C#] Paramètre par défaut dans une fonction
    Par RobinJulie dans le forum Windows Forms
    Réponses: 5
    Dernier message: 18/01/2012, 14h07
  2. Réponses: 4
    Dernier message: 07/01/2009, 23h46
  3. Paramètre par défaut dans une fonction
    Par Rodie dans le forum Langage SQL
    Réponses: 2
    Dernier message: 12/06/2008, 10h26
  4. Paramètre par défaut d'une methode/fonction template
    Par valefor dans le forum Langage
    Réponses: 4
    Dernier message: 03/08/2007, 11h22
  5. [PLSQL 9i] Paramètre par défaut d'une fonction
    Par lbgl dans le forum Oracle
    Réponses: 8
    Dernier message: 20/02/2007, 16h36

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