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 :

[TP] Constantes typées et non typées, variables


Sujet :

Turbo Pascal

  1. #1
    Membre régulier
    Inscrit en
    Août 2002
    Messages
    132
    Détails du profil
    Informations forums :
    Inscription : Août 2002
    Messages : 132
    Points : 102
    Points
    102
    Par défaut [TP] Constantes typées et non typées, variables
    Salut!

    Je suis un peu étonné sur la définition de constante en Pascal : je pensais que c'était conseillé de mettre le type de la constante qu'on définit, mais ... c'est l'inverse en fait!

    Exemple :
    marche mieux que :
    En effet, le premier bout de code permet une utilisation de N dans une définition de type ou une déclaration de variable, pas la deuxième!!!

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Const N=4;
    Type jeu : array[1..N,1..N] of char;
    Var vecteur : array[1..N] of real;
    compile mais

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Const N : integer =4;
    Type jeu : array[1..N,1..N] of char;
    Var vecteur : array[1..N] of real;
    ne compile pas

    Quelqu'un sait pourquoi???

    Enfin ... C'est pas bien embêtant mais il faut le savoir...

    A bientot

  2. #2
    Membre habitué
    Avatar de Stormy_Ordos
    Profil pro
    Expert sécurité informatique
    Inscrit en
    Mars 2005
    Messages
    91
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Expert sécurité informatique

    Informations forums :
    Inscription : Mars 2005
    Messages : 91
    Points : 166
    Points
    166
    Par défaut
    Bonjour,

    Si je me souviens bien (ça fait longtemps), Pascal fait une différence d'allocation de mémoire, lorsqu'il compile un programme contenant des Const et des Var. Une fois le programme lancé (c-à-d chargé en mémoire), les segments de mémoire correspondants aux Constantes et aux Variables n'auront pas la même taille, et ne seront pas localisés au même endroit.
    Lorsqu'on déclare une constante de cette manière :
    la constante I ne sera plus modifiable par la suite, mais une constante typée, qui s'écrit comme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Const I : byte = 1;
    se comportera de la même manière qu'une variable, excepté le fait qu'elle ne sera pas stockée au même endroit.
    D'où le fait qu'on ne puisse pas déclarer, par ex, de tableau avec une constante typée. L'instruction :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Const LIMITE : byte = 1;
    Var table : array[0..LIMITE] of integer;
    ne compile même pas!
    L'intérêt, en fin de compte, de déclarer une constante typée, est d'affecter une valeur à une variable dès le chargement du programme, sans aucune instruction d'affectation.

    a++

    Dans la vie, il y a 10 sortes de personnes. Ceux qui comprennent le binaire et les autres...


  3. #3
    Membre régulier
    Inscrit en
    Août 2002
    Messages
    132
    Détails du profil
    Informations forums :
    Inscription : Août 2002
    Messages : 132
    Points : 102
    Points
    102
    Par défaut
    Merci d'avoir répondu à cette remarque... C'est tout à fait correct (je viens de vérifier...)

    A bientot!

  4. #4
    Responsable Pascal, Lazarus et Assembleur


    Avatar de Alcatîz
    Homme Profil pro
    Ressources humaines
    Inscrit en
    Mars 2003
    Messages
    7 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ressources humaines
    Secteur : Service public

    Informations forums :
    Inscription : Mars 2003
    Messages : 7 938
    Points : 59 416
    Points
    59 416
    Billets dans le blog
    2
    Par défaut
    Bonjour !

    La différence entre des constantes typées et non typées est assez profonde : les constantes typées peuvent être considérées comme des variables globales déclarées avec une valeur initiale. Elles sont stockées dans le segment de données du programme.
    Il est tout-à-fait possible de déclarer des constantes typées de types tableau ou enregistrement !

    Les constantes non typées numériques peuvent généralement être considérées comme des directives de compilation. Elles ne donnent lieu à aucune réservation en mémoire.
    D'autres types de constantes non typées, comme les tableaux de caractères, font par contre l'objet d'une réservation dans le segment de données.

    Exemples :

    NbElements peut être utilisé pour clarifier le code ou pour faciliter une modification future de valeur. Mais, lors de la compilation, le compilateur traduira simplement NbElements en 4.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Const Titre = 'Enregistrer sous...';
    Le compilateur réservera un espace mémoire pour cette chaîne dans le segment de données.
    Règles du forum
    Cours et tutoriels Pascal, Delphi, Lazarus et Assembleur
    Avant de poser une question, consultez les FAQ Pascal, Delphi, Lazarus et Assembleur
    Mes tutoriels et sources Pascal

    Le problème en ce bas monde est que les imbéciles sont sûrs d'eux et fiers comme des coqs de basse cour, alors que les gens intelligents sont emplis de doute. [Bertrand Russell]
    La tolérance atteindra un tel niveau que les personnes intelligentes seront interdites de toute réflexion afin de ne pas offenser les imbéciles. [Fiodor Mikhaïlovitch Dostoïevski]

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

Discussions similaires

  1. [Free Pascal] Erreur de lecture de fichier non typé
    Par bubulemaster dans le forum Free Pascal
    Réponses: 5
    Dernier message: 05/02/2010, 14h14
  2. Recherche de chaîne dans un tampon non typé
    Par bvsud dans le forum Langage
    Réponses: 7
    Dernier message: 13/01/2010, 16h50
  3. Avantages et inconvénients d'un langage typé par rapport à un langage non typé ?
    Par super_navide dans le forum Langages de programmation
    Réponses: 14
    Dernier message: 18/07/2007, 13h45
  4. Réponses: 4
    Dernier message: 10/05/2006, 10h36
  5. transformer un buffer non typé en string
    Par bjl dans le forum Langage
    Réponses: 6
    Dernier message: 07/01/2006, 12h14

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