回 帖 发 新 帖 刷新版面

主题:关于QBASIC的二段程序问题





1:
ON KEY(3) GOSUB t
 KEY(3)  ON
DO 
LOOP UNTIL  INKEY$<>'"'
END
KEY(3)  OFF
t: PRINT  "time="; TIME$
RETURN

2:

FUNCTION   Age(n)
   IF n=1 THEN  Age=10 ELSE Age=Age(n-1)+2
END FUNCTION
主程序如下:
DECLARE FUNCTION  Age(n)
 PRINT Age(5) 
END
请各位大侠详细解释一下这二段程序的执行过程[em10][em10][em10]

回复列表 (共1个回复)

沙发

1:
ON KEY(3) GOSUB t    '[color=ff00ff]定义功能键<F3>键跳转[/color]
 KEY(3)  ON          '[color=ff00ff]打开功能键捕捉[/color]
DO                   '[color=ff00ff]运行空循环[/color]
LOOP UNTIL  INKEY$<>'"'
END
KEY(3)  OFF          '[color=ff00ff]关闭功能键捕捉,这里用在END后面无效[/color]
t: PRINT  "time="; TIME$   '[color=ff00ff]功能键捕捉后程序[/color]
RETURN

'[color=ff00ff]其实这段程序在DOS机上已经运行得很不稳定了,
我曾经测试过,经常无法按照构想的计划来运行,
功能键捕捉得不是那么的准确,一般情况下,
我都改在DO循环里捕捉键盘扫描码,
那样子才能确保程序运行在掌控之中。
而且上面程序的行标号用了一个字母t
这可不是什么好习惯。[/color]

2:

FUNCTION   Age(n)          '[color=ff00ff]函数体[/color]
   IF n=1 THEN  Age=10 ELSE Age=Age(n-1)+2    '[color=ff00ff]递归调用[/color]
END FUNCTION
主程序如下:
DECLARE FUNCTION  Age(n)
 PRINT Age(5)              '[color=ff00ff]调用函数[/color]
END

'[color=ff00ff]运行顺序如下:[/color]
Pring Age(5)        参数值为5,调用函数
If......=Age(n-1)   参数值为n-1=4,调用函数
If......=Age(n-1)   参数值为n-1=3,调用函数
If......=Age(n-1)   参数值为n-1=2,调用函数
If......=Age(n-1)   参数值为n-1=1,调用函数
参数值为1,得函数值为10
函数值为10,退回上一层调用Age=Age(n-1)+2=10+2=12
函数值为12,退回上一层调用Age=Age(n-1)+2=12+2=14
函数值为14,退回上一层调用Age=Age(n-1)+2=14+2=16
函数值为16,退回上一层调用Age=Age(n-1)+2=16+2=18
得最终结果为18

我来回复

您尚未登录,请登录后再回复。点此登录或注册