[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]