Probleme pour implementer une file en ada

Probleme pour implementer une file en ada - Ada - Programmation

Marsh Posté le 09-02-2006 à 18:15:09    

Bonjour, j'essai d'implementer une module de file en ada, en me serant d'un tableau pour stocker les elements.
Voici la structure de donné que j'essai d'utiliser:
 
   type File is
      record
  Taille: Integer := 10;
         Tab: array (Integer range 1..Taille) of Integer;
         Premier, Dernier : Integer := 0;
         Longueur : Natural := 0;
      end record;
 
Lors de la compilation j'ai le message:
       files_limited.ads:13:15: anonymous arrays not allowed as components
 
C'est sur la ligne ou je declare le tableau evidement. Quelqu'un pourrait-il m'aider a comprendre l'erreur?
Ca veux dire quoi "anonymous arrays"?
Merci d'avance.

Reply

Marsh Posté le 09-02-2006 à 18:15:09   

Reply

Marsh Posté le 10-02-2006 à 15:06:54    

Ben ça veut dire Tableau anonyme.
 
Les champs d'un article doivent être d'un type NOMMÉ et non anonyme.
(C'est d'ailleurs la même chose pour les sous-programmes)

Reply

Marsh Posté le 10-02-2006 à 15:12:07    

tu peut ecrire ça plutôt :

Code :
  1. type Tableau is array (Integer range <> ) of Integer;
  2.   type Ma_File(Taille : Integer) is
  3.      record
  4.         Tab: Tableau (1..Taille);
  5.         Premier : Integer := 0;
  6.         Dernier  : Integer := 0;
  7.         Longueur : Natural := 0;
  8.      end record;

Reply

Marsh Posté le 13-02-2006 à 07:48:10    

Ok merci pour cette aide.
Je comprends pas vraiment ce que ca change pour le compilateur, mais en effet il n'y a plus d'erreurs a la compilation.
Etrange de pas pouvoir utiliser le type array directement.

Reply

Marsh Posté le 13-02-2006 à 09:08:51    

une fille en ada ? [:sinking]

Reply

Marsh Posté le 14-02-2006 à 14:54:37    

dentan a écrit :

Ok merci pour cette aide.
Je comprends pas vraiment ce que ca change pour le compilateur, mais en effet il n'y a plus d'erreurs a la compilation.
Etrange de pas pouvoir utiliser le type array directement.


 
C'est parceque Ada est fortement typé.
 
Ada exige que les variables soit d'un type nommé pour que le compilateur puisse controller des erreur de typage.
ex:

Code :
  1. type jour is (lun,mar,mer,jeu,ven,sam,dim);
  2. type recette_de_la_semaine is array (jour) of float;
  3. type chronos_de_la_semaine is array (jour) of float;
  4. rec1,rec2 : recette_de_la_semaine;
  5. perf : chronos_de_la_semaine;


 
On peut écrire:

Code :
  1. rec1 := rec2;


Ce qui a pour effet d'affecter l'ensemble des recettes de la semaine 2 à celle de la semaine 1.
Mais on ne peut pas écrire (et c'est heureux):

Code :
  1. perf := rec1;


 
Car les 2 tableaux -bien que de même dimensions et contenant le même type - n'ont sémantiquement rien à voir.
 
Alors pourquoi peut-on écrire :

Code :
  1. mon_tableau : array (jour) of un_type;


 
C'est parceque Ada permet aussi de créer des tableau dit anonymes (i.e sans type).
Et ainsi permet de créer des tableaux sans avoir à créer un nouveau type, lorsque par exemple tu ne veux créer qu'un seul tableau sans exporter de type...
 
Alors là tu te dis : " mais j'veux créer qu'un seul tableau, juste pour mon article !!!!"
 
Oui mais non car à ce moment là, ton article (qui est évidemment typé) contient des champs non typés, et là c'est la pagaille dans l'abstraction de ton type, et :

Code :
  1. file1 := file2;


Affecterait des champs qui n'ont pas le même type.
 
Donc en conclusion, pas de tableau anonyme comme champ d'article.

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed