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 :

Syntaxe en impératif


Sujet :

Caml

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 20
    Points : 20
    Points
    20
    Par défaut Syntaxe en impératif
    Bonjour,
    j'ai un problème avec la syntaxe quand je veux faire de l'impérateur avec OCaml. Par exemple, comment écrire correctement ce code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
      let indice = caseToIndice coup in
        if (snd aw.p.(indice)) = 0 then
          affichPlateau aw;
          print_string "Coup impossible car Case Vide"
        else
          affichPlateau(distribuerGraines aw coup)
    Je comprends pas vraiment où placer les ";".
    Merci d'avance

  2. #2
    Membre éprouvé
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    832
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 832
    Points : 1 104
    Points
    1 104
    Par défaut
    Il faut utiliser begin end ou ( ) pour faire un "bloc" dans lequel tu mets les ;, comme les { } dans les langages à la syntaxe inspirée du C.

    Code ocaml : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    let indice = caseToIndice coup in
    if snd aw.p.(indice) = 0 then begin
      affichPlateau aw;
      print_string "Coup impossible car Case Vide"
    end else affichPlateau (distribuerGraines aw coup)
    Code ocaml : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    let indice = caseToIndice coup in
    if snd aw.p.(indice) = 0 then
      (affichPlateau aw;
       print_string "Coup impossible car Case Vide")
    else affichPlateau (distribuerGraines aw coup)

    Les deux solutions sont équivalentes, c'est une question de style. Pour ma part j'utilise begin end dans le code impératif (donc assez rarement), et ( ) dans le code fonctionnel. Ici, c'est du code impératif.

  3. #3
    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
    Citation Envoyé par raspac Voir le message
    [..]
    Je comprends pas vraiment où placer les ";".
    Merci d'avance
    A priori, le point-virgule n'a rien à voir avec la programmation impérative. C'est issue de la programmation structurée. Le point-virgule dénote une séquence. Tu le mets donc pour séparer deux instructions qui doivent s'exécuter l'une après l'autre. J'ai bien dit « a priori » car il est vrai qu'en paradigme fonctionnel pur, c'est inutile.

  4. #4
    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
    Citation Envoyé par bluestorm Voir le message
    [...]
    Les deux solutions sont équivalentes, c'est une question de style. Pour ma part j'utilise begin end dans le code impératif (donc assez rarement), et ( ) dans le code fonctionnel. Ici, c'est du code impératif.
    Je préfère le begin/end que je trouve plus lisible. Il me semble que les parenthèses sont déjà bien assez utilisées. C'est vrai cependant que c'est question de goût je pense. Ayant commencé la « vraie » programmation avec le Pascal, je suppose que je suis sensible à un bon begin/end.

  5. #5
    alex_pi
    Invité(e)
    Par défaut
    Citation Envoyé par Garulfo Voir le message
    A priori, le point-virgule n'a rien à voir avec la programmation impérative. C'est issue de la programmation structurée. Le point-virgule dénote une séquence. Tu le mets donc pour séparer deux instructions qui doivent s'exécuter l'une après l'autre.
    Dire que deux instructions doivent s'exécuter l'une après l'autre, ce n'est pas justement exactement ça la programmation impérative ? En plus, vu que le résultat de la première expression est perdu, elle n'est évaluée que pour ses effets de bord. Bref, le ;, c'est vraiment directement lié à la programmation impérative à mes yeux.

  6. #6
    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
    Citation Envoyé par alex_pi Voir le message
    Dire que deux instructions doivent s'exécuter l'une après l'autre, ce n'est pas justement exactement ça la programmation impérative ? En plus, vu que le résultat de la première expression est perdu, elle n'est évaluée que pour ses effets de bord. Bref, le ;, c'est vraiment directement lié à la programmation impérative à mes yeux.
    Si tu avais cité entièrement ce que je disais tu aurais remarqué le « J'ai bien dit « a priori » car il est vrai qu'en paradigme fonctionnel pur, c'est inutile. »
    En fait, la programmation impérative utilise des séquences mais sans opérateur particulier. La programmation structurée elle, définit un opérateur. Et qui, en programmation fonctionnelle, ne fait jamais de programmation structurée pour faire un print de temps en temps. On ne peut pas quand même dire qu'alors c'est de la programmation impérative pour un ou deux print? Donc, c'est pourquoi je soulignais la distinction théorique.

Discussions similaires

  1. [syntaxe] Gerer les variables dans une requete
    Par rastapopulos dans le forum MS SQL Server
    Réponses: 12
    Dernier message: 15/04/2003, 12h53
  2. Syntaxe requete
    Par Chipolata dans le forum Langage SQL
    Réponses: 2
    Dernier message: 28/03/2003, 14h22
  3. [Syntaxe] Action simultanée sur plusieurs élements
    Par FranT dans le forum Composants VCL
    Réponses: 2
    Dernier message: 20/03/2003, 20h20
  4. Syntaxe TASM <-> MASM
    Par LFC dans le forum Assembleur
    Réponses: 3
    Dernier message: 28/02/2003, 15h56
  5. [VB6] [Syntaxe] Fonction renvoyant un tableau d'objets
    Par Troopers dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 18/10/2002, 15h33

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