版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
大纲要求:(1)1、程序文件的建立与运行;2、程序文件中常用的命令:输入类、输出类、注释命令,中止程序执行命令等。3、程序的三种基本结构:
1)顺序结构;
2)选择结构:IF…ELSE…ENDIF及其嵌套;
DOCASE…ENDCASE;3)循环结构:DOWHILE…ENDDO
及其嵌套;第八章VFP程序设计基础
大纲要求:
4、多模块程序:
1)子程序设计与调用;
2)自定义函数与过程;
3)变量作用域;5、代码式菜单设计。6、程序的调试方法。第八章程序设计基础
程序的三种基本结构
结构化程序设计方法中,所有程序只能由三种结构构成:顺序结构:程序的流程是简单、顺序的,从第一条语句顺序地执行到结束或返回语句。选择结构:程序执行中,根据某些条件的不同,可以有选择地执行不同的语句部分。循环结构:程序执行中,可以根据某些条件是否成立,而重复执行某些程序语句。程序的三种基本结构程序的基本构成开始部分:注释与说明、初始化程序部分:输入、处理、输出结束部分:恢复环境,程序结束的命令*TEST2.PRGUSE学生管理!学生
ACCE'输入姓名:'TOXMLOCAFOR学生.姓名=XMDISPUSE&&初始化,打开表&&处理&&恢复、结束*TEST4.PRG关联查询学生选课成绩&&初始化部分CLEA&&清屏SELE1&&选择1号工作区USE选课
ALIASXK&&打开选课表SETORDERTOTAGXHASELE2USE学生ALIASXSSETRELATO学号INTOXK&&建立关联
&&执行部分ACCE“请输入姓名:”
TOXM&&交互式输入姓名LOCAFOR姓名=ALLTRIM(XM)&&查询?姓名,XK.课程号,XK.成绩
&&显示&&恢复部分CLEAALL&&关闭表,清变量程序的三种基本结构【例】已知鸡兔的头数为16,脚数为40,求鸡、兔数目。*鸡兔同笼问题;
CLEAH=16F=40X=(4*H–F)/2Y=(F–2*H)/2?’共有鸡’,X?’共有兔’,YCANCEL&&处理部分&&初始化部分&&输出与结束部分程序的三种基本结构2、选择结构
根据某逻辑表达式的值,判断与决定程序的走向。分为:单分支、双分支、多分支三种。1)单分支结构
IF<条件>
语句序列
ENDIF执行方式:当条件为真时,执行语句序列,否则直接执行ENDIF后的语句。条件语句序列.T.ENDIF后的语句单选择结构流程图程序的三种基本结构1)单分支结构【例】输出两数X,Y中大的一个(IF…ENDIF)
INPUT‘输入X’TOXINPUT‘输入Y’TOYS=XIFY>XS=Yendif
?Scancel.T..F.Y>X输入X输入YS=Y结束输出SS=X输入47输出7输入52输出5程序的三种基本结构2、选择结构2)双分支结构
IF<条件><语句序列1>ELSE<语句序列2>ENDIF执行方式:当条件为真时,执行语句序列1,否则执行语句序列2。任何情况下,两个序列中只会有一个被执行。双选择结构流程图条件语句序列1语句序列2.T..F.ENDIF后的语句程序的三种基本结构.T..F.Y>X输入X输入Y结束输出YS=X输出X2)双分支结构【例】输出两数X,Y中大的一个(IF…ELSE…ENDIF)
INPUT‘输入X’TOXINPUT‘输入Y’TOYIFX>Y?Xelse?Yendifcancel输入47输出7输入52输出5程序的三种基本结构.T..F.总分>=650打开表输入姓名到XM关闭表并结束输出‘Y’查询XM输出‘N’【例】判断某同学是否可以获得奖学金(入校总分>=650)
CLEAUSE学生
ACCE‘学生姓名:’
TOXMLOCAFOR姓名=XMIF入校总分>=650?姓名+‘可以获得。’
ELSE?姓名+‘不能获得。’
ENDIFUSECANC可以获得不能程序的三种基本结构【例】输入并判断某年是否是闰年。分析:1)定义变量输入量:Y年份;2)数学模型与算法:
闰年的计算方法:(1)年份能被4整除但不能被100整除;或:(2)年份能被400整除;逻辑表达式:中间变量(L型)TJ=MOD(Y,4)=0ANDMOD(Y,100)!=0ORMOD(Y,400)=0算法:(1)输入年份;INPUT‘输入年份’TOY(2)判断是否闰年,并输出结果;程序的三种基本结构程序:CLEAINPUT‘输入年:’TOYTJ=MOD(Y,4)=0ANDMOD(Y,100)!=0;ORMOD(Y,400)=0IFTJ?Y,’是闰年’ELSE?Y,’不是闰年’ENDIFCANC条件?‘是闰年’?‘不是’.T..F.结束输入年份计算条件程序的三种基本结构3)多分支结构格式:
DOCASECASE条件1
语句序列1CASE条件2
语句序列2…..CASE条件n
语句序列nOTHERWISE
语句序列
ENDCASE条件1条件2条件nOTHERWISE语句序列1语句序列2语句序列N语句序列ENDCASE后面语句.T..F.F.程序的三种基本结构注意:1、每次至多只执行一个语句序列。2、从DOCASE入口,满足哪个条件就执行对应语句序列,并立即跳出CASE结构。3、各条件是互斥的,如:语句序列n的执行条件是:不满足条件1、条件2、…条件n-1,但满足条件n。4、若所有条件都不满足,则执行OTHERWISE后的语句序列,OTHERWISE可以省略,5、注意结构的完整性。条件1条件2条件nOTHERWISE语句序列1语句序列2语句序列N语句序列ENDCASE后面语句.T..F.F.程序的三种基本结构SETTALKOFFINPUTTOXDOCASECASEX>0Y=1&&x>0CASEX=0Y=0&&!X>0.and.x=0OTHERWISEY=-1&&!X>0.and.!x=0ENDCASE?“Y=”,YCANCEL【例】求Y(X)的值。1(X>0)Y=0(X=0)-1(X<0)【例】根据选课表中成绩判断该生成绩属于优、良、合格、不合格;分析:基本步骤如下:
1、打开表;
2、输入姓名,查询成绩;
3、根据成绩n判断等级nj;对本步骤:用docase…endcase
解决将成绩变量n的值域(<60,60-79,80-89,90以上)从值域的一端向另一端依次划分(此处从左到右):0n<60n<80608090100n<90n<100由于每一步都是对前一步的否定,所以只需要
<0n<60n<80608090100n<90n<100Use选课Acce‘输入姓名’toxmLocafor姓名=xmN=成绩Docasecasen<60
nj=‘不合格’
casen<80
nj=‘合格’
casen<90
nj=‘良’
otherwise
nj=‘优’Endcase?xm,’同学的成绩’,n??‘等级为:’,njUseCanc0其它n>=60608090100n>=80n>=90Use选课Acce‘输入姓名’toxmLocafor姓名=xmN=成绩Docasecasen>=90
nj=‘优’
casen>=80
nj=‘良’
casen>=60
nj=‘合格’
otherwise
nj=‘不合格’Endcase?xm,’同学的成绩:’,n??‘等级为:’,njUseCanc右端向左端依次划分:读程序:分析下面的一个程序:Docasecase计算机<60?“不及格”
case计算机>=60?‘及格’
case计算机>=70?“中”
case计算机>=80?‘良’
case计算机>=90?‘优’Endcase
问题:1、若输入计算机=75,输出什么?2、若输入85、95,分别输入什么?3、若有错,错在何处?如何修改?0n<606080901003、循环结构
在程序的执行过程中,某些语句需要多次重复执行,控制这些语句反复执行的结构,称为循环结构。【例】计算1+2+3+4+……+100,可以是:
S=1+2+3+4+5+6……..
无法写下
或:S=0S=S+1S=S+2…………..S=S+100
共计100句实质上,这100句形式上基本相同。可以归结为
S=S+i(i=1,2,…100)程序的三种基本结构3、循环结构
DOWHILE<条件><语句序列>ENDDO
1)首先判断条件是否成立,当条件为真时,执行语句序列,否则执行ENDDO后面的语句。
2)每次执行完语句序列,都回到循环结构首部,再次判断条件是否成立,只要条件为真,则一直循环。
3)只要某次判断条件为假,立即结束循环,执行ENDDO后面的语句。
4)因此,循环体有可能一次也不执行.F..T.条件语句序列ENDDO后面的语句程序的三种基本结构基本结构示例:计算1到100的平方和。分析:
1、用变量S装结果,初值为02、人工执行的过程是:
S=0步数KS=S+1*11S=S+2*22…………..S=S+100*100100引进一个数值型变量K计算步数,则上述每一步:
1)S=S+K*K2)K=K+1直到K>100
为止。因此,可以写成循环结构:循环条件为:
K<=100循环体为:
S=S+K
K=K+1.F..T.K<=100S=S+K*KK=K+1ENDDO后面的语句S=0K=1问题:在?S处K的值是多少?.F..T.K<=100S=S+K*KK=K+1ENDDO后面的语句S=0K=1循环初值循环体循环条件基本结构示例:计算1到100的平方和。命令序列:S=0K=1DOWHILEK<=100ENDDOS=S+K*KK=K+1?SRETU
在数据库应用中,循环往往用于逐条处理记录,此时:LOCAFOR条件GOTOP循环体语句是:SKIP处理每条满足条件的记录CONTINUE或循环条件是:(只处理满足条件的记录)循环的初始语句是:(处理全部记录)DOWHILNOTEOF()ENDDO循环的初始语句是:循环条件是:DOWHILNOTEOF()循环体语句是:处理每条记录ENDDO统计XSQK.DBF表中入校总分在**分以上的学生人数
USE学生情况表
STN=0INPUT"请输入要统计学生人数的分数点:"TOSCDOWHILENOTEOF()IF入学总分>=SCSTN=STN+1ENDIFSKIPENDDO?"学生入学总分在"+STR(SC,3)+"以上者的人数是:"+STR(STN,2)USERETURNlocafor入学总分>=SCDOWHILENOTEOF()
STN=STN+1
contENDDO
USE学生
LOCAFOR入校总分>=580DOWHILEnoteof()DISPCONTINUEENDDO?’结束’
USECANCEL初始语句循环条件循环体
【例】显示学生表中总分高于580分的学生记录;如果表中没有总分高于580的记录,则循环一次也不会执行。带LOOP和EXIT的循环
DOWHILE<条件><语句序列1>[LOOP]<语句序列2>[EXIT]<语句序列3>ENDDO1)当执行到LOOP语句时,将跳过循环体中后续语句,直接回到循环首部。2)当执行到EXIT语句时,立即结束循环,执行ENDDO后面的语句。条件.F..T.循环体ENDDO后面的语句LOOPEXIT
USE学生
gotopDOWHILEnoteof()if入校总分<580skiploop
endifDISPskipENDDOUSECANCEL初始语句循环条件循环体【例】显示学生表中总分高于580分的学生记录;如果本记录总分低于580,则跳过,回到循环首部,继续下一条。
USE学生
counttonDOWHILE.T.input‘输入记录号’toidocasecasei<=0exitcasei>n?’记录号超界’
Othergoi
disp
endcaseENDDOUSE另类循环:死循环——dowhile.t.
死循环一般用于交互式输入或菜单选单程序中,能够无限循环执行,直到满足某条件为止。所以,死循环中必然有分支判断语句,并包含EXIT语句,以便满足某条件时,强行退出循环,转而执行ENDDO后面的语句。计数循环FOR……..ENDFOR|NEXT格式:
FOR<循环变量>=<循环初值>TO<循环终值>[STEP<步长>]ENDFOR|NEXT[<循环变量>]【例】fori=1to10……endforfori=10to0step-1……Nextifori=1to10?inext同样地,循环中可以有LOOP和EXIT。2、计数循环FOR…ENDFOR循环变量<=终值.T.循环体循环变量+STEP循环变量=初值.F.ENDFOR后面的语句1)循环变量赋初值;2)检查循环变量是否超过终值否则,跳出循环若未超过,则进入循环3)执行循环体4)当执行到ENDFOR或NEXT时,循环变量=循环变量+步长回到循环首部,继续第2)步。【例】计算1到100的和。K<=100.T.S=s+kK=k+1K=1.F.?‘s=’,s循环初值为:S=0K=1循环条件为:K<=100循环体为:S=S+KK=K+1s=0forK=1to100step1s=s+kendfor?’s=‘,scancel相比之下,FOR循环更简洁一些。.F..T.K<=100S=S+KK=K+1ENDDO后面的语句S=0K=1循环初值循环体循环条件回顾用DOWHILE……ENDDO解题:
命令序列:S=0K=1DOWHILEK<=100ENDDOS=S+KK=K+1?SRETU【例】计算n的阶乘。Fac=1Input‘请输入n的值:’tonFork=1tonfac=fac*kNext?str(n,5)+‘!=’+str(fac,5)CancelFac=1Input‘请输入n的值:’tonK=1Dowhilek<=nfac=fac*kk=k+1enddo?str(n,5)+‘!=’+str(fac,5)Cancel方法二:用dowhile循环方法一:用for循环循环初值为:K=1循环体为:
S=S*K循环条件为:
K<=100K=K+13、表文件扫描循环SCAN
SCAN[<范围>][FOR<条件>][WHILE<条件>]<语句序列1>ENDSCAN当无FOR时,等价于:GOTOP(或到范围的第一条记录)DOWHILE.NOT.EOF()<语句序列>SKIPENDDO当有FOR时:等价于:LOCAFOR/WHILE<条件>DOWHILE.NOT.EOF()<语句序列>CONTINUEENDDO3、表文件扫描循环SCAN
USE学生
scanfor入校总分<580
DISPENDSCANUSECANCEL
USE学生
gotop
locafor入校总分>=580DOWHILEnoteof()
dispcontinueENDDOUSECANCEL4、多重循环
(嵌套循环结构)
【例】
DOWHILE<条件1><语句序列1>forj=1tok<语句序列2>fori=1tom<语句序列31>
ENDforfori=1ton<语句序列32>
ENDfor
ENDforENDDO第一层循环(外层循环)第二层循环并列第三层循环(内循环)
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 二零二五年度跨境电商主体变更与物流及客服人员劳动合同3篇
- 二零二五版海外农业开发项目劳务输出合同2篇
- 二零二五版股权回购项目担保及投资风险控制合同3篇
- 二零二五年教育培训机构招生合同正本3篇
- 二零二五版办公楼物业客户关系管理与满意度调查合同3篇
- 二零二五年度行政合同在社会保障体系中的构建与实施2篇
- 二零二五年股东股权转让合同范本3篇
- 二零二五年度祠堂传统节日庆典活动承包合同3篇
- 二零二五版企业间借款合同模板与债务转让协议标准范本6篇
- 二零二五年绿色能源板车租赁服务合同3篇
- 民宿建筑设计方案
- 干部基本信息审核认定表
- 2023年11月外交学院(中国外交培训学院)2024年度公开招聘24名工作人员笔试历年高频考点-难、易错点荟萃附答案带详解
- 春节行车安全常识普及
- 电机维护保养专题培训课件
- 汽车租赁行业利润分析
- 春节拜年的由来习俗来历故事
- 2021火灾高危单位消防安全评估导则
- 佛山市服务业发展五年规划(2021-2025年)
- 房屋拆除工程监理规划
- 医院保安服务方案(技术方案)
评论
0/150
提交评论