[TP] Problème d'utilisation d'une unité
Salut
J'ai programmé l'unité ci-après mais je ne n'arrive pas a utiliser celle-ci dans le programme principal.
J'ai le message suivant : "Type mismatch" lorque j'appelle une fonction (ou procédure) de l'unité.
Par ailleurs, les déclarations des variables de l'unité doivent correspondre exactement à ce que l'on prévoit d'utiliser dans le programme principal ?
Code:
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
| Unit FILOU ;
Interface
Const longmax = 10 ;
Nmax = 4 ;
Type Fifo = record
tab : Array [1..longmax] of string;
sommet : 0..Nmax ;
end;
Procedure retirer (var Elt: string;var F : Fifo) ;{renvoie lélément pointé par tête et diminue tête dune unité. }
Procedure ajouter (var Elt : string ; var F : Fifo);{{ajoute dans le tableau dans la case pointée par
fin un élément et tête augmente dune
unité. }
Procedure premier (var Elt: string; P : Fifo );{fournit une copie de lélément pointé par tête (la file reste intacte)}
Function Est_vide (P: Fifo): boolean ;
IMPLEMENTATION
Procedure retirer (var Elt : string ; var F : Fifo); {condition initialiser sommet a Nmax}
Begin
If F.sommet = 0 then F.sommet := Nmax; {reponse a la condition}
ELT := F.Tab[F.sommet] ; {renvoit element pointe par tete}
F.sommet := F.sommet -1 ; {diminue tete de 1 unite}
F.Tab[F.sommet + 1]:=' '; {retire element pointe }
end;
Procedure ajouter (var Elt: string ; var F: Fifo ); {Initialiser sommet a 0 }
var Fi: Fifo ; {tableau de sauvegarde }
a , l : integer ; {variable d'incrementation }
begin
If F.sommet = Nmax then F.sommet := 0 ; {Initialiser sommet a 0 }
{sauvegarder le contenu du tableau f dans Fi (tableau interne)}
For l := F.sommet to Nmax do Fi.Tab[l] := F.Tab[l] ;
{ decale le contenu du tableau d'une unité}
For a := F.sommet to Nmax do F.tab [a + 1 ]:= Fi.tab[a] ;
F.sommet := 1 ; {Pointeur en fin }
F.tab[F.sommet] := elt ; {ajoute element a l'espace pointe }
end;
Procedure premier (var Elt: string ; P : fifo);
var Sommeti : 0..20 ; {variable de sauvegarde de sommet}
Begin
sommeti := P.sommet ;
P.sommet := Nmax ; {pointe tete}
Elt := P.Tab[P.sommet] ; {renvoit element pointe par tete}
P.sommet := sommeti ;
end;
Function Est_vide (P : fifo ): boolean ;
var i: integer ;
s: string ;{variable de sauvegarde de contenu de tab[i] }
Begin
i := -1 ; {initialise i à -1 }
s := ' '; {fait le vide dans s }
Repeat { scanne le file du debut a l fin}
i := i + 1 ; {incrementer i}
s := P.Tab[i] ; { introduit le contenu du tableau dans s afin de proceder o test }
Until (s <> ' ') or ( i >= Nmax + 1 ); {sortir si contenu de s n'est pas vide ou
si variable i depasse la longeur de la file }
If i >= Nmax + 1 then Est_vide := true {si i > longmax d la lfile alors file est vide}
else Est_vide := false ; {sinon file non vide }
End ;
BEGIN
END. |
Comment déclarer les variables du programme principal pour utiliser cette unité, dans le cas où on veut ajouter un élément entré par l'utilisateur dans un tableau ?
Un exemple de programme utilisant cette unité sera le bienvenu.
........................................................................MERCI D'AVANCE.............................................................................