Pascal嵌套中的Forward如何使用

因为书上关于forward语句的叙述不怎么清楚比如这个求组合的程序如何加上forward来使函数fac可以调用函数comprogramzlx;varm,n:integer... 因为书上关于forward语句的叙述不怎么清楚
比如这个求组合的程序
如何加上forward来使函数fac可以调用函数com
program zlx;
var
m,n:integer;
function com(x,y:integer):real;
function fac(a:integer):real;
var
b:integer;
fa:real;
begin
fa:=1;
for b:=1 to a do
fa:=fa*b;
fac:=fa;
end;
begin
com:=fac(x)/fac(y)/fac(x-y);
end;
begin
readln(m,n);
writeln(com(m,n));
end.
展开
 我来答
Many_question
2013-05-24 · TA获得超过2853个赞
知道大有可为答主
回答量:2040
采纳率:66%
帮助的人:2339万
展开全部
function com(x,y:integer):real; forward;

像这样就行.
后面再定义
function com():real;
begin
..
end;
追问

请看这是书上给的格式 我不大懂怎么可以把上面的程序改成这个样子

特别是b(p,q) 还有a(x,y)那个两个地方 这格式到底应该怎么写

追答
你只需要把要提前定义的函数的函数头写在前面就行了,后面再定义的时候写不写参数都可以的.
比如:
procedure b(arg1,arg2:integer); forward

procedure a(arg1:integer);
begin
b(0,0); //由于前面定义了,这里合法
end;

procedure b(arg1,arg2:integer); //补充定义
你喜欢也可以写成:
procedure b; //不写参数,其实习惯上都会写,不写感觉很奇怪.

begin
...
end.
aeiouing1
2013-05-25 · TA获得超过256个赞
知道小有建树答主
回答量:156
采纳率:0%
帮助的人:84.5万
展开全部
forward是一种类似于前向调用的关键字,其用法如下:
function max(a,b:longint):longint;forward;
function ex1(a,b:longint):longint;forward;

function max(a,b:longint):longint;
begin
if a>b then exit(a);
exit(b);
end;

function ex1(a,b:longint):longint;
begin
exit(max(a,b));
end;

//当然这段程序无意义、、、

解释一下,是这么样的:在pascal中,所有procedure和function是不可以互相使用的,比如说:
function max(a,b:longint):longint;
begin
if a>b then exit(a);
exit(b);
end;

function ex1(a,b:longint):longint;
begin
exit(max(a,b));
end;
这段程序就是非法的,默认中pascal的互相调用会引起错误,可能是内存上容易因此错误吧。。。

因此在互相调用之前需要向编译器声明,我要调用和我同级的子程序了,你得给我安排好了,于是编译器就给你安排了一下,使得,厄,貌似是内存指针上还是什么玩意儿的做了一下变动,就是换了一种处理方式,于是就可以调用了。。。

其实还可以这么玩:
procedure ex1(ex:longint);forward;
procedure ex2(ex:longint);forward;

procedure ex1(ex:longint);
begin
//语句1
//语句2
ex2(n);
//语句X
//语句Y
end;

procedure ex2(ex:longint);
begin
begin
//语句1
//语句2
ex1(n);
//语句X
//语句Y
end;

然后就可以实现互相调用了··

可以继续追问或者私M我
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式