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 :

Comment afficher le résultat d'une procédure ? [Débutant(e)]


Sujet :

Caml

  1. #1
    Candidat au Club
    Profil pro
    Étudiant
    Inscrit en
    Avril 2009
    Messages
    4
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2009
    Messages : 4
    Points : 3
    Points
    3
    Par défaut Comment afficher le résultat d'une procédure ?
    Bonjour à tous !

    Voilà en tant que débutant je rencontre un problème d'affichage dans le terminal pour cette procédure, je ne sais pas à vrai dire comment y faire 'appel'.

    J'ai installé Ocaml sous Windows Xp Pro, compile avec Scite

    Voilà le programme :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    let terme(n)=
      begin
      let res = ref1. in
        begin
         for i=1 to n do
           res:= !res/.2.+.1./. !res
         done;
         !res;
        end;
      end;;
    Je l'enregistre sous terme.ml puis tape dans le terminal :

    #use "terme.ml";;

    et voilà ce que cela m'affiche :

    val terme : int -> float = <fun>

    De là je comprends que la procédure est ok mais comment afficher à l'écran la valeur d'un terme quelconque ?

    Merci d'avance !

  2. #2
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    47
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2009
    Messages : 47
    Points : 39
    Points
    39
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    print_endline (string_of_float (term 10))

  3. #3
    Candidat au Club
    Profil pro
    Étudiant
    Inscrit en
    Avril 2009
    Messages
    4
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2009
    Messages : 4
    Points : 3
    Points
    3
    Par défaut
    ok, j'avais tenté avec un print_float tout court mais avec ta solution proposée ça ne fonctionne pas plus, voilà ce que j'ai après entrée du code avant le 1er 'end' :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    File "terme.ml", line 8, characters 6-10:
    Warning S: this expression should have type unit.
    val terme : int -> unit = <fun>

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    36
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 36
    Points : 54
    Points
    54
    Par défaut
    Dans ce genre de cas, il peut être intéressant d'essayer d'appliquer un style plus fonctionnel à base de récursion :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    let terme n =
        let rec aux v = function
            | 0 -> v
            | n -> aux (v /. 2.0 +. 1.0 /. v) (n - 1)
        in aux 1.0 n;;
    La boucle for n'étant pas vraiment idiomatique en OCaml, son usage est tout de suite plus lourd et verbeux par rapport à une récursion.

  5. #5
    Candidat au Club
    Profil pro
    Étudiant
    Inscrit en
    Avril 2009
    Messages
    4
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2009
    Messages : 4
    Points : 3
    Points
    3
    Par défaut
    Ok mais ça ne résout pas mon problème d'affichage de terme !!

  6. #6
    Membre éprouvé
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    309
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 309
    Points : 933
    Points
    933
    Par défaut
    Normalement dans le toplevel caml, tu as juste à taper "terme 10;;", et ça devrait marcher

    Après , un truc comme
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    let () =
      while true do
        print_endline (string_of_float (terme (read_int ())))
      done
    devrait te permettre d'entrer des entiers successivement et de voir le résultat à chaque fois

Discussions similaires

  1. Réponses: 11
    Dernier message: 14/10/2008, 10h21
  2. Comment récupérer le résultat d'une procédure stockée (OUT parameter) ?
    Par java2008 dans le forum Interfaces de programmation
    Réponses: 1
    Dernier message: 08/04/2008, 13h00
  3. Réponses: 13
    Dernier message: 26/07/2007, 08h50
  4. Afficher le résultat d'une procédure PLSQL
    Par apersonnat dans le forum PL/SQL
    Réponses: 5
    Dernier message: 13/02/2007, 10h17
  5. Réponses: 11
    Dernier message: 20/06/2006, 11h10

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