第6章程序设计基.ppt

上传人:夺命阿水 文档编号:756067 上传时间:2023-11-08 格式:PPT 页数:56 大小:849KB
返回 下载 相关 举报
第6章程序设计基.ppt_第1页
第1页 / 共56页
第6章程序设计基.ppt_第2页
第2页 / 共56页
第6章程序设计基.ppt_第3页
第3页 / 共56页
第6章程序设计基.ppt_第4页
第4页 / 共56页
第6章程序设计基.ppt_第5页
第5页 / 共56页
点击查看更多>>
资源描述

《第6章程序设计基.ppt》由会员分享,可在线阅读,更多相关《第6章程序设计基.ppt(56页珍藏版)》请在课桌文档上搜索。

1、第6章 程序设计基础,6.1 程序与程序文件,交互工作方式,要求用户必须比较熟悉数据库知识,了解数据组织结构,如果要同时对数据表格多次进行某些操作,就必须反复拟行相关命令,这些命令不被保存,当退出Visual FoxPro系统环镜或计算机断电后,就荡然无存了,对于使用大量数据的最终用户来说,直接使用交互方式管理数据是不现实的。因此,要建立真正的管理信息系统必须编制程序。,6.1.1 程序的建立与编辑,创建程序:(1)在“文件”菜单中选择“新建”命令(或工具栏中“新建”按钮),然后在“新建”对话框中选择“程序”单选按钮,再单击“新建文件”按钮。(2)命令窗口中,键入命令:MODIFY COMMA

2、ND 文件名扩展名保存程序(1)从“文件”菜单中选取“保存”命令(2)按“CTRL+W”组合键。编辑程序(1)在“文件”菜单中选择“打开”命令(2)命令窗口中:MODIFY COMMAND,程序的书写规则,注释语句格式:NOTE*&对话开关语句格式:SET TALK OFF|ON输出语句格式:?格式:?命令的分行每个命令都以回车键结束,一行只能写一条命令;若一条命令太长,并在分行处加上续行符“;”。,6.1.2 程序文件的运行,单击“程序”菜单中的“运行”命令,在打开的运行对话框中找到要执行的程序文件,单击“运行”按钮。单击常用工具栏上的“运行”按钮。在命令窗口中键入命令:DO程序文件名前可以

3、使用路径,否则指系统默认目录。若运行的是.PRG程序则扩展名可以省略。若运行其他的程序则扩展名不能省;,6.1.2 程序文件的运行,执行程序文件时,将依次执行文件中的命令,直到所有命令执行完毕,或者执行到以下命令:CANCAL:终止程序运行,清除所有的私有变量,返回命令窗口;retry:返回到调用行本身,可以实现程序的重复调用。RETURN:结束程序执行,返回调用它的上级程序,若无上级程序则返回命令窗口;QUIT:结束程序执行并退出Visual FoxPro系统,返回操作系统,6.1.3 简单的输入输出命令,6.1.3 简单的输入输出命令1ACCEPT命令【格式】ACCEPT TO【功能】在程

4、序执行过程中,将用户交互式输入的内容作为字符串赋值给指定内存变量。该命令只接受字符型数据,输入的字符串不需要加定界符,【例6-2】编程从键盘输入某数据库的文件名,要求打开该数据库并显示其内容。程序文件名为PROG2.PRG。MODI COMMAND PROG2SET TALK OFFCLEARACCEPT“请输入数据库名:”TO AAAOPEN DATABASE&AAAACCEPT 请输入表名 TO BBBUSE&BBBLISTUSESET TALK ONRETURN,2INPUT命令【格式】INPUT TO【功能】在程序执行过程中,将用户交互式输入的内容赋值给指定内存变量 可以输入字符型、数

5、值型、逻辑型、日期型和日期时间型等类型数据,而且可以是常量、变量、函数或表达式等形式,按回车键结束输入,系统将输入的数据赋值给。,【例6-4】从键盘输入两个任意正数,编程求以两数为边长的长方形面积。程序文件名为PROG4.PRGSET TALK OFFCLEARINPUT“长方形一边的长为:”TO AINPUT“长方形另一边的长为:”TO BS=A*B?“长方形的面积为:”,SSET TALK ON RETURN,3WAIT命令【格式】WAIT TO WINDOW AT,NOWAIT CLEAR|NOCLEAR TIMEOUT【功能】显示提示信息,暂停程序执行,直到用户按任意键或单击鼠标时继续

