VFO程序设计复习_第1页
VFO程序设计复习_第2页
VFO程序设计复习_第3页
VFO程序设计复习_第4页
VFO程序设计复习_第5页
已阅读5页,还剩21页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、VFO程序设计复习1程序设计概述一、程序的概念概念:具有一定功能的计算机能执行的指令的集合。例1:显示表XSDA可编写成如下命令序SET DEFA TO F:表USE XSDALISTCLOSE ALL例2:求a=3,b=2,c=5 求a+b-c=?程序test.prg 代码如下:a=3b=2c=5x=a+b-c?x二、常见的程序设计方法1、  结构化程序设计(模块化) 结构化程序设计是一个面向过程的概念。把一个实际问题分为两部分,即数据和过程。通过动态的程序执行过程来对静态的数据进行处理,得出正确的结果。由VFP命令和程序设计命令的组合,需编制和调试; 2、  面向对象的

2、程序设计 3、结构化程序设计它是面向过程程序设计的另一种描述,面向过程程序设计有如下特点:整个程序分为若干个模块,模块之间相衔接,且相对独立。第个模块只有一个入口和一个出口。第个模块都能单独执行,且在有限时间内执行完。采用自顶向下、逐步求精的方法。 三、程序三大基本结构1、顺序结构:执行是按命令出现的先后顺序执行。 2、分支结构:按给定的条件成立与否来决定程序起向,分单向选择分支、双向选择分支和多路分支。有以下两种 IF 语句 DO CASEENDIF ENDCASE3、循环结构:程序的执行发生了自下而上的往复,某一程序段将重复执行。 有以下三种Do While For SCANENDDO E

3、NDFOR ENDSCAN四、算法和流程图算法:解决某一问题的方法与步骤。见教材例。流程图:算法的描述,除用自然语言描述外,计算机领域常用流程图(ANSI图和NS图)描述。见教材例。 例如:乐山到成都怎么去?1、  解一元二次方程的算法。Ax2+bx+c=0, 求x2、  求出1-100之间的质数。 X / => 2 到 SQRT(X )2程序的建立和执行一、程序的扩展名:PRG 实质:文本文件(ASCII编码)执行时,会产生编译文件FXP后让计算机执行。 二、程序文件的建立和编辑1、命令方式:MODI COMM 程序名.PRG (.PRG可省)2、菜单方式;文件 =

4、> 新建 => 程序 3、项目管理器中建立的方法:建立项目管理器 => 新建程序 4、其他方法:其它可编辑文本的软件: 记事本写字板WORD其它程序编辑器 注意: 希望编写程序之前事先设置好默认目录(set defa to )然后我们编写的程序就会自动存储在那个目录中。例如:set defa to d:ks modi comm Test (相当于是:modi comm D:kstest.prg) 三、 程序的执行1、命令方式命令格式:DO 盘符路径程序名 2、菜单方式:“程序”菜单->“运行”命令在“运行”窗口中输入被运行的程序文件名,即可运行程序。 四、VFP程序的分

5、类:数学类程序、涉及到表操作的程序如果本程序是涉及到表操作的程序,那么: 1、在程序开始部分可以先加语句CLEAR 和 CLOSE ALL 2、程序最后可以使用命令CLOSE ALL 3、然后使用RETURN或CANCEL或QUIT 例:找出并显示所有三好生CLEAR CLOSE ALL USE 学生 LOCATE FOR 三好生DO WHILE NOT EOF() DISPCONTINUE ENDDO CLOSE ALL RETUREN3顺序程序设计与常用语句一、程序设计中的常用语句1、输入命令(1)赋值命令命令一:STORE <表达式> TO <内存变量>命令二:&

