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 :

Utilisation de variables non typées


Sujet :

Langage Pascal

  1. #1
    Membre éprouvé
    Avatar de ChPr
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    2 022
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 78
    Localisation : France, Val d'Oise (Île de France)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 2 022
    Points : 1 049
    Points
    1 049
    Par défaut Utilisation de variables non typées
    Bonjour à toutes et à tous,

    Je n'ai jamais joué avec cela et je n'arrive pas à trouver de documentation pertinente à ce sujet.

    Je sais qu'en Pascal, on peut définir des variables non typées. Si par exemple, je déclare :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    procedure Echange(a, b: Integer; var S, T {pas de type});
    begin
    end;
    Cela se compile sans problème.

    Mais dès que j'essaie d'établir dans la procédure "Echange" une relation entre ces diverses variables, du genre S:= T; je me fait jeter avec une message du genre :

    Error: Assignments to formal parameters and open arrays are not possible

    Alors, comment faire, que faire de ces variables non typées ?

    Pour aller plus loin, mon but est d'avoir une procédure "générique" de tri rapide dans laquelle la variable à trier peut avoir des types différents. Voilà ce que cela donnerait :

    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
    procedure Echange(Lo, Hi: Integer; var ALo, AHi);
    begin
      {Extraction dans les variables ALo et AHi de la partie sur laquelle peut se faire un tri}
      {Opération d'échange du genre échange de valeur et action sur les indices Lo et Hi}
    end;
     
    procedure QuickSort(var A {c'est un tableau non typé}; iLo, iHi: Integer);
    var
      Lo, Hi, Mid, T: Integer;
    begin
      Lo := iLo;
      Hi := iHi;
      Mid := A[(Lo + Hi) div 2];
      repeat
        while A[Lo] < Mid do Inc(Lo);
        while A[Hi] > Mid do Dec(Hi);
        if Lo <= Hi then
          Echange(Lo, Hi, A[Lo], A[Hi]);
      until Lo > Hi;
      if Hi > iLo then QuickSort(A, iLo, Hi);
      if Lo < iHi then QuickSort(A, Lo, iHi);
    end;
    Est-ce c'est possible ? Si oui, comment faire ou avez-vous des liens expliquant cela ?

    Merci de votre aide.

    Pierre

  2. #2
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Janvier 2010
    Messages
    235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Janvier 2010
    Messages : 235
    Points : 506
    Points
    506
    Par défaut
    Tout ce que tu peux faire avec les variables non typées c'est en récupérer l'adresse. Il me semble avoir vu une page de documentation la dessus sur le site de freepascal mais pas moyen de remettre la main dessus. L'intérêt de ce type de paramètre est de pouvoir écrire des fonctions et des procédures comme Move ,par exemple, qui permet de déplacer des blocs de données sans en connaître le type.

    Pour la généricité en pascal, à ma connaissance, tu as 3 solutions :


  3. #3
    Membre éprouvé
    Avatar de ChPr
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    2 022
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 78
    Localisation : France, Val d'Oise (Île de France)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 2 022
    Points : 1 049
    Points
    1 049
    Par défaut
    Merci beaucoup "batyann811" pour ces liens et infos sur la généricité en Pascal. Je vais voir cela de plus près.

    Cordialement.

    Pierre

Discussions similaires

  1. Fonction ReplaceAll utilisant une variable de type int
    Par melouze dans le forum Développement de jobs
    Réponses: 4
    Dernier message: 18/09/2012, 13h19
  2. Réponses: 3
    Dernier message: 20/04/2010, 16h07
  3. Réponses: 5
    Dernier message: 30/11/2009, 11h14
  4. Creer un filtre automatique qui utilise une variable de type string
    Par Esmax666 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 16/06/2009, 13h53
  5. Réponses: 3
    Dernier message: 20/08/2008, 13h38

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