6、执行程序。若选择可选项TO,将输入的单个字符作为字符型数据赋给指定的;若用户是按Enter键或单击鼠标,的值为空串。若省略所有可选项,屏幕显示“键入任意键继续”默认提示信息,【例6-6】在STUDENT数据库的STUD表中显示任意一个系学生的情况。程序文件名为PROG6.PRGSET TALK OFFCLEAROPEN DATABASE STUDENTUSE STUDWAIT“请输入待查学生的系号(13):”TO NIF VAL(N)3WAIT“输入无效,结束程序运行!”WINDOW TIMEOUT 5RETURNELSESTORE“0”+N TO AAALIST FOR 系别号=AAAEND

7、IFCLOSE DATABASESET TALK ONRETURN,4三条输入命令的异同ACCEPT命令只能接受字符型数据,不需定界符,输入完毕按回车键结束;WAIT命令只能输入单个字符,且不需定界符,输入完毕不需按回车键;INPUT命令可接受数值型、字符型、逻辑型、日期型和日期时间型数据,数据形式可以是常量、变量、函数和表达式,如果是字符串,需用定界符,输入完毕按回车键结束。,程序的基本结构,Visual FoxPro系统提供的命令丰富,且功能强大,把这些命令和程序设计语句有效地组织在一起,就形成了实现某一特定功能的程序。Visual FoxPro系统的程序有两个特点:一是程序控制流模式,由

8、顺序、分支、循环三种基本结构构成。二是面向对象可视化的结构程序模块,在每个模块的内部也是由程序控制流组成。常见的控制结构如下:1顺序结构 顺序结构是在程序执行时,根据程序中语句的书写顺序依次执行的命令序列。Visual FoxPro系统中的大多数命令都可以作为顺序结构中的语句。2分支结构 分支结构是在程序执行时,根据不同的条件,选择执行不同的程序语句,用来解决有选择、有转移的诸多问题。,3循环结构 循环结构则能够使某些语句或程序段重复执行若干次。如果某些语句或程序段需要在一个固定的位置上重复操作,使用循环是最好的选择。4过程结构 在许多应用程序中,有一些程序段需要反复执行多次,这些程序段不在一

9、个固定的位置上,而是分散在程序的许多位置上重复执行,可将其与嵌入它的程序分开,形成独立的程序序列,待使用时再调入程序中,以实现不同位置上的重复操作。这样做增强了程序的可读性和模块化。我们称这种具有独立功能而且可以被其它程序调用的程序序列为过程。,6.2 程序的基本结构,求解的基本逻辑:VFP程序多数用于数据处理,解决问题的基本逻辑是:输入数据处理数据输出数据。程序的通用性:程序的通用性指程序对多种场合的适应性,通用性好的程序的应用范围较广。,6.2.1 顺序结构,顺序结构是在程序执行时,根据程序中语句的书写顺序依次执行的命令序列。例题:将学生表中学号为20050008,其姓名一栏由万华改为万强

10、。CLEARSET TALK OFFOPEN DATABASE 学生USE 学生ACCEPT“请输入要修改记录的学号:”to xh LOCATE FOR 学号=xhREPLACE 姓名 WITH“万强”USECLOSE DATABASESET TALK ONRETURN,6.2.2 选择结构,单分支选择单向选择语句,即根据用户设置的条件表达式的值,决定某一操作是否执行。(1)语句格式:IF条件表达式语句序列ENDIF(2)单向条件转向语句的流程图,双分支选择双向选择语句,即根据用户设置的条件表达式的值,选择两个操作中的一个来执行。(1)语句格式:IF条件表达式语句序列1ELSE语句序列2END

11、IF,(2)双分支条件转向语句的流程图如下图所示,例:输入两个实数,求它们的最大值。set talk offclearinput“实数a=”to ainput“实数b=”to bif a=b max=aelse max=bendif?a,”与”,b,”中的最大值为:”,maxreturn,也可以用单分支的选择语句来实现set talk offclearinput“实数a=”to ainput“实数b=”to bmax=aif ba max=bendif?a,”与”,b,”中的最大值为:”,maxreturn,例:输入一个大于0的年份值,判断该一年份是否是闰年,如果是闰年,就输出“xxxx年是闰

