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

Autres langages Discussion :

[Forth] Conversion vers un sextal


Sujet :

Autres langages

  1. #1
    Membre du Club
    Profil pro
    Lycéen
    Inscrit en
    Juin 2007
    Messages
    111
    Détails du profil
    Informations personnelles :
    Âge : 32
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Juin 2007
    Messages : 111
    Points : 64
    Points
    64
    Par défaut [Forth] Conversion vers un sextal
    Salut .

    Je suis confronté à un exemple de code FORTH que je ne comprend pas bien. Pourriez-vous m'expliquer pourquoi le formatage du nombre à double précision 4500 renvoie ici 1500 ? Je m'attendais de nouveau à 4500, puisqu'en sextal quatre, cinq, et zéro restent quatre, cinq et zéro...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    : SEXTAL 6 BASE ! ;
    
    : TEST <# # SEXTAL # DECIMAL # SEXTAL # #> TYPE DECIMAL ;
    
    4500. TEST
    Merci d'avance .

    PS : afin que vous puissiez mieux diagnostiquer mon problème, voilà comment j'imagine cette opération :
    On place 0 sur la chaîne de formatage. On rajoute 0 en sextal (soit 0). On rajoute 5. On rajoute 4 en sextal (soit 4). On obtient bien 4500.

  2. #2
    Membre chevronné
    Avatar de Forthman
    Homme Profil pro
    conception mécanique
    Inscrit en
    Janvier 2005
    Messages
    702
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Tarn et Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : conception mécanique
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2005
    Messages : 702
    Points : 1 905
    Points
    1 905
    Par défaut
    Hello,

    J'y crois pas, le Forth n'est pas mort !

    Alors je vais essayer de répondre à ta question en décomposant les mots.

    Le mot SEXTAL j'imagine que tu l'as compris, bascule en BASE 6

    Je décortique le fonctionnement de quelques mots :
    <# initialise la conversion (pointeur en fin de chaine)
    # récupère un digit avec la base courante qui est le reste de la division et le place en fin de chaine, le pointeur est décrémenté pour pointer le digit suivant à gauche
    #> fini la conversion en effaçant le résultat de la division et en mettant sur la pile, l'adresse et la longueur de la chaine

    Donc passons au mot TEST avec sur la pile la valeur 4500 (en double précision)

    : TEST
    <# ( initialise la convertion)
    # ( 4500 / 10 = 450 et il reste 0 --> place "0" dans la chaine)
    SEXTAL ( bascule en base 6 )
    # ( 450 / 6 = 75 et il reste 0 --> place "0" dans la chaine)
    DECIMAL
    # ( 75 / 10 = 7 et il reste 5 --> place "5" dans la chaine)
    SEXTAL
    # (7 / 6 = 1 et il reste 1 --> place "1" dans la chaine)
    #> (termine la conversion, le 1 qui reste est perdu, et place adresse et longueur sur la pile)

    Personnellement, j'aurai placé aussi un DECIMAL avant d'entamer la conversion car si on est pas en DECIMAL ça foire tout le calcul

    le mot TEST permet donc de transformer simplement des secondes en minutes/secondes par contre, la valeur maxi ne peut dépasser les 3599 secondes car au dessus on passe aux heures..

    petite modif du programme sur le pouce : conversion en Heures:Minutes,secondes

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    : HMS ( d --- )
    BASE @ >R
    <# 
    DECIMAL # SEXTAL #
    DECIMAL # SEXTAL #
    DECIMAL # #S #>
    TYPE
    R> BASE ! ;
    le BASE @ >R et R> BASE ! c'est juste pour ne pas modifier la base courante

    a+ François

  3. #3
    Membre chevronné
    Avatar de Forthman
    Homme Profil pro
    conception mécanique
    Inscrit en
    Janvier 2005
    Messages
    702
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Tarn et Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : conception mécanique
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2005
    Messages : 702
    Points : 1 905
    Points
    1 905
    Par défaut
    Petite modif plus agréable à l'oeil
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    : HMS ( d --- )
    BASE @ >R
    <# 
    DECIMAL # SEXTAL # ASCII , HOLD
    DECIMAL # SEXTAL # ASCII : HOLD
    DECIMAL # #S #>
    TYPE
    R> BASE ! ;
    Comme ça, ça affiche véritablement le résultat sous la forme hh:mm,ss

    a+ François

  4. #4
    Membre du Club
    Profil pro
    Lycéen
    Inscrit en
    Juin 2007
    Messages
    111
    Détails du profil
    Informations personnelles :
    Âge : 32
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Juin 2007
    Messages : 111
    Points : 64
    Points
    64
    Par défaut
    Argh, mea culpa, j'ai encore oublié de vérifier si l'on m'avait répondu. C'est que je poste tellement rarement par ici :] .
    Merci beaucoup pour ta réponse, je comprends comment cela fonctionne maintenant.

    J'y crois pas, le Forth n'est pas mort !
    Je suis en quête d'exotisme. En tout cas je me marre bien à recoder toutes les structures de données qui me passent par la tête . Et puis ça me permet de mieux comprendre comment fonctionnent les langages plus... abstractifs ?

    Puisque tu as l'air de t'y connaître (FIG powa), saurais-tu si le chan IRC sur Forth vaut le détour ? Je n'ai pas encore pris le temps d'aller voir. Je suis toutefois étonné de l'activité de comp.lang.forth . Je sens que je vais passer de bons moments avec ce langage =] .

  5. #5
    Membre chevronné
    Avatar de Forthman
    Homme Profil pro
    conception mécanique
    Inscrit en
    Janvier 2005
    Messages
    702
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Tarn et Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : conception mécanique
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2005
    Messages : 702
    Points : 1 905
    Points
    1 905
    Par défaut
    Les discutions sont d'un niveau assez haut...
    Voire même je trouve qu'ils se tripottent le nombril

    Le Forth n'est pas un simple langage, c'est une philosophie

    Si tu as des questions, n'hésites pas, je me ferai un plaisir d'y répondre
    ( c'est si rare les personnes qui s'intéressent au Forth )

    Par contre, je ne suis pas ici très souvent non plus, alors si un post reste sans réponse, envois moi un petit mp

    a+ François

Discussions similaires

  1. conversion vers l'hexa et résultat bizarre
    Par sanatou dans le forum C
    Réponses: 16
    Dernier message: 04/01/2007, 08h39
  2. [xsl-fo] Outils de conversion vers RTF
    Par blastobi dans le forum XML/XSL et SOAP
    Réponses: 2
    Dernier message: 31/05/2006, 10h17
  3. Conversion vers UTF-8
    Par magnus2005 dans le forum Langage
    Réponses: 1
    Dernier message: 26/10/2005, 10h12
  4. Réponses: 2
    Dernier message: 02/09/2005, 20h43
  5. [String] Conversion vers entier
    Par Javatator dans le forum API standards et tierces
    Réponses: 10
    Dernier message: 19/08/2004, 15h59

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