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 :

Indice hors des bornes d'un tableau


Sujet :

Langage Pascal

  1. #1
    Candidat au Club
    Inscrit en
    Octobre 2008
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 2
    Points : 2
    Points
    2
    Par défaut Indice hors des bornes d'un tableau
    Bonsoir à tous,

    Pour remplir un tableau de 10 entiers ( t:array [1..10] of integer), j'utilise une boucle for :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    for i:= 1 to 10 do
    readln(t[i]);
    Jusqu'a maintenant ça va !

    Maitenant, admettons que je me trompe dans l'indice max, au lieu de 10 je tape 11 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    for i:= 1 to 11 do
    readln(t[i]);
    Normalement l'élément t[11] n'existe pas et pourtant je fais la saisie de 11 éléments (11 affichés) ! C'est normal ????? Si oui, pourquoi ?

    Merci pour votre aide.

  2. #2
    Expert confirmé

    Inscrit en
    Août 2006
    Messages
    3 941
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 3 941
    Points : 5 652
    Points
    5 652
    Par défaut
    Kae,

    Ce n'est pas normal, mais ça peut se produire : si la variable correspondant à l'indice hors bornes ne touche rien de critique pour le programme, ça peut passer, sans que ce soit garanti.

    Le meilleur moyen d'éviter ce genre de problème est d'utiliser des constantes pour définir les limites:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    const
      indMin = 1;
      indMax = 10;
     
    type
      table = array [indMin..indMax] of integer;
     
    ....
     
    { et pour les boucles sur un tableau ainsi défini,
      utiliser également les constantes }
    Il y a un autre avantage précieux à faire ainsi : si tu veux changer les bornes du tableau, il suffit de changer les constantes, et tout le reste du programme en tiendra compte. Absolument non négligeable !!
    Si les cons volaient, il ferait nuit à midi.

  3. #3
    Membre éprouvé
    Avatar de CapJack
    Homme Profil pro
    Prof, développeur amateur vaguement éclairé...
    Inscrit en
    Mars 2004
    Messages
    624
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Prof, développeur amateur vaguement éclairé...
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2004
    Messages : 624
    Points : 988
    Points
    988
    Par défaut
    Dans Options/Compiler, cocher "Range checking".

  4. #4
    Candidat au Club
    Inscrit en
    Octobre 2008
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 2
    Points : 2
    Points
    2
    Par défaut
    Et beh voilà !!
    Merci pour ces informations précieuses

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

Discussions similaires

  1. Recherche des indices min et max dans un tableau 2D
    Par Bysbobo dans le forum LabVIEW
    Réponses: 3
    Dernier message: 03/05/2013, 09h36
  2. vecteur,tableau indicé par des dates
    Par LePetitBricoleur dans le forum C++
    Réponses: 2
    Dernier message: 13/10/2007, 16h07
  3. [Debutant] Stocker des objets dans un tableau à plusieurs indices
    Par Invité dans le forum Collection et Stream
    Réponses: 4
    Dernier message: 27/09/2006, 19h04
  4. [C#] Affichage des lignes dans un tableau.
    Par maldufleur dans le forum ASP.NET
    Réponses: 4
    Dernier message: 21/04/2004, 12h28
  5. Décaler des valeurs dans un tableau
    Par sh2003 dans le forum Langage
    Réponses: 6
    Dernier message: 20/03/2004, 17h01

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