6、lt;内存变量>= <表达式> (2)交互式输入命令(注意:输入数据是在程序执行的时候 )INPUT 提示信息 TO <内存变量>ACCEPT 提示信息 TO <内存变量>WAIT 提示信息 TO <内存变量> TIMEOUT <等待时间>说明: 提示信息是C型, 它会在屏幕上原样输出 .WAIT命令的功能:暂停程序执行,显示提示信息等待用户按键。 Wait命令中 输入的只能是一个字符(C型)。 Input 适用于全部类型内存变量,输入时需要加定界符 Accept只适用于C型,并且C型不加定界符注意:Input和accept在编

7、写程序时语句都一样,只是执行程序(do)时,主屏幕上要求输入的类型和格式不同。例1:输入a、b、c的值,对2ax+b=c 求 x的值。ClearInput “现在计算2ax+b=c,请输入a的值:” to aInput “请输入b的值:” to bInput “请输入c的值:” to cx=(c-b)/(2*a)?x的值为:,x &&比较使用? x的值为:+str(x,3)有何区别 return 例2、查找学生.dbf中的指定记录 clearclose alluse 学生listaccept “请输入您想查找的姓名: ” to xmLocate for 姓名=XM &&

8、amp;或命令 SEEK XMif found() DISP else ?对不起,没有找到此人endiflistclose allReturn思考:如果accept换成input,输入的时候该怎么输入? 例3、删除学生.dbf中的指定记录 clearclose alluse 学生listinput “请输入您想删除的记录号: ” to xdele reco xwait “你想彻底删除这条记录吗?(y/n)” to ask if ask=Y or ask=y packendiflistclose all注意区分交换方式和程序方式:有的命令可以在两种状态下执行(例如:刚才的输入命令),但有些命令只

9、能在程序方式下执行(例如:循环语句和分支语句) (3)格式输入命令格式一:行,列 say 提示信息格式二:行,列 say 提示信息 get 变量 READ 格式三:行,列 say 提示信息 get 变量 default常量 功能:在屏幕指定的坐标位置上显示提示信息,然后通过READ命令激活GET子句的变量值。说明:GET后的变量可以是内存变量或当前打开的数据文件中的字段变量,若是内存变量,应在执行该命令前对内存变量赋值,否则就必须使用default参数赋初值。输入的值类型应该与初值类型相同。READ命令与GET命令必须配合使用。多个GET命令可以只用一个READ命令配合。如果没有read则表示

10、只显示内容,不输入值。例1:编写程序完成在学生.DBF中追加记录CLEARUSE 学生APPEND BLANK5,20 SAY “学号” GET 学号5,40 SAY “姓名” GET 姓名7,20 SAY “性别” GET 性别7,40 SAY “出生年月” GET 出生年月9,20 SAY “入校总分” GET 入校总分9,40 SAY “三好生” GET 三好生READCLEARLISTCLOSE ALLRETURN例2:编程求长方形的面积。 CLEAR X=0 &&X为内存变量,赋初值Y=0 1,5 SAY “计算长方形的面积”2,5 SAY “输入长方形的长:” GE

11、T X &&第2行5列显示提示信息并等待输入3,5 SAY “输入长方形的宽:” GET Y &&第3行5列显示提示信息并等待输入 READ &&从键盘输入X,Y的值 S=X*Y &&计算长方形的面积 ? “长方形的面积:”,S &&显示长方形的面积 CANCEL思考题1:如将上述例1程序改为按照指定学号来修改记录应该怎样做?(答案见课件后)3、输出命令:非格式输出命令?和?:格式化输出命令行,列 say 表达式 说明:行和列都可以是表达式,常常可以使用函数ROW( ) 和 COL( ) ROW( )表示返回当前行

12、的行号 COL( )表示返回当前列的列号例1:N=1CH=“VF程序设计”N,26 SAY SPACE(60)N+1,26 SAY CH例2:循环输入值cleardime xh(10)store 0 to xh10,10 say '请输入数字:' get xh(1) i=2do while i<=10 row()+1,10 say '请输入数字:' get xh(i) i=i+1enddoreadlist memo like xh 4、其他程序运行命令(1)终止程序执行命令  CANCEL 、QUIT 和 RETURNQUIT: 退出程序运行并且

