TP-programmation-imperative/td07/piles.ads

59 lines
1.7 KiB
Ada
Raw Normal View History

2023-06-10 19:03:54 +00:00
-- 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;