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

VB.NET Discussion :

Compréhension d'une structure et traduction


Sujet :

VB.NET

  1. #1
    Membre confirmé
    Homme Profil pro
    Alternant
    Inscrit en
    Décembre 2015
    Messages
    413
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Alternant

    Informations forums :
    Inscription : Décembre 2015
    Messages : 413
    Points : 584
    Points
    584
    Par défaut Compréhension d'une structure et traduction
    Bonjour le forum,

    Je bloque actuellement sur un bout de code en C#.
    N'étant pas à la base développeur/programmeur/etc. je ne connais que peu ce langage et l'on m'a demandé récemment de traduire des codes d'un ancien collègue C# et C++ en VBA ou VB.Net
    Donc si quelqu'un pouvait m'éclairer sur la compréhension de cette partie :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    struct bil{
      struct bil *pre, *suiv;
      short int x, z;
    };
     
    struct bil *bilfirst, *bilmemb, *petitz, *trash;
    Peut-on vraiment mettre une structure dans une structure ?
    Il faudrait donc que j'imbrique un double Type en VBA/VB ?
    Et pourquoi la dernière ligne ?

    En vous remerciant d'avance
    C'est en creusant qu'on fait des trous

  2. #2
    Membre expert Avatar de jopopmk
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2011
    Messages
    1 856
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2011
    Messages : 1 856
    Points : 3 570
    Points
    3 570
    Par défaut
    Salut,

    Ici on a pas une structure dans une structure, c'est juste une structure avec des pointeurs.
    En l'occurrence tu as là la définition d'un élément d'une liste doublement chaînée de points.

    La dernière ligne c'est juste la déclaration de quatre pointeurs vers cette structure.

    En .NET il existe des types pour le couple (x,y) (System.Window.Point et System.Drawing.Point, plutôt le deuxième pour toi vu qu'il s'agit d'entier, alors que pour le premier c'est des doubles). Il existe également des classes pour les listes (je pense plus particulièrement à List<T>). Par contre pas de pointeur, le .NET fonctionne avec des références.

    Maintenant tu ne peux pas te permettre de traduire ces def "from outerspace", il faut tenir compte des fonctionnalités prévues derrières. Sinon ce serait un peu comme traduire d'une langue vers une autre en faisant du mot à mot : ça va pas marcher
    Plus je connais de langages, plus j'aime le C.

  3. #3
    Membre confirmé
    Homme Profil pro
    Alternant
    Inscrit en
    Décembre 2015
    Messages
    413
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Alternant

    Informations forums :
    Inscription : Décembre 2015
    Messages : 413
    Points : 584
    Points
    584
    Par défaut
    Bonjour jopopmk,

    Je suis bien d'accord que c'est plus que difficile de traduire comme ça deux langages aussi différents
    Et c'est aussi pour ça que j'ai autant de problème à le faire vu que je ne connais absolument pas le C#... Enfin je le comprends dans ses grandes lignes mais par exemple l'histoire des pointeurs ça me dépasse...

    Enfin bon je m'accroche :
    Du coup si je comprends bien :
    bil est une sorte de tableau à 4 entrées dans lequel se balade les pointeurs *bilfirst, *bilmemb, *petitz, *trash ?

    EDIT : si au passage on peut m'expliquer aussi le * qui se trouve parfois devant une variable
    C'est en creusant qu'on fait des trous

  4. #4
    Membre expert Avatar de jopopmk
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2011
    Messages
    1 856
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2011
    Messages : 1 856
    Points : 3 570
    Points
    3 570
    Par défaut
    bil n'est pas un tableau mais une structure (ça existe aussi en .NET), qui contient deux pointeurs et deux entiers. Pour les quatres variables de la dernière ligne on ne peut pas savoir à l'avance à quoi ils vont servir (même si avec un nom comme bilfirst on peut imaginer qu'il s'agira de la tête de liste). Le '*' indique que la variable que tu déclares est un pointeur. Si t'es amené à traduire masse de C/C++ je te conseille d'en lire les bases, sinon t'es vraiment pas rendu (et je me vois mal te faire un cours sur le sujet ).
    Plus je connais de langages, plus j'aime le C.

  5. #5
    Membre confirmé
    Homme Profil pro
    Alternant
    Inscrit en
    Décembre 2015
    Messages
    413
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Alternant

    Informations forums :
    Inscription : Décembre 2015
    Messages : 413
    Points : 584
    Points
    584
    Par défaut
    En tout cas merci de tes réponses

    J'ai déjà lu quelque tutos mais apparemment c'est loin d'être suffisant...
    Du coup je vais aller faire un petit (grand) tour sur OC et je reviendrai peut-être plus tard si je suis toujours autant à la ramasse.

    Bonne continuation
    C'est en creusant qu'on fait des trous

  6. #6
    Expert éminent sénior

    Avatar de François DORIN
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Juillet 2016
    Messages
    2 757
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2016
    Messages : 2 757
    Points : 10 695
    Points
    10 695
    Billets dans le blog
    21
    Par défaut
    Bonjour,

    Actuellement, tu postes sur le forum C# pour la traduction d'un code C/C++ en VB.Net. Du coup, je ne suis pas sûr que le sujet soit le mieux placé (donc, je le déplace).

    Et si tu as des questions sur le C/C++, il y a aussi des forums dédiés à ces langages

    Maintenant, je te conseille effectivement d'approfondir tes connaissances en C/C++ pour bien comprendre ce que tu vas devoir faire. Je peux juste te signaler une chose qui peut être très trompeur et induire facilement en erreur, surtout pour un débutant.

    En C/C++, un struct ou une class sont fonctionnellement identique. Il y a une subtilité au niveau de la visibilité par défaut, mais ce n'est pas le sujet.

    En .Net (que ce soit C# ou VB.Net), les deux notions existes mais ne sont pas équivalentes. Notamment, les instances d'une classes sont manipulées par référence tandis que les instances d'une struct sont manipulées par valeur. Et il en découle tout un tas de choses, notamment qu'une struct ne peut pas s'autoréférencer (c'est-à-dire qu'il n'est pas possible d'avoir un attribut qui soit du même type que la struct dans laquelle il est défini)
    Par exemple
    Code VB : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Public Structure Noeud  
        Public Suivant As Noeud  
    End Structure
    n'est pas autorisé.

    Par contre, cela l'est pour les classes :
    Code VB : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Public Class Noeud  
        Public Suivant As Noeud  
    End Structure

    Je le précise car vu la structure de ta structure bil, on dirait une liste chaînée, pour laquelle tu devras obligatoirement passer par des classes si tu traduis le code tel quel.
    François DORIN
    Consultant informatique : conception, modélisation, développement (C#/.Net et SQL Server)
    Site internet | Profils Viadéo & LinkedIn
    ---------
    Page de cours : fdorin.developpez.com
    ---------
    N'oubliez pas de consulter la FAQ C# ainsi que les cours et tutoriels

  7. #7
    Membre confirmé
    Homme Profil pro
    Alternant
    Inscrit en
    Décembre 2015
    Messages
    413
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Alternant

    Informations forums :
    Inscription : Décembre 2015
    Messages : 413
    Points : 584
    Points
    584
    Par défaut
    Bonjour François,

    Merci de t'être penché sur mon cas. Pour ce qui est des langages C/C#/C++, j'avoue ne pas faire la différence (pour le moment). Donc si entre chaque il existe des subtilités je ne vais m'en rendre compte.

    L'auto-référencement d'une classe ça je connais bien en .Net (soyons clair je ne travaille qu'avec du .Net et du VBA quand les collègues souhaite seulement une application qui doit prendre un tableur en compte et que de toute façon tout ce que je fais sur Studio ils comprennent pas ou n'en veulent pas... ) mais je reste malgré tout un débutant .

    Or avant moi il y avait un super informaticien qui ne développait qu'en C/C#/C++ (aucune idée du quel réellement) et qui avait fait des programmes plutôt intéressant. Et plutôt que de les copier-coller dans tout les sens je veux les comprendre et savoir comment il fonctionne (d'où ma tentative de traduction).

    Où alors il faut que je demande une formation dans ces langages

    Enfin bref merci encore pour l'attention que vous avez accorder à mon problème, moi je retourne bouquiner.
    C'est en creusant qu'on fait des trous

  8. #8
    Membre expert Avatar de jopopmk
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2011
    Messages
    1 856
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2011
    Messages : 1 856
    Points : 3 570
    Points
    3 570
    Par défaut
    Les différences entre ces 3 langages sont quand même très importantes
    Le C# c'est comme du VB.NET mais avec une autre syntaxe (un peu plus propre à mon goût).

    L'extrait que tu nous as présenté pourrait être du C ou du C++.
    Je vais être mauvaise langue () : les dev C++ ont un peu tendance à tout mettre dans des classes, donc je pencherais pour du C.
    Le gros avantage pour toi : le C est un langage extrêmement simple à apprendre.
    Plus je connais de langages, plus j'aime le C.

Discussions similaires

  1. Compréhension d'une structure
    Par EvaristeGaloisBis dans le forum Langage
    Réponses: 3
    Dernier message: 14/04/2015, 16h24
  2. Traduction en Delphi d'une structure
    Par skywaukers dans le forum Delphi
    Réponses: 6
    Dernier message: 14/06/2007, 01h07
  3. Comment mettre en place une structure 3 tiers.
    Par WOLO Laurent dans le forum Débats sur le développement - Le Best Of
    Réponses: 13
    Dernier message: 27/07/2003, 23h01
  4. [toFAQ][socket] Envoi d'une structure
    Par julien20vt dans le forum C++
    Réponses: 15
    Dernier message: 23/04/2003, 16h47
  5. longueur d'une structure
    Par bohemianvirtual dans le forum C
    Réponses: 6
    Dernier message: 28/05/2002, 19h31

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