verem.ads
package verem is
type stack(size : integer := 10) is private;
procedure pop(s : in out stack; e : out integer);
procedure push(s : in out stack; e : in integer);
procedure top(s : in stack; e : out integer);
function isEmpty(s : in stack) return boolean;
function isFull(s : in stack) return boolean;
private
subtype int is integer range 1..100;
type stack_vect is array(int range <>) of integer;
type stack(size : integer := 10) is record
v : stack_vect(1..size);
i : integer := 0;
end record;
end verem;
verem.adb
package body verem is
procedure pop(s : in out stack; e : out integer) is
begin
e := s.v(s.i);
s.i := s.i - 1;
end pop;
procedure push(s : in out stack; e : in integer) is
begin
s.i := s.i + 1;
s.v(s.i) := e;
end push;
procedure top(s : in stack; e : out integer) is
begin
e := s.v(s.i);
end top;
function isEmpty(s : in stack) return boolean is
begin
return s.i = 0;
end isEmpty;
function isFull(s : in stack) return boolean is
begin
return s.i = s.size;
end isFull;
end verem;
veremmain.adb
with ada.text_io, verem;
use ada.text_io, verem;
procedure mainverem is
s : stack(15);
e : integer;
begin
for i in 1..10 loop
push(s,i);
end loop;
for i in 1..10 loop
pop(s,e);
put_line(integer'image(e));
end loop;
end mainverem;
VISSZA