您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 经营企划 > VFP程序命令文件的建立和执行
5.1VFP程序——命令文件的建立和执行5.2VFP常用编程命令及函数5.3VFP流程图介绍5.4顺序执行5.5判断分支5.6循环结构5.7过程与用户自定义函数第五章VisualFoxPro程序设计入门5.1VFP程序——命令文件的建立和执行5.1.1建立和编辑命令文件1.用MODIFYCOMMAND命令建立命令文件命令格式:MODIFYCOMMAND[文件名]命令功能:打开命令文件编辑窗口创建/编辑指定命令文件。说明:文件名的默认扩展名为.PRG。指定文件存在时,首先在磁盘上复制一同名、同内容的.BAK文件。编辑结束时,可用^End或^W结束命令并存盘。也可用Esc键作废编辑并结束命令。2.使用菜单操作建立命令文件操作过程:文件→新建→选择“程序”单选按钮→单击“新建文件”,将打开一编辑窗口,供用户输入程序。3.使用项目管理器建立命令文件有关项目管理器的详细内容参见第十三章。操作过程:首先打开项目管理器→选择“代码”选项卡→选择“程序”选项→单击“新建”按钮,也将打开一编辑窗口供用户输入程序。5.1.2执行命令文件命令基本格式:DO命令文件名命令功能:首先打开指定的命令文件,然后从其第一条语句开始执行。执行完毕,自动关闭该命令文件。5.2VFP常用编程命令及函数1.SETTALK命令命令格式:SETTALKON/OFF命令功能:使命令结果显示/不显示。5.2VFP常用编程命令及函数1.系统初始化命令——CLEARALL命令格式:CLEARALL命令功能:关闭所有打开的库文件、表文件及其相关文件——索引文件、备注文件等,清除所有内存变量,清除所有用户自定义下拉菜单、弹出式菜单和窗口,选择1号工作区为当前工作区。2.清屏命令——CLEAR命令格式:CLEAR命令功能:清除VFP主窗口或当前用户自定义窗口。3.终止程序执行语句——CANCEL命令格式:CANCEL命令功能:终止正在执行的程序,把控制权返回给COMMAND窗口。4.程序注释语句——NOTE/*命令格式1:NOTE注释字符命令格式2:*注释字符命令功能:标识一个非执行的注释行。5.3VFP流程图介绍在编制程序尤其是编制复杂程序时,常用流程图来进行程序设计和介绍程序的结构。流程图是形象的描述程序设计思想的好方法,它的特点是比较直观、清晰。5.4顺序执行5.4.1顺序执行程序顺序执行程序特点:命令的执行顺序就是命令在程序中的排列顺序,每条命令均被执行一次。例1根据圆的半径计算圆的面积。程序清单:ClearInput’请输入半径:’tor?‘圆的面积为:’,pi()*r*r5.5判断分支5.5.1条件转向语句——IF…ENDIF这是一种简单的分支语句,语句格式如下:IF条件表达式命令序列ENDIF条件表达式值为“真”时,顺序执行IF和ENDIF间的语句行序列,然后再执行ENDIF后的语句;若其值为“假”时,则直接跳到ENDIF后面的语句继续执行。IF和ENDIF必须成对出现。图5 – 4条件转向语句流程图条件表达式为.T.为.F.语句行序列ENDIF语句例2读程序清单,分析程序功能.ClearInput’请输入一个随机正整数:’tonIfmod(n,7)=0?‘Pass!’Endif5.5.2条件选择转向语句——IF…ELSE…ENDIF语句格式:IF 条件表达式命令序列1ELSE命令序列2ENDIF执行过程:计算条件表达式的值,若为真,则执行命令序列1,然后跳过命令序列2,从ENDIF后面的语句继续执行;否则,执行命令序列2,然后再执行ENDIF后面的语句。例3读程序清单,分析程序功能.ClearInput’请输入一个随机正整数:’tonIfmod(n,7)=0?‘Pass!’Else?‘Sorry!’Endif5.5.3IF语句的嵌套例4为鼓励存款,对定期存款时间少于1年的,利率为3%;等于或大于1年而少于3年的,利率为5%;等于或大于3年而少于5年的,利率为7%;5年以上的,利率为9%。程序清单如下:图5 – 8例4的流程图定期<5年?是否利率=0.07利率=0.09利率=0.05否是定期<3年?利率=0.03是否定期<1年?输入存款年限5.5.4情况语句——DOCASE…ENDCASE情况语句格式:DOCASECASE 条件表达式1语句行序列1CASE 条件表达式2语句行序列2…CASE 条件表达式n语句行序列n[OTHERWISE语句行序列]ENDCASE执行过程:依次计算每一个CASE语句对应的条件表达式,遇到第一个为真值者,则执行该语句下面对应的语句序列段,执行完后,直接跳转至ENDCASE后。如果所有的条件都不为真值,若无OTHERWISE子句,则不执行任何语句序列,跳转至ENDCASE后;有可选项OTHEWISE时,执行OTHERWISE子句对应的语句序列,再跳转至ENDCASE后。如果有多个条件表达式为真值,也仅仅执行第一个条件表达式为真值者对应的语句序列。DOCASE和ENDCASE必须成对出现。DOCASE与第一个CASE之间的任何语句将不会被执行。例5用情况语句重新编制例4,比较情况语句与条件转向语句的用法。5.6循环结构5.6.1三种循环语句1.DOWHILE循环(1)语句格式:DOWHILE条件表达式循环体语句序列ENDDO(2)执行过程:①执行到DOWHILE语句时,首先计算条件表达式的值,为真时,顺序执行循环体中的语句,即执行循环体;为假时,跳到ENDDO的下面一句去执行,即跳出循环体,循环结束。②执行到循环结束语句ENDDO时,系统返回循环起始语句,再一次执行DOWHILE语句。(3)说明:ENDDO和DOWHILE语句必须成对出现;在循环体内必须有使条件表达式逐渐为假的语句,否则,将进入死循环。图5–11DOWHILE循环语句流程图当条件表达式为假时,退出循环;循环体ENDDO结束循环,执行一条语句否则,重复执行例:将一张厚度0.1mm并充分大的纸对折多少次后厚度超过珠峰的高度?2.SCAN循环语句格式:SCAN[范围][FOR条件]循环体语句序列ENDSCAN其中,SCAN为循环起始语句,ENDSCAN为循环结束语句。语句功能:对当前表指定范围内满足条件的记录依次执行循环体语句序列所规定的操作。范围省略值为ALL。例:使用循环在一行内显示女职工姓名。3.FOR循环(1)语句格式:FOR循环变量名=数值表达式1TO数值表达式2[STEP数值表达式3]循环体语句序列ENDFOR/NEXT(2)执行过程(3)说明:①在执行循环体时,若对初值、终值和步长三个表达式中所含变量的值作了修改,不会影响循环初值、循环终值和步长。②循环初值、循环终值和步长值必须合理,否则,不执行循环。③执行循环体时,若修改了循环变量值,将会影响到循环执行次数。例:计算N!=1*2*3*……*N例:计算∑I=1+2+3+……+N例:找出3位的水仙花数,若一个3位正整数的各位数字的立方和等于该数本身,则称这样的数为水仙花数。算法:枚举。把100-999之间的每一个数都检验一遍,输出满足定义的即可。5.6.3循环结构的两条专用语句1.退出循环语句——EXIT前面介绍的循环语句格式中,一旦进入循环,循环次数实际上已经确定。但在实际应用中,常希望在某种情况下,强迫循环语句结束,去继续执行循环语句后的其它语句。EXIT语句可实现这一要求。语句格式:EXIT语句功能:立即退出循环,转去执行循环终端语句之后的语句。EXIT语句通常包含在IF语句或DOCASE语句中,当某条件出现时,才被执行。通常用于无限次循环的控制,例如:DOWHILE.T.语句行序列IF条件表达式EXITENDIFENDDO类似地,EXIT可出现在DOCASE的某语句序列中。例13打印某种报表,每打印完一张,便提示用户是否还要打印,由用户输入的信息来进行控制,试编程序实现这种功能。依题意画流程图如图所示。程序如下:继续打印吗?跳出循环ENDIF语句打印报表重复执行循环体设置初始状态为.T.为.F.图5–15例13的流程图CLEARALLDOWHILE.T.打印报表程序段CLEARANSWER=MESSAGEBOX(继续打印吗?,36,打印提示)IFANSWER=7EXITENDIFENDDO2.短路循环语句——LOOP语句格式:LOOP语句功能:强迫结束本次循环体的执行,使流程返回循环开始语句。5.6.4循环结构应用举例1.循环语句与其它分支判断语句的嵌套所谓嵌套,即为:在一个语句结构中,包含了另一个完整的语句结构。2.多重循环多重循环即循环的嵌套,在一个循环的循环体中,包含有另一个循环。我们称外层循环为外循环,被包含的循环称为内循环。以DOWHILE为例,多重循环的一般格式如图5–20所示。例18编制一张九九乘法表,要求格式如下:*12345678911224336944812165510152025661218243036771421283542498816243240485664991827364554637281CLEAR?“*FORA=1TO9??AENDFOR?FORA=1TO9?AB=1DOWHILEB=AP=A*B??PB=B+1ENDDO?ENDFORCLEAR?“*FORA=1TO9??AENDFOR?FORA=1TO9?AFORB=1TOAP=A*B??PENDFOR?ENDFOR例:找出100以内的素数-只能被1和自身整除的正整数。分析:枚举法。检查2-100之间的每一个数(外循环),对每一个数用2~N-1去除(内循环),均不能被整除的数就是要找的素数。例:显示矩阵123456789分析:外循环变量I用于表示行号内循环变量J用于表示列号任一数据可表示为:(I-1)*3+J又例:生成一个4行4列的数组存储两位的随机数整数并显示该数组值。例:百元买百鸡问题。假设小鸡每只5角,公鸡每只2元,母鸡每只3元,若要用100元买到100只鸡,共有多少种方案。(枚举法解多解方程问题)设小鸡,公鸡,母鸡各为x,y,z只,则据题意可列出方程:x+y+z=1000.5x+2y+3z=100算法:令x,y,z分别从0变化到100,检验每一种取值,输出满足上述条件的组合。进一步简化:z最大只能取33,y最大只能取50,当y,z取定后x只能为100-y-z。例:编写程序计算组合数=,其中n!=1×2×……×n。CLEARCLEARINPUT请输入N:TONINPUT请输入N:TONINPUT请输入M:TOMINPUT请输入M:TOMC1=1STORE1TOC1,C2,C3FORI=1TONDOFACWITHN,C1C1=C1*IDOFACWITHM,C2ENDFOR计算N!DOFACWITHN-M,C3C2=1?组合数:,C1/C2/C3FORI=1TOMSETTALKONC2=C2*IENDFOR计算M!PROCEDUREFACC3=1PARAMETERSX,YFORI=1TON-MFORI=1TOXC3=C3*IY=Y*IENDFOR计算(N-M)!ENDFOR?组合数=,C1/C2/C3RETURNmnC)!(!!mnmn学生成绩管理系统登录成绩(对应过程DL)查询成绩(对应过程CX)打印成绩单(对应过程DY)主菜单(对应主程序.prg)5.7过程与用户自定义函数5.7.1过程1.创建过程过程是为完成某个操作而编写的程序段。过程定义的语法格式如下:PROCEDURE过程名[PARAMETERS虚参数表]命令语句序列[RETURN[TOMASTER]][ENDPROC]RETURN称返回语句格式一:RETURN格式二:RETURNTOMASTER格式二在过程嵌套调用时使用,表示返回到最高级调用者;格式一为返回上级调用过程,即当程序执行该语句时,控制返回到其上级程序,按程序流程从调用该过程命令的下一条命令处继续执行。过程名最多可
本文标题:VFP程序命令文件的建立和执行
链接地址:https://www.777doc.com/doc-840721 .html