请解答答案为什么是这个数值,该怎么处理

请解答答案为什么是这个数值mainprograma:2b:a*acompute(a,b)procedurecomputer(x,y)y:2*x+yx:x

请解答答案为什么是这个数值
main   program

a   :=   2;
b   :=   a*a;

compute   (a,b);


procedure   computer(x,y);

y   :==   2*x   +   y;
x   :=   x+   2*y;

return;


在上面的主程序中,实参a   与形参x以引用调用的方式传递信息,实参b与形参y以值传递调用
的方式传递信息,那么,从过程“compute”返回主程序后a和b的值分别为   ——


答案是:18   和   4  


能不能给各详细的计算过程   ,   谢谢!!

[解决办法]
不好意思是:而b为传值,在传参时相当于执行一个赋值操作 y=b 后 x与b并不相关,处理过程返回后b还是保持原值,故还是 4