




已阅读5页,还剩58页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
2020/5/20,第四章,1,第四章程序设计基础,2020/5/20,第四章,2,4.1程序的建立、修改和运行,一、程序文件的建立与修改1.方法一:用命令方式命令格式:MODIFYCOMMAND功能:打开文本编辑窗口,用来建立或修改程序文件。2.方法二:用菜单方式,2020/5/20,第四章,3,二、程序的运行1.方法一:用命令方式命令格式:DO功能:执行由表示的程序。2.方法二:用菜单方式如要运行的程序没有打开,可单击主窗口中的“程序”菜单下的“运行”命令,弹出运行对话框,选择要运行的程序,单击“运行”按钮。,2020/5/20,第四章,4,4.2结构化程序设计,4.2.1程序文件中的常用命令一、程序结尾的专用命令1.RETURN命令格式:RETURNTOMASTER功能:程序、过程或函数的末尾可放一条RETURN命令,它能使程序执行结束,并返回到调用它的上级程序继续执行,若无上级程序则返回到命令窗口。说明:表达式指定返回调用程序的表达式;TOMASTER将返回最高层次的调用程序。,2020/5/20,第四章,5,2.CANCEL命令格式:CANCEL功能:CANCEL能使程序运行终止,清除程序的私有变量,并返回到命令窗口。3.QUIT命令格式:QUIT功能:该命令与文件菜单的退出命令功能相同,使系统正常退出VisualFoxPro6.0,返回到Windows。,2020/5/20,第四章,6,二、注释命令格式1:NOTE|*格式2:&说明:注释命令不做任何操作,只是注释标记,用于说明程序或命令的功能。NOTE或*用于整行注释,它必须写在每一个注释行的开头;而&用于注释一行的部分内容,它可以写在行中(命令的尾部)。,2020/5/20,第四章,7,三、程序中两个常用命令1.清屏命令格式:CLEAR功能:清除屏幕上的显示内容。一般用于程序开头。2.SETTALKON|OFF功能:用于设置一些非输出语句(如APPEND、SORT、GO等)是否显示命令的执行结果。ON为允许显示,OFF为不允许显示。一般在程序开始设置为OFF状态。,2020/5/20,第四章,8,四、输入输出专用命令1.字符接收命令格式:ACCEPTTO功能:将从键盘上接收的字符串存入指定的内存变量中。说明:执行此语句时,先在屏幕上显示,光标紧跟其后,然后暂停程序运行,等待用户从键盘上输入信息。例:ACCEPT“请输入姓名:”TOXM,2020/5/20,第四章,9,格式:INPUTTO功能:用于接收从键盘上输入的表达式,并将计算结果存入指定的内存变量中。说明:INPUT语句与ACCEPT语句的执行过程相同,功能相似。INPUT语句与ACCEPT语句的区别是:ACCEPT命令只能接收字符串,而INPUT语句可以接收任意类型的数据;如果输入的是字符串,ACCEPT语句在接受数据时,不用使用字符型定界符;而INPUT接受字符型数据时,必须用定界符括起来。,2020/5/20,第四章,10,3.输入一个字符语句格式:WAITTOWINDOWAT,NOWAITCLEAR|NOCLEARTIMEOUT功能:暂停程序的运行,直到用户输入一个字符。也可只用于输出一条提示信息。例:WAIT“请检查输人内容!”WINDOW,2020/5/20,第四章,11,(二)定位输入输出命令格式:SAYGETDEFAULT功能:在屏幕的指定行列输出SAY子句的表达式值,并可修改GET子句的变量值。说明:(1)表示数据在窗口中显示的位置。(2)SAY子句用来输出数据,GET子句用来输入及编辑数据。,2020/5/20,第四章,12,(3)GET子句中的变量必须具有初值,或用DEFAULT子句的指定初值。(4)GET子句的变量必须用READ命令来激活。例:3,10SAY姓名4,10SAY“成绩:”GETCJDEFAULT0READ,2020/5/20,第四章,13,4.2.2程序的控制结构,1.顺序结构在程序执行时,按程序中命令的书写顺序依次执行。2.分支结构能根据指定条件的不同当前值,在两条或多条程序路径中选择一条执行。3.循环结构能使循环体中的语句(或命令)序列重复执行若干次。4.过程结构,2020/5/20,第四章,14,4.2.3顺序结构,例4-1:从键盘随机输入某个表的文件名,要求打开并显示此表的内容。CLEARSETTALKOFFACCEPT“请输入表文件名”TOFILENAMEUSE(FILENAME)LISTUSE,2020/5/20,第四章,15,例:圆的面积计算程序为SETTALKOFFCLEARINPUT“请输入圆半径:”TORS=3.1416*R*R?“圆面积=”,S上述3条命令的先后次序不能颠倒:只有执行INPUT后才能计算S,随后才能输出S,否则会因变量找不到而无法继续下去。,2020/5/20,第四章,16,4.2.4分支结构,一、简单的条件语句语句格式:IFENDIF功能:首先计算的值,若其值为真,对IF与ENDIF之间的语句顺序执行,然后执行ENDIF后面的语句;若其值为假,直接执行ENDIF后面的语句。,2020/5/20,第四章,17,例4-3:将商品销售表DBF中第一个单价在2500元以上的商品价格降低5%。USE商品销售表LOCATEFOR单价2500IFFOUND()DISPLAY商品编号,单价REPLACE单价WITH单价*0.95DISPLAY商品编号,单价ENDIFUSERETURN,2020/5/20,第四章,18,二、带ELSE的条件语句语句格式:IFELSEENDIF功能:若值为真,先执行,然后再执行ENDIF后面的语句;若其值为假,先执行,然后再执行ENDIF后面的语句。,2020/5/20,第四章,19,例4-4:铁路托运行李,假设每张车票可按每千克0.5元托运50千克以内的行李,如果超过50千克时,超过部分每千克加价0.3元。计算公式和程序如下:0.5*W(W50),2020/5/20,第四章,20,SETTALKOFFINPUT“请输入行李的重量:”TOWIFW50)0.5*500.8*501.0*(W100)(W100),2020/5/20,第四章,23,STETALKOFFINPUT“输入行李重量”TOWIFW=50X=0.5*WELSEIFW100X=0.5*500.8*501.0*(W100)ENDCASE,2020/5/20,第四章,27,例4-6:显示当前季节程序CLEARYue=MONTH(DATE()DOCASECASEINLIST(yue,3,4,5)JJ=“春”CASEINLIST(yue,6,7,8)JJ=“夏”CASEINLIST(yue,9,10,11)JJ=“秋”CASEINLIST(yue,12,1,2)JJ=“冬”ENDCASEWAITJJWINDOW,2020/5/20,第四章,28,在构成分支结构时需注意:(1)条件语句中的IF和ENDIF必须配对出现;同样,多分支语句中的DOCASE和ENDCASE也须配对出现。(2)为使程序清晰易读,对分支、循环等结构应使用缩格书写方式,见上述例。(3)分支、循环的每种语句都不允许在一个命令行中输入完,必须按本书所示语句格式一行一个回车分行键人。由此可见,这些语句不能用于命令窗口中。,2020/5/20,第四章,29,4.2.4循环结构,一、条件循环语句格式:DOWHILEENDDO功能:若DOWHILE子句的循环条件为假循环就结束,执行ENDDO子句后面的语句;条件为真则执行循环体,一旦遇到ENDDO就自动返回到DOWHILE重新判断循环条件是否成立,以决定是否继续循环。,2020/5/20,第四章,30,说明:1.语句格式中的称为循环条件,称为循环体,循环体可以是一个语句或一组语句。2.ENDDO语句是循环终止语句,表示循环以此语句为终点。但执行到ENDDO语句时并不是直接退出循环,而是转到DOWHILE语句去判断的值的真假。3.循环语句本身不会修改执行条件,因此循环体内一定要设置修改循环条件的语句。否则,可能出现死循环,无法退出循环。,2020/5/20,第四章,31,例4-7:试编一程序,显示商品销售表.DBF中所有单价超过2000元的商品编号。CLEARUSE商品销售表DOWHILE.NOT.EOF()IF单价2000?商品编号ENDIFSKIPENDDOUSE,2020/5/20,第四章,32,例4-8:STORE0TOK1,K2,K3ZS=1DOWHILEZS2000?商品编号ENDSCANUSE,2020/5/20,第四章,38,四、循环辅助语句1.跳转语句格式:LOOP功能:该语句能中断本次循环体的执行,回到循环开始处,重新对条件表达式进行判断。说明:LOOP语句一定放在循环体内才有意义,2.出口语句格式:EXIT功能:终止正常循环,无条件地转到循环终止语句后去执行后续语句。,2020/5/20,第四章,39,例4-11:SETTALKOFFCLEARSTORE0TOI,S,TDOWHILEI=100I=I+1S=S+I&累加I值IFINT(I2)=I2LOOPENDIFT=T+I&累加奇数ENDDO?“l23100=”,S?”1100奇数和为:”,TRETURN,2020/5/20,第四章,40,例4-12:4,10SAY“请输入一自然数:”GETXDEFAULT0READN=0DOWHILEN=XIFINT(X/N)=X/NEXITENDIFN=N+1ENDDOIFN=X6,10SAYSTR(X)+“为素数”ELSE6,10SAYSTR(X)+“不为素数”ENDIF,2020/5/20,第四章,41,例4-13:编程修改商品表.DBF中的商品名称和生产单位,要求能修改多个商品。程序如下:CLEARUSE商品表DOWHILE.T.SPBH=SPACE(6)4,10SAY“请输入要修改的商品编号:”GETSPBHREADLOCATEFOR商品编号=SPBH,2020/5/20,第四章,42,IFFOUND()6,10SAY“商品名称”GET商品名称7,10SAY“生产单位”GET生产单位READELSE6,10SAY“无此商品!”ENDIFWAIT“是否继续修改?”TOXGIFUPPER(XG)=“Y”LOOPELSEEXITENDIFENDDORETURN,2020/5/20,第四章,43,五、多重循环若一个循环语句的循环体内又包含其它循环,就构成了多重循环,也称为循环嵌套。较为复杂的问题往往要用多重循环来处理。例4-14:编一程序在屏幕上显示九九乘法表。,2020/5/20,第四章,44,CLEARA=1DOWHILEA=9B=1DOWHILEB=AC=A*B?LTRIM(STR(A,2),“*”,LTRIM(STR(B,2),“=”,LTRM(STR(C,2),“”B=B+1ENDDO?A=A+1ENDDORETURN,2020/5/20,第四章,45,4.3过程与函数,4.3.1子程序一、调用与返回对于两个具有调用关系的程序文件,常称调用程序为主程序,被调用程序为子程序。主程序执行时遇到DO命令,执行就转向子程序,称为调用子程序。子程序执行到RETURN语句(或缺省该语句),就会返回到主程序继续执行程序,称为从子程序返回,或简称返主。,2020/5/20,第四章,46,二、带参数子程序的调用与返回DOWITHIN功能:带参数调用子程序。说明:(1)中的参数可以是常量、变量或表达式,但若为内存变量必须具有初值。(2)当是IN子句中的一个过程时,DO命令调用该过程,请参阅以下过程部分内容。,2020/5/20,第四章,47,调用子程序时参数表中的参数要传送给子程序,子程序中也必须设置相应的参数接收语句。PARAMETERS功能:指定内存变量以接收DO命令发送的参数值,返主时把内存变量值回送给调用程序中相应的内存变量。说明:(l)PARAMETERS必须是被调用程序的第一个语句。(2)命令中的参数被默认为私有变量,返主时回送参数值后即被清除。(3)命令中的参数依次与调用命令WITH子句中的参数相对应,故两者参数个数必须相同,类型必须匹配。,2020/5/20,第四章,48,例4-15:设计一个计算圆面积的子程序,并要求在主程序中带参数调用它。主程序:(文件名MAIN.PRG)CLEARYMJ=05,10SAY“请输人半径:”GETBJDEFAULT0READDOJSWITHBJ,YMJ?“YMJ=”,YMJ&显示圆面积RETURN,2020/5/20,第四章,49,子程序:文件名为JS.PRGPARAMETERSR,SS=PI()*R*R&PI()函数返回3.14RETURN&返主三、子程序嵌套主程序与子程序的概念是相对的,子程序还可调用它自己的子程序,即子程序可以嵌套调用。RETURNTOMASTER|TO,2020/5/20,第四章,50,4.3.2过程,一、过程文件及过程的概念VisualFoxPro6.0允许在一个.PRG文件中设置多个程序模块,将主程序以外的每个模块定义为一个过程。这种包含多个过程的文件称为“过程文件”。“过程文件”实质仍是命令文件,仍使用.PRG为扩展名。其建立的方法与一般命令文件一样用命令:MODIFYCOMMAND,2020/5/20,第四章,51,一个过程文件可包含128个过程。每个过程都有一个过程名进行标识。过程名的约定与内存变量名的约定一样。过程文件中的每一个过程结构如下:PROCEDURERETURN注意:每一个过程能完成某一独立的功能,像子程序一样被其它程序调用。但过程不是一个独立的.PRG文件,它只是一个过程文件中的一段程序。而每一个子程序是一个独立的命令文件。因此,过程与过程文件不是同一概念,不可混淆。,2020/5/20,第四章,52,二、过程的调用:过程也用DO命令调用。1.过程可作为程序的一部分,列在程序的最后,例4-16:SETDECIMALSTO2YMJ=05,10SAY“请输人半径:”GETBJDEFAULT0READDOJSWITHBJ,YMJ&调用过程JS?“YMJ=”,YMJRETURNPROCEDUREJS&过程JS开始语句PARAMETERSr,sS=PI()*R*RRETURN,2020/5/20,第四章,53,2.过程有可能不在调用程序中,而是被包含在某一个过程文件中,在调用过程文件中的过程时,必须打开包含该过程的过程文件,再用DO命令调用。打开过程文件的命令如下:格式:SETPROCEDURETO功能:打开指定的过程文件。过程文件使用完毕后,要关闭。过程文件关闭的命令是:格式一:CLOSEPROCEDURE格式二:SETPROCEDURETO功能:关闭当前打开的过程文件。,2020/5/20,第四章,54,例4-17:CLEARR=5MJ=0TJ=0SETPROCEDURETOQMJTJDOQMJ&调用过程QMJ?“球的表面积为:”,MJDOQTJ&调用过程QTJ?“球体积为:”,TJSETPROCEDURETO&关闭过程文件RETURN,2020/5/20,第四章,55,*过程文件:文件名为QMJTJ.PRGPROCEDUREQMJMJ=4*PI()*R*RRETURNPROCDUERQTJTJ=4*PI()*R*R*R/3RETURN,2020/5/20,第四章,56,4.3.3自定义函数,一、自定义函数的建立自定义函数的格式如下:FUNCTIONPARAMETERSRETURN功能:定义一个函数,供调用。,2020/5/20,第四章,57,说明:(1)自定义函数的函数名不能和VisualFoxPro6.0系统函数同名,也不能和内存变量同名。(2)组成为函数体,用于进行各种处理;简单的函数其函数体也可为空。(3)RETURN语句用于返回函数值,其中的值就是函数值。若缺省该语句,则返回的函数值为.T.。(4)自定义函数与系统函数调用方法相同,其形式为:函数名(),2020/5/20,第四章,58,例4-18:设计一个自定义函数,用来求一元一次方程AXB=0的根。*rootprgCLEAR5,10SAY“一次项系数:”GETaDEFAULT17,10SAY“常数项:”GETbDEFAULT0READ?“x:”,root(a,b)&调用函数ROOTFUNCTIONROOTPARAMETERSu,vRETURNIIF(u=0
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024年安徽省合肥市《考评员》专业技能鉴定考试题库与答案
- 2025年保险代理人资格竞赛试题库(附含答案)
- 2024年道路运输安全员理论及法律知识考试题(附含答案)
- 陕西省西安市雁塔区2024-2025学年八年级下学期期末语文试题(解析版)
- 酶学分析技术试题及答案
- 2025标准企业借款合同范本
- 2025法律法规重点关注:合同条款中的“约定”风险管理 guide
- 2025年关于房屋租赁合同模板
- 2025典当借款合同规范模板
- 摄影专业基础知识培训课件
- 医院防溺水急救培训课件
- 餐饮业员工的培训方案
- 兽医局面试题及答案
- 消化道出血课件
- nginx面试题及答案100道
- 2024西门子消防火灾自动报警及消防联动控制系统产品手册
- 美团BD岗前培训
- 全套课件-计算机基础
- 2025年上半年银行工作总结标准版本(8篇)
- 《杰出店长培训》课件
- 2024年09月2024中国银行中银国际证券股份有限公司校园招聘38人笔试历年参考题库附带答案详解
评论
0/150
提交评论