FoxProforWindows程序设计第9章.pptVIP

  • 0
  • 0
  • 约9.86千字
  • 约 53页
  • 2019-09-06 发布于广东
  • 举报
IF a2=0 RETU ENDIF DO sub1 ? ′矩形面积计算是: ′,A1,′*′,A2,′=′,mj ENDDO RETU PROC sub1 内部过程入口语句 mj=a1*a2 RETU 主调程序所定义的内存变量, 虽然没有说明为全局变量, 仍然可以在其被调用的一系列子程序中使用。而子程序中定义的内存变量, 在其主调程序中不能引用。因为变量MJ是在子程序sub1中定义的, 并没有说明它是全局变量,所以当返回到主调程序输出变量MJ时,出现了“变量找不到”的错误信息。 为了改正程序中出现的这个错误,有两个办法:  (1) 在主调程序用PUBLIC语句说明的变量中, 说明变量MJ也是全局变量。  (2) 在主调程序中用赋值语句将变量MJ初始化为 0 (MJ=0)。因为在主调程序定义的变量, 虽然未说明为全局变量, 但是可以在被调程序中使用。  2. 局部变量的说明语句 PRIVATE 〈局部内存变量名表〉 或 PRIVATE ALL [LIKE|EXCEPT 〈通配文件名〉] 如果在一个过程中把一些变量定义为局部变量, 则被定义的局部变量只能在本过程内部有效, 程序执行流程离开本过程, 则局部变量被清除。  由于未定义作用域的变量,也能在被调用的过程中引用, 有时为了避免这种共享变量造成的混乱,可以把只能在本过程中使用的变量说明为局部变量。  注意:  (1) 凡是已定义为全局变量的变量,不能再定义为局部变量。  (2) 语句中使用 ALL LIKE 〈通配文件名〉是指:凡是用通配符配上的那些内存变量都被说明为局部变量;而 ALL EXCEPT 〈通配文件名〉 是指通配不上的那些内存变量都是局部变量。  9.2.2 过程的带参数调用 ? 如前所述, 在一个程序中,不论是外部过程还是内部过程, 都要使用过程调用语句调用。实际上,调用过程又分为无参(数)调用和有参(数)调用两类,也可称为不带参数调用和带参数调用。  1. 无参调用过程 (1) 无参调用语句:  DO 〈被调用过程名〉 (2) 说明:  主调程序是无参调用过程时,主调程序和被调过程之间,仅靠全局内存变量或在主调程序定义的内存变量中传递数据的。  2. 有参调用过程 (1) 有参调用语句:  DO 〈被调用过程名〉 WITH 〈实参表〉 (2) 说明:  主调程序是有参调用过程时,主调程序和被调程序之间, 使用 WITH 指定的实参进行数据传递的。与主调程序中的 WITH 实参相对应, 被调程序中的第一条可执行语句必须是形参说明语句:  PARAMETERS 〈形参表〉 如果被调程序是内部过程, 则PROEDUREC语句之后的语句必须是PARAMETERS语句;如果被调程序是外部过程, 则第一条语句必须是PARAMETERS语句。  过程调用语句中的参数是实参数,〈实参表〉可以由若干个常量、 变量或其它表达式组成, 实参中出现的变量必须是已经被说明或被定义过的。 而〈形参表〉中的各个形式参数必须是内存变量。当执行有参调用语句时,各个实参数据将依次传送给被调过程中用PARAMETERS指定的形式参数;当从被调过程返回时,形参的数据再依次传送给实参表中对应的变量。  由于任何主调程序都可以用一个〈实参表〉去调用同一个过程, 即被调过程中的〈形参表〉仅用于和主调程序建立数据传递的对应关系。 所以, 主调程序中的实参和被调过程中的形参,只要求两者的数量、 类型一致, 并不要求两者的名称相同。这就是把被调过程中的参数叫做形式参数的原因。  3. 有参调用过程举例 例 9.5编写一个程序文件, 要求: 每当从主调程序输入一个矩形的长、宽数据后,以矩形的长、宽作为实参调用计算矩形面积的内部过程,而矩形面积在主调程序输出; 当输入的矩形长、宽数据有一个为 0 时, 停止计算,返回FoxPro。其程序如下:  CLEAR mj=0 DO WHIL .T.

您可能关注的文档

文档评论(0)

1亿VIP精品文档

相关文档