第九讲VFP程序设计基础鲁宁学时:2节教学内容9.1程序概念9.2简单的输入输出命令9.3程序结构9.3.1顺序结构9.3.2分支结构IF…ELSE…ENDIFDOCASE…ENDCASE9.3.3循环结构FOR…ENDFORDOWHILE…ENDDOSCAN..ENDSACN教学目标及重点难点教学目标掌握程序的基本概念及简单程序的编写掌握分支语句的使用方法掌握循环语句的使用方法能灵活应用程序结构编程解决实际问题重点难点分支结构IF…ELSE…ENDIFDOCASE…ENDCASE循环结构FOR…ENDFORDOWHILE…ENDDOSCAN..ENDSACN9.1程序概念程序是能够完成特定任务的命令序列的组合使用程序优点可以利用VFP编辑器,方便输入、修改和保存程序可以用多种方式、多次运行程序可以在一个程序中调用另一个程序WORKHELPER办公助手提供程序文件的建立与修改SetDefaultToD:\鲁宁&&设置工作目录命令方式格式:MODIFYCOMMAND[文件名]功能:建程序是能够完成特定任务的命令序列的组合使用程序优点可以利用VFP编辑器,方便输入、修改和保存程序可以用多种方式、多次运行程序可以在一个程序中调用另一个程序立或编辑修改指定的命令文件,自动打开VFP命令文件编辑窗口。文件扩展名为.PRG菜单方式文件→新建→程序打开→编辑已有程序程序文件的保存指定程序文件的存放位置和文件名(*.prg)保存文件菜单→保存Ctrl+W键保存文件放弃本次修改文件菜单→还原Esc键程序文件的执行命令方式命令格式:DO命令文件名命令功能:将指定的命令文件调入内存并从第一条命令语句开始执行。菜单方式程序菜单→运行从文件列表框中选择要执行的命令文件,并单击运行命令按钮。几个特殊命令当程序文件被执行时,文件中包含的命令将被依次执行,直到所有的命令被执行完毕几个特殊命令(1)CANCEL:终止程序运行,清除所有的私有变量,返回命令窗口;(2)DO程序:转去执行另一个程序;(3)RETURN:结束当前程序的执行,返回到调用它的上级程序,若无上级程序则返回到命令窗口;(4)QUIT:退出VisualFoxPro系统,返回到操作系统WORKHELPER办公助手提供9.2简单的输入输出命令9.2.1INPUT命令格式INPUT[字符表达式]TO内存变量功能命令等待用户从键盘输入数据后按回车键确认字符表达式为提示信息输入的数据可以是常量、变量、表达式,但不能不输入数据直接按回车输入不同的数据类型数据时时加定界符,如’李明’、.T.、.F.、{^2005-10-28}输入半径,求圆的面积SettalkOff&&关闭对话模式ASetechooff&&关闭结果回显Setstepoff&&关闭单步跟踪Clear&&清屏INPUT请输入圆的半径R=TORS=3.1415926*R*R?圆的面积为S=+Str(s)ReturnSetsteponSetechoonSetTALKON9.2.2ACCEPT命令格式ACCEPT[字符表达式]TO内存变量功能命令等待用户从键盘输入字符串命令只能接收字符串,输入字符串不需要加定界符,否则,系统会把定界符作为字符串的一部分不输入任何内容按回车键,则把空串赋给指定的内存变量输入半径,求圆的面积SettalkOff&&关闭对话模式Setechooff&&关闭结果回显Setstepoff&&关闭单步跟踪Clear&&清屏ACCEPT请输入圆的半径R=TORS=3.1415926*VAL(R)*VAL(R)?圆的面积为S=+Str(s)ReturnSetsteponSetechoonSetTALKON格式ACCEPT[字符表达式]TO内存变量功能命令等待用户从键盘输入字符串命令只能接收字符串,输入字符串不需要加定界符,否则,系统会把定界符作为字符串的一部分不输入任何内容按回车键,则把空串赋给指定的内存变量9.2.3WAIT命令格式ACCEPT[字符表达式]TO内存变量功能命令等待用户从键盘输入字符串命令只能接收字符串,输入字符串不需要加定界符,否则,系统会把定界符作为字符串的一部分不输入任何内容按回车键,则把空串赋给指定的内存变量格式输入语句格式@行号,列号Say提示GET变量名…可以是多个语句READ功能VFP等待用户输入一个或多个值WORKHELPER办公助手提供输入半径,求圆的面积R=0&&指定变量为数据类型和初值@10,10SAY请输入圆的半径:GETRREADS=3.1415926*R*R@12,10SAY圆的面积为:+str(s)9.2.4输出语句格式ACCEPT[字符表达式]TO内存变量功能命令等待用户从键盘输入字符串命令只能接收字符串,输入字符串不需要加定界符,否则,系统会把定界符作为字符串的一部分不输入任何内容按回车键,则把空串赋给指定的内存变量9.3结构化程序格式ACCEPT[字符表达式]TO内存变量功能命令等待用户从键盘输入字符串命令只能接收字符串,输入字符串不需要加定界符,否则,系统会把定界符作为字符串的一部分不输入任何内容按回车键,则把空串赋给指定的内存变量WORKHELPER办公助手提供VisualFoxPro程序的组成部分格式ACCEPT[字符表达式]TO内存变量功能命令等待用户从键盘输入字符串命令只能接收字符串,输入字符串不需要加定界符,否则,系统会把定界符作为字符串的一部分不输入任何内容按回车键,则把空串赋给指定的内存变量9.3.1顺序结构按语句排列顺序执行,是三种结构中最基本、最简单的结构语句1语句2语句3求圆周长和圆面积程序按语句排列顺序执行,是三种结构中最基本、最简单的结构求任意三角形的周长和面积输入三角形三边长a,b,c,计算周长和面积周长计算公式L=a+b+c面积计算公式求任意三角形的周长和面积程序SettalkOffClearINPUT请输入边长a=toaINPUT请输入边长b=tobINPUT请输入边长c=tocL=a+b+cD=(a+b+c)/2S=sqrt(d*(d-a)*(d-b)*(d-c))?三角形的周长L=+str(L)?三角形的面积S=+str(S)SETTALKON输入姓名查询学生信息输入三角形三边长a,b,c,计算周长和面积周长计算公式L=a+b+c面积计算公式WORKHELPER办公助手提供9.3.2分支结构IF…ENDIF语句语法IF条件语句序列ENDIF语句功能判断给定条件是否成立成立,则执行语句序列分支结构IF…ELSE…ENDIF语句IF条件语句序列1ELSE语句序列2ENDIFIF分支说明语句功能:判断给定的条件是否成立。成立,则执行语句序列1;否则执行语句序列2。(1)ELSE是一个可选项。当ELSE子句缺省时,如果条件不成立,将不执行任何语句。直接转向ENDIF后的下一条语句。(2)IF和ENDIF必须成对出现,IF是本结构的入口,ENDIF是本结构的出口。(3)条件语句可以嵌套,但不能出现交叉。在嵌套时,为了使程序清晰、易于阅读,可按缩进格式书写。求圆周长和圆面积程序当输入半径大于零时,计算圆周长和圆面积,否则显示半径值不能小于等于零的提示信息。CLEARSETTALKOFFINPUT半径=TORIFR0L=2*PI()*RS=PI()*R*R?圆周长=,L?圆面积=,SELSE?半径值不能小于等于零ENDIFSETTALKOnWORKHELPER办公助手提供求任意三角形的周长和面积程序SettalkOffClearINPUT请输入边长a=toaINPUT请输入边长b=tobINPUT请输入边长c=tocIFA+B=CORB+C=AORA+C=Bora=0orb=0orc=0Wait输入的边长不能组成三角形returnendifd=(a+b+c)/2S=sqrt(d*(d-a)*(d-b)*(d-c))?三角形的周长L=+str(d*2)?三角形的面积S=+str(S)SETTALKON求二元一次方程的根输入二元一次方程系数a,b,c,计算二元一次方程根计算公式如下:分支语句嵌套IF条件IF条件语句序列1ENDIFELSEIF条件语句序列2ELSE语句序列3ENDIFENDIF求X、Y、Z三个数中的最大值INPUT输入X=TOXINPUT输入Y=TOYINPUT输入Z=TOZIFX=YIFX=ZMAX=XELSEMAX=ZENDIFELSEIFY=ZMAX=YELSEMAX=ZENDIFENDIF?MAXDOCASE…ENDCASE语句DOCASECASE条件1语句序列1CASE条件2语句序列2……CASE条件n语句序列n[OTHERWISE语句序列]ENDCASE输入成绩,判断成绩等级SETTALKOFFCLEARINPUT请输入成绩:toStudScoreDoCasecaseStudScore=90StudLevel=优秀caseStudScore=80StudLevel=良好caseStudScore=70StudLevel=中等caseStudScore=60StudLevel=及格OtherwiseStudLevel=不及格endcase?成绩等级为:+StudLevelReturnSETTALKON9.3.3循环结构根据条件或计数要求重复执行一段代码基于计数的循环:FOR–ENDFOR不知重复次数的循环:DOWHILE–ENDDO数据表记录循环:SCAN–ENDSCANFOR–ENDFOR语句语法FOR循环变量=初值TO终值[STEP步长]语句序列ENDFOR|NEXT功能重复执行语句序列,直到循环变量的值大于终值执行次数=ABS(循环终止值-循环起始值)/步长+1执行过程计算1+2+3+…+100的和S=0FORi=1TO100S=S+iNEXT?1+2+3+…+100=,S求n!S=0FORi=1TO100S=S+iNEXT?1+2+3+…+100=,SWORKHELPER办公助手提供DOWHILE–ENDDO语句DOWHILE条件语句序列1[LOOP]语句序列2[EXIT]语句序列3ENDDO功能说明①如果第一次判断条件时,条件即为假,则循环体一次都不执行。②如果循环体包含LOOP命令,那么当遇到LOOP时,就结束循环体的本次执行,不再执行其后面的语句,而是转回DOWHILE处重新判断条件。③如果循环体包含EXIT命令,那么当遇到EXIT时,就结束该语句的执行,转去执行ENDDO后面的语句。④通常LOOP或EXIT出现在循环体内嵌套的选择语句中,根据条件来决定是LOOP回去,还是EXIT出去。计算1+2+3+…+100S=0i=1DOWHILEi=100S=S+ii=i+1ENDDO?1+2+3+...+100=,SWhile示例计算连续自然数之和,并且显示和刚大于1000的最后一个自然数Sn=1+2+3+4+…+NSTORE0TOS,NDOWHILES=1000N=N+1S=S+NENDDO?NWhile示例&&显示性别为男的学生信息USEStudInfoDOWHILE.NOT.EOF()IFStudSex=男DISPLAYENDIFSKIPENDDOUSE数据表记录循环语句格式Scan[范围][For条件表达式1|While条件表达式2]语句序列EndScan功能SCAN为循环起始语句,ENDCAN为循环结束语句。本语句对范围内满足条件的记录执行循环体。默认范围值为A