VFP第7章 结构化程序设计.ppt
《VFP第7章 结构化程序设计.ppt》由会员分享,可在线阅读,更多相关《VFP第7章 结构化程序设计.ppt(76页珍藏版)》请在三一办公上搜索。
1、Visual FoxPro,1,第七章,结构化 程序设计,Visual FoxPro,2,7.1.1 程序设计的概念 交互工作方式,要求用户必须比较熟悉数据库知识,了解数据组织结构,如果要同时对数据表格多次进行某些操作,就必须反复执行相关命令,这些命令不被保存。对于使用大量数据的最终用户来说,直接使用交互方式管理数据是不现实的。因此,要建立真正的管理信息系统必须编制程序。程序设计反映了利用计算机解决问题的全过程,先要对问题进行分析并建立数学模型,然后考虑数据的组织方式和算法,进行算法设计,画出流程图,并用某一种程序设计语言编写程序,最后调试程序,使之运行后能产生预期的结果。这个过程称为程序设计
2、。,7.1 程序设计基础,Visual FoxPro,3,程序执行方式是预先把多条命令按一定的规则组织成一个有机的序列,这个命令序列称为程序。程序存放在程序文件中,运行程序时,系统按照一定的顺序自动执行文件中的命令。程序设计方法是软件工程的一个重要组成部分。在程序设计中使用最广的是“结构化程序设计方法”。他要求程序按照一定的规则编写,具有良好的顺序结构,且容易阅读和理解。结构化程序设计要求程序由若干个“基本结构”顺序构成,每个基本结构作为程序的一个“单元”,每个“单元”由一个或若干个语句组成,若干个“单元”组成一个结构化程序。,Visual FoxPro,4,程序流程图:用一些符号来表示各种操
3、作,形象直观、简单,易于理解、修改和交流。,【例】用框图描述如下函数的求解过程:,start,Input x,X0?,y=5,y=-5,Output y,end,N,Y,Visual FoxPro,5,7.1.2 程序的控制结构结构化程序有三种基本结构:顺序结构、选择结构和循环结构。1.顺序结构 在这种结构中语句的执行是按照出现的先后顺序。A块执行完毕后,再执行B块,该结构只有一个入口和一个出口。A块、B块可以是若干条语句,也可以是一个基本结构。2.选择结构 这种结构的特点是根据条件的真假,选择两个或多个分支中的一个分支来执行。B1块、B2块中只有一个块被执行,该结构只有一个入口和一个出口。,
4、Visual FoxPro,6,3.循环结构该结构的特点是根据条件,重复执行一个语句块。重复执行的部分称为循环体。当给定条件满足时,执行B块,执行B块后再返回测试条件是否满足,如此循环反复执行B块,直到条件测试不满足为止。B块可以是单个语句,也可以是基本块。该结构只有一个入口,只有一个出口。,4.结构化程序的特点*任何结构化程序都可以分解为三种“基本结构”。*每一个基本结构只有一个入口。*每一个基本结构只有一个出口。*没有永远执行不到的语句。*没有死循环。*修改一个基本结构时,不影响其他基本结构中的语句。*整个结构化程序层次分明,结构清晰。,Visual FoxPro,7,7.1.3 程序文件
5、的建立与执行1.建立或修改程序文件建立或修改程序文件也有菜单和命令两种操作方式。(1)命令方式 要建立或者修改一个程序文件,使用MODIFY命令。格式是:MODIFY COMMAND 其中指建立或者修改的文件。如果省略文件名,在关闭窗口时要求输入文件名。如果没有给文件指定扩展名,则默认为.prg。(2)菜单方式 选择“文件”菜单中的“新建”命令,并选择“程序”单选按钮,并单击“新建文件”命令按钮。在文本编辑窗口输入程序内容。,Visual FoxPro,8,2.保存程序 不管是用命令方式还是用菜单方式,打开文本编辑窗口后,就可以一条一条地输入命令。在输入过程中出现错误,可用编辑命令进行修改。当
6、程序建立或修改完毕后,可用Ctrl+W或Ctrl+End存盘,退出编辑窗口。3.执行程序 执行一个Visual FoxPro程序文件命令方式格式为:DO 如果文件名不带扩展名,则Visual FoxPro按下列顺序寻找并执行这些程序:可执行文件(.EXE)、应用程序(.app)、编译后的目标程序文件(.fxp)和程序文件(.prg)。,Visual FoxPro,9,4.程序文件中的辅助命令 1).程序注释命令 NOTE|*&2)常用状态设置命令(1)置会话状态命令 命令格式:SET TALK ON|OFF(2)置打印状态命令 命令格式:SET PRINT ON|OFF 3)程序结尾的专用命令
7、:RETURN&结束程序执行并返回到调用它的上级环境中继续。允许缺省。CANCEL&终止程序的运行并清除程序的私有变量,返回到命令窗口。QUIT&退出VFP系统,返回到操作系统状态。,Visual FoxPro,10,例EX501:编程查询并显示一个入学成绩570的男学生信息MODI COMM E1(或MODI FILE E1.PRG)*查询 SET TALK OFF CLEAR USE 学生 LOCA FOR 入学成绩570 AND 性别=“男”DISP USE SET TALK ON RETURN DO E1,7.2 顺序结构程序,Visual FoxPro,11,7.2.1 交互式输入命
8、令1.字符串接收命令 字符串接收命令显示提示信息,等待用户从键盘输入一个字符串并按回车键后,存入指定的内存变量中。命令格式为:ACCEPT TO 例E2 编程实现从键盘输入某数据库的文件名,并要求打开该数据库中的某张表并显示其中的内容。SET TALK OFFCLEARACCEPT 请输入数据库名:TO AOPEN DATABASE&AACCEPT 请输入表名:TO BUSE&BLISTUSESET TALK ONRETURN,Visual FoxPro,12,2.任意数据输入命令 命令格式:INPUT TO 该命令与ACCEPT命令的区别在于键入的数据类型不同,它不仅可以接收字符型数据,还可
9、以接收数值型、日期型和逻辑型表达式的值。其中,对于字符串的输入必须用定界符括起来;输入数值或表达式,不加任何定界符;输入日期型数据,除使用日期型的格式外,还要用大括号将其括起来。例如 INPUT 请输入一个数值表达式:TO num INPUT 请输入一个日期:TO dat 执行情况如下:请输入一个数值表达式:98/10/10 请输入一个日期:1998-10-10,Visual FoxPro,13,例E3:从键盘输入两个任意正数,编程求出以这两个数为长和高的三角形面积。MODI COMM E3SET TALK OFFCLEARINPUT 三角形的长为:TO AINPUT 三角形的高为:TO BS
10、=(A*(B)/2?三角形面积为:,SSET TALK ONRETURNDO E3,Visual FoxPro,14,3.单个字符接收命令 WAIT TO WINDOW NOWAIT TIMEOUT 命令暂停程序执行,等待用户键入任何一个字符后继续。使用说明:(1)当命令中有TO 可选项,则定义一个字符型内存变量,并将键入的一个字符存入该变量中。(2)若包含提示信息,则在屏幕上显示提示信息的内容;若没有该选择项,则显示系统默认的提示信息:Press any key to continue(3)如果选择WINDOW,在VFP主窗口的左上角会出现一个提示信息窗口,有关提示信息便在此窗口中显示。(4
11、)如果选择NOWAIT,则命令并不会暂停程序的执行,仅在VFP主窗口的左上角提示窗口中显示提示信息,并且用户只要一移动鼠标或按下任意键,提示窗口便会自动被清除。(5)TIMEOUT子句用于指定WAIT命令等待的时间。如果在由所限定的秒数之内用户仍未移动鼠标或按下任一键,则程序便继续执行。(6)WAIT只需用户按一个键,命令的执行速度快,常用于等待用户对某个问题的确认。,Visual FoxPro,15,4.三条输入命令的异同(1)WAIT 只允许字符型,且C=1。(2)ACCEPT 也只允许字符型,且C254。(3)INPUT允许C型、N型、D型和L型。当是C型时,输入要加引号,且C254。当
12、是N型时,可以直接输入,且N19。当是D型时,要用严格的日期格式。当是L型时,两边的圆点不能丢。,Visual FoxPro,16,5、非格式输出命令:命令格式:?|?功能:一个问号是从屏幕下一行的第一列开始显示表达式表的结果,二个问号是从屏幕当前行、当前列开始显示表达式表的结果。“表达式表”可以由一个或多个表达式组成的输出项,若多个表达式,则表达式之间用逗号“,”分隔。,6、格式输出命令的基本形式命令格式:SAY 命令在指定位置输出表达式的值。(1)指定了输出的位置。标准屏幕是25行80列,左上角顶点为(0,0),右下角坐标为(24,79)。(2)行、列都可为表达式,还可为小数。,例如:2,
13、10 say“请输入记录号:”2,10 say 100/5/2,Visual FoxPro,17,格式输入命令:命令格式:say get default 功能:在屏幕上按“行、列”指定位置上显示“say”子句的“表达式1”的值,并可修改“get”子句的变量值。注意:“get”子句的变量必须用“read”命令来激活。激活命令:命令格式:read 功能:用于激活“get”子句中的变量。,【例】set talk off clear use students appe blank 10,20 say“请输入学号”get xh1 default space(8)11,20 say“请输入姓名”get x
14、m1 default space(8),read repl xh with xh1,xm with xm1 disp set talk on use,Visual FoxPro,18,7.2.2 顺序结构:顺序结构是在程序执行时,根据程序中语句的书写顺序依次执行的命令序列。【例5】将学生表中学号为20050008的学生姓名“万华”改为“万强”。CLEARSET TALK OFFOPEN DATABASE学生学籍USE学生ACCEPT 请输入要修改记录的学号:to xh LOCATE FOR 学号=xhREPLACE 姓名 WITH 万强USECLOSE DATABASESET TALK ONR
15、ETURN,Visual FoxPro,19,7.3.1 双分支选择语句 语句格式:IF ELSE ENDIF 执行过程:如果成立,就执行命令组1,命令组1执行完成后就转到ENDIF之后的命令。如果不成立,当有ELSE子句时,执行命令组2,命令组2执行完成后转去执行ENDIF之后的命令,当没有ELSE子句时,则直接转到ENDIF之后的命令。,7.3 选择结构程序,e,.T.,BLOCK1,ENDIF,.F.,BLOCK2,Visual FoxPro,20,【例6】试编一程序,根据输入的三角形边长,求三角形面积。,clea input”请输入边长a:”to a input”请输入边长b:”to
16、b input”请输入边长c:”to c if a+bc or b+ca or c+ab WAIT(”输入的三个边长不能组成三角形!”)retu endif l=(a+b+c)/2?”三角形面积s=”,sqrt(l*(l-a)*(l-b)*(l-c)retu,Visual FoxPro,21,例E7:任意输入一个正整数,编程判断是“奇数”还是“偶数”。,SET TALK OFF CLEAR INPUT 请输入一个正整数:TO X IF MOD(X,2)=0&INT(X/2)=X/2?X,该数为偶数 ELSE?X,该数为奇数 ENDIF RETURN,Visual FoxPro,22,例E8:输
17、入两个数,按大小顺序打印。,INPUT TO I1 INPUT TO I2IF(I1=I2)ELSE K=I1 I1=I2 I2=KENDIF SET PRINT ON?I1,I2RETU,BLOCK1为空。,Visual FoxPro,23,7.3.2嵌套分支语句,如果IF的分支的一个块中又包含一个完整的分支结构,称这种形式为嵌套。,IF(e1)IF(e2)ELSEENDIFELSE ENDIF,外层块,内层块,最内层的IF语句和其最近的ENDIF匹配,从内到外;为便于识别可采用缩格写法;,Visual FoxPro,24,CLEARINPUT 请输入一个正整数:TO PIF P500 IF
18、 P=0 R=0 ELSE IF P100 R=0.03 ELSE R=0.04 ENDIF ENDIF ELSE IF P1000 R=0.05 ELSE IF P2000 R=0.06 ELSE R=0.08 ENDIF ENDIFENDIFTAX=P*R?TAX=,TAXRETURN,例E9:假定利润的征税率规定如下:利润(P)在100元以下的税率为3%,100元P500元的税率为4%,500元P1000元的税率为5%,1000元P2000元的税率为6%,P2000元的税率为8%,利润为0或亏本的不征税。,Visual FoxPro,25,例E10:根据键入X的值,计算下面分段函数的值,
19、并显示结果。SET TALK OFFCLEARINPUT X=TO XIF X0 IF X10 Y=X*X+1 ELSE Y=3*X*X-2*X+1 ENDIFELSE Y=X*X+4*X-1ENDIF?分段函数值为:+STR(Y,10,2)SET TALK ONRETURN,Y=X2+4X-1(X0)Y=3 X2-2X+1(0X10)Y=X2+1(X10),Visual FoxPro,26,7.3.3 多分支选择语句 语句格式:DO CASE CASE CASE OTHERWISE ENDCASE,说明:1.DO CASE与第一个CASE语句间不 能有任何语句。2.DO CASE与ENDCA
20、SE要成对出现。,Visual FoxPro,27,例E11:征税问题:1000以下税率为3%10002000税率为4%20003000税率为5%3000以上税率6%,INPUT TO ADO CASE CASE A1000 T=0.03 CASE A2000 T=0.04 CASE A3000 T=0.05 OTHE T=0.06ENDCASETA=A*T?TA=,TARETU,Visual FoxPro,28,例E12:用DO CASE语句修改E10计算分段函数的例子。SET TALK OFFCLEARINPUT X=TO XDO CASE CASE X0.AND.X10 Y=X*X+1E
21、NDCASE?分段函数值为:+STR(Y,10,2)SET TALK ONRETURN,Visual FoxPro,29,例E13:在学生库中 进行追加、修改、插入和删除操作。SET TALK OFF CLEAR USE 学生 TEXT 1。追加记录 2。修改记录 3。插入记录 4。删除记录 5。退出 ENDTEXT WAIT“请输入你的选择(1-5):”TO CH DO CASE CASE CH=1 APPEND CASE CH=2 BROWSE CASE CH=3 INPUT“请输入插入记录号:”TO IB GO IB INSERT,CASE CH=4 INPUT“请输入删除记录 号:”T
22、O DB GO DB DELETECASE CH=5?结束,再见!OTHE?重新输入数据!ENDCASE SET TALK ON RETU,Visual FoxPro,30,前面讲述了顺序结构的程序设计和分支结构的程序设计,顺序结构程序中的指令只执行一次就结束了,分支结构程序则要根据条件的不同,执行一组命令序列,也只执行一次,或者直接跳过,一条命令也不执行。而在日常生活中,需要重复地做某些事情的情况也是很多的。凡需要重复做的工作,在计算机中可用循环结构程序来实现。VFP提供三条语句支持循环结构程序设计:DO WHILE-ENDDO,FOR-ENDFOR,SCAN-ENDSCAN。,7.4 循环
23、结构程序,Visual FoxPro,31,7.4.1 DO WHILE循环 语句格式:DO WHILE EXIT LOOP ENDDO,当循环语句首先测试WHILE后面的条件表达式,如果条件为真,则执行DO WHILE和ENDDO之间的命令序列;如果条件为假,则转到ENDDO之后的命令继续执行。每执行完一次DO WHILE和ENDDO之间的命令序列(这部分也叫循环体)后,程序回到DO WHILE处,重新判断条件表达式,从而实现循环。,条件:逻辑表达式;EXIT:强制退出循环;LOOP:使循环短路,返回DO WHILE语句。,Visual FoxPro,32,【E14】编程求246100之和。
24、SET TALK OFFCLEARS=0I=2DO WHILE I=100 S=S+I I=I+2ENDDO?“246100”,SSET TALK ONRETURN,Visual FoxPro,33,(1)DO WHILE和ENDDO必须一一对应,且条件表达式的值必须是逻辑型.T.或.F.,一般对数据库用.NOT.EOF(),对建立菜单程序中的循环条件用.T.。,(2)可选项LOOP可以在循环体中的任何位置,它的功能是跳过LOOP与ENDDO之间的所有语句,而返回起始语句DO WHILE。(3)选择子句EXIT也可放在循环体中任何位置,它的功能是使程序执行直接跳出当前循环,去执行ENDDO后面
25、的第一个语句。(4)循环起始语句DO WHILE与结束语句ENDDO都不会改变起始语句中条件表达式的值,因此,在循环体中必须包含能对的值进行修改的语句,否则,有可能进入死循环。,注意:,Visual FoxPro,34,构成循环的条件一般有三种形式:1.变量=初值 DO WHILE 变量=终值 变量=变量+步长 ENDDO2.DO WHILE.T.EXIT ENDDO3.DO WHILE.NOT.EOF()SKIP ENDDO,使条件趋假的语句,强制退出循环语句,改变数据库的指针语句,Visual FoxPro,35,例E15:有限次循环计算1+2+3+.+100的和。,*E15.PRGSET
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- VFP第7章 结构化程序设计 VFP 结构 程序设计
链接地址:https://www.31ppt.com/p-2332212.html