It's not Java, but anyway.. it looks like the code takes 4 steps in a stack, comparing the num value with each value on the top of the stack each iteration.

Let's assume we denote a stack with the following notation:

[5, 3, 7, 1] where 5 is the top element.

Let's assume we look at the state at 3 different points namely:

function LASTAT(s,num)

{

var pos in Int

var ret in Int

var temp in Stack of Int

temp <-- s

>1>>>>>>>>>>>>>>>>>>>>>>>>

for (pos <-- 0 to 4)

{

if (PEEK(temp) == num) then { ret <-- pos }

temp <-- POP(temp)

>2>>>>>>>>>>>>>>>>>>>>>>>>

}

>3>>>>>>>>>>>>>>>>>>>>>>>>

return ret

}

Then in an example:

LASTAT([5, 3, 7, 1], 7);

[1] pos=0, ret=0, temp=[5,3,7,1], num=7

[2] pos=0, ret=0, temp=[3,7,1], num=7 (if statement compares PEEK(temp)=5 with num=7)

[2] pos=1, ret=0, temp=[7,1], num=7 (if statement compares PEEK(temp)=3 with num=7)

[2] pos=2, ret=2, temp=[1], num=7 (if statement compares PEEK(temp)=7 with num=7)

[2] pos=3, ret=2, temp=[], num=7 (if statement compares PEEK(temp)=1 with num=7)

[3] pos=3, ret=2, temp=[], num=7 (if statement compares PEEK(temp)=1 with num=7)

I just noticed that the name is LASTAT (=> LastAt). That's what it does, it finds the last index of num in a stack of 4 elements.

pos is used as counter through the stack

ret is used as return value

temp is used as stack copy (since there is a POP, the stack changes so a temporary value is necessary)

I made several assumptions about the language, but i guess this will be sufficient.

Mark

Let's assume we denote a stack with the following notation:

[5, 3, 7, 1] where 5 is the top element.

Let's assume we look at the state at 3 different points namely:

function LASTAT(s,num)

{

var pos in Int

var ret in Int

var temp in Stack of Int

temp <-- s

>1>>>>>>>>>>>>>>>>>>>>>>>>

for (pos <-- 0 to 4)

{

if (PEEK(temp) == num) then { ret <-- pos }

temp <-- POP(temp)

>2>>>>>>>>>>>>>>>>>>>>>>>>

}

>3>>>>>>>>>>>>>>>>>>>>>>>>

return ret

}

Then in an example:

LASTAT([5, 3, 7, 1], 7);

[1] pos=0, ret=0, temp=[5,3,7,1], num=7

[2] pos=0, ret=0, temp=[3,7,1], num=7 (if statement compares PEEK(temp)=5 with num=7)

[2] pos=1, ret=0, temp=[7,1], num=7 (if statement compares PEEK(temp)=3 with num=7)

[2] pos=2, ret=2, temp=[1], num=7 (if statement compares PEEK(temp)=7 with num=7)

[2] pos=3, ret=2, temp=[], num=7 (if statement compares PEEK(temp)=1 with num=7)

[3] pos=3, ret=2, temp=[], num=7 (if statement compares PEEK(temp)=1 with num=7)

I just noticed that the name is LASTAT (=> LastAt). That's what it does, it finds the last index of num in a stack of 4 elements.

pos is used as counter through the stack

ret is used as return value

temp is used as stack copy (since there is a POP, the stack changes so a temporary value is necessary)

I made several assumptions about the language, but i guess this will be sufficient.

Mark