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

Turbo Pascal Discussion :

Changer la valeur d'une constante


Sujet :

Turbo Pascal

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Avatar de mario52
    Homme Profil pro
    Inscrit en
    Juin 2006
    Messages
    131
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2006
    Messages : 131
    Par défaut Changer la valeur d'une constante
    bonjour

    je voudrais savoir SVP comment changer la valeur d'une constante

    ex:
    pour , adapter la "const" au nombre d'enregistrements d'un fichier , en plus ou en moins
    merci.

  2. #2
    Membre Expert

    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2009
    Messages
    935
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Aveyron (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2009
    Messages : 935
    Par défaut


    Par définition, une constante ne varie pas !
    Tu n'as qu'a remplacer ta constante par une variable !

  3. #3
    Membre chevronné
    Homme Profil pro
    .
    Inscrit en
    Juin 2002
    Messages
    239
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : .
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2002
    Messages : 239
    Par défaut
    Bonjour.

    Il se trouve que, sous Turbo Pascal, une constante peut être modifiée par le programme à la condition que ce soit une constante typée.

    Citation du manuel Turbo-Pascal :

    " Les constantes typées peuvent être comparées à des variables initialisées, c'est-à-dire des variables dont la valeur est déjà définie avant tout premier accès. "

    Exemple :

    Const longueur : integer = 300 ;

  4. #4
    Expert confirmé

    Inscrit en
    Août 2006
    Messages
    3 967
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 3 967
    Par défaut
    Voe,
    Citation Envoyé par Prof Voir le message
    Il se trouve que, sous Turbo Pascal, une constante peut être modifiée par le programme à la condition que ce soit une constante typée.
    Oui, mais si cette "constante" sert à définir une limite pour un type tableau, le type ne sera pas modifié si on change la valeur, et ça ne semble donc pas convenir à la demande.

  5. #5
    Membre Expert
    Avatar de Dr.Who
    Inscrit en
    Septembre 2009
    Messages
    980
    Détails du profil
    Informations personnelles :
    Âge : 46

    Informations forums :
    Inscription : Septembre 2009
    Messages : 980
    Par défaut
    salut, je ne sais pas si cette methode fonctionne en TP :

    cas 1 :
    nous avons un tableau array[0..Longueur-1] of ...
    et la constante Longueur = 300
    mais nous voulons que cette longueur puisse être changée durant l'execution.

    problématique :
    une constante peut être changé grace aux commutateur $J+/- (constante typée affectable)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    {$J+}
    const
      Longueur : integer = 300;
    {$J-}
    mais le type tableau utilisant "Longueur" ne sera pas réalloué avec la nouvelle valeur.

    solution 1 :

    utilisation d'un tableau dynamique

    solution 2 :

    utilisation d'un pointeur tableau

    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
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    unit Arrays;
     
    interface
     
    type
      PIntArray = ^IntArray;
      IntArray  = packed array[0..0] of Integer;
     
      TIntArray = object
        Items    : PIntArray;
        Capacity : integer;
        Count    : integer;
     
        procedure Create(const aSize: integer);
        procedure Destroy;
        procedure Resize(const aSize: integer);
     
        function Add(const aValue: integer): integer; overload;
        procedure Add(const aValues: array of integer); overload;
     
        procedure Delete(const aIndex: integer);
     
        procedure Exchange(const aIndex1, aIndex2: integer); overload;
        procedure Exchange(const aIndexs: array of integer); overload;
     
        procedure Fill(const aValue: integer); overload;
        procedure Fill(const aRandMin, aRandMax: integer); overload;
        procedure Fill(const aFrom, aTo: integer; const aValue: integer); overload;
     
        procedure Insert(const aIndex: integer; const aValue: integer);
     
        procedure WriteOut;
      end;
     
     
    implementation
     
     
    { TIntArray }
     
    procedure TIntArray.Fill(const aValue: integer);
    var N : integer;
    begin
      for N := 0 to Count-1 do
        Items[N] := aValue;
    end;
     
    procedure TIntArray.Fill(const aFrom, aTo: integer; const aValue: integer);
    var N : integer;
    begin
      for N := aFrom to aTo do
        Items[N] := aValue;
    end;
     
    procedure TIntArray.Fill(const aRandMin, aRandMax: integer);
    var N : integer;
    begin
      for N := 0 to Count-1 do
        Items[N] := aRandMin + Random(aRandMax-aRandMin);
    end;
     
    procedure TIntArray.Insert(const aIndex: integer; const aValue: integer);
    begin
      Resize(Count+1);
      Move(Items[aIndex], Items[aIndex+1], (Count-aIndex) shl 2);
      Items[aIndex] := aValue;
    end;
     
    procedure TIntArray.Resize(const aSize: integer);
    begin
      Capacity := aSize shl 2;
      Count    := aSize;
      ReAllocMem(Items, Capacity);
    end;
     
    procedure TIntArray.WriteOut;
    var N, H : integer;
    begin
      H := Count-1;
      write('[',Count,'] : (');
      for N := 0 to H do
      begin
        Write(Items[N]);
        if N < H then
          Write(', ');
      end;
      writeln(')');
    end;
     
    procedure TIntArray.Delete(const aIndex: integer);
    begin
      Move(Items[aIndex+1], Items[aIndex], (Count-aIndex) shl 2);
      Resize(Count-1);
    end;
     
    procedure TIntArray.Destroy;
    begin
      FreeMem(Items, Capacity);
      Capacity := 0;
      Count    := 0;
      Items    := nil;
    end;
     
    procedure TIntArray.Exchange(const aIndexs: array of integer);
    var N : integer;
        T : integer;
    begin
      for N := 0 to High(aIndexs)-1 do
      begin
        T                   := Items[aIndexs[N]];
        Items[aIndexs[N]]   := Items[aIndexs[N+1]];
        Items[aIndexs[N+1]] := T;
      end;
    end;
     
    procedure TIntArray.Exchange(const aIndex1, aIndex2: integer);
    var T : integer;
    begin
      T              := Items[aIndex1];
      Items[aIndex1] := Items[aIndex2];
      Items[aIndex2] := T;
    end;
     
    function TIntArray.Add(const aValue: integer): integer;
    var R : integer;
    begin
      R := Count;
      Resize(R + 1);
      Items[R] := aValue;
      Add := R;
    end;
     
    procedure TIntArray.Add(const aValues: array of integer);
    var R, N, H : integer;
    begin
      R := Count;
      H := High(aValues);
      Resize(Count + H + 1);
      for N := 0 to H do
        Items[R+N] := aValues[N];
    end;
     
    procedure TIntArray.Create(const aSize: integer);
    begin
      if Items <> nil then
        Destroy;
     
      Capacity := aSize shl 2;
      Count    := aSize;
      Items    := AllocMem(Capacity);
    end;
     
    end.
    [ Sources et programmes de Dr.Who | FAQ Delphi | FAQ Pascal | Règlement | Contactez l'équipe ]
    Ma messagerie n'est pas la succursale du forum... merci!

  6. #6
    Membre Expert

    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2009
    Messages
    935
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Aveyron (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2009
    Messages : 935
    Par défaut
    Citation Envoyé par Prof Voir le message
    Bonjour.

    Il se trouve que, sous Turbo Pascal, une constante peut être modifiée par le programme à la condition que ce soit une constante typée.

    Citation du manuel Turbo-Pascal :

    " Les constantes typées peuvent être comparées à des variables initialisées, c'est-à-dire des variables dont la valeur est déjà définie avant tout premier accès. "

    Exemple :

    Const longueur : integer = 300 ;
    Autant pour moi

  7. #7
    Membre Expert
    Avatar de Dr.Who
    Inscrit en
    Septembre 2009
    Messages
    980
    Détails du profil
    Informations personnelles :
    Âge : 46

    Informations forums :
    Inscription : Septembre 2009
    Messages : 980
    Par défaut
    Citation Envoyé par mick605 Voir le message
    Autant pour moi

    "au temps pour moi"
    [ Sources et programmes de Dr.Who | FAQ Delphi | FAQ Pascal | Règlement | Contactez l'équipe ]
    Ma messagerie n'est pas la succursale du forum... merci!

  8. #8
    Membre confirmé
    Avatar de mario52
    Homme Profil pro
    Inscrit en
    Juin 2006
    Messages
    131
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2006
    Messages : 131
    Par défaut
    Bonjour et merci à tous pour les réponses
    voici où j'en suis ,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    type
         lco=longint;    {donRang}
         l10=string[10]; {donDate}
         l12=string[12]; {donCase}
    
    const longueur : word = 500;
    
    {Error 133: Cannot evaluate this expression}.
    type donnee=record
         donRang   :array[1..longueur] of lco;
         donDate   :array[1..longueur] of l10;
         donCase   :array[1..longueur] of l12;
         end;
    var  donnees :^donnee;
    le programme s'arrête à la première affectation de "longueur" avec l'erreur 133

    le commutateur n'est pas accepté

    mario

  9. #9
    Membre Expert

    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2009
    Messages
    935
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Aveyron (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2009
    Messages : 935
    Par défaut
    Citation Envoyé par Dr.Who Voir le message
    "au temps pour moi"
    http://mawwic.free.fr/blob/index.php...-au-temps-otan

Discussions similaires

  1. [MAC 2008] Changer la valeur d'une constante
    Par jefmonde dans le forum Microsoft Office
    Réponses: 1
    Dernier message: 31/05/2014, 10h16
  2. Changer la valeur d'une case à cocher
    Par Naksh-i dans le forum Servlets/JSP
    Réponses: 3
    Dernier message: 27/10/2006, 12h57
  3. Réponses: 1
    Dernier message: 23/09/2006, 14h12
  4. [SQL] Afficher la valeur d'une constante
    Par SebCBien dans le forum PHP & Base de données
    Réponses: 6
    Dernier message: 25/08/2006, 22h09
  5. Réponses: 17
    Dernier message: 03/10/2005, 11h16

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