13、退出 Visual FoxproCANCEL : 退出程序运行RETURN: 返回上级程序调用点,如果是主程序就表示退出程序。主程序可缺省此命令返回(结束),即默认使用了return 注意:上述命令执行完后都会自动clear memory。但是如果有数据库和表打开不会自动关闭,所以使用数据库和表后在程序结束时我们常常需要加命令: close all(2)清屏命令CLEAR(3)注释命令(  NOTE 、* 和 &&)注释的含义:程序员对程序语句功能的说明,执行程序的时候不执行注释中的内容,注释只起到一个对语句说明的目的。一般复杂程序中应有30%以上的注释。(4)TEX

14、T语句:原样输出(参考书143例4.15) (5)系统设置命令set on/off 或者是 set to 1、设置会话状态SET TALK ON/OFF2、设置跟踪状态SET ECHO ON/OFF3、设置打印状态SET PRINTER ON/OFF4、设置定向输出状态SET DEVICE TO SCREEN5、设置精确比较状态SET EXACT TO ON/OFF6、设置日期格式SET DATE ANSI 7、色绘制系统提供的保护状态SET SAFETY ON/OFF8、设置删除记录标记状态(掌握)SET DELETED ON/OFF功能:屏蔽或处理有删除标记的记录说明:在命令格式中选择ON

15、时,各命令当不对有删除标记的记录进行操作,但索引除外。系统默认值为OFF思考题1答案:CLEARUSE 学生ACCEPT "请输入需修改记录的学号:" TO NUMLOCATE FOR 学号=NUM5,20 SAY "学号" GET 学号5,40 SAY "姓名" GET 姓名7,20 SAY "性别" GET 性别7,40 SAY "出生年月" GET 出生年月9,20 SAY "入校总分" GET 入校总分9,40 SAY "三好生" GET 三好生R

16、EADCLEARLISTCLOSE ALLRETURN4顺序结构和分支结构一、顺序结构例1:求圆的面积(公式S=R2)CLEARINPUT “请输入半径R的值:” TO RS=3.1416*R*R?”圆面积为:” ,SCANCEL二、分支结构(选择结构)1、IF语句(1)单向选择: 双向选择:IF 条件 IF 条件 执行语句 执行语句ENDIF ELSE执行语句 ENDIF(2)单向选择分支例如:求任意一个数值的绝对值CLEARSET TALK OFFINPUT “请输入数值:” TO NIF N<0N= - NENDIF?”|N|的绝对值为:”,NCANCEL(3)双向选择分支例1:用

17、户输入数据表文件名,判断它存在否,如果存在则打开数据表文件并显示表中的全部记录 clearaccept '请输入数据库文件名:' to heng &&想想为什么不用inputif file(heng+.dbf) &&了解file()的使用方法 use &heng &&想想这儿为什么要用&代换 listelse ?'sorry,文件不存在:( 'endif close all &&关闭所有打开的表,如果不涉及多工作区,可以只使用use例2:判断输入的整数为奇数还是偶数。CLEARINP

18、UT “请输入整数:” TO NIF N%2=0 &&该表达式还可用 MOD(N,2)=0来表示?STR(N,4)+”是偶数”ELSE ?STR(N,4)+”是奇数”ENDIFCANCEL(4) IF语句的嵌套例如:将用户输入的小写英文字母转化成大写 CLEARACCEPT “请输入1个字母:” TO STR1IF STR1>=a AND STR1<=z STR1=UPPER(STR1) ?SPACE(40)+STR1ELSE IF STR1>=A AND STR1<=Z ?SPACE(40)+STR1 ELSE ?您输入的不是英文字母 ENDIFEND

19、IF2、多向选择DO CASE CASE <条件表达式1> <命令序列1>CASE <条件表达式2> <命令序列2>OTHERWISE &&其它情况<命令序列>ENDCASE说明:OTHERWISE 可以没有.例1:比较A、B的大小CLEARINPUT “请输入A的值:” TO AINPUT “请输入B的值:” TO BDO CASE CASE A>B ?”A 大于B” CASE A<B ?”A 小于B” CASE A=B?”A等于B”ENDCASE例2:邮局负责邮购小物品规则如下:50公里及以内收取额外金

20、额5元,50-100公里收取10元,100-200公里收取20元,200-500公里收取40元,其余一律收取50元。 CLEARINPUT “请输入您想邮购物品的路程(公里数): ” TO XDO CASE CASE X<=50 Y=5 CASE X>50 AND X<=100 Y=10 CASE X>100 AND X<=200 Y=20 CASE X>200 AND X<=500 Y=40 OTHERWISE Y=50ENDCASE?对不起, 您需要付款: ,Y,元人民币5循环程序设计1、条件循环格式一:DO WHILE 条件 命令序列 ENDDO

21、格式二: DO WHILE 条件 语句序列 LOOP 语句序列EXIT语句序列 ENDDO 要退出循环,需要条件为假的时候(条件=.F.时)说明:(1) LOOP和EXIT 命令一般放在IF条件中,也可以出现在循环体内的任何位置。若执行循环体时遇到LOOP命令,则直接返回执行DO命令,测试条件以决定是否继续循环。若遇到EXIT命令,则不执行下面的命令序列,直接跳出循环,执行ENDDO后面的命令。(2)条件表达式的值确定了循环是否继续,当条件表达式的值始终为真(即永真循环),则应使用EXIT命令来控制循环结束例1:将字符“欢迎进入乐山师范学院”从屏幕的顶部移至底部CLEARCH=“欢迎进入乐山师

22、范学院”N=1DO WHILE N<=23N,26 SAY SPACE(60)N+1,26 SAY CH T=INKEY(0.2)&&等待0.2秒 N=N+1ENDDORETURN注:INKEY (<数值表达式>)功能:等待用户按键或鼠标输入,等待时间由数值表达式确定(单位为秒)返回由按键而产生的一个整数值.例2:实现显示出全部的男生 CLEARCLOSE ALLUSE 学生DO WHILE NOT EOF() IF 性别=男DISP ENDIF SKIPENDDOCLOSE ALL LOOP循环实例例1:I=0DO WHILE I<10 I=I+1 I

23、F INT(I/2)=I/2 LOOP ENDIF ?”*”ENDDO例2:CLOSE ALLCLEARUSE 学生DO WHILE NOT EOF() DISP WAIT 你想修改本记录吗?(Y/N) TO X IF X=N OR X=n SKIP LOOP ENDIF EDIT SKIPENDDOCLOSE ALL程序执行到WAIT语句后,如果用户输入的是N或n,那么就LOOP(也就跳过本次循环,不执行后面的EDIT)永真循环DO WHILE .T. DO WHILE .T. IF Y>0 IF Y>0 EXIT QUITENDIF ENDIFENDDO ENDDO如果Y>

24、;0,则退出本循环 如果Y>0,则退出程序,退出VFDO WHILE .T. DO WHILE .T.IF Y>0 IF Y>0 RETURN CANCELENDIF ENDIFENDDO ENDDO如果Y>0,则退出程序返回上层 如果Y>0,则退出程序,回到VF中上述语句LOOP、EXIT、QUIT、RETURN、CANCEL等也可以在后面讲的其它循环语句中使用。例1:通过键盘输入三角形的边长,若边长正确,立即在屏幕上显示三角形的面积,若边长不正确,重新输入边长,若输入的边长中任意一边为0则程序立即结束。 CLEAR ?”现在计算三角型的面积,如果想退出程序请输