12、年”,否则输出“xxxx年不是闰年”。.闰年的条件是:能被4整除但不能被100整除,或能被100整除且能被400整除。,多向选择语句,即根据多个条件表达式的值,选择执行多个操作中的一个对应执行。(1)语句格式:DO CASECASE条件表达式1CASE条件表达式2 CASE条件表达式NOTHERWISE ENDCASE,多分支选择,SET TALK OFFCLEARINPUT“请输入收入:”TO PDO CASE CASE P800 R=0 CASE P2000 R=0.05 CASE P5000 R=0.08 OTHERWISE R=0.1ENDCASETAX=P*R?”税金为:”,TAXS

13、ET TALK ON RETURN,【例】用IFENDIF实现上例计算税金,程序文件名为TAX_2.PRG。,IIF()函数VFP中有一个函数,它能够先进行条件判断,然后决定返回其值。它的使用效果与选择语句IFENDIF相同,但比选择语句更快捷。格式:IIF(条件表达式,表达式1,表达式2)例:输入两个实数,求这两者的最大值。文件名:exam_if_1.prg,set talk offclearinput“实数a=”to ainput“实数b=”to bmax=iif(a=b,a,b)?a,”与”,b,”中的最大值为:”,maxreturn,例:用IIF()来实现P.163 例6-7。文件名e

14、xam_if_1.prgset talk offclearinput“实数x=”to xy=iif(x0,iif(x10,x*x+1,3*x*x-2*x+1),x*x+4*x-1)?“分段函数值为:”+str(y,10,2)set talk onreturn,使用分支语句应注意的几点IF ENDIF和DO CASE ENDCASE必须配对使用,DO CASE与第一个CASE条件表达式之间不应有任何命令。可以是各种表达式或函数的组合,其值必须是逻辑值。可以由一个或多个命令组成,可以是条件控制语句组成的嵌套结构。,6.2.3 循环结构,1.DO WHILE循环语句格式:DO WHILE ENDDO

15、,【例6-9】编程求246100之和。SET TALK OFFCLEARS=0I=2DO WHILE I=100S=S+I I=I+2ENDDO?“246100”,SSET TALK ONRETURN,【例6-11】显示学生表中在1985年以后出生的学生记录。SET TALK OFFCLEAROPEN DATABASE 学生USE 学生DO WHILE.NOT.EOF()IF 出生日期=CTOD(“1985-01-01”)DISPLAYENDIFSKIPENDDOUSECLOSE DATABASERETURN,【例6-12】将自然数中的前N个完全平方数进行累加,当累加之和超过100时停止累加,

16、即求M=02+12+22+(N-1)2。要求程序显示每次的累加和。说明:1.什么是完全平方数?一个数如果是另一个整数的完全平方,那么我们就称这个数为完全平方数,也叫做平方数。例如:0,1,4,9,16,25,36,49,64,81,100,121,144,169,196,225,256,289,324,361,4002.什么是完全立方数?一个数如果是另一个整数的完全立方,那么我们就称这个数为完全立方数,也叫做立方数。例如:1,8等,SET TALK OFFCLEARSTORE 0 TO I,MDO WHILE.T.IF M100 EXIT ELSE M=M+I2 ENDIF?”完全平方数累加和

17、:”+STR(M,6)I=I+1ENDDOSET TALK ONreturn,语句格式:FOR=TO STEP ENDFOR|NEXT,2.FOR循环语句,使用FOR循环语句的有关说明:(1)省略STEP,则步长为默认值1;(2)初值、终值和步长都可以是数值表达式,但这些表达式仅在循环语句开始执行时计算一次。循环语句执行过程中,初值、终值和步长是不会改变的,并由此确定循环的次数;(3)可以在循环体内改变循环变量的值,但会改变循环执行次数;(4)EXIT和LOOP命令可以出现在循环体内,【例6-13】求1000之内所有偶数之和。SET TALK OFFCLEARS=0FOR I=0 TO 100

18、0 STEP 2S=S+INEXT?“1000之内所有偶数之和为”,SSET TALK ONRETURN,【例6-14】从键盘输入10个数,编程找出其中的最大值和最小值。SET TALK OFFCLEARINPUT“请从键盘输入一个数:”TO ASTORE A TO MAX_VAL,MIN_VALFOR I=2 TO 10 INPUT“请从键盘输入一个数:”TO A IF MAX_VALA MIN_VAL=A ENDIFENDFOR?“最大值为:”,MAX_VAL?“最小值为:”,MIN_VALSET TALK ONRETURN,3.“指针”型循环控制语句,(1)语句格式:SCANFOR WH

