59 lines
1.7 KiB
Ada
59 lines
1.7 KiB
Ada
|
-- Spécification du module Piles.
|
||
|
|
||
|
generic
|
||
|
Capacite : Integer; -- Nombre maximal d'éléments qu'une pile peut contenir
|
||
|
type T_Element is private; -- Type des éléments de la pile
|
||
|
|
||
|
package Piles is
|
||
|
|
||
|
type T_Pile is limited private; --! "très privé" en Algorithmique !
|
||
|
--! Sur un type privé, on a droit à l'affectation (:=) et l'égalité (=).
|
||
|
--! On perd ces opérations avec un type "limited private" (très privé).
|
||
|
|
||
|
-- Initilaiser une pile. La pile est vide.
|
||
|
procedure Initialiser (Pile : out T_Pile) with
|
||
|
Post => Est_Vide (Pile);
|
||
|
|
||
|
|
||
|
-- Est-ce que la pile est vide ?
|
||
|
function Est_Vide (Pile : in T_Pile) return Boolean;
|
||
|
|
||
|
|
||
|
-- Est-ce que la pile est pleine ?
|
||
|
function Est_Pleine (Pile : in T_Pile) return Boolean;
|
||
|
|
||
|
|
||
|
-- L'élément en sommet de la pile.
|
||
|
function Sommet (Pile : in T_Pile) return T_Element with
|
||
|
Pre => not Est_Vide (Pile);
|
||
|
|
||
|
|
||
|
-- Empiler l'élément en somment de la pile.
|
||
|
procedure Empiler (Pile : in out T_Pile; Element : in T_Element) with
|
||
|
Pre => not Est_Pleine (Pile),
|
||
|
Post => Sommet (Pile) = Element;
|
||
|
|
||
|
|
||
|
-- Supprimer l'élément en sommet de pile
|
||
|
procedure Depiler (Pile : in out T_Pile) with
|
||
|
Pre => not Est_Vide (Pile);
|
||
|
|
||
|
|
||
|
-- Afficher les éléments de la pile
|
||
|
generic
|
||
|
with procedure Afficher_Element (Un_Element: in T_Element);
|
||
|
procedure Afficher (Pile : in T_Pile);
|
||
|
|
||
|
|
||
|
private
|
||
|
|
||
|
type T_Tab_Elements is array (1..Capacite) of T_Element;
|
||
|
|
||
|
type T_Pile is
|
||
|
record
|
||
|
Elements : T_Tab_Elements; -- les éléments de la pile
|
||
|
Taille: Integer; -- Nombre d'éléments dans la pile
|
||
|
end record;
|
||
|
|
||
|
end Piles;
|