[Back to TURTLE SWAG index] [Back to Main SWAG index] [Original]
(* ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
³ Programated by Vladimir Zahoransky ³
³ Vladko software ³
³ Contact : zahoran@cezap.ii.fmph.uniba.sk ³
³ Program tema : Unit - define stack for rekusion algorithm ³
ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ *)
{ This unit is useful for programers, who are not undestanding
rukuzive algorithm. This program save the datas to stack when
is rekusion working and then you can finger the obligation.
This unit can be useful for programers, who use this program
when rekusion is working and then they want to make algorithm
less rekusion. Here are some commands :
Prvok (item) date typ of variables changeful
Init - inicializing the stack before rekusion part
Full - return true if stack is full of variables else return false
Emty - return true if stack is empty of variables else return false
Push - Push data to stack
Pop - Pop data from stack
Chyba (error) - write error situation mesage }
(* Recepe how use this program : You muth have correkt rekusion algorithm!
You muth know all rekusive variables !
Correktly record the variables to structure!
And modify this unit for your work, or
use DynStack.pas
*)
unit oStack;
interface
const maxstack=100;
{Prvok = item}
type Prvok=record v,n:integer; a:real end;
Stack=Object
st: array[1..maxstack] of Prvok;
vrch: 0..maxstack;
p:prvok;
Procedure init;
Function full:boolean;
Function empty:boolean;
Procedure push(p1:prvok);
Procedure pop(var p1:prvok);
End;
Implementation
Procedure Error(s:string); {Chyba = error}
Begin
writeln(s);
halt;
End;
Procedure Stack.init;
Begin
vrch:=0;
p.v:=0;
p.n:=0;
p.a:=0;
End;
Function Stack.full:boolean;
Begin
full:=vrch=maxstack
End;
Function Stack.empty:boolean;
Begin
Empty:=vrch=0
End;
Procedure Stack.push(p1:prvok);
begin
if full then Error('Full stack!')
else
begin
inc(vrch);
with st[vrch] do begin p:=p1 end;
end
end;
Procedure Stack.pop(var p1:prvok);
Begin
if empty then Error('Empty stack')
else
begin
with st[vrch] do begin p1:=p; end;
dec(vrch);
End
End;
End.
[Back to TURTLE SWAG index] [Back to Main SWAG index] [Original]