+ Répondre à la discussion
Affichage des résultats 1 à 7 sur 7
  1. #1
    Membre chevronné
    Avatar de EpiTouille
    Homme Profil pro
    Étudiant
    Inscrit en
    mai 2009
    Messages
    332
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : mai 2009
    Messages : 332
    Points : 721
    Points
    721

    Par défaut Existe-t-il en Pascal des listes similaires à celles de Python ?

    Bonjour

    J'aimerais savoir si le langage Pascal a un système de liste +ou- similaire à
    Python.
    Du genre
    Code :
    Reponse := ['Pierre','Feuille','Ciseaux'];
    Et après pouvoir utiliser 'in'
    Code :
    1
    2
    if MaReponse in Reponse then
      write('Réponse valide');
    Merci

    Titeeee

  2. #2
    Expert Confirmé Sénior
    Avatar de Paul TOTH
    Homme Profil pro
    Freelance
    Inscrit en
    novembre 2002
    Messages
    5 639
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : novembre 2002
    Messages : 5 639
    Points : 16 167
    Points
    16 167

    Par défaut

    oui mais pas de la même manière

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
     
    type
      Reponse = (Pierre, Feuille, Ciseaux);
    var
      MaReponse : Reponse;
    begin
      if MaReponse in [Pierre, Ciseaux] then ...
    end;
    mais MaReponse ne peux pas prendre une valeur en dehors de celles définies.

    sinon tu peux écrire une fontion
    Code :
    1
    2
     
    function InList(const Str:string; const Values : array of string):Boolean;
    Developpez.com: Mes articles, forum FlashPascal
    Entreprise: Execute SARL
    Produits : UPnP, RemoteOffice, FlashPascal
    Embarcadero : Ile de la Réunion, Dephi, C++Builder, RADPHP...TVA à 8,5%

  3. #3
    Rédacteur
    Avatar de darrylsite
    Inscrit en
    juillet 2007
    Messages
    1 300
    Détails du profil
    Informations forums :
    Inscription : juillet 2007
    Messages : 1 300
    Points : 2 210
    Points
    2 210

    Par défaut

    Il n'existe pas en Pascal standard, des listes comparables à celles de Python.

    Les listes en Python sont des tableaux extensibles, et sont des objets.

    En pascal Objet - FreePascal par exemple-, il y a des listes dynamiques qui font tous ce que font les liste en python : par exemple la classe TStringList

  4. #4
    Membre chevronné

    Inscrit en
    avril 2002
    Messages
    436
    Détails du profil
    Informations forums :
    Inscription : avril 2002
    Messages : 436
    Points : 614
    Points
    614

    Par défaut

    Citation Envoyé par darrylsite Voir le message
    En pascal Objet - FreePascal par exemple-, il y a des listes dynamiques qui font tous ce que font les liste en python : par exemple la classe TStringList

    Je crois que ce n'est pas tout à fait exact étant donné que la classe TStringList hérite comme son nom l'indique de la classe TStrings qui est dédiée au type String (chaîne caractère) :
    TStrings implements an abstract class to manage an array of strings. It introduces methods to set and retrieve strings in the array, searching for a particular string, concatenating the strings and so on. It also allows an arbitrary object to be associated with each string.
    Il y a ensuite des méthodes de transtypage qu'il faut utiliser. Les listes Python sont beaucoup plus souples, elles sont non typées (typage dynamique).
    On peut donc faire avec TStringList tout ce qu'on peut faire avec les listes Python si et uniquement si on n'a à manipuler que des chaînes caractères. Après tout est possible mais passer d'un langage à typage dynamique à un langage à typage statique fort comme Pascal/pascal Objet suppose de regarder d'un peu plus près ce qui se passe.
    "Software is getting slower more rapidly than hardware becomes faster." Niklaus Wirth

  5. #5
    Rédacteur
    Avatar de darrylsite
    Inscrit en
    juillet 2007
    Messages
    1 300
    Détails du profil
    Informations forums :
    Inscription : juillet 2007
    Messages : 1 300
    Points : 2 210
    Points
    2 210

    Par défaut

    Citation Envoyé par richard Voir le message
    Il y a ensuite des méthodes de transtypage qu'il faut utiliser. Les listes Python sont beaucoup plus souples, elles sont non typées (typage dynamique).
    On peut donc faire avec TStringList tout ce qu'on peut faire avec les listes Python si et uniquement si on n'a à manipuler que des chaînes caractères. Après tout est possible mais passer d'un langage à typage dynamique à un langage à typage statique fort comme Pascal/pascal Objet suppose de regarder d'un peu plus près ce qui se passe.
    Tout à fait.
    TStringList n'est qu'un exemple des liste dynamique. J'ai choisit cette classe parce qu'il a utilisé une liste de chaine de caractère dans son exemple.
    Sinon, il existe bien des listes dynamique qui prend des objets générique (ou des pointeurs) comme type de liste : http://www.freepascal.org/docs-html/...ses/tlist.html

  6. #6
    Membre chevronné

    Inscrit en
    avril 2002
    Messages
    436
    Détails du profil
    Informations forums :
    Inscription : avril 2002
    Messages : 436
    Points : 614
    Points
    614

    Par défaut

    Je suis d'accord avec toi que pour "émuler" les listes Python, le mieux est d'utiliser une classe TList qui manipule des objets polymorphes avec les méthodes de transtypage ad hoc (entre autres) à l'intérieur.
    Enfin c'est comme ça que j'avais fait, il y a déjà longtemps. Maintenant il y a peut-être une autre méthode plus rapide et fiable, je ne sais pas.
    "Software is getting slower more rapidly than hardware becomes faster." Niklaus Wirth

  7. #7
    Membre chevronné
    Avatar de EpiTouille
    Homme Profil pro
    Étudiant
    Inscrit en
    mai 2009
    Messages
    332
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : mai 2009
    Messages : 332
    Points : 721
    Points
    721

    Par défaut

    Merci, vous m'avez tous aidé. Comme je ne suis pas un pro des pointers, je vais utiliser TstringList ou TintergerListe

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

Liens sociaux

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •