




已阅读5页,还剩31页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
程序的三种基本控制结构顺序结构 选择结构 循环结构一、 顺序结构:顺序语句由语句序列组成,程序执行时,按照语句的顺序,从上而下,一条一条地顺序执行如:store Visual FoxPro to nameAge = 4? My name is + name + , I am ;+ str(Age) + years old一、二、选择结构:分支语句根据一定的条件决定执行哪一部分的语句序列。二、1、 单分支结构 格式: if endif 例程1:clear use sb wait 是否打印?(y/n) to a if upper(a)=Y wait 请接好打印机!按任意键后打印 list to print endif2、 双分支选择格式: if else endif例程2: clearset talk offaccept 请输入密码: to mmif mmabc?你无权使用本系统quitelse?欢迎使用本系统endifset talk onif语句的嵌套:在一个if语句中包含另一个语句的程序结构例程3:根据输入的x值,计算下面分段函数的值,并显示结果。 2x-5 (x1) Y= 2x (1=x=10) input 请输入x的值: to x if x1 y=2*x-5 else if x=90 ?成绩优秀 case nscore=80 ?成绩良好 case nscore=70 ?成绩中等 case nscore=60 ?成绩较差 case nscore=0 ?成绩不及格 otherwise ?成绩应大于0,数据有错 endcase ?程序执行完毕 set talk on三、循环结构:循环语句使同一个语句组根据一定的条件执行若干次。l有三种循环语句:DO WHILEFOR语句组表达式假.f.真.t.SCAN1、do while 循环语句1. do while 循环l语句格式1DO WHILE 逻辑表达式ENDDO例程1:计算1+2+3100set talk offclears=0I=1Do while I=100s=s+II=I+1Enddo?1100的和为:,s return语句格式2:DO WHILE 逻辑表达式 命令序列1loopexitENDDOLoop语句是循环短路语句,当程序执行到loop语句时,被迫结束本次循环,不再执行loop后面至enddo之间的语句序列,而是返回do while处重新判断条件 Exit语句是循环断路语句。当程序执行到exit语句时,被迫中断循环,转去执行enddo语句后的语句。例程2:循环输入学生姓名,查找并显示该学生的情况,直到用户停止输入。Set talk offClearStore y to ynUse 学生Do while .t.Accept 请输入学生姓名:to nameLocate for 姓名=nameIf found()?学号+学号?姓名+姓名else?没有+name+这个学生endifwait 是否继续查找(y/n)?to ynif upper(yn)=Y?loopelseexitendifenddo?程序结束useset talk onreturn读程练习:1、set talk offuse 学生name=space(8)10,5 say 请输入学生姓名get namereadlocate for 姓名=nameif found()dispelse12,5 say 该单位无此人endifset talk onusereturn2、统计学生表中男女学生人数set talk offclearuse 学生store 0 to nman,nwomando while !eof()if 性别=男nman=nman+1elsenowman=nwoman+1endifskipenddo?男生人数为:+str(nman)?女生人数为:+str(nwoman)useset talk onreturn3、逐条输出学生表中1984年出生的学生记录clearuse 学生index on year(出生日期) tag csrqseek 1984do while year(出生日期)=1984dispskipenddousereturn4 1100之间全部奇数之和set talk offstore 0 to x,ydo while .t.x=x+1do casecase int(x/2)=x/2loopcase x=100exitotherwisey=y+xendcaseenddo?0100之间的奇数之和为:,yset talk onreturn作业:1、使用do while语句逐条显示学生表中的每一条记录 2、算出1100之间的所有偶数的和 3、从键盘输入一个整数,求出此整数的阶乘2、for循环语句 do while语句适用于循环次数未知的循环 for语句适用于循环次数已知的循环 l语句格式FOR 循环变量 = 初值 TO 终值 STEP 步长 语句组ENDFOR/NEXT能循环结构的执行过程是:先为循环变量设置初值(该变量一般为数值型内存变量),然后判断其值是否超过终值。若没超过,执行循环体,遇到endfor时使循环变量增加一个步长值(步长省略,则默认为1),然后返回到for语句处,将循环变量的当前值与循环终值比较,没有超过,继续执行循环体,直至循环变量的当前值超过终值或执行到exit语句,程序才退出循环,执行enddo后面的语句。说明:1、FOR语句适用于循环次数已知的情况2、如果没有给出步长,步长缺省为13、步长可以是正数、负数当STEP0,变量=终值时,语句组执行当STEP=终值时,语句组执行例程1:for I=1 to 10?Iendfor结果为:1 2 3 4 5 6 7 8 9 10例程2:for I=10 to 1 step 4?Iendfor结果为:10 6 2例程3:计算1+2+3100s=0for I=1 to 100s=s+Iendfor?s例程4:求所有的水仙花数(153=13+53+33)clearfor m=100 to 999a=int(m/100)b=int(mod(m,100)/10)c=m%10if m=a3+b3+c3?mendifendforreturn例程5 从键盘输入10个数,编程找出其中的最大值和最小值set talk offclearinput “请输入一个数:” to astore a to max,min for I=2 to 10 input “请输入一个数:” to a if maxa min=a endifendfor?”最大值为:”,max?”最小值为:”,minset talk on程序练习:1、设有如下程序set talk offclearuse gzdo while !eof() if 基本工资=800 skip loop endif disp skipenddouse return该程序实现的功能是:2、执行下列程序:set talk offstore 0 to x,ydo while x=1a(k)=a(k)-a(k+1)k=k-1enddo?a(2),a(4),a(6)set talk on return4、程序如下s=0I=1Do while Izf=0do while not eof()m-zf=m-zf+zfskipenddo?m-zfreturn6、执行如下程序:store “ ” to ansdo while .t.clear3,10 say “1.添加 2.删除 3.修改 4.退出”5,15 say “请输入选择:” get ansreadif val(ans)=1prog=”prog”+ans+”.prg”do &progendifquitenddo如果在屏幕显示“请输入选择:”时,输入4,则系统将()7、在下列程序中,如果要使程序继续循环,变量m的输入值应为()do while .t. wait m=to m if upper(m)$yn exit endifenddo8、下列程序执行时,在键盘上输入9,则屏幕上的显示结果是()input “x=”to xdo casecase x10?”ok1”case x20?”ok2”otherwise?”ok3”endcase3、scan循环语句语句格式:SCAN 范围FOR 逻辑表达式WHILE 逻辑表达式语句组ENDSCAN说明:范围省略时,默认是all格式1:scan 范围 FOR 逻辑表达式从范围内的第一条记录开始,计算逻辑表达式,对逻辑表达式结果为.t.的记录进行操作。如果没有FOR子句,相当于FOR .t.格式2:scan 范围 WHILE 逻辑表达式从指定范围内第一条记录开始,计算逻辑表达式,如果结果为.t.,继续循环,如果结果为.f.时,立即结束循环。如果没有指定WHILE部分,相当于:WHILE .t.例1use 学生scan dispendscanuse这里的SCAN部分与下面的语句等价:go topdo while not eof()dispskipenddo例2:use 学生scan rest for 学号3 dispendscanuse与下面的语句等价:use 学生DO WHILE not eof()IF 学号3DISPENDIFSKIPENDDO例3、对学生表,分别统计少数民族男、女学生的人数。clearstore 0 to x,yuse 学生scan for 少数民族否 if 性别=男 x=x+1 else y=y+1 endifendscan?”少数民族男生有”+str(x,2)+人?”少数民族女生有”+str(y,2)+人use return循环嵌套:当在一个循环程序段的循环体内完整的包含另一个循环程序段时称为循环嵌套。形式如下:1、do while do while enddoenddo2、FOR 循环变量 = 初值 TO 终值 STEP 步长FOR 循环变量 = 初值 TO 终值 STEP 步长 语句组ENDFOR/NEXTENDFOR3、 do while FOR 循环变量 = 初值 TO 终值 STEP 步长 语句组ENDFOR/NEXT能 enddo4、 FOR 循环变量 = 初值 TO 终值 STEP 步长 do while enddoENDFOR/NEXT能5、do while scan endscan enddo等等例程1、写出程序的运行结果clearfor I=1 to 9?str(I,3)next?replicate(=,30)?for I=1 to 9 for j=1 to 9 ?str(I*j,3) next?next程序结果为:例程2、打印九九乘法口诀表for x=1 to 9y=1 do while y=x z=x*y ?str(y,1)+*+str(x,1)+=+str(z,2)+ y=y+1 enddo? endfor程序的执行结果:1*1=11*2=2 2*2=41*3=3 2*3=6 3*3=91*9=9 2*9=18 3*9=27 4*9=36 5*9=45 6*9=54 7*9=63 8*9=72 9*9=81例程3:输入10个数,并将它们按由大到小的顺序输出。 ClearDimen data10Store 0 to dataFor I=1 to 10I,5 say 请输入第+str(I,2)+”个数” get dataIendforreadfor I=1 to 9 for j=I+1 to 10 if dataIdataj temp=dataI dataI=dataj dataj=temp endif endforendfor12,5 say 10个数由大到小的排列顺序为:14,5 say for I=1 to 10?dataIendfor三种语句结构总结:1、都是单入口、单出口2、IF/ELSE/ENDIF、DO CASE/ENDCASE、DO WHILE/ENDDO、FOR/ENDFOR、SCAN/ENDSCAN必须配对使用,都不能在交互方式下使用(命令窗口方式)3、可以相互嵌套使用,语句结构中的语句组中可以包含任何语句结构。如果省略 RETURN 命令,在程序结束处自动隐含执行 RETURN 命令。 9.5程序的模块化子程序:可以完成一个特定功能的小程序,特点是总是被其他程序调用一般不单独执行(编一次,重复用) 子程序的建立、修改和存盘与一般的程序文件一样,其扩展名也为.prg 过程 无返回值子程序 自定义函数 有返回值?这是子程序waitreturnSet talk offClear?这是主程序do bb?主程序执行完毕主程序aa 子程序bb子程序b 主程序 子程序a.returnDo bdo creturndo a子程序c.return to master一、过程过程的一般格式:procedure parameters returnendproc说明:1、当一个过程单独保存在一个命令文件中,proc 和endproc可以省略,该过程的名称就是命令文件名。 2、parameters 写在proceduer下面的第一行。如省略则该过程为无参过程。 调用无参过程的格式为:do 过程名 调用有参过程的格式为:do 过程名 with 参数表参数按传递的方式分为:值传递方式:当一个值在被调用过程中更改时,新值不传回,调用程序中相关的变量或数组的值不变引用传递方式(地址传递方式)当一个值在被调用过程中更改时,新值传递回调用程序中相关的变量或数组默认情况下,调用过程时实参以引用传递方式向过程传递。在 DO . WITH 语句的参数列表中用括号把变量或数组括起来,将按值方式传递。例程1: area=0store .t. to repdo while rep clearinput 请输入第一边大小: to xinput 请输入第二边大小: to yinput 请输入第三边大小: to zif x=0.or.y=0.or.z=0.or.x+y=z.or.y+z=x.or.x+z=y?不能构成一个三角形,请重新输入!loopendifrep=.f.enddodo sub with x,y,z,area (实参)?area=+str(area,6,2)return proc subpara a,b,c,s (形参)p=(a+b+c)/2s=sqrt(p*(p-a)*(p-b)*(p-c)return例程2:利用带参调用方法求3项阶乘之和:x!+y!+z!clearstore 0 to tinput x= to xinput y= to yinput z= to zdo sub with x,tnsum1=tdo sub with y,tnsum2=tdo sub with z,tnsum3=tnsum=nsum1+ nsum2+ nsum3?str(x)+”!+”+ str(x)+”!+”+str(x)+”!=”+str(nsum)cancelproc subpara n,kk=1for I=1 to nk=k*Iendforreturnendproc运行程序结果为:x=2y=3z=42!+3!+4!=32过程文件:将多个过程存放在一个程序文件中,此程序文件就是一个过程文件。扩展名为.prg过程文件的建立: modi comm. 过程文件的基本结构如下: proc endprocproc endprocproc endproc过程文件的打开和关闭:过程文件中只包含过程,这些过程能被其他程序调用。但在调用过程文件中的过程之前,必须先打开过程文件。命令格式:set proc to 过程文件使用之后,应将其关闭,关闭过程文件的命令是:格式1:close proc格式2:set proc to 例程: 程序14.prg 内容如下 set proc to subclear?-过程调用-wait 现在调用过程1do sub1wait 现在调用过程2do sub2?-过程调用结束close proccancel过程文件sub.prg内容如下proc sub1wait 现在运行过程1returnendprocproc sub2wait 现在运行过程2returnendproc二、自定义函数:用户除了可以使用vfp提供的内部函数外,还可根据自己的需要定义进行某种运算或操作的函数,这些函数被称为自定义函数。定义格式:FUNCTION 函数名PARAMETERS 参数列表RETURN 表达式 (指出函数的返回值)endfunc说明:1、当函数单独存放在一个命令文件中时,语句func 函数名和endfunc可以省略。2、如果return后的表达式省略,则返回.t.3、默认情况下,以值传递方式向用户自定义函数传递参数。用 SET UDFPARMS TO REFERENCE 命令以引用传递方式向用户自定义函数传递变量。强制指定:(变量):值方式传递变量:引用方式传递自定义函数的调用格式: 函数名(参数表)例程:定义一个判断n是否是一个素数的函数,然后调用该函数求2100内的全部素数。 素数是大于1的整数,且除了1和它本身以外,不能被其他任何整数整除。为了判断某数n是否为素数。一个简单的办法是用2,3n-1这些数逐个去除n,看能否除尽,如果全部都除不尽,则n是一个素
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025中国科普博览招聘备考考试题库附答案解析
- 2025西安西安安居笙活商业运营管理有限公司招聘(3人)备考考试题库附答案解析
- 2025云南丽江市古城区第一中学招聘急需紧缺高中教师1人备考考试题库附答案解析
- 2025年泰和县红典文化旅游发展有限公司面向社会公开招聘前台工作人员备考考试题库附答案解析
- 2025年8月四川遂宁市中心医院招聘心身医学科高层次卫生专业技术人才3人备考考试题库附答案解析
- 宜黄县2025年教育体育局所属事业单位公开选调工作人员考试参考试题及答案解析
- 幼教活动创新设计
- 有哪些劲爆活动策划方案
- 物联网连接架构-洞察及研究
- 生态旅游中的文化传承-洞察及研究
- 电动葫芦检查安装检查验收使用表格
- (完整版)高中物理必修一第一章测试题及答案
- 抚州市崇仁县乡镇街道社区行政村统计表
- 部编版道德与法治五年级上册2学会沟通交流课件
- 小儿支气管哮喘-羽课件
- 新北师大版二年级上册数学 课桌有多长 教学课件
- 管道沟槽开挖安全安全技术交底
- 《组织学与胚胎学》课件02细胞
- 教师资格证-综合素质-学生观
- 3食品用纸包装容器等制品食品相关产品生产许可实施细则
- 故障录波器与故障波形分析PPT通用课件
评论
0/150
提交评论