19、ILE ENDSCAN(2)语句功能:该语句在指定的范围内,用数据记录指针来控制循环次数。执行语句时,首先判断函数EOF()的值,若其值为“真”,则结束循环,否则,结合条件表达式1或条件表达式2,执行命令行序列,记录指针移到指定的范围和条件内的下一条记录,重新判断函数EOF()的值,直到函数EOF()的值为真时结束循环。,【例6-16】分别统计“学生”表中男生和女生的人数。,SET TALK OFFCLEAROPEN DATABASE 学生USE 学生sotre 0 to x,ySCANIF 性别=“男”x=x+1ELSE y=y+1ENDIF,ENDSCAN?“男生人数:”,x,”女生人数:

20、”,yUSECLOSE DATABASESET TALK ONRETURN,【例6-17】显示“学生”表中入学成绩在600分以上的学生名单。SET TALK OFFCLEAROPEN DATABASE 学生USE 学生SCAN FOR 入学成绩600DISPLAY 学号,姓名,入学成绩ENDSCANUSECLOSE DATABASESET TALK ONRETURN,4.多重循环,多重循环即循环的嵌套,是指在一个循环结构的循环体中又包含另一个循环。外循环我们称外层循环为外循环 内循环被包含的循环为内循环。嵌套层数一般没有限制,但内循环的循环体必须完全包含在外循环的循环体中,不能相互交叉。,下面

21、是一个DO WHILEENDDO循环嵌套的一般形式:DO WHILE DO WHILE ENDDO ENDDO,下面是一个DO WHILEENDDO循环嵌套一个FOR 循环的一般形式:DO WHILE FOR=TO STEP ENDFOR|NEXT ENDDO,下面是一个FOR循环嵌套另一个FOR循环的一般形式:FOR=TO STEP FOR=TO STEP ENDFOR|NEXT ENDFOR|NEXT,下面是一个FOR循环嵌套一个DO WHILEENDDO循环的一般形式:FOR=TO STEP DO WHILE ENDDO ENDFOR|NEXT,【例】从键盘输入n个实数,对它们按从小到大

22、的顺序排序,并将排序后的这n个数依次输出。,【例】从键盘输入n个实数,对它们按从小到大的顺序排序,并将排序后的这n个数依次输出。,*本程序使用冒泡排序法对给定的n个实数进行排序*SET TALK OFFCLEARdimension a(100)input“自然数 n=”to nfor i=1 to n?“实数 a(“+str(i,3)+”)=“input“”to a(i)endfor,for i=1to n-1&对n个数进行 n-1 趟排序 for j=1 to n-i&处理第i趟排序 if a(j)a(j+1)&需要交换相邻的两个数 tmp=a(j)&交换相邻的两个数 a(j)=a(j+1)

23、a(j+1)=tmp endif endforendfor*下面按从小到大的顺序依次输出各个数for i=1 to n?a(i),”,”&相邻的两个数之间用逗号分隔endforSET TALK ONRETURN,*本程序使用do whileenddo循环实现冒泡排序法,*对n个实数进行排序*SET TALK OFFCLEARdimension a(100)input“自然数 n=”to nfor i=1 to n?“实数 a(“+str(i,3)+”)=“input“”to a(i)endfor,i=1do while ia(j+1)&需要交换相邻的两个数 tmp=a(j)&交换相邻的两个数 a(j)=a(j+1)a(j+1)=tmp endif j=j+1 enddo i=i+1enddo,*下面按从小到大的顺序依次输出各个数for i=1 to n?a(i),”,”&相邻的两个数之间用逗号分隔endforSET TALK ONRETURN,用多重循环编程输出下三角形乘法口诀表,SET TALK OFFCLEARX=1DO WHILE X=9 Y=1 DO WHILE Y=X S=X*Y?STR(Y,1)+”*”+STR(X,1)+”=”+STR(S,2)+”“Y=Y+1ENDDO?X=X+1ENDDOSET TALK ONRETURN,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 在线阅读 > 生活休闲


备案号:宁ICP备20000045号-1

经营许可证:宁B2-20210002

宁公网安备 64010402000986号