资源预览内容
第1页 / 共143页
第2页 / 共143页
第3页 / 共143页
第4页 / 共143页
第5页 / 共143页
第6页 / 共143页
第7页 / 共143页
第8页 / 共143页
第9页 / 共143页
第10页 / 共143页
亲,该文档总共143页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
第5章 程 序 设 计,5.1 程序设计概念 5.2 程序设计语言基础 5.3 程序设计简单语句、顺序和分支结构(实验九) 5.4 程序设计-循环结构(实验十) 5.5 程序设计过程调用(实验十一) 习题五,5.1 程序设计概念,5.1.1 VFP 6.0程序设计的基本概念 从形式上看,VFP 6.0的程序由若干有序的命令行组成,并满足下列规则: (1) 一个命令行内只能写一条命令,命令行的长度不得超过2048个字符,命令行以回车键结束。 (2) 一个命令行可以由若干个物理行组成,即一条命令在一个物理行内写不下时,可以分成几行。,(3) 为便于阅读和检查程序,可以按一定的格式输入程序。 VFP 6.0将过程化设计与面向对象的程序设计结合在一起,提供了强大而又灵活的应用程序设计工具。 (1) 过程化程序设计是采用结构化编程语句来编写的程序设计。 (2) 面向对象的程序设计的设计思想是面向对象,即设计的重要任务在于描述对象。,5.1.2 过程化程序设计的基本操作 1建立程序文件 方法一:选择“文件”菜单下的“新建”选项,在打开的窗口中选择“程序”可选项,再单击“新建文件”按钮,进入程序编辑窗口,如图5-1所示。 方法二:在命令窗口中输入命令建立程序文件。 格式:MODIFY COMMAND /? 功能:打开程序编辑窗口,编写程序代码。,图5-1 “新建”对话框,(1) 为可选项,指定打开或创建的程序文件名。 (2) 选择?可选项将显示“打开”对话框。用户可以从中选择一个已有程序名或输入要创建的新程序名。 (3) 修改程序文件本命令同样适用。,2. 运行程序文件 方法一:选择“程序”菜单下的“运行”选项,在打开的“运行”对话框中选择要运行的程序。 方法二:单击“常用”工具栏上的“”按钮。 方法三:在“命令”窗口中输入运行程序命令。 格式:DO 功能:运行程序文件。 例如:在当前默认目录下建立一个查看学生.dbf表的结构和内容的程序文件,文件名为例1.prg。,(1) 在“命令”窗口中输入相关命令建立程序文件,如图5-2所示。 (2) 在程序编辑窗口中输入程序文件的具体内容,如图5-3所示。输入完毕后按Ctrl+W键存盘,或直接单击“ ”按钮,在系统的提示下存盘。 (3) 在“命令”窗口中输入相关命令运行程序文件,如图5-4所示。,图5-2 用命令建立程序文件,图5-3 程序编辑窗口,图5-4 用命令运行程序文件,5.2 程序设计语言基础,5.2.1 输入/输出命令 1交互式输入命令 1) 字符接收命令 格式:ACCEPT TO 功能:将从键盘上接收的字符串数据存入指定的内存变量中。 例如:从键盘输入某表文件的文件名,要求打开并显示此表的内容。,图5-5 在程序编辑窗口中输入程序,2) 通用数据接收命令 格式:INPUT TO 功能:用于接收从键盘上输入的表达式,并将计算结果存入指定的内存变量或数组元素中。 例如:从键盘上输入半径,求圆面积,并输出结果。 满足此例要求的程序如图5-6所示。,图5-6 在程序编辑窗口中输入程序,3) 输入一个字符命令 格式:WAIT TO 功能:暂停正在运行的程序,直到输入一个字符为止。,WAIT命令常用于下列两种情况: (1) 暂停程序的运行,以便观察程序的运行情况,检查程序运行的中间结果。 (2) 暂停程序的运行,等待用户根据实际情况输入某个字符,以控制程序的执行流程。,2. 格式化输出命令 格式: SAY 功能:从指定的行、列号位置开始输出表达式的值。 若上例改成在第5行的第20列输出结果,程序可以做如下的修改,如图5-7所示。,图5-7 改进后输出方式的程序,5.2.2 调试命令与辅助命令 1. 命令执行结果输出命令 格式:SET TALK ON / OFF 功能:选择ON状态时,一些命令的执行结果显示或打印,选择OFF状态则命令结果不显示。默认值为ON状态。,2. 命令行输出命令 格式:SET ECHO OFF / ON 功能:选择ON状态时将在屏幕或打印机上输出命令行及运行结果,选择OFF状态时只输出运行结果,不输出命令本身。默认值为OFF状态。 3. 程序文件终止命令 格式:CANCEL 功能:终止程序文件的执行,并关闭所有打开的文件。短语可用于书写注释。,4注释命令 格式一:NOTE / * 格式二:& 功能:给程序或命令加注释。,下面是一段加了注释的程序: *以下是一个显示学生.dbf表的结构和所有女同学信息的程序 use 学生 &打开名为学生.dbf的表 display structure &分屏显示表的结构 list all for xb=“女“ &显示表中所有女同学的记录内容,5.2.3 结构化程序设计 1顺序结构程序设计 序中最基本的常用结构。前面介绍的例题都属于顺序结构。,例如:编写一个顺序结构的程序,求1+2+3+4的结果。满足此例的程序如图5-8所示。注意,每一条赋值语句赋值号右边的x的值为上一条赋值语句赋值号左边的x的值。 例如:工资.dbf表如图5-9所示。计算每人的实发工资=基本工资+奖金-扣款,并写入相应的字段。统计基本工资的总数送入sumgz变量中。按实发工资计算所有职工的平均工资,送入sfpj变量中。,图5-8 程序,图5-9 浏览工资表,满足此例的程序如下: CLEAR USE 工资 REPLACE ALL 实发工资 WITH 基本工资+奖金-扣款 LIST SUM ALL 基本工资 TO sumgz AVERAGE ALL 实发工资 TO sfpj ?“基本工资的总额为:“, sumgz ?“实发工资的平均为:“, sfpj USE,2分支结构程序设计 1) 单分支选择语句(IFENDIF) 格式: IF ENDIF,图5-10 单分支选择语句流程图,功能:当的值为真时,执行IF和ENDIF之间的,执行完后去执行ENDIF后面的语句;当的值为假时,直接执行ENDIF后面的语句。其流程图如图5-10所示。,例如:检查选课.dbf中有无成绩低于60分的记录,并给出信息提示。 程序如下: USE 选课 LOCATE ALL FOR cj60 IF .NOT. EOF( ) ?“有相关的记录!“ CANCEL ENDIF ?“无相关的记录!“ USE,2) 双分支选择语句(IFELSEENDIF) 格式: IF ELSE ENDIF,功能:当的值为真时,先执行,然后再去执行ENDIF后面的语句;当的值为假时,先执行,然后再转去执行ENDIF后面的语句。其流程图如图5-11所示。,图5-11 双分支选择语句流程图,若将上例改用双分支选择语句,其程序如下: USE 选课 LOCATE ALL FOR cj60 IF .NOT. EOF( ) ?“有相关的记录!“ ELSE ?“无相关的记录!“ ENDIF USE,例如:铁路托运行李的运费这样计算:每张车票可按每千克0.5元托运50千克以内的行李,如果超过50千克时,超过的部分每千克加价0.3元。编制程序,要求从键盘输入行李的重量,输出运费是多少。,程序如下: SET TALK OFF CLEAR INPUT “请输入行李的重量:“ TO W IF W = 50 X=0.5*W ELSE,X=0.5*50+(0.5+0.3)*(W-50) ENDIF ?“行李的重量为“+STR(W , 6 , 2)+ “公斤,其运费为“+STR(X , 6 , 2)+ “元“ SET TALK ON,3) IF语句的嵌套(以三层嵌套为例) 格式:,功能:此种嵌套语句可以对多分支的复杂情况进行各种判断。 说明:在这种嵌套形式中,要求每一层的IF和ELSE及ENDIF必须一一对应。IFELSEENDIF每个子句各占一行,不能在同一行出现。,例如:为选课.dbf表中第一条记录的成绩划分等级。90分及以上为优,80分及以上为良,70分及以上为中,60分及以上为及格,60分以下为不及格。 程序如下: USE 选课 IF cj=90 ?“优“ ELSE IF cj=80 ?“良“ ELSE,IF cj=70 ?“中“ ELSE IF cj=60 ?“及格“ ELSE ?“不及格“ ENDIF ENDIF ENDIF ENDIF,4) 多分支选择语句(DOCASEENDCASE) 格式: DO CASE CASE CASE CASE OTHERWISE ENDCASE,功能:执行此命令时,系统从头依次查看每一个CASE后的条件表达式,只要某一个条件表达式的值为真,就执行该条件下的语句组,其他条件下的语句组都跳过去不执行,接下来执行的是ENDCASE后面的语句。当命令中含OTHERWISE可选项时,若所有的条件都不成立,则执行OTHERWISE后面的;如果没有可选项OTHERWISE,且所有的条件都不成立,则接着执行ENDCASE后面的语句。流程图如图5-12所示。,图5-12 多分支选择语句流程图,若将上例改用多分支选择语句来实现,则其程序如下: USE 选课 DO CASE CASE cj=90 .AND. cj=80 .AND. cj=70 .AND. cj=60 .AND. cj70 ?“及格“,OTHERWISE ?“不及格“ ENDCASE USE,3循环结构程序设计 循环是指按照给定的条件去重复执行一段具有特定功能的程序。VFP 6.0的循环命令有三类:基于条件的循环、基于计数的循环和基于表的循环。,1) 基于条件的循环 格式: DO WHILE EXIT LOOP ENDDO,功能:当为真时,执行, 否则执行ENDDO后面的语句。流程图如图5-13所示。,图5-13 DO循环流程图,说明: (1) DO WHILE和ENDDO之间的语句称为循环体。循环体可以是一个语句或一组语句,也可以是一个子程序。DO WHILE与ENDDO必须配对使用。 (2) 循环语句本身不会修改执行的条件,所以一定要在循环体内设置修改循环条件的语句,如果忘记了这一点或者设置得不正确,就会出现程序无法正常退出循环体的情况,也称为死循环。,(3) LOOP的功能是将程序流程返回到DO WHILE语句,并重新计算的值。它可以放在循环体的任何位置。 (4) EXIT的功能是将程序控制从循环的内部转到ENDDO后的第一条命令去执行。它可以放在循环体的任何位置。 例如:以显示方式输出从110这10个数字。,程序如下: SET TALK OFF CLEAR I=1 DO WHILE I=10 ?I I=I+1 &修改循环条件的语句 ENDDO,例如:统计学生.dbf表中男、女同学的人数各为多少。 程序如下: SET TALK OFF CLEAR STORE 0 TO A , B USE 学生 DO WHILE .NOT. EOF( ) if xb=男 A=A+1,else B=B+1 ENDif SKIP &修改循环条件的语句 ENDDO ?“男同学的人数为:“, A ?“女同学的人数为:“, B USE SET TALK ON,例如:工资.dbf表如前面图5-9所示,请将表中凡是基本工资少于600元的职工工资增加50元。 程序如下: SET TALK OFF CLEAR USE 工资 DO WHILE .NOT. EOF( ) IF 基本工资=600 SKIP LOOP,ENDIF REPLACE 基本工资 WITH 基本工资+50 SKIP ENDDO USE,例如:计算1+2+3+100的和。 程序如下: N=1 S=0 DO WHILE .T. IF N100 EXIT
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号