第六章 程序设计基础.ppt_第1页
第六章 程序设计基础.ppt_第2页
第六章 程序设计基础.ppt_第3页
第六章 程序设计基础.ppt_第4页
第六章 程序设计基础.ppt_第5页
已阅读5页,还剩72页未读 继续免费阅读

下载本文档

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

文档简介

1,第六章程序设计基础,2,本章重点掌握:熟练掌握程序文件的建立、编辑以及程序文件的调用;掌握三种程序结构:顺序结构、分支结构(单向、双向、多向分支)、循环结构(“当”型、“计数”型、“指针”型循环控制语句),并能根据程序设计的要求正确使用;掌握多模块程序的设计和调用方法(主程序和子程序),过程文件的建立和调用;掌握自定义函数的建立和调用方法;掌握定义变量作用域的方法(全局变量、局部变量和私有变量)。,3,6.1vfp的工作方式6.2程序文件的建立与编辑6.2.1基本概念6.2.2创建、修改、运行程序文件6.2.3程序书写规则6.3程序文件中的专用命令6.4程序文件的控制结构6.4.1程序基本结构6.4.2分支结构6.4.3循环结构,内容目录,4,6.5多模块程序6.5.1子程序6.5.2自定义函数6.5.3过程6.6变量的作用域6.6.1公共变量6.6.2本地变量6.6.3私有变量6.7程序调试方法,内容目录,6.1VFP6.0的工作方式,1、命令方式在命令窗口中输入命令并执行。输入一条,执行一条。,VFP提供三种工作方式:命令方式、菜单方式和程序文件方式。前两种方式为交互操作方式,3、程序文件方式将完成特定任务的命令序列存在程序文件(.prg)中,需要时执行该程序文件即可。有结构化程序设计和面向对象程序设计两种方法实现程序设计。,2、菜单方式在系统菜单栏中,通过选择菜单项完成相应的操作。,6.2程序文件的建立与编辑,6.2.1基本概念,程序是能够完成某一具体任务的命令的有序集合。这组命令被存放在程序文件中。程序设计是利用系统所提供的设计工具,按照程序语言的规范,编写程序的过程。VFP包含了过程化程序设计与面向对象程序设计,程序文件的特点程序自动执行多条命令程序可被修改并重新运行,且可多次运行一个程序可调用其他程序,6.2.2创建、修改、运行程序文件(.PRG),创建:“新建”按钮MODIFYCOMMAND修改:“打开”/“修改”按钮MODIFYCOMMAND运行:“运行”按钮DO,一行只能写一条命令,以回车结束;一条命令可分为多行来写,但在行末要加续行符(分号)“;”注释行以“*”号开头,指出这一行不是命令;注释也可以写在行末,以“比较T=A(I)A(I)=A(J)A(J)=TENDIFENDFORENDFOR,交换,后一个数比前一个数小,则两个数调换位置,否则位置不变。为此使得小数在前,大数在后。I=1时,挑出最小的一个数,并把它放在最前一个位置;I=2时,【例jx6-8】(排序):将数组A(10)中的10个元素按升序进行排序。(降序如何处理?),排序比较过程(冒泡比较法),*jx6-8cleardimensionA(10)*从键盘输入10个数给各数组元素forn=1to10inputA(+str(n,2)+)=toA(n)endfor*比较排序fori=1to9forj=i+1to10ifA(i)A(j)t=A(i)A(i)=A(j)A(j)=tendifendforendfor*输出排序结果?forn=1to10?A(n)endforreturn,完整的程序,格式(以条件循环结构为例):DOWHILE条件表达式1语句行序列11DOWHILE条件表达式2语句行序列21DOWHILE条件表达式3语句行序列31ENDDO3语句序列22ENDDO2语句行序列12ENDDO1,5、多重循环结构,【例jx6-9】试用固定次数循环的嵌套格式编写一个打印九九乘法口诀表的程序。,SETTALKOFFCLEARFORY=1TO9FORX=1TOYZ=X*Y?STR(X,1)+*+STR(Y,1)+=+STR(Z,2)+ENDFOR?ENDFORSETTALKONRETURN,思考题:如果要输出倒梯形乘法表,其程序代码如何编写?,6.5多模块程序,6.5.1子程序,1、概念,在程序设计中,常把重复书写的一段程序独立设计,这种具有相对独立性和通用性的程序段称为子程序。子程序能被程序多次调用,而调用子程序的程序称为主程序。使用子程序设计,大大简化程序设计和调试过程。使程序结构化,即模块化。,调用子程序:DO返回上级调用程序:RETURN返回最顶层主程序:RETURNTOMASTER,2、子程序的调用与返回,格式:DOWITH说明:中参数为实际参数(实参),可以是表达式,但须为确切值。调用子程序时参数表中的参数要传送给子程序,被调用的子程序的第一条语句也必须设置相应的参数接收语句PARAMETERS。,3、带参数子程序的调用与返回,格式:PARAMETERS功能:指定内存变量以接收DO命令发送的参数值,返主时把内存变量值回送给调用程序中相应的内存变量。说明:中参数为形式参数(形参),默认为私有变量,返主时回送参数值后即被清除。命令中的参数依次与调用命令WITH子句中的参数相对应,故两者参数个数必须相同。,主程序:*jx6-10.prgymj=0INPUT“bj=”tobjDOjsWITHbj,ymj?ymj,ymjRETURN,子程序:*js.prgPARAMETERSr,ss=PI()*r*rRETURN,【例jx6-10】设计一个计算圆面积的子程序,并要求在主程序中带参数调用它。,当实参传给对应形参后,实参又随形参的变化而变化,这种传递称为引用,【例jx6-11】循环从键盘输入两个正整数n,m,求两者的最大公约数,直到输入的n小于等于0。,*主程序jx6-11.prgCleardowhile.t.inputn=tonifnmt=nn=mm=tendifr=m%nifr=0exitelsem=nn=rendifenddok=nreturn,思考题:jx6-12编程计算S=1!+2!+3!+100!,并显示计算结果。,6.5.2自定义函数,1、自定义函数的建立,格式:FUNCTIONPARAMETERSRETURN调用方式:()说明:自定义函数与子程序概念基本相同,但其执行结束后必须要返回一个函数值。自定义函数不能与系统函数和内存变量重名。,默认的参数传递方式为传值,即形参的变化不影响实参;而过程的参数传递方式为引用,1)将函数作为一个独立的文件主程序funmain.prgclearsetdefaulttoe:vfp教学示例input“请输入第一条边的长度:”toainput“请输入第二条边的长度:”tobinput“请输入第三条边的长度:”tocresult=Fmj(a,b,c)&调用计算三角形面积的函数?面积为:,resultreturn*计算三角形面积的自定义函数:Fmj.prgPARAA,B,CP=(A+B+C)/2S=SQRT(P*(P-A)*(P-B)*(P-C)RETURNS,2、函数的使用,2)将函数作为主程序中的一个程序段:主程序funmain1.prgclearinput请输入第一条边的长度:toainput请输入第二条边的长度:tobinput请输入第三条边的长度:tocresult=mj(a,b,c)?面积为:,resultreturnfunctionmjPARAA,B,CP=(A+B+C)/2S=SQRT(P*(P-A)*(P-B)*(P-C)RETURNS,当实参为变量时两种参数传递方式,调用过程时为引用调用实参的值随形参值的改变而改变;(实参如为表达式,则式中变量的值不变),函数调用时默认为传值调用实参的值不随形参值的改变而改变;但在实参前加则为引用调用,6.5.3过程,1、过程、过程文件的概念,在调用多个子程序时,运行速度下降,且打开的文件数也受限制。将多个子程序组合起来,组成一个过程文件,提高程序运行效率。过程文件中的每个子程序称为一个过程。过程文件也是一个程序文件,其后缀为.PRG。一个过程文件中可以包含多个过程;,格式:PROCEDUREPARAMETERSRETURNPROCEDUREPARAMETERSRETURN,2、过程文件的建立、格式,说明:过程文件中的每个过程不再是一个单独的命令文件,而是这个过程文件中的一个程序段。,示例:建立过程文件RSGL.PRG*过程文件RSGL.PRG*=子程序1=PROCSUB1APPERETURN*=子程序2=PROCSUB2CLEARINPUT请输入要修改记录的职工号TOZGHLOCAFOR职工号=ZGHEDITRETURN,SETPROCEDURETO&打开过程文件DOWITH&调用过程关闭过程文件:SETPROCEDURETO或CLOSEPROCEDURE说明:调用一个过程前必须将过程文件打开;任何一个时刻只能打开一个过程文件;当打开另一个过程文件时,原先打开的过程文件将自动关闭。,3、过程文件的调用,【示例】过程的应用举例主程序mainproc.prg如下:clearsetproceduretosubprocn=23m=10result=0doaddwithm,n,result?result&结果显示:33dosubwithn,m,result?result&结果显示:13domulwithm,n,result?result&结果显示:230closeprocedurereturn,过程文件subproc.prg如下:procedureaddparaa,b,cc=a+breturnproceduresubparaa,b,cc=a-breturnproceduremulparaa,b,cc=a*breturn,6.6变量的作用域,6.6.1公共变量(全局变量),在任何模块都可以使用的变量。公共变量要先用PUBLIC命令建立后才可以使用:PUBLIC说明:(1)若下层模块中建立的内存变量要供上层模块使用,或某模块中建立的内存变量要供并列模块使用,必须将这种变量说明成公共变量。(2)VFP默认命令窗口中定义的变量都是公共变量,但这样定义的变量不能在程序方式下利用。(3)程序终止执行时公共变量不会自动清除,而只能用命令来清除,RELEASE命令或CLEARALL命令都可用来清除公共变量。,6.6.2本地变量(局部变量),本地变量只能在建立它的模块中使用,而且不能在上层或下层模块中使用,该模块运行结束时本地变量就自动释放。要先用LOCAL命令建立后才可以使用:定义格式:LOCAL注意:LOCAL不能缩写。,6.6.3私有变量,程序中自由定义的变量都是私有变量,它仅在定义它的模块及其下层模块中有效,而定义它的模块运行结束时自动清除。如用Private声明的私有变量,可以隐藏上级模块的同名变量,直到声明它的模块执行结束后,才恢复使用先前隐藏的变量。,主程序MAIN1.PRGPUBLICi,Ji=1J=0DOSUB1?“i=”,i,“J=”,J,“K=”,K,“(在MAIN1.PRG中的值)”CANCEL子程序SUB1.PRGi=i*2J=i+1K=i+J?“i=”,i,“J=”,J,“K=”,K,“(在SUB1.PRG中值)”RETURN,PUBLICK,在上两个程序中存在一个错误?可究竟错在在那里?,稍微改动一下上面二个程序,看看结果有什么变?,主程序MAIN2.PRGi=1J=0DOSUB2?“i=”,i,“J=”,J,“K=”,K,“(在MAIN2.PRG中的值)”CANCEL子程序SUB2.PRGPUBLICKpriveji=i*2J=i+1K=i+J?“i=”,i,“J=”,J,“K=”,K,“(在SUB2.PRG中值)”RETURN,i=2J=3K=5(在SUB2.PRG中值),i=2J=0K=5(在SUB2.PRG中值),6.7程序调试方法,6.7.1程序中常见的错误,1、语法错误:输入不符合语法规范的命令。Input“输入姓名”toxmifzl10andzl20?“结果为”zl&if.endif,2、逻辑错误:输入符合语法规范,但操作条件不具备,或数据类型不匹配所产生的错误。程序:clearb=123accept“a=“toaifa=b&不同数据类型做比较?aendifreturn,3、系统错误:操作违反系统规定时所产生的错误,如:打开一个不存在的表文件,或打开表文件时所指定的路径错误。,4、算法错误:程序设计的思路不正确所产生的错误。求从1加到100的和:cleari=1a=1&变量a的初值应设为0dowhilei100a=a+ienddo?areturn,i=i+1,思考题:1、注意调用程序和被调用程序间的参数传递,求出正确结果:,*主程序MAIN.PRGCLEARSTOR2TOB,DSTOR1TOA,CDOSUBWITHA,B,C,D?DSTOR3TOA2,A4STOR1TOA1,A3DOSUBWITHA1,A2,A3,A4?A4DOSUBWITH6,8,10,D+1?D,*子程序SUB.PRGPARAMETERA,B,C,

温馨提示

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

评论

0/150

提交评论