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

Langage Pascal Discussion :

Conversion de C en Pascal d'un code permettant de lire un livre d'ouvertures


Sujet :

Langage Pascal

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Rédacteur/Modérateur

    Avatar de Roland Chastain
    Homme Profil pro
    Enseignant
    Inscrit en
    Décembre 2011
    Messages
    4 167
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Décembre 2011
    Messages : 4 167
    Billets dans le blog
    9
    Par défaut Conversion de C en Pascal d'un code permettant de lire un livre d'ouvertures
    Bonjour !

    Je souhaiterais convertir en Pascal ce programme. Il s'agit d'un code en C permettant de lire un livre d'ouvertures pour un programme de jeu d'échecs.

    Le code n'est pas très long ni très compliqué donc en en faisant un peu tous les jours j'espère pouvoir y arriver.

    Je vous montre ce que j'ai fait, pour que vous puissiez me dire si j'ai pris un bon départ. Et puis il y a déjà une ligne que je ne comprends pas trop, celle où j'ai mis un point d'interrogation.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
     
    unit Book;
     
    interface
     
    //static char BOOKFILE[300]="mainbook.bin";
    var BOOKFILE: array[0..299] of char = 'mainbook.bin';
    //static char TOERFILE[300]="tourbook.bin";
    var TOERFILE: array[0..299] of char = 'tourbook.bin';
    //static char EPD[200]="rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR w KQkq -";
    var EPD: array[0..199] of char = 'rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR w KQkq -';
    //static char FROM[10],TO[10];
    var FROM, TO_: array[0..9] of char;
    //static char ERROR=0;
    var ERROR: char = #0;
    //static long RANDOM1[1120];
    //static long RANDOM2[1120];
    var RANDOM1, RANDOM2: array[0..1119] of longint;
    //static char _BORD[256];
    var _BORD: array[0..255] of char;
    //static long *p_BORD = (long *) _BORD;               // 32 bit redefinition BORD
    // ?
    (*
    static long HK1,HK2;
    static int  XD,XE,AZ,RND;
    static char FROM1[20],FROM2[20],TO1[20],TO2[20];
    static unsigned char _GB[100000];                   // TOERBOEK.BIN
    static int  BOEKSTAT[20];
     
    FILE *FPB;
     
    void INITIALIZE(void);
    void FIND_OPENING(void);
    void MAKE_HASHKEY(void);
    void BOEKIN(void);
    void BOEK_BEGIN(void);
    *)
    implementation
     
    end.

  2. #2
    Expert confirmé
    Avatar de anapurna
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2002
    Messages
    3 491
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 491
    Par défaut
    salut

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    static long *p_BORD = (long *) _BORD;
    =>
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
      p_BORD = array of  _BORD;
    ou mais je penche plus pour un tableau ce seras plus facile a travailler avec

    Code C : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    static char BOOKFILE[300]="mainbook.bin";
    static char TOERFILE[300]="tourbook.bin";
    static char EPD[200]="rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR w KQkq -";
    static char FROM[10],TO[10];
    static char ERROR=0;
    static long RANDOM1[1120];
    static long RANDOM2[1120];
    static char _BORD[256];
    static long *p_BORD = (long *) _BORD;               // 32 bit redefinition BORD
    static long HK1,HK2;
    static int  XD,XE,AZ,RND;
    static char FROM1[20],FROM2[20],TO1[20],TO2[20];
    static unsigned char _GB[100000];                   // TOERBOEK.BIN
    static int  BOEKSTAT[20];


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
     
     BOOKFILE  : String ="mainbook.bin";
     TOERFILE: String ="tourbook.bin";
     EPD : array[0..199]="rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR w KQkq -";
     _FROM,_TO : Array[0..9]of char;
     
      ERROR :Byte=0;
      RANDOM1,RANDOM2 : array[0..1119] of longInt;
    _BORD : Array[0..255] of char ;
    /// Voir plus haut
      HK1,HK2 : Longint;
      XD,XE,AZ,RND : Integer;
      FROM1,FROM2,TO1,TO2 : Array [0..19] of Char;
      _GB : Array[0..99999] of  Byte;                   // TOERBOEK.BIN
      BOEKSTAT : Array[0..19] of integer ;
     
     
    Procedure INITIALIZE;
    Procedure FIND_OPENING;
    Procedure MAKE_HASHKEY;
    Procedure BOEKIN;
    Procedure BOEK_BEGIN;
    .........................

  3. #3
    Rédacteur/Modérateur

    Avatar de Roland Chastain
    Homme Profil pro
    Enseignant
    Inscrit en
    Décembre 2011
    Messages
    4 167
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Décembre 2011
    Messages : 4 167
    Billets dans le blog
    9
    Par défaut
    @anapurna

    Merci pour le coup de main. J'ai assez bien avancé, en m'inspirant de tes propositions.

    Il ne me reste plus que la procedure FIND_OPENING à traduire.

    Je sèche un peu à cet endroit.

    Code C : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
      RND=clock();                                // initialize randomizer
      clock_t a; a=clock(); randomize();
      x=random(9999); rnd=RND+x;
      RND=rnd;                                    // debug info

    Je ne comprends pas trop la logique de ce code. J'arrête pour aujourd'hui.

    De manière générale je comprends assez peu le code mais j'espère qu'en le traduisant "bêtement" j'aurais quelque chose qui fonctionne au bout du compte.
    Fichiers attachés Fichiers attachés

  4. #4
    Expert confirmé
    Avatar de anapurna
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2002
    Messages
    3 491
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 491
    Par défaut
    Salut.

    Le c est "case-sensitive" donc rnd <> RND.
    Le RND majuscule est une valeur globale.

    Après il y a des "goto" partout c'est l'enfer.

    Il fait des trucs bizarres.
    Mais grosso modo il cherche la position de la pièce dans une des tables remplies.

  5. #5
    Rédacteur/Modérateur

    Avatar de Roland Chastain
    Homme Profil pro
    Enseignant
    Inscrit en
    Décembre 2011
    Messages
    4 167
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Décembre 2011
    Messages : 4 167
    Billets dans le blog
    9
    Par défaut
    @anapurna

    Merci pour ton soutien.

    J'ai presque fini de tout traduire mais avec de plus en plus d'incertitudes. Je m'aperçois que le code C ne se compile même pas.

    Si je fais cette modification rapide,

    Code C : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
            clock_t a; a=clock(); //randomize();
            //x=random(9999); rnd=RND+x;
            x=random; rnd=RND+x;

    le programme se compile et s'exécute mais ne trouve aucun coup.

    Là où je ne comprends vraiment plus rien du tout, c'est qu'il y a deux variables que je ne vois déclarées nulle part, TA et TN, ce qui n'empêche pas le programme de se compiler.

    Je crois qu'il est plus raisonnable d'abandonner.

    P.-S. J'ai demandé de l'aide sur un forum que fréquente l'auteur du programme. Peut-être m'aidera-t-il à y voir plus clair.
    Fichiers attachés Fichiers attachés

  6. #6
    Expert confirmé

    Inscrit en
    Août 2006
    Messages
    3 967
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 3 967
    Par défaut
    Bonjour,

    À propos des variables non déclarées : le compilateur considère qu'il s'agit d'entiers (int).

    Et le compilateur doit prévenir avec des warnings, mais trop de programmeurs n'en tiennent pas compte (et ensuite passent beaucoup de temps pour trouver les bugs ...)

Discussions similaires

  1. absence de conversion de locale vers utf8 dans un code
    Par minibus dans le forum GTK+ avec C & C++
    Réponses: 8
    Dernier message: 12/08/2009, 11h32
  2. Conversion d'un numéro d'article en code barre
    Par am_bra dans le forum PL/SQL
    Réponses: 1
    Dernier message: 19/09/2008, 18h31
  3. intégration de librairie Pascal dans un code C++
    Par sebastien_2b dans le forum C++Builder
    Réponses: 1
    Dernier message: 25/07/2007, 10h37
  4. [TP7] Conversion de sources Turbo Pascal 7 vers Delphi 6
    Par M.Tamisier dans le forum Turbo Pascal
    Réponses: 2
    Dernier message: 21/04/2006, 21h08
  5. [Free Pascal] Convertir un code ASCII en entier
    Par JoseF dans le forum Free Pascal
    Réponses: 13
    Dernier message: 04/04/2006, 19h30

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