25、入0。”DO WHILE .T.INPUT “请输入边长a:” TO AINPUT “请输入边长b:” TO BINPUT “请输入边长c:” TO CIF A=0 OR B=0 OR C=0 ?结束 RETURN ENDIF IF A+B<=C OR A+C<=B OR B+C<=A ?错误的三角型,请重新输入! LOOP ENDIFS=(A+B+C)/2AREA=SQRT(S*(S-A)*(S-B)*(S-C)?该三角型的面积是:,areaENDDO 例2:有下列表:book(书名 C(20),作者 C(8),出版日期 D,内容简介 M)编写程序:查询关于 foxpro

26、的图书. USE BOOKLOCATE FOR foxpro $ 书名IF ! FOUND() ?没有关于foxpro的图书 ELSEDO WHILE ! EOF() CLEAR ?书名,作者,出版日期 ?内容介绍 WAIT “是否继续查找?(Y/N)” TO M IF M$nN EXIT ENDIFCONTINUE ENDDO?”全部显示完成”ENDIF 2、计数循环FOR 循环变量=初值 TO 终值 STEP 步长语句序列ENDFOR说明: (1)当省略步长值时,系统默认步长值为1.当初值小于终止值时,步长值为正值,当初值大于终值时,步长值为负值.步长值不能为0,否则会造成死循环

27、. (2)可在循环体内嵌入LOOP和EXIT命令,功能和用法与条件循环中该命令的用法相同.例1:求1100的和SUM=0FOR n=1 TO 100 SUM=SUM+nENDFOR?1100的总和为:,SUM使用DO WHILE 实现:SUM=0n=1DO WHILE n<=100SUM=SUM+nn=n+1ENDDO?1100的总和为:,SUMFOR和IF语句嵌套例2:求1到N之间能被3整除的数的和CLEARM=0INPUT “请输入N的值:” TO NFOR X=1 TO N IF MOD(X,3)=0M=M+XENDIFENFOR?”M的值为:”,MRETURN例3: 找出2-10

28、0之间所有的质数算法研究:FOR I=1 TO 100如果此数是质数显示这个数ENDFOR判断一个数是不是质数,应该看它是否能被其它数整除.当一个数I , 从I从2到 SQRT(X) 都没有数能被整除,那么它就是 FOR J=2 TO INT(SQRT(I)IF I MOD J=0 EXIT ENDIFENDFORIF J> INT(SQRT(I) ?I,是质数ENDIF特别: 2是个质数.综上所叙述: 完成程序为:CLEAR?2是质数FOR I=3 TO 10 FOR J=2 TO INT(SQRT(I)IF MOD(I,J)=0 EXITENDIFENDFORIF J> INT

29、(SQRT(I) ?I,是质数ENDIFENDFOR3、库文件扫描循环SCAN 范围 FOR/WHILE 条件 语句序列ENDSCAN例1:查询所有入校总分在570以上的人.CLEARCLOSE ALLUSE 学生SCAN FOR 入校总分>570 DISPENDSCANCLOSE ALL例2:用户可以循环输入并查找入校总分,直到输入的是负数就退出.CLEARCLOSE ALLUSE 学生INPUT “请输入你要查找的入校总分,输入负数则退出: ” TO XDO WHILE X>=0SCAN FOR 入校总分=X DISP ENDSCANINPUT “请输入你要查找的入校总分: ”

30、 TO XENDDO例3:编写程序,对于学生.dbf能够在程序末尾循环插入新记录 (掌握) CLEARCLOSE ALLUSE 学生DO WHILE .T. APPE BLANK 5,20 SAY '学号' GET 学号 5,40 SAY '姓名' GET 姓名 7,20 SAY '性别' GET 性别 7,30 SAY '出生年月' GET 出生年月 9,20 SAY '入校总分' GET 入校总分 READ WAIT '你想继续插入新记录吗?(Y/N) : ' TO X IF X=&#

31、39;N' OR X='n' EXITENDIF CLEARENDDOCLEARLISTCLOSE ALL 例4:编写程序,该程序能够顺序修改表学生.DBF中的所有数据。(掌握) (要求:必须使用 行,列 say . get . 进行数据修改) CLEARCLOSE ALLUSE 学生DO WHILE .T. if eof() exit endif5,20 SAY '学号' GET 学号 5,40 SAY '姓名' GET 姓名 7,20 SAY '性别' GET 性别 7,30 SAY '出生年月' GE

32、T 出生年月 9,20 SAY '入校总分' GET 入校总分 READ WAIT '你想继续修改记录吗?(Y/N) : ' TO X IF X='N' OR X='n' EXIT ENDIF CLEAR SKIPENDDOCLEARLISTCLOSE ALL4、多重循环例1:输入n的值,求1+1/2!+1/3!+1/4!+.+1/n! ( 阶乘 n!=1*2*3*4.*(n-1)*n )CLEARSUM=0MUL=1INPUT "请输入n的值: " TO NFOR i=1 TO N FOR j=1 TO i

33、MUL=MUL*J ENDFOR SUM= SUM+1/MUL ENDFOR?'求得的总和为: ',SUM例2:打印九九表方法一:CLEAR FOR A=1 T0 9 FOR B=1 TO A T=A*B?STR(B,1)+“*”+STR(A,1)+“=”+STR(T,2)+“ ” ENDFOR? ” “ENDFORRETURN方法二:CLEAR 1,1 say "*"for a=1 to 9a+1,1say str(a,1)nextfor b=1 to 9 1,b*3 say str(b,1) for c=1 to b p=c*b b+1,c*3 say

34、str(p,2) next nextcancel例3:图形打印CLEAR for a=1 to 5内循环外循环 for c=1 to a ?“*" next ?nextCancel说明:打印图形时,一般外循环控制打印行数,内循环控制每一行打印图形个数。6数组的应用一、 数组的定义DIMENTION 数组名(数值表达式1,数组表达式2.)定义后单元默认值为.F.二、一维数组1、定义一个一维数组:dime a(10) -定义一个10数组,且所有单元默认值为.F.2、赋值:例如: a=''a(1)=20 a(3)=2002/09/23a(7)=.T.循环赋值:dime a(

35、10)i=1do while i<=10 input '请输入数:' to a(i) i=i+1enddo或者是:for i=1 to 10 input '请输入数:' to a(i) Endfor3、显示值:for i=1 to 10 ?a(i)endfor使用do while大家思考方法2:list memo like a二、二维数组例如:dime s(5,4)1、赋值:例如: s=0s(3,4)=.t.s(12)=AYA' && 相当于S(3,4)=AYA'2、循环赋值for i=1 to 5 for j=1 to 4

36、 input '输入值:' to a(i,j) endforendfor3、显示值:for i=1 to 5 for j=1 to 4 ?a(i,j)+space(2) endforendfor三、举例输入10 个数,将它们按照从大到小的顺序排列算法研究:方法1:连续的两两比较方法2:将每个数和最后一个数比较程序cleardime a(10)?'输入10个数: 'for i=1 to 10input "请输入: " to a(i)endforfor i=1 to 9for j=1 to i if a(j)>a(i+1) t=a(i+1)

37、 a(i+1)=a(j) a(j)=t endif endforendforlist memo like a例2:将1、2、3、10顺序输入一维数组,实现顺序输出和逆序输出。DIME A(10)FOR I=1 TO 10 A(I)=IENDFORFOR I=1 TO 10 ?A(I) ENDFORFOR J=10 TO 1 STEP 1 ?A(J)ENDFOR例3:排序问题 (要求:不一定能编写,但是重点地方能填空,基本方法要能理解) 输入5 个数,将它们按照从大到小的顺序排列 算法: (软件技术支持 第263页)稳定的算法: 插入法排序(将一个数据插入到已经排列

38、好的序列中) 冒泡排序(比较每次产生最大数) 归并排序(两两合并 ) 不稳定的算法:(相同数据位置可能交换) 选择排序(通过交换位置,最小的放在第一,次小的第二) 实现算法:冒泡排序 (1) n个数要比较n-1趟(2)  (3) 每趟要比较的次数为 : n-趟数 (4)(3)每次比较: 如果当前数 a(j)大于后一个数 a(j+1) 那么就交换,否则不交换 clear dime a(5) ?'输入5个数: ' for i=1 to 5 input &

39、quot;请输入: " to a(i) endfor for i=1 to 4 && 外循环是行(趟数), 内循环是列(比较次数) for j=1 to 5-I if a(j)>a(j+1)t=a(j+1) a(j+1)=a(j) a(j)=t endif endfor endfor FOR I=1 TO 5 ?A(I)ENDFOR对N个数排序(从小到大) clear input "请问你想对多少个数进行排序? " to n

40、 dime a(n) ?'请输入',n,'个数: ' for i=1 to n  input "请输入: " to a(i) endfor for i=1 to n-1  for j=1 to n-i  if a(j)>a(j+1)  t=a(j+1)  a(j+1)=a(j)  a(j)=t  endif  endforendfor 算法二:每次比较将当前数和最后一个数据比clear i

41、nput “请问你想对多少个数进行排序? ” to n dime a(n) ?'请输入',n,'个数: ' for i=1 to n  input "请输入: " to a(i) endfor for i=1 to n-1  for j=1 to n-i  if a(j)>a(n-i+1)  t= a(n-i+1)  a(n-i+1)=a(j)  a(j)=t  endif  endfor endfor

42、60;list memo like a 算法三: clear input “请问你想对多少个数进行排序? ” to n dime a(n) ?'请输入',n,'个数: ' for i=1 to n  input "请输入: " to a(i)endfor for i=1 to n-1  for j=1 to n-i  if a(j)<a(n-i+1)  t= a(n-i+1)  a(n-i+1)=a(j) 

43、a(j)=t  endif  endforendfor list memo like a7子程序、过程和自定义函数一、子程序1.子程序的概念2.子程序的建立和调用3.子程序的嵌套a1.prg               a2.prg           a3.prg?'*'   &#

44、160;           ?''           ?'$'         do a2                do a3&

45、#160;           return               ?'#'               ?'999'    

46、60;                return思考:以上程序运行后结果是什么?   * $ 999#   说明:1、 如果将a2.prg或者a3.prg的return语句改成cancel,那么程序当执行到cancel的时候就会结束,不返回 2、如果将a3.prg的return语句改成return to master想想结果会怎么样呢? 请先看看书 P169页 二、变量的三种类型 1、全局变量(定义:用public

47、命令或在命令窗口中赋值的变量) 有效范围:主程序和所有子程序 2、私有变量(定义:private)或变量屏蔽 有效范围:当前程序,在子程序中修改与主程序同名的变量,只要返回主程序,原来同名变量中的值不变 3、局部变量(可用LOCAL来定义,定义好后默认值为.F.,或是在当前程序中赋值的变量) 有效范围:当前程序及当前程序以下的所有子程序 例:主程序MAIN1.PRG CLEAR public i,j store 1 to i,j,k do 程序2 ?"主程序的输出结果:" ?"I="+STR(I,2)+" J="+STR(J,2)+&

48、quot; K="+STR(K,2) Cancel 子程序:CLEAR PRIVATE J,K I=I*2 J=I+1 K=J+1 ?"子程序的输出结果:" ?"I="+STR(I,2)+" J="+STR(J,2)+" K="+STR(K,2) RETURN 例2: main.prg sc.prg xb.prg                 &

49、#160;                                            private m Clear y=x+10 Input “请输入x的值

50、: ” to x m=143 m=y*10 Private y do xb z=int(m/100) Public z z=z+m return Do sc return y=sqrt(x)+sqrt(z) ?y return 三、参数传递(教材172功能和说明)主程序中:命令: do <子程序名> with <参数表>     实参 子程序中:parameters <内存变量表> 形参 数据通过return语句传回 à 注意:变量表和参数表是个数一致的,也相互对应,但是名字可能不一样。 例: MAIN.PRG P1.

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论