《第4章 Visual FoxPro程序设计基础.ppt》由会员分享,可在线阅读,更多相关《第4章 Visual FoxPro程序设计基础.ppt(72页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、第四章第四章程序设计基础第四章第四章 程序设计基础程序设计基础第四章第四章 程序设计基础程序设计基础 4.1 4.1 程序设计方法概述程序设计方法概述程序设计方法概述程序设计方法概述 4.2 4.2 算法及算法的表示算法及算法的表示算法及算法的表示算法及算法的表示 4.3 4.3 程序的建立、编辑与运行程序的建立、编辑与运行程序的建立、编辑与运行程序的建立、编辑与运行 4.4 4.4 结构化程序设计基础结构化程序设计基础结构化程序设计基础结构化程序设计基础 4.5 4.5 程序的控制结构程序的控制结构程序的控制结构程序的控制结构 4.6 4.6 多模块程序多模块程序多模块程序多模块程序 4.7
2、 4.7 应用程序举例应用程序举例应用程序举例应用程序举例 2 2第四章第四章 程序设计基础程序设计基础程序设计方法的发展可以划分以下三个阶段:程序设计方法的发展可以划分以下三个阶段:程序设计方法的发展可以划分以下三个阶段:程序设计方法的发展可以划分以下三个阶段:l l早期的程序设计早期的程序设计早期的程序设计早期的程序设计l l结构化程序设计结构化程序设计结构化程序设计结构化程序设计 l l面向对象的程序设计方法面向对象的程序设计方法面向对象的程序设计方法面向对象的程序设计方法 4.1 程序设计方法概述第四章第四章 程序设计基础程序设计基础3 3第四章第四章 程序设计基础程序设计基础算法概述
3、算法概述算法概述算法概述:l l广广广广义义义义地地地地讲讲讲讲:算算算算法法法法是是是是为为为为完完完完成成成成一一一一项项项项任任任任务务务务所所所所应应应应当当当当遵遵遵遵循循循循的的的的一一一一步步步步一一一一步步步步的的的的规则的、精确的、无歧义的描述,它的总步数是有限的。规则的、精确的、无歧义的描述,它的总步数是有限的。规则的、精确的、无歧义的描述,它的总步数是有限的。规则的、精确的、无歧义的描述,它的总步数是有限的。l l狭义地讲:狭义地讲:狭义地讲:狭义地讲:算法是解决一个问题采取的方法和步骤的描述算法是解决一个问题采取的方法和步骤的描述算法是解决一个问题采取的方法和步骤的描述
4、算法是解决一个问题采取的方法和步骤的描述。4.2 4.2 算法及算法的表示算法及算法的表示 第四章第四章 程序设计基础程序设计基础4 4第四章第四章 程序设计基础程序设计基础第四章第四章 程序设计基础程序设计基础例4.1 输入三个数,然后输出其中最大的数。算法可以写成:1)输入A,B,C。2)若AB,则MAX A;否则MAXB。3)若CMAX,则MAX C。4)输出MAX,MAX即为最大数。例4.2 输入10个数,输出其中最大的数。算法可以写成:(1)输入1个数,存入变量A中,将记录数据个数的变量N赋值为1,即N=1(2)将A存入表示最大值的变量Max中,即Max=A(3)再输入一个值给A,如
5、果AMax 则 Max=A,否则Max不变(4)让记录数据个数的变量增加1,即N=N+1(5)判断N是否小于10,若成立则转到第(3)步执行,否则转到第(6)步。(6)输出max5 5第四章第四章 程序设计基础程序设计基础有穷性:有穷性:一个算法必须在执行有穷多个计算步骤后终止;一个算法必须在执行有穷多个计算步骤后终止;确定性:确定性:一个算法给出的每个计算步骤,必须都是精确定义的、无二义性的;一个算法给出的每个计算步骤,必须都是精确定义的、无二义性的;有效性:有效性:算法中的每一个步骤必须有效地执行,并能得到确定结果;算法中的每一个步骤必须有效地执行,并能得到确定结果;输输 入入:一一个个算
6、算法法中中可可以以没没有有输输入入,也也可可以以有有一一个个或或多多个个输输入入信信息息,如如果果需需 要运行时输入不同数据,这些输入信息是算法所需的初始数据;要运行时输入不同数据,这些输入信息是算法所需的初始数据;输输 出出:一个算法应有一个或多个输出,一个算法得到的结果就是算法的输:一个算法应有一个或多个输出,一个算法得到的结果就是算法的输出。没有输出的算法是没有意义的。出。没有输出的算法是没有意义的。第四章第四章 程序设计基础程序设计基础算法的特性算法的特性算法的特性算法的特性 :6 6第四章第四章 程序设计基础程序设计基础第四章第四章 程序设计基础程序设计基础算法的表示算法的表示算法的
7、表示算法的表示 :一、自然语言与伪代码表示算法一、自然语言与伪代码表示算法 二二 用流程图表示算法用流程图表示算法 传统传统流程图流程图 NS流程图流程图 顺序结构流程图 选择结构流程图 顺序结构的N-S图 选择结构的N-S图 算法的含义:我们把解决问题的方法和步骤称为算法。算法的含义:我们把解决问题的方法和步骤称为算法。7 7第四章第四章 程序设计基础程序设计基础第四章第四章 程序设计基础程序设计基础循环结构流程图循环结构流程图 循环结构的循环结构的N-S图图 8 8第四章第四章 程序设计基础程序设计基础程序(命令)文件是指将各类命令按照处理问题的算法和一定的语法结构存放的文件。其扩展名为.
8、PRG。一、创建程序一、创建程序l通过项目管理器创建l通过文件菜单创建l通过命令创建二、保存程序二、保存程序l通过菜单保存l直接关闭没有保存的程序,则会弹出相应对话框,提示保存或放弃l按CTRL+S组合键保存第四章第四章 程序设计基础程序设计基础4.3 程序的建立、编辑与运行程序的建立、编辑与运行 9 9第四章第四章 程序设计基础程序设计基础三、三、修改程序修改程序l l通过项目管理器的通过项目管理器的“修改修改”选项打开程序并修改选项打开程序并修改l l通过文件菜单中通过文件菜单中“打开打开”选项打开程序并修改选项打开程序并修改l l通过命令通过命令MODIFY COMMANDMODIFY
9、COMMAND打开程序并修改打开程序并修改注:修改窗口和创建窗口相同,修改完毕后应注意保存。注:修改窗口和创建窗口相同,修改完毕后应注意保存。四、运行程序四、运行程序l l通过项目管理器的通过项目管理器的“运行运行”按钮运行程序按钮运行程序l l通过程序菜单中通过程序菜单中“运行运行”选项运行程序选项运行程序l l通过命令通过命令DODO运行程序运行程序第四章第四章 程序设计基础程序设计基础1010第四章第四章 程序设计基础程序设计基础程序的书写规则:程序的书写规则:命令分行命令分行 :命令都以回车键结尾,一行只能写一条命令,若写不下,:命令都以回车键结尾,一行只能写一条命令,若写不下,可在未
10、写完的本行末尾添加一个分号可在未写完的本行末尾添加一个分号“;”作为下一行的继行标志。作为下一行的继行标志。程序注释语句程序注释语句 NOTE/*NOTE/*:对程序的结构或功能进行注释。对程序的结构或功能进行注释。程序执行时将跨过注释语句,不作任何操作程序执行时将跨过注释语句,不作任何操作 语句注释语句注释&:在语句行末尾注释,对当前语句进行说明。:在语句行末尾注释,对当前语句进行说明。程序执行时,对程序执行时,对&后面的注释不作任何操作后面的注释不作任何操作第四章第四章 程序设计基础程序设计基础4.4 结构化程序设计基础结构化程序设计基础 1111第四章第四章 程序设计基础程序设计基础中断
11、语句中断语句 CANCELCANCEL 中断当前程序运行,并返回到系统命令窗口。中断当前程序运行,并返回到系统命令窗口。挂起语句挂起语句 SUSPENDSUSPEND 暂停当前程序运行。它只是使程序挂起,通过暂停当前程序运行。它只是使程序挂起,通过RESUMERESUME语语句可以使程序继续执行。句可以使程序继续执行。恢复执行语句恢复执行语句 RESUMERESUME 恢复被恢复被SUSPENDSUSPEND挂起的程序,从暂停的位置继续执行。挂起的程序,从暂停的位置继续执行。程序调试语句程序调试语句 第四章第四章 程序设计基础程序设计基础1212第四章第四章 程序设计基础程序设计基础RETUR
12、N RETURN RETURN RETURN(返回到调用行的下一行,无上级程序则返回到命令窗口)。返回到调用行的下一行,无上级程序则返回到命令窗口)。返回到调用行的下一行,无上级程序则返回到命令窗口)。返回到调用行的下一行,无上级程序则返回到命令窗口)。RETRY RETRY RETRY RETRY(返回到调用行本身,可以实现程序的重复调用)。返回到调用行本身,可以实现程序的重复调用)。返回到调用行本身,可以实现程序的重复调用)。返回到调用行本身,可以实现程序的重复调用)。CANCEL CANCEL CANCEL CANCEL(中断,异常结束,并返回到系统命令窗口)。中断,异常结束,并返回到系
13、统命令窗口)。中断,异常结束,并返回到系统命令窗口)。中断,异常结束,并返回到系统命令窗口)。QUIT QUIT QUIT QUIT(退出退出退出退出VFPVFPVFPVFP,返回到操作系统,并自动删去磁盘中的临时文件)。返回到操作系统,并自动删去磁盘中的临时文件)。返回到操作系统,并自动删去磁盘中的临时文件)。返回到操作系统,并自动删去磁盘中的临时文件)。程序中的专用语句程序中的专用语句一程序的结尾命令一程序的结尾命令一程序的结尾命令一程序的结尾命令第四章第四章 程序设计基础程序设计基础1313第四章第四章 程序设计基础程序设计基础1 1 1 1、数据接收语句数据接收语句 INPUTINPU
14、T格式:格式:INPUT INPUT TO TO 功能:将键盘输入的数据赋给由功能:将键盘输入的数据赋给由 指定的内存变量指定的内存变量 注注:从键盘输入的数据可以是常量、变量或表达式,数据类型可以是除备从键盘输入的数据可以是常量、变量或表达式,数据类型可以是除备注型和通用型外的所有类型注型和通用型外的所有类型。2 2、字符串接收语句字符串接收语句 ACCEPTACCEPT格式:格式:ACCEPT ACCEPT TO TO 功能:将键盘输入的数据赋给由功能:将键盘输入的数据赋给由 指定的内存变量。指定的内存变量。注注:从键盘输入的数据只能是字符型常量。从键盘输入的数据只能是字符型常量。二程序交
15、互式命令二程序交互式命令第四章第四章 程序设计基础程序设计基础1414第四章第四章 程序设计基础程序设计基础格式:格式:格式:格式:WAIT WAIT WAIT WAIT TO TO TO TO WINDOW AT WINDOW AT WINDOW AT WINDOW AT NOWAITNOWAITNOWAITNOWAIT NOCLEARTIMEOUT NOCLEARTIMEOUT NOCLEARTIMEOUT NOCLEARTIMEOUT 功能:将键盘输入的数据赋给由功能:将键盘输入的数据赋给由功能:将键盘输入的数据赋给由功能:将键盘输入的数据赋给由 指定的内存变量。指定的内存变量。指定的内
16、存变量。指定的内存变量。注:注:从键盘输入的数据只能是一个单字符常量。从键盘输入的数据只能是一个单字符常量。从键盘输入的数据只能是一个单字符常量。从键盘输入的数据只能是一个单字符常量。三、单字符接收语句三、单字符接收语句 WAITWAIT第四章第四章 程序设计基础程序设计基础1515第四章第四章 程序设计基础程序设计基础?换行换行换行换行输出语句:输出语句:输出语句:输出语句:格式:格式:格式:格式:?功能:分别计算表达式列表的值,并将表达式列表的值输出在功能:分别计算表达式列表的值,并将表达式列表的值输出在功能:分别计算表达式列表的值,并将表达式列表的值输出在功能:分别计算表达式列表的值,并
17、将表达式列表的值输出在V V V V FPFPFPFP主窗口的当前光标的下一行。主窗口的当前光标的下一行。主窗口的当前光标的下一行。主窗口的当前光标的下一行。中,各表达式以中,各表达式以中,各表达式以中,各表达式以逗号分隔逗号分隔逗号分隔逗号分隔?同行同行同行同行输出语句:输出语句:输出语句:输出语句:格式:格式:格式:格式:?功功功功能能能能:分分分分别别别别计计计计算算算算表表表表达达达达式式式式列列列列表表表表的的的的值值值值,并并并并将将将将表表表表达达达达式式式式列列列列表表表表的的的的值值值值输输输输出出出出在在在在V V V V FPFPFPFP主窗口的当前光标所在行、列的后面。
18、主窗口的当前光标所在行、列的后面。主窗口的当前光标所在行、列的后面。主窗口的当前光标所在行、列的后面。第四章第四章 程序设计基础程序设计基础1616第四章第四章 程序设计基础程序设计基础 程序控制的基本结构有三种:顺序结构、选择分支结构和循环结构。1、顺序结构:程序的执行是按其语句的排列先后顺序执行,这也是最简单、最基本的程序控制结构。例4.3:将人事信息表RS.DBF中新评为教授的教师,其职称一栏由副教授改为教授 CLEARSET TALK OFFUSE RSACCEPT 请输入要修改记录的教师名:to xm LOCATE FOR 姓名=xmREPL 职称 WITH 教授USESET TAL
19、K ONRETURN 第四章第四章 程序设计基础程序设计基础4.5 4.5 程序的控制结构程序的控制结构程序的控制结构程序的控制结构1717第四章第四章 程序设计基础程序设计基础2 2 2 2、选择分支结构、选择分支结构、选择分支结构、选择分支结构定义:选择分支结构是根据条件的测试结果执行不同的操作定义:选择分支结构是根据条件的测试结果执行不同的操作定义:选择分支结构是根据条件的测试结果执行不同的操作定义:选择分支结构是根据条件的测试结果执行不同的操作。VFPVFPVFPVFP中有两条命令实现条件分支:二路选择分支结构中有两条命令实现条件分支:二路选择分支结构中有两条命令实现条件分支:二路选择
20、分支结构中有两条命令实现条件分支:二路选择分支结构(IFENDIFIFENDIFIFENDIFIFENDIF)和多路选择分支结构和多路选择分支结构和多路选择分支结构和多路选择分支结构(DO CASE ENDASEDO CASE ENDASEDO CASE ENDASEDO CASE ENDASE)。)。)。)。(1 1 1 1)二路选择分支结构二路选择分支结构二路选择分支结构二路选择分支结构 格式:格式:格式:格式:IF IF THEN THEN 1 ELSE ELSE 2 ENDIF ENDIF 功能:功能:功能:功能:当当当当 的值为真时,执行的值为真时,执行的值为真时,执行的值为真时,执
21、行 111;否;否;否;否则执行则执行则执行则执行 222。如果没有。如果没有。如果没有。如果没有ELSEELSEELSEELSE的子句,则当的子句,则当的子句,则当的子句,则当 的值为假时,不进行任何操作的值为假时,不进行任何操作的值为假时,不进行任何操作的值为假时,不进行任何操作。注:注:注:注:IFIFIFIF和和和和ENDIFENDIFENDIFENDIF必须配对使用。必须配对使用。必须配对使用。必须配对使用。1818第四章第四章 程序设计基础程序设计基础*P2.PRG*SET TALK OFFclearINPUT 请输入一个正整数请输入一个正整数:TO XIF INT(X/2)=X/
22、2?X,为偶数为偶数!ELSE?X,为奇数为奇数!ENDIFSET TALK ON例例4.4 从键盘输入一个正整数,判断其是否为偶数。从键盘输入一个正整数,判断其是否为偶数。程序代码如下:程序代码如下:1919第四章第四章 程序设计基础程序设计基础例例4.5 根据键入根据键入X X的值,计算下面分段函数的值,并显示结果。的值,计算下面分段函数的值,并显示结果。程序代码如下:程序代码如下:*P3.PRG*SET TALK OFFSET TALK OFFCLEARCLEARINPUT INPUT“X=X=”TO X TO XIF X0IF X0 IF X10 IF X10 Y=X*X+1 Y=X*
23、X+1 ELSE ELSE Y=3*X*X-2*X+1 Y=3*X*X-2*X+1 ENDIF ENDIFELSEELSE Y=X*X+4*X-1 Y=X*X+4*X-1ENDIFENDIF?”分段函数值为:分段函数值为:”+STR(Y,10,2)+STR(Y,10,2)SET TALK ONSET TALK ONRETURNRETURN2020第四章第四章 程序设计基础程序设计基础2 2、IIF()IIF()判断选择函数判断选择函数VFPVFP中中有有一一个个函函数数,它它能能够够先先进进行行条条件件判判断断,然然后后决决定定返返回回其其值值。它的使用效果比分支语句更快捷。它的使用效果比分支
24、语句更快捷。格式:格式:IIFIIF(=60,=60,“及格及格”,“不及格不及格”)当成绩当成绩6060时,函数返回时,函数返回“及格及格”,否则返回,否则返回“不及格不及格”字符串。字符串。2121第四章第四章 程序设计基础程序设计基础3 3、多路选择分支结构、多路选择分支结构l l格式格式:DO CASEDO CASE CASE CASE 1 1 CASE CASE 2 2 CASE CASE n n OTHERWISE OTHERWISE n+1 ENDCASEENDCASEl功能:依次判断,当值为真时执行对应的;当所有的值为假时,则执行OTHERWISE下面的。l注:DO CASE和
25、ENDCASE必须配对使用。2222第四章第四章 程序设计基础程序设计基础例例4.64.6:用:用DO CASEDO CASE语句修改例语句修改例4.54.5计算分段函数的例子。计算分段函数的例子。程序代码如下程序代码如下:*P4.PRG*SET TALK OFFSET TALK OFFCLEARCLEARINPUT INPUT“X=X=”TO X TO XDO CASEDO CASE CASE X=0 CASE X0.AND.X0.AND.X10 CASE X10 Y=X*X+1 Y=X*X+1ENDCASEENDCASE?”分段函数值为:分段函数值为:”+STR(Y,10,2)+STR(Y
26、,10,2)SET TALK ONSET TALK ONRETURNRETURN2323第四章第四章 程序设计基础程序设计基础 定义:定义:循环结构是指根据问题的需要任意次地重复执行一行或多循环结构是指根据问题的需要任意次地重复执行一行或多行语句。具体地说就是某些语句在某一条件成立时行语句。具体地说就是某些语句在某一条件成立时,需要重复执行需要重复执行,直到条件不成立时直到条件不成立时,才结束重复执行。循环结构要特别注意的是在才结束重复执行。循环结构要特别注意的是在重复执行语句过程中,要有控制条件的语句,以避免出现死循环重复执行语句过程中,要有控制条件的语句,以避免出现死循环现象。在现象。在V
27、FPVFP中有三种循环语句:中有三种循环语句:3、循环结构循环结构 DO WHILE ENDDO DO WHILE ENDDO SCAN ENDSCAN SCAN ENDSCAN FOR ENDFOR FOR ENDFOR2424第四章第四章 程序设计基础程序设计基础l l格式:格式:DO WHILE DO WHILE ENDDO ENDDO一、一、DO WHILE ENDDO l l 功能:功能:当当 的值为真时,重复执行的值为真时,重复执行DO DO WHILE ENDDOWHILE ENDDO之间的之间的 ,直到,直到 的值为假时结束。的值为假时结束。2525第四章第四章 程序设计基础程
28、序设计基础l l任选项说明任选项说明 EXIT-EXIT-结束当前循环操作,跳到结束当前循环操作,跳到ENDDOENDDO后面的语句。后面的语句。LOOP-LOOP-跳过跳过LOOPLOOP后面的语句,直接回到循环起始语句后面的语句,直接回到循环起始语句DO DO WHILEWHILE。l l注:注:在语句序列中,还可以出现在语句序列中,还可以出现IFIF语句或语句或CASECASE语句或语句或WHILE WHILE 语句语句-WHILE-WHILE语句的嵌套。语句的嵌套。2626第四章第四章 程序设计基础程序设计基础 循环体可以包含VFP合法的任何语句,特别是还可以包含另一个循环语句,称为循
29、环的嵌套。每一个DO WHILE必须与一个ENDDO对应。内、外循环不能交叉。循环体中若有EXIT语句,当执行到该语句时,将无条件地跳出所在的循环,执行ENDDO后面的各语句;当执行到LOOP时(假如有的话),立即返回到本循环的DO WHILE处,再判断条件表达式的值以便决定是跳出循环还是执行循环体。在循环体中,必须要有改变条件表达式条件的语句,使得总有一刻,其值为.F.,或有EXIT语句退出循环,否则将形成无限循环(俗称“死循环”)。利用DO WHILE循环可以实现对多种情况进行控制。常见的有三种情况:说明:说明:2727第四章第四章 程序设计基础程序设计基础格式:格式:DO WHILE N
30、=MDO WHILE N=M N=N+X N=N+X ENDDO ENDDO其中其中:N=N=初值初值 (通常为(通常为1 1););M=M=终值;终值;X X为步长为步长功能:通过对循环变量功能:通过对循环变量N N进行顺计数并与进行顺计数并与MM相比较的方法完成循环操作。相比较的方法完成循环操作。1、固定次数的循环、固定次数的循环 2828第四章第四章 程序设计基础程序设计基础程序代码如下:程序代码如下:*P6.PRG*P6.PRG*SET TALK OFFSET TALK OFFCLEARCLEARs=0 s=0 i=1 i=1 DO WHILE i=99DO WHILE i=99 s=
31、s+i s=s+i i=i+2 i=i+2ENDDOENDDO?1+3+5+7+1+3+5+7+99=,S+99=,SSET TALK ONSET TALK ON例4.8:计算1+3+5+7+9+99的值并输出。2929第四章第四章 程序设计基础程序设计基础格式:格式:DO WHILE .T.DO WHILE .T.IF IF EXIT EXIT ENDIF ENDIF ENDDO ENDDO2 2、对循环次数不确定的循环、对循环次数不确定的循环 功能:循环条件永远为真,只有满足功能:循环条件永远为真,只有满足IFIF语句的语句的 时,才跳出循环。时,才跳出循环。注:在这种使用方法中,注:在这
32、种使用方法中,EXITEXIT选项是不可缺少的,且必须和选项是不可缺少的,且必须和IFIF语句连用。语句连用。3030第四章第四章 程序设计基础程序设计基础例例4.9:将前:将前N个自然数中的完全平方数进行累加,当累加之和超过个自然数中的完全平方数进行累加,当累加之和超过100时时停止累加。要求程序显示每次的累加和。停止累加。要求程序显示每次的累加和。*P7.PRG*P7.PRG*SET TALK OFFSET TALK OFFCLEARCLEAR STORE 0 TO I STORE 0 TO I,M MDO WHILE.T.DO WHILE.T.IF M100IF M100EXITEXIT
33、ELSEELSE M=M+I2 M=M+I2ENDIFENDIF?”完全平方数累加和:完全平方数累加和:”+STR+STR(M M,6 6)I=I+1I=I+1ENDDOENDDOSET TALK ONSET TALK ON3131第四章第四章 程序设计基础程序设计基础 格式:格式:格式:格式:DO WHILE .NOT.EOF()(BOF()DO WHILE .NOT.EOF()(BOF()SKIP (SKIP-1)SKIP (SKIP-1)ENDDO ENDDO3、用记录指针控制循环、用记录指针控制循环 功能:对当前打开的表文件中的记录自上而下或自下而上地逐条进行操作。功能:对当前打开的表
34、文件中的记录自上而下或自下而上地逐条进行操作。功能:对当前打开的表文件中的记录自上而下或自下而上地逐条进行操作。功能:对当前打开的表文件中的记录自上而下或自下而上地逐条进行操作。注:记录指针由注:记录指针由注:记录指针由注:记录指针由SKIPSKIPSKIPSKIP语句控制,循环结束的条件由函数语句控制,循环结束的条件由函数语句控制,循环结束的条件由函数语句控制,循环结束的条件由函数EOFEOFEOFEOF()和()和()和()和BOFBOFBOFBOF()()()()控制。控制。控制。控制。3232第四章第四章 程序设计基础程序设计基础例例4.104.10:在学生表:在学生表XS.DBFXS
35、.DBF中有中有“学号学号”字段(字段(N N,6 6)。)。现要抽取学号能被现要抽取学号能被3 3整除的学生参加计算机竟赛,要求在屏幕上显示这些学生的姓名和学号。整除的学生参加计算机竟赛,要求在屏幕上显示这些学生的姓名和学号。*P8.PRG*P8.PRG*SET TALK OFFCLEARUSE XS DO WHILE.NOT.EOF()IF MOD(学号,学号,3)=0?姓名?姓名,学号学号 ENDIF SKIPENDDOUSESET TALK ONUSESET TALK ON3333第四章第四章 程序设计基础程序设计基础例例4.114.11:显示学生表:显示学生表XS.DBFXS.DBF
36、中在中在19801980年以后出生的学生记录。年以后出生的学生记录。*P9.PRG*P9.PRG*SET TALK OFFCLEARCLEAR USE XS USE XS DO WHILE NOT EOF DO WHILE NOT EOF()IF IF 出生年月出生年月=CTOD=CTOD(“1980-01-301980-01-30”)DISPDISPENDIFENDIFSKIPSKIPENDDOENDDOUSEUSERETURRETUR3434第四章第四章 程序设计基础程序设计基础格式:格式:FOR FOR 循环变量循环变量=初值初值 TO TO 终值终值 STEP STEP步长步长 EXI
37、T EXIT LOOP LOOP ENDFOR/NEXT ENDFOR/NEXT二、FOR 循环程序设计 l l功功能能:当当循循环环变变量量的的值值不不大大于于终终值值时时,执执行行循循环环操操作作。每每循循环环一一次次,循循环变量的值自动递增一个步长值。环变量的值自动递增一个步长值。l l说明:说明:循环变量为任意一个内存变量,不需要事先定义。循环变量为任意一个内存变量,不需要事先定义。l l初值、终值、步长均为一个数值表达式,其值可为正或负或小数。初值、终值、步长均为一个数值表达式,其值可为正或负或小数。l l若不选若不选STEP STEP 步长步长 选项,递增步长为选项,递增步长为1
38、1。l lLOOPLOOP选项实现循环短路操作,选项实现循环短路操作,EXIT EXIT 选项实现结束当前循环操作。选项实现结束当前循环操作。l l ENDFORENDFOR和和NEXTNEXT二者等价,只能选择其中之一。二者等价,只能选择其中之一。3535第四章第四章 程序设计基础程序设计基础例例4.12:求:求1000之内所有偶数之和。之内所有偶数之和。*P10.PRG*P10.PRG*SET TALK OFFSET TALK OFFCLEARCLEARS=0S=0FOR I=0 TO 1000 STEP 2FOR I=0 TO 1000 STEP 2 S=S+I S=S+INEXTNEX
39、T?“10001000之内所有偶数之和为之内所有偶数之和为”,S SSET TALK ONSET TALK ONRETURNRETURN3636第四章第四章 程序设计基础程序设计基础格式:格式:SCAN NOOPTIMIZE SCAN NOOPTIMIZE 范围范围 FOR FOR WHILE WHILE2 EXIT EXIT LOOP LOOP ENDSCAN ENDSCAN三、三、SCAN SCAN ENDSCAN ENDSCAN功能:功能:功能:功能:对当前打开的表文件在指定范围,满足条件的记录中进行自上而下逐个扫对当前打开的表文件在指定范围,满足条件的记录中进行自上而下逐个扫描操作,随
40、着记录指针的移动,描操作,随着记录指针的移动,SCANSCAN循环允许对指定的每条记录执行相同的循环允许对指定的每条记录执行相同的 操作。操作。说明:说明:说明:说明:SCANSCAN循环能自动移动指针,按条件指定记录,避免在循环体内重复执行表循环能自动移动指针,按条件指定记录,避免在循环体内重复执行表文件查询命令。用文件查询命令。用DO WHILEDO WHILE循环也可以实现对表文件的逐个扫描操作,但它需要循环也可以实现对表文件的逐个扫描操作,但它需要借助函数借助函数BOF()BOF()或或EOF()EOF()测试状态,用测试状态,用SKIPSKIP命令移动指针,不如命令移动指针,不如SC
41、ANSCAN循环方便。循环方便。3737第四章第四章 程序设计基础程序设计基础例例4.144.14:分别统计学生表中男生和女生的人数:分别统计学生表中男生和女生的人数。*P1.PRG*P1.PRG*USE USE 学生学生STORE 0 TO XSTORE 0 TO X,Y YSCANSCAN IF IF 性别性别 X=X+1X=X+1 ELSE ELSE Y=Y+1 Y=Y+1 ENDIF ENDIFENDSCANENDSCAN?”男生人数男生人数”,X,X,”女生人数女生人数”,Y,YUSEUSE3838第四章第四章 程序设计基础程序设计基础(1 1)DO WHILEDO WHILE和和E
42、NDDOENDDO、FORFOR和和ENDFORENDFOR、SCANSCAN和和ENDSCANENDSCAN必须配对使用。必须配对使用。(2 2)命命令令行行序序列列可可以以是是任任何何FoxProFoxPro命命令令或或语语句句,也也可可以以是是循循环环语语句句,即即可可以以为多重循环。为多重循环。(3 3)循环变量循环变量应是数值型的内存变量或数组元素。应是数值型的内存变量或数组元素。(4 4)EXITEXIT和和LOOPLOOP命命令令嵌嵌入入在在循循环环体体内内,可可以以改改变变循循环环次次数数,但但是是不不能能单单独独使使用用。EXITEXIT的的功功能能是是跳跳出出循循环环,转转
43、去去执执行行ENDDOENDDO、ENDFORENDFOR、ENDSCANENDSCAN后后面面的的第第一一条条命命令令;LOOPLOOP的的功功能能是是转转回回到到循循环环的的开开始始处处,重重新新对对“条条件件”进进行行判判断断,相相当当于于执执行行了了一一次次ENDDOENDDO、ENDFORENDFOR、ENDSCANENDSCAN命命令令,它它可可以以改改变变命命令令行行序序列列中中部部分分命命令令的的执执行行次数。次数。EXITEXIT、LOOPLOOP可以出现在可以出现在命令行序列命令行序列的任意位置的任意位置。使用循环语句时应注意的几点使用循环语句时应注意的几点:3939第四章
44、第四章 程序设计基础程序设计基础4.6 多模块程序多模块程序 一个应用程序通常都是由一个主程序和若干个子程序组成。所谓子一个应用程序通常都是由一个主程序和若干个子程序组成。所谓子程序是相对于主程序而言的一个独立的程序文件,可以单独执行,也可程序是相对于主程序而言的一个独立的程序文件,可以单独执行,也可以被其他程序调用。以被其他程序调用。4.6.1 子程序子程序 定义:子程序是相对于主程序而言的一个独立的程序文件,其建立方法与建立程序文件的方法相同,扩展名为PRG。子子程程序序的的使使用用可可以以简简化化程程序序中中多处重复出现完成相同功能的程序段的设计问题。多处重复出现完成相同功能的程序段的设
45、计问题。子程序的建立方法与程序文件的方法相同,扩展名为:子程序的建立方法与程序文件的方法相同,扩展名为:.PRG.PRG。子程序的子程序的调用:调用:DO DO WITH WITH 子程序的子程序的返回:返回:RETURN TO MASTERRETURN TO MASTER4040第四章第四章 程序设计基础程序设计基础说明说明l lRETURNRETURN返回到调用者的调用语句的下一行。返回到调用者的调用语句的下一行。l lTO MASTERTO MASTER选项表示返回到最高级调用者。选项表示返回到最高级调用者。l l选项表示将值返回到调用者选项表示将值返回到调用者l l子程序执行时直到遇到
46、以下情况时,自动结束返回:子程序执行时直到遇到以下情况时,自动结束返回:RETURNRETURN、RETRYRETRY、CANCELCANCEL、QUITQUIT。程序之间的调用和返回程序之间的调用和返回 4141第四章第四章 程序设计基础程序设计基础例例4.164.16:输入一个半径:输入一个半径 r r 值,求出圆的面积。值,求出圆的面积。*P14.PRG*主程序主程序YMJ=0YMJ=0INPUTINPUT“请输入圆的半径请输入圆的半径”TO BJTO BJDO ZGC WITH BJ,YMJDO ZGC WITH BJ,YMJ&调用子程序调用子程序?圆的面积圆的面积=,YMJ=,YMJ
47、&显示圆面积显示圆面积RETURNRETURN*子程序子程序*ZGC.PRG*ZGC.PRG*PARAMETERS R,S&PARAMETERS R,S&接收参数接收参数S=PI()*R*R&S=PI()*R*R&计算圆面积,计算圆面积,PI()PI()返回返回值值RETURN&RETURN&返回主程序返回主程序4242第四章第四章 程序设计基础程序设计基础1 1、过程与过程文件的定义、过程与过程文件的定义过程:过程是一个由PROCEDURE开头,ENDPROC结尾的子程序段。过程可以将实现相对独立功能的常用代码集中在一起,供应用程序在需要时调用。过程的存在格式如下所示:PROCEDUREEN
48、DPROCl过程文件:是由若干个过程构成的文件。l注:过程必须存放在一个过程文件中。不能把可执行的主程序代码放在过程之后。4.6.2 过程与过程文件过程与过程文件 4343第四章第四章 程序设计基础程序设计基础2 2、过程文件的建立、过程文件的建立过程文件建立方法有两种:过程文件建立方法有两种:与程序文件的创建方法相同,将过程文件的内容一行一行地输入。与程序文件的创建方法相同,将过程文件的内容一行一行地输入。通过将分散的子程序加入项目管理器,再利用工具自动连编生成扩展名通过将分散的子程序加入项目管理器,再利用工具自动连编生成扩展名为为APPAPP或或EXEEXE的文件。的文件。3 3、过程文件
49、的调用、过程文件的调用 调用过程文件之前必须要打开过程文件。调用结束后要关闭过程文调用过程文件之前必须要打开过程文件。调用结束后要关闭过程文件。件。l l过程文件的打开过程文件的打开:SET PROCEDURE TO SET PROCEDURE TO l l过程文件的关闭过程文件的关闭:SET PROCEDURE TO SET PROCEDURE TO 或或 CLOSE PROCEDURECLOSE PROCEDURE4444第四章第四章 程序设计基础程序设计基础例例4.174.17:用过程编写一个求和与乘积的程序。用过程编写一个求和与乘积的程序。*P15.PRG*P15.PRG*SET TA
50、LK OFF SET TALK OFF S=1 S=1 P=1 P=1 DO BB DO BB?”S=S=”,S ,S SET TALK ONSET TALK ONRETURNRETURNPROC BBPROC BB M=3 M=3 N=5 N=5 S=M+N S=M+N P=S*N P=S*N?”P=P=”,P,PENDPROCENDPROC调用上述过程文件可以在调用上述过程文件可以在V FP的命令窗口或一个的命令窗口或一个程序文件中使用下列语句:程序文件中使用下列语句:SET PROCEDURE TO P15 SET PROCEDURE TO P15 DO P15 4545第四章第四章 程