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

Ada Discussion :

Traduction d'instructions


Sujet :

Ada

  1. #1
    Nouveau membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Janvier 2007
    Messages
    42
    Détails du profil
    Informations personnelles :
    Localisation : France, Drôme (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2007
    Messages : 42
    Points : 36
    Points
    36
    Par défaut Traduction d'instructions
    Bonjour c'est encore moi. Il y a certaines "écritures" que je rencontre souvent dans le langage Ada. En fait, j'aimerais savoir ce que font les instructions suivantes:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    for I in reverse 0..Deg loop
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Put("coeff du degre "&Natural'Image(I)&" : ");
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    P := new Element'(I, Coeff, P);
    ou encore...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    for I in P.all'Range 0..Deg loop
    Je vous demande cela pour ensuite remplacer ces instructions plus simplement car je veux tout d'abord faire le plus "compliqué" possible..

    Merci à tous par avance, bonne journée !!

    $ Kleer $

  2. #2
    Invité
    Invité(e)
    Par défaut
    Re-bonjour,

    Pour la 1, reverse signifit que tu va developper la bouvle dans le sens inverse de celui que tu spécifis :
    For i in reverse 0..deg loop equivau à For i in deg .. 0 loop

    Pour la 2, tu affiche un texte coprenant une conversion d'un entier naturel, oû le character '&' concatène les multiple composant du texte.
    Tu peux faire la chose en trois fois.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    text_io.Put("Coeff du degres ");
    ada.integer_text_io.Put(i);
    text_io.put(" : ");
    Mai ça n'est pas forcement plus simple ni plus lisible ... à mon sens.

    Pour la 3, tu initialise un nouveau pointeur sur un type contenant 3 composants.
    Tu peux fair la chose en 4 fois.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    P := new element;
    P.composant_1 := i;
    P.composant_2 := coeff;
    P.composant_3 := P;
    Mai ça n'est pas forcement plus simple ni plus lisible ... à mon sens.

    Pour la 4, si je ne m'abuse, l'expression n'est pas correcte ....
    Soit tu spécifi l'intevale de la boucle avaec l'attribut "Range", soit en donnant explicitement les bornes, mais pas les deux. Donc c'est soit For i in P.all'Range loop, soit For i in 0..deg loop.

    Si je ne m'abuse.

  3. #3
    Invité
    Invité(e)
    Par défaut Rectification pour la 3
    Désolé, j'ai fait une petite erreur pour la trois ...

    Pour pouvoir décomposer comme je l'ai fait, il faut d'abord souvegarder P car dans l'initialisation tu utilise P qui est modifié. Donc ça implique l'utilisation d'une variable supplementaire. Pas vraiment plus simple ni plus lisible à mon sens.

  4. #4
    Nouveau membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Janvier 2007
    Messages
    42
    Détails du profil
    Informations personnelles :
    Localisation : France, Drôme (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2007
    Messages : 42
    Points : 36
    Points
    36
    Par défaut pour la 4
    Citation Envoyé par jovalise

    Pour la 4, si je ne m'abuse, l'expression n'est pas correcte ....
    Soit tu spécifi l'intevale de la boucle avaec l'attribut "Range", soit en donnant explicitement les bornes, mais pas les deux. Donc c'est soit For i in P.all'Range loop, soit For i in 0..deg loop.

    Si je ne m'abuse.
    Oui, en fait tu as raison, je rectifie donc: que signifie l'instruction suivante alors:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    For i in P.all'Range loop
    merci par avance !

    $ Kleer $

  5. #5
    Invité
    Invité(e)
    Par défaut
    Dans ce cas, P est, soit un pointeur sur un type discret, soit un pointeur sur un tableau.
    Pour reformuler l'expression il faut voir les bornes du type en question et ramplacer P.All'Range par l'inteval des bornes -> Borne _Inf .. Borne_Sup

  6. #6
    Nouveau membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Janvier 2007
    Messages
    42
    Détails du profil
    Informations personnelles :
    Localisation : France, Drôme (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2007
    Messages : 42
    Points : 36
    Points
    36
    Par défaut Ok merci beaucoup
    Citation Envoyé par jovalise
    Dans ce cas, P est, soit un pointeur sur un type discret, soit un pointeur sur un tableau.
    Pour reformuler l'expression il faut voir les bornes du type en question et ramplacer P.All'Range par l'inteval des bornes -> Borne _Inf .. Borne_Sup
    Ok merci de vos réponses !!! j'ai plus qu'à remplacer ça alors !!

    $ Kleer $

  7. #7
    Membre éprouvé
    Avatar de Celelibi
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    1 087
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 1 087
    Points : 1 122
    Points
    1 122
    Par défaut
    Citation Envoyé par jovalise
    Pour la 1, reverse signifit que tu va developper la boucle dans le sens inverse de celui que tu spécifis :
    For i in reverse 0..deg loop equivau à For i in deg .. 0 loop
    Ceci n'est pas tout à fait une équivalence car la deuxième construction va effectuer l'itération zéro fois car deg..0 est un interval vide. Il n'y a pas à ma connaissance d'autre moyen d'écrire la boucle "reverse". (À moins de transformer la boucle for en while ou loop.)


    Pour la 3, tu initialise un nouveau pointeur sur un type contenant 3 composants.
    Tu peux fair la chose en 4 fois.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    P := new element;
    P.composant_1 := i;
    P.composant_2 := coeff;
    P.composant_3 := P;
    Mai ça n'est pas forcement plus simple ni plus lisible ... à mon sens.
    Il manque un ".all".
    Quand on fait
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    P := new Element'(I, Coeff, P);
    On ne désigne pas spécifiquement le nom des champs, donc cette syntaxe serait plus proche de :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    P := new element;
    P.all := (I, Coeff, P);
    Le compilateur reconnait tout seul que P.all est de type element, et donc interprète l'agrégat comme étant de type element. Il est aussi possible de spécifier directement que l'agrégat est de type element :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    P := new element;
    P.all := element'(I, Coeff, P);
    Après on peut aussi énumérer chaque champ comme jovalise l'a montré (sans oublier de rajouter les .all).
    À quoi sert le ".all" :
    Le .all sert à "déréférencer le pointeur". P est de type access sur element, alors que P.all est de type element.


    Si l'objectif est de réécrire le code "en plus simple", il faut préciser que X'Range est équivalent à X'First..X'Last.
    X est généralement un tableau.
    Attention tout de même : X'First est le premier indice du tableau X, et non le premier élément (et réciproquement pour X'Last).
    Les vaches ne peuvent PAS voler, quoi qu'elles aient pu vous raconter.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Traduction instruction SQL en impromptu
    Par lenco dans le forum Cognos
    Réponses: 0
    Dernier message: 15/04/2011, 11h19
  2. Traduction
    Par PierDIDI dans le forum Composants VCL
    Réponses: 3
    Dernier message: 17/09/2002, 23h43
  3. Instruction pour créer un fichier text ???
    Par Soulsurfer dans le forum Langage
    Réponses: 2
    Dernier message: 06/08/2002, 11h17
  4. [Crystal Report][VB6] instruction PrintReport
    Par yyyeeeaaahhh dans le forum SDK
    Réponses: 4
    Dernier message: 29/07/2002, 14h58
  5. [TASM] Problème concernant l'instruction LGDT
    Par Ninkosen dans le forum Assembleur
    Réponses: 3
    Dernier message: 15/07/2002, 19h09

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