




下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第9章 结构化程序设计,VFP提供一种程序执行方式,这种方式就是预先把需要执行的多条命令按一定的结构组成一个有机序列以文件的形式存储在磁盘上,而用于存储这些由命令组成的文件,即为命令文件,又称为程序文件,这些序列的设计、编码和调试的过程就是程序设计。,9.1 程序设计基础,9.1.1 程序设计的概念,9.1.2 程序的控制结构 任何复杂的程序都由3种基本控制结构组成。它们是顺序结构、选择结构和循环结构。,图9.1程序的控制结构,9.1.3 结构化程序设计方法 结构化程序设计采用自顶向下、逐步求精和模块化的分析方法。 自顶向下是指对设计的系统要有一个全面的理解,从问题的全局入手,把一个复杂问题分
2、解成若干个相互独立的子问题 。逐步求精是指程序设计的过程是一个渐进的过程,先把一个子问题用一个程序模块来描述,再把每个模块的功能逐步分解细化为一系列的具体步骤 。模块化是结构化程序的重要原则。所谓模块化就是把大程序按照功能分为较小的程序。,9.1.4 程序文件的建立与执行,1命令方式建立或修改程序文件,命令格式: MODIFY COMMAND? MODIFY.FILE.文件名? 功能: 启动VFP提供的文本编辑器来建立或编辑程序文件。,2菜单方式建立编辑程序文件,命令格式:DO 程序文件名 功 能:将程序文件从磁盘调入内存, 编译成.FXP目 标文件后并执行。,3.程序文件的执行,菜单方式:程
3、序-运行,9.2 顺序结构程序,顺序结构是最简单、最基本的一种程序结构。在顺序结构程序中,各命令按照各自出现的先后顺序,依次执行。,SET TALK OFF CLEAR INPUT 长方形一边的长为: TO A INPUT 长方形另一边的长为: TO B S=A*B ? 长方形的面积为: , S SET TALK ON RETURN,1. 程序注释命令,语句格式1: NOTE|* 注释,语句格式2: ,2. 累加第 i 个数,3. 累加次数加1,4. 当 i= 4 重复做2 ;,5. ? s 。,例 求自然数1至4的和。,&定义一个变量表示和,并初始化,&指定以循环次数作判断条件,&把S的值加
4、上i后再赋给S,即求和,&修改循环变量,&输出求和的结果,&设置循环变量的初值,SET TALK OFF S=0 i=1 DO WHILE i=4 S=S+i i=i+1 ENDDO ? S SET TALK ON RETURN,程序:求自然数1至4的和,S=0,i=1,1=4,S=0+1,i=1+1,.T.,2=4,S=1+2,i=2+1,3=4,S=3+3,i=3+1,4=4,S=6+4,i= 4+1,5=4,.F.,? 10,SET TALK OFF S=0 i=1 DO WHILE i=4 S=S+i i=i+1 ENDDO ? S SET TALK ON RETURN,若求自然数1至
5、N的和呢?,推广1,SET TALK OFF INPUT 请输入N的值: TO N S=0 i=1 DO WHILE i=N S=S+i i=i+1 ENDDO ? S SET TALK ON RETURN,若求自然数1至N的积呢?,程序:求自然数1至N的积,SET TALK OFF,S=0,i=1,INPUT 请输入N的值: TO N,DO WHILE i=N,S =S + i,i =i + 1,ENDDO,?S,SET TALK ON,RETURN,推广2,S=1,S=S*i,SET TALK OFF INPUT 请输入N的值: TO N S=1 i=1 DO WHILE i=N S=S*
6、i i=i+1 ENDDO ? S SET TALK ON RETURN,例 阅读程序,并说出程序的运行结果,程序结果,2,3,4,5,6,程序结果,2,4,5,6,E,E,SET TALK OFF i=1 DO WHILE i=5 i=i+1 if i=3 loop endif ?i ENDDO ?E SET TALK ON RETURN,例 求1100以内所有奇数的和。,SET TALK OFF S=0 I=0 Do while I100 I = I + 1 If int(I/2) = I/2 Loop endif S = S + I Enddo ? “1到100的奇数和 S= ”, S
7、SET TALK ON Return,以循环变量作为控制参数控制循环。,S=0 I=1 Do while I100 S = S + I I = I + 2 Enddo ? s,程序改进:,SET TALK OFF CLEAR USE zgb ACCEPT “请输入要查找人的姓名: ” TO N LOCATE ALL FOR XM=N DO WHILE .NOT. EOF( ) DISP CONTINU WAIT “按任意键继续,按ESC键退出” ENDDO USE ?“查找结束” SET TALK ON RETURN,例 编程:在zgb.dbf中查找某人。,利用数据表的操作函数的返回值控制循环
8、,USE e:lxrygl.dbf ACCEPT 请输入要查找人的性别: TO n LOCATE ALL FOR 性别=n DISP DO WHILE .not. EOF( ). WAIT 按任意键继续,按ESC键退出 CONTINU DISP enddo USE ?查找结束 SET TALK on RETURN,例 求连乘数1*2*3*4*,当积大于720时退出程序。,Set talk off Clear S=1 I=1 Do while .T. S = S * I I = I + 1 Enddo ? “ S= ”, S Set talk on Return,循环控制条件恒为真,要使用EXI
9、T语句结束循环,例 求1,100内所有能被3或被5整除的数的个数。,&定义一个变量表示个数,并初始化,&总个数增加1,&显示满足条件的这个数,SET TALK OFF N=0 i=1 DO WHILE i=100 IF MOD(i,3)=0 .OR. MOD(i,5)=0 ? i n=n+1 endif i=i+1 enddo ? 这样的数共有,n, 个 set talk on return,语句格式: FOR XA TO B STEP C LOOP EXIT ENDFOR | NEXT,二、计数循环,循环体,功能:将FORENDFOR循环中的执行指定的次数。,循环变量,循环初值,步长值,循环
10、终值,例 阅读程序,写出程序运行结果,思考3 若改成EXIT呢?,SET TALK OFF s=0 FOR K=1 TO 10 STEP 2 if k=7 loop endif s=s+k endfor ?s set talk on return,例9.6,clear for i=100 to 999 a=int(i/100) b=int(mod(i,100)/10) c=i%10 if i=a3+b3+c3 ?i endif endfor return,for k=1 to 6 step 2 j=k next ?j, k,退出循环后循环变量的值(例):,例 求1100之和。,clear se
11、t talk off s=0 for I=1 to 100 s = s + I Endfor ? s = , s SET TALK on Return,若求100的阶乘呢?,思考1,例 求1100之奇数和。,SET TALK OFF Clear S=0 for I=1 to 100 step 2 S = S + I Next ? “S = ”, S SET TALK ON Return,若求1100的偶数和呢?,思考2,set talk off clear s=0 for i=1 to 100 step 2 s=s+i endfor ?s=,s SET TALK on Return,语句格式:
12、 SCAN FOR LOOP EXIT ENDSCAN,三、表文件扫描循环,循环体,功能:在指定的范围内,扫描满足给定条件的记录,执行相应的语句。,例9.8,clear store 0 to x,y set defa to g:vf学习vf文件 use 学生 scan for 少数民族否 if 性别=男 x=x+1 else y=y+1 endif endscan ?少数民族的男生有:,x,人 ?少数民族的女生有:+str(y,2)+人 use return,SET TALK OFF USE zgb ACCEPT 请输入要查找人的姓名: TO N SCAN FOR XM=N DISP WAIT
13、 按任意键继续,按ESC键退出 ENDSCAN USE ?查找结束 SET TALK ON RETURN,例 用SCAN语句编程:在zgb.dbf中查找某人。,对数据表扫描时三种循环的等价格式,表文件扫描循环: SCAN FOR ENDSCAN,条件循环: DO WHILE .NOT. EOF() SKIP ENDDO,计数循环: n=RECCOUNT() FOR i=1 TO n GO i ENDFOR,循环嵌套,循环体内又设置循环的情况称为多重循环,又称为循环嵌套。 内外循环的层次必须分明,不允许有交叉现象出现。 循环结构可以与分支结构嵌套,同样不允许有交叉现象出现。,以下交叉情形不允许出现:,例 已知S1=1,S2=1+2,S3=1+2+3, Sn=1+2+3+N,编程求S1+S2+S100的和。,s=0 n=1 Do while n=100 i=1 sub=0 Do while i=n sub = sub + i i = i + 1 Enddo s = s + sub n =n + 1 Enddo ? “ S1+S2+S100= ”, s ,怎样求 “s=1!+2!+n!”呢?,s=0 for n=1 to 4 sub=1 for i=1 to n sub = sub +i Endfor s=s+sub Endfor ?s,用for语
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论