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 :

Manipulation des types énumérés [FAQ]


Sujet :

Langage Pascal

  1. #1
    Membre à l'essai
    Inscrit en
    Octobre 2006
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 10
    Points : 10
    Points
    10
    Par défaut Manipulation des types énumérés
    Salut
    J'ai défini un nouveau type Jour
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Type Jour=(lundi,mardi,mercredi,jeudi,vendredi,samedi,dimanche).
    Pour les manipuler, je sais qu'il existe les méthodes prédéfinies suivantes :
    SUCC(lundi) est mardi
    PRED(lundi) est dimanche
    Ord(lundi) est 1

    J'ai écrit le code suivant pour afficher toutes les valeurs possibles de Jour(pour l'utiliser dans un autre programme) mais ce code ne fonctionne pas !!!!!!

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    Type Jour=(lundi,mardi,mercredi,jeudi,vendredi,samedi,dimanche).
    var x:Jour;
    begin
    x:='lundi';
     
    while (x<='dimanche') do
    begin
      writeln(x);
      x:=SUCC(x);
    end;
    readln;
    end.
    L'erreur de compilation est : impossible d'utiliser write et readln pour un type Jour.
    J'ai inséré une autre variable de type string y
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    Type Jour=(lundi,mardi,mercredi,jeudi,vendredi,samedi,dimanche).
    var x:Jour;y: string;
    begin
    x:='lundi';
     
    while (x<='dimanche') do
    begin
    y:=x;//il faut utiliser y:=copy(x,1,length(x));
      writeln(y);
      x:=SUCC(x);
    end;
    end.
    Merci et j'attends vos commentaires

  2. #2
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 27
    Points : 24
    Points
    24
    Par défaut
    Salut !!

    Si tu pouvais deja préciser ce que tu essais de faire ce serait bien !!

    Je ne sais pas ce que tu cherches exactement ... ou plutôt si ... MAIS vire au moins les erreurs de syntaxte de ton code, et pis améliore le français.

    Ensuite, tu ne maîtrises pas bien la notion de "type énuméré" que tu peux définir toi même. Les valeurs que tu donnes à ton type énuméré correspondent en fait à des valeurs ordinales, auquelles tu peux donner des noms symboliques mais ce sont toujours des valeurs ordinales que tu manipules en réalité.

    En gros pour simplifier (bien que ce ne soit pas le cas) quelque soit les noms que tu aurais donné à ton type jour, c'est comme si tu avais écrit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    type jour (0, 1, 2, 3, 4, 5, 6) ;
    Sauf que tu peux donner à ces numéros ordinaux d'autres noms plus pratiques pour toi, ce que tu as fait en prenant les jours de la semaine, mais pascal ne prend en compte que l'ordre de leur déclaration pour les manipuler, si bien que ces noms n'ont aucune représentation pour le compilateur.

    Ce qui fait que l'instruction x := 'lundi' n'a aucun sens pour Pascal dans ton code puisque x est de type énuméré ...

    Si x vaut "lundi" à un instant donné, x n'est au fond qu'une valeur ordinale !
    Donc dans ton code jour(1) vaut lundi, mais contrairement à ce que tu as écrit ord(lundi) vaut 0 ... et c'est tout !!! Il t'est impossible d'opérer des entrées/sorties du style write (x) ou read (x) si x est de type énuméré.

    PAR CONTRE tu peux utiliser ta variable x de type jour comme paramètre dans un traitement quelconque, et c'est là tout l'intérêt en fait.

    Par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    x := jeudi ;
    case x of 
       lundi : instruction ... 
       mardi : instruction ...
       mercredi : instruction ...
       etc 
    end ;
    Si tu as compris ce dernier point, tu devrais pouvoir arriver à faire ce que tu veux le plus simplement du monde !

Discussions similaires

  1. Réponses: 18
    Dernier message: 29/10/2012, 12h06
  2. Manipuler des fichiers de type Unix sous Windows
    Par hermes1983 dans le forum Entrée/Sortie
    Réponses: 4
    Dernier message: 06/06/2009, 08h43
  3. Comment manipuler des instance de type Date java.sql
    Par mehdi_scofield dans le forum Langage
    Réponses: 3
    Dernier message: 29/10/2008, 16h15
  4. [C#] comment manipuler des types inconnus ?
    Par clinic dans le forum C#
    Réponses: 10
    Dernier message: 09/07/2007, 12h01
  5. Comment Manipuler des objets dans une liste de type TList ?
    Par PadawanDuDelphi dans le forum Delphi
    Réponses: 1
    Dernier message: 02/11/2006, 15h40

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