《《VisualFoxPro程序设计》第六章结构化程序设计.ppt》由会员分享,可在线阅读,更多相关《《VisualFoxPro程序设计》第六章结构化程序设计.ppt(81页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、前页 后页 首页第第6 6章章 结构化程序设计结构化程序设计q 6.1 6.1 程序文件程序文件q 6.2 6.2 程序控制结构程序控制结构q 6.3 6.3 过程与过程调用过程与过程调用q 6.4 6.4 程序的调试程序的调试提示:单击各个标题前的动画符号“”,链接到相应的章节。1Visual FoxPro 6.0 程序设计.课件前页 后页 首页q在程序设计的方法中,结构化程序设计是程序设在程序设计的方法中,结构化程序设计是程序设计的基本方法。结构化程序设计的基本思想是逐计的基本方法。结构化程序设计的基本思想是逐步求精、模块化和自顶向下,将一个复杂的程序步求精、模块化和自顶向下,将一个复杂的
2、程序系统的设计任务分成多个易于控制和处理的子任系统的设计任务分成多个易于控制和处理的子任务,每个子任务都是可独立编程的子程序、过程务,每个子任务都是可独立编程的子程序、过程或函数模块。其程序控制结构有顺序结构、分支或函数模块。其程序控制结构有顺序结构、分支结构和循环结构三种。结构和循环结构三种。2Visual FoxPro 6.0 程序设计.课件前页 后页 首页6.1 6.1 程序文件程序文件q 6.1.1 6.1.1 程序文件建立程序文件建立q 6.1.2 6.1.2 简单的交互方式输入输出命令简单的交互方式输入输出命令q 6.1.3 6.1.3 应用程序的调试与执行应用程序的调试与执行3V
3、isual FoxPro 6.0 程序设计.课件前页 后页 首页6.1 程序文件q前面已经介绍了前面已经介绍了Visual FoxProVisual FoxPro的交互式操作方式:菜单的交互式操作方式:菜单操作方式和命令操作方式。这两种方式对于需要大量重操作方式和命令操作方式。这两种方式对于需要大量重复操作的数据库管理工作来说,效率低下;而且这两种复操作的数据库管理工作来说,效率低下;而且这两种方式都要求用户熟练掌握方式都要求用户熟练掌握Visual FoxProVisual FoxPro中的各种数据操中的各种数据操作,这在实际应用环境中并不现实。因此,作,这在实际应用环境中并不现实。因此,V
4、isual Visual FoxProFoxPro提供了程序文件方式来管理数据库,即通过程序提供了程序文件方式来管理数据库,即通过程序文件编辑工具,将数据库操作的命令、函数等编制成一文件编辑工具,将数据库操作的命令、函数等编制成一个有序序列存放在程序文件中,然后通过菜单操作方式个有序序列存放在程序文件中,然后通过菜单操作方式或命令操作方式运行该程序文件,即可完成相应的一系或命令操作方式运行该程序文件,即可完成相应的一系列操作,程序文件的扩展名为列操作,程序文件的扩展名为.PRG.PRG。4Visual FoxPro 6.0 程序设计.课件前页 后页 首页6.1.1 程序文件的建立qVisual
5、 FoxProVisual FoxPro中编写的代码都存放在纯文本格式的文件中,中编写的代码都存放在纯文本格式的文件中,因此任何可以建立、编辑文本文件的工具都可以创建和编辑因此任何可以建立、编辑文本文件的工具都可以创建和编辑Visual FoxProVisual FoxPro程序文件,通常使用的是程序文件,通常使用的是Visual FoxProVisual FoxPro提供的提供的内部编辑器。程序文件建立的方法有多种,常用的有下列内部编辑器。程序文件建立的方法有多种,常用的有下列3 3种种方法。方法。1.1.菜单方式菜单方式q单击单击“文件文件”|“|“新建新建”命令,在弹出的命令,在弹出的“
6、新建新建”对话框中,对话框中,选择文件类型为选择文件类型为“程序程序”,然后单击,然后单击“新建文件新建文件”按钮,即可按钮,即可打开如图所示的程序编辑窗口。打开如图所示的程序编辑窗口。q在编辑窗口中可以逐条输入命令,程序文件建立好后,可以单在编辑窗口中可以逐条输入命令,程序文件建立好后,可以单击击“文件文件”“保存保存”命令来保存该程序文件。命令来保存该程序文件。5Visual FoxPro 6.0 程序设计.课件前页 后页 首页2.2.项目管理器方式项目管理器方式(1)(1)单击单击“文件文件”|“|“新建新建”命令,在弹出的命令,在弹出的“新建新建”对话框中,对话框中,选择文件类型为选择
7、文件类型为“项目项目”,然后单击,然后单击“新建文件新建文件”按钮,在打按钮,在打开的开的“创建创建”对话框中输入项目文件名后,单击对话框中输入项目文件名后,单击“保存保存”按钮,按钮,即可打开即可打开“项目管理器项目管理器”对话框。对话框。(2)(2)在在“项目管理器项目管理器”对话框的对话框的“全部全部”选项卡中,单击选项卡中,单击“代码代码”前的前的“+”+”号展开号展开“代码代码”文件夹,选择文件夹,选择“程序程序”选项,然选项,然后单击后单击“新建新建”按钮,如图所示,也可打开程序编辑窗口。按钮,如图所示,也可打开程序编辑窗口。6Visual FoxPro 6.0 程序设计.课件前页
8、 后页 首页3.3.命令方式命令方式q命令格式如下:命令格式如下:MODIFY COMMAND MODIFY COMMAND q在命令窗口中输入该命令后,也会打开程序编辑窗口。在命令窗口中输入该命令后,也会打开程序编辑窗口。q其中各参数的说明如下:其中各参数的说明如下:q如果命令中给出如果命令中给出 ,若该文件不存在,则打开,若该文件不存在,则打开以该文件名为标题的程序编辑窗口;若该文件已存在,以该文件名为标题的程序编辑窗口;若该文件已存在,则在程序编辑窗口中打开该文件,可以重新进行编辑修则在程序编辑窗口中打开该文件,可以重新进行编辑修改。改。q如果命令中缺省如果命令中缺省 ,则会打开默认以,
9、则会打开默认以“程序程序1”1”、“程序程序2”2”为标题的程序编辑窗口,在保存时,用为标题的程序编辑窗口,在保存时,用户应重新为程序文件命名。户应重新为程序文件命名。q若若 中未给出包含盘符和路径的绝对路径,默中未给出包含盘符和路径的绝对路径,默认保存在当前文件中;认保存在当前文件中;中可以缺省程序文中可以缺省程序文件的扩展名,系统会自动加上扩展名件的扩展名,系统会自动加上扩展名.PRG.PRG。7Visual FoxPro 6.0 程序设计.课件前页 后页 首页6.1.2 简单的交互方式输入输出命令 在程序的执行过程中,经常需要从键盘输入数据,或将运行在程序的执行过程中,经常需要从键盘输入
10、数据,或将运行结果在屏幕上显示出来,这就需要在程序设计中使用到交互式结果在屏幕上显示出来,这就需要在程序设计中使用到交互式的输入输出命令。的输入输出命令。1.1.输入单字符命令输入单字符命令q输入单字符命令的格式如下:输入单字符命令的格式如下:WAIT WAIT TO TO q其中各参数的说明如下:其中各参数的说明如下:表示在等待用户输入时,在屏幕上显示的提示表示在等待用户输入时,在屏幕上显示的提示内容,通常是一个字符串,需用单引号、双引号或方括号作内容,通常是一个字符串,需用单引号、双引号或方括号作为定界符括起来,也可以是字符串变量。若省略该项,屏幕为定界符括起来,也可以是字符串变量。若省略
11、该项,屏幕上显示的是系统默认的提示信息上显示的是系统默认的提示信息“按任意键继续按任意键继续”。TO TO 表示将输入的单个字符赋给内存变量。输表示将输入的单个字符赋给内存变量。输入字符时,不需输入字符的定界符,否则内存变量得到的是入字符时,不需输入字符的定界符,否则内存变量得到的是第一个定界符;若未输入字符就按回车键或单击鼠标,则内第一个定界符;若未输入字符就按回车键或单击鼠标,则内存变量得到空值。若省略该项,则输入的字符不能保留。存变量得到空值。若省略该项,则输入的字符不能保留。q注意:该命令一般只是为了显示提示信息,等待用户按任意键注意:该命令一般只是为了显示提示信息,等待用户按任意键后
12、继续执行。后继续执行。8Visual FoxPro 6.0 程序设计.课件前页 后页 首页2.2.输入字符串命令输入字符串命令q输入字符串命令的格式如下:输入字符串命令的格式如下:ACCEPT ACCEPT TO TO q其中各参数的说明如下:其中各参数的说明如下:表示在等待用户输入时,在屏幕上显示的提表示在等待用户输入时,在屏幕上显示的提示内容,通常是一个字符串,需用单引号、双引号或方括示内容,通常是一个字符串,需用单引号、双引号或方括号作为定界符括起来,也可以是字符串变量。号作为定界符括起来,也可以是字符串变量。TO TO 表示将输入的字符串赋给内存变量。输入字表示将输入的字符串赋给内存变
13、量。输入字符串时,不需输入字符串的定界符,否则定界符也会作为符串时,不需输入字符串的定界符,否则定界符也会作为字符串的一部分被赋给内存变量;若未输入字符就按回车字符串的一部分被赋给内存变量;若未输入字符就按回车键或单击鼠标,则内存变量得到空值。若省略该项,则输键或单击鼠标,则内存变量得到空值。若省略该项,则输入的字符不能保留。入的字符不能保留。【例例6-16-1】编写程序文件编写程序文件prog.prgprog.prg,要求根据键盘输入的学生,要求根据键盘输入的学生姓名,显示该学生的学生信息。姓名,显示该学生的学生信息。q分析:要在表中查询满足条件的记录,首先应打开该表,根据分析:要在表中查询
14、满足条件的记录,首先应打开该表,根据题目要求,本题应先打开的是学生信息表题目要求,本题应先打开的是学生信息表studentstudent,再用,再用ACCEPTACCEPT命令将所输入的学生姓名存放到内存变量中,再根据该命令将所输入的学生姓名存放到内存变量中,再根据该值在表中进行查询并显示,所有操作结束后应关闭该表。值在表中进行查询并显示,所有操作结束后应关闭该表。9Visual FoxPro 6.0 程序设计.课件前页 后页 首页q 程序编辑窗口的输入如图程序编辑窗口的输入如图6-36-3所示,运行时在屏幕中输所示,运行时在屏幕中输入入“王燕燕王燕燕”,结果如图,结果如图6-46-4所示。所
15、示。图6-3 程序编辑窗口的输入图6-4 结果显示10Visual FoxPro 6.0 程序设计.课件前页 后页 首页3.3.输入任意数据命令输入任意数据命令q输入任意数据命令的格式如下:输入任意数据命令的格式如下:INPUT INPUT TO TO q其中各参数的说明如下:其中各参数的说明如下:表示在等待用户输入时,在屏幕上显示表示在等待用户输入时,在屏幕上显示的提示内容,通常是一个字符串,需用单引号、双引的提示内容,通常是一个字符串,需用单引号、双引号或方括号作为定界符括起来,也可以是字符串变量。号或方括号作为定界符括起来,也可以是字符串变量。TO TO 表示将输入的数据赋给内存变量。表
16、示将输入的数据赋给内存变量。INPUTINPUT命令可以接受字符型、数值型、逻辑型、日期型命令可以接受字符型、数值型、逻辑型、日期型和日期时间型数据,可以接受常量、变量或一般表达和日期时间型数据,可以接受常量、变量或一般表达式。数值型常量可直接输入,字符型常量必须加定界式。数值型常量可直接输入,字符型常量必须加定界符,逻辑型常量必须加圆点定界符(如符,逻辑型常量必须加圆点定界符(如.T.T.或或.F.F.),),日期型和日期时间型常量既可按严格格式输入,也可日期型和日期时间型常量既可按严格格式输入,也可利用相应的转换函数输入(如利用相应的转换函数输入(如2008/5/272008/5/27、2
17、008-2008-5-27 11:14:20a5-27 11:14:20a、CTOD(05-27-08)CTOD(05-27-08)、CTOT(05-27-CTOT(05-27-08 11:14:20a)08 11:14:20a))。若未输入直接按回车键,屏幕会)。若未输入直接按回车键,屏幕会继续显示提示信息等待输入。继续显示提示信息等待输入。11Visual FoxPro 6.0 程序设计.课件前页 后页 首页4.4.非格式输出命令非格式输出命令q该命令的格式如下:该命令的格式如下:?|?|?q该命令的功能是在该命令的功能是在Visual FoxProVisual FoxPro的主窗口中换行
18、或不换的主窗口中换行或不换行输出行输出 中各个表达式的值,其中,中各个表达式的值,其中,?表示换表示换行输出,即行输出,即 中各个表达式的值在当前主窗中各个表达式的值在当前主窗口中最后一次输出位置的下一行输出;口中最后一次输出位置的下一行输出;?表示不换行输表示不换行输出,即出,即 中各个表达式的值在当前主窗口中中各个表达式的值在当前主窗口中最后一次输出位置后直接输出,并不换行。最后一次输出位置后直接输出,并不换行。12Visual FoxPro 6.0 程序设计.课件前页 后页 首页5.5.格式输入输出命令格式输入输出命令q该命令格式如下:该命令格式如下:SAY SAY GET GET RE
19、ADREADq其中各参数的说明如下:其中各参数的说明如下:表示在:表示在Visual FoxProVisual FoxPro的主窗口中指定的位置的主窗口中指定的位置输入输出。起始行列号均为输入输出。起始行列号均为0 0,行和列可以是常量值,行和列可以是常量值,也可以是数值型表达式。也可以是数值型表达式。SAY SAY GET GET:如果后面没有:如果后面没有READREAD选选项,将在指定的位置输出表达式和变量的值;如果后项,将在指定的位置输出表达式和变量的值;如果后面有面有READREAD选项,则对变量的原有值进行编辑修改,并选项,则对变量的原有值进行编辑修改,并将结果保存在变量中。其中的
20、变量可以是已赋值的内将结果保存在变量中。其中的变量可以是已赋值的内存变量,也可以是字段变量,类型可以是数值型、字存变量,也可以是字段变量,类型可以是数值型、字符型、逻辑型、日期型、日期时间型、备注型、通用符型、逻辑型、日期型、日期时间型、备注型、通用型等。型等。13Visual FoxPro 6.0 程序设计.课件前页 后页 首页图6-5 程序编辑窗口的输入图6-6 结果显示【例例6-2】编写程序编写程序prog2.prg,使用格式输入输出命令,修改学生信息,使用格式输入输出命令,修改学生信息表表student中指定学号的学生记录的字段值。中指定学号的学生记录的字段值。程序编辑窗口的输入如图程
21、序编辑窗口的输入如图6-5,运行时在屏幕中输入,运行时在屏幕中输入“王燕燕王燕燕”,运行,运行结果如图结果如图6-6。14Visual FoxPro 6.0 程序设计.课件前页 后页 首页6.6.其他辅助命令其他辅助命令(1)(1)清屏命令清屏命令q清屏命令主要用于清除清屏命令主要用于清除VFPVFP主窗口中的内容,清除完后光主窗口中的内容,清除完后光标回到窗口的左上角,该命令格式如下:标回到窗口的左上角,该命令格式如下:CLEARCLEAR(2)(2)终止程序命令终止程序命令q该命令的功能是终止程序的运行,返回该命令的功能是终止程序的运行,返回VFPVFP的主窗口,同的主窗口,同时释放所有私
22、有变量,其格式如下:时释放所有私有变量,其格式如下:CANCELCANCEL(3)(3)退出系统命令退出系统命令q该命令的功能是退出该命令的功能是退出VFPVFP系统,回到操作系统,退出前将系统,回到操作系统,退出前将关闭所有文件,清除所有变量,其格式如下:关闭所有文件,清除所有变量,其格式如下:QUITQUIT(4)(4)设置会话状态命令设置会话状态命令q该命令的格式如下:该命令的格式如下:SER TALK ON|OFFSER TALK ON|OFFq该命令用于设置是否显示命令执行过程中的状态信息,默该命令用于设置是否显示命令执行过程中的状态信息,默认时为认时为SET TALK ONSET
23、TALK ON,即打开会话状态。通常在执行单命,即打开会话状态。通常在执行单命令或调试程序时,设置为令或调试程序时,设置为ONON状态;而在程序执行时设置状态;而在程序执行时设置为为OFFOFF状态。状态。15Visual FoxPro 6.0 程序设计.课件前页 后页 首页6.1.3 应用程序的执行q运行程序文件的方法有多种,常用的方法主要有以下运行程序文件的方法有多种,常用的方法主要有以下3 3种:种:单击单击“程序程序”|“|“运行运行”命令,在打开的命令,在打开的“运行运行”对话对话框中选择要运行的程序文件,然后单击框中选择要运行的程序文件,然后单击“运行运行”按钮按钮即可运行该程序文
24、件。即可运行该程序文件。在在“项目管理器项目管理器”对话框的对话框的“全部全部”选项卡中,先选选项卡中,先选中要运行的程序,然后单击中要运行的程序,然后单击“运行运行”按钮,即可执行按钮,即可执行该程序。该程序。在命令窗口中输入命令:在命令窗口中输入命令:DO DO ,也可以执,也可以执行相应的程序文件。行相应的程序文件。q事实上,在程序输入完毕后,不关闭程序编辑窗口,直接事实上,在程序输入完毕后,不关闭程序编辑窗口,直接单击工具栏的单击工具栏的“运行运行”按钮可以直接运行程序,若程序按钮可以直接运行程序,若程序无语法错误,可以得到运行结果,若程序中存在语法错无语法错误,可以得到运行结果,若程
25、序中存在语法错误,则会弹出误,则会弹出“程序错误程序错误”对话框,给出错误的提示信对话框,给出错误的提示信息,此时,可以单击息,此时,可以单击“取消取消”按钮,或按按钮,或按【EscEsc】键终止键终止程序的运行,再根据错误提示修改程序。程序的运行,再根据错误提示修改程序。16Visual FoxPro 6.0 程序设计.课件前页 后页 首页6.2 6.2 程序控制结构程序控制结构q 6.2.1 6.2.1 顺序结构程序设计顺序结构程序设计q 6.2.2 6.2.2 分支结构程序设计分支结构程序设计q 6.2.3 6.2.3 循环结构程序设计循环结构程序设计17Visual FoxPro 6.
26、0 程序设计.课件前页 后页 首页6.2程序控制结构q程序的控制结构包括顺序结构、分支结构和循环程序的控制结构包括顺序结构、分支结构和循环结构结构3 3种,每一种控制结构可以包含一个或多个种,每一种控制结构可以包含一个或多个语句,任何程序都是由这语句,任何程序都是由这3 3种基本控制结构构成种基本控制结构构成的。的。18Visual FoxPro 6.0 程序设计.课件前页 后页 首页6.2.1 顺序结构q顺序结构是程序设计中最简单、顺序结构是程序设计中最简单、最常用的基本结构,在该结构中,最常用的基本结构,在该结构中,程序按照命令语句书写的先后顺程序按照命令语句书写的先后顺序依次执行,该结构
27、的流程图如序依次执行,该结构的流程图如图图6-76-7所示。顺序结构是任何程所示。顺序结构是任何程序的主体基本结构,在分支结构序的主体基本结构,在分支结构和循环结构内部,也常以顺序结和循环结构内部,也常以顺序结构作为其子结构,前面介绍的例构作为其子结构,前面介绍的例子使用的都是顺序结构。子使用的都是顺序结构。q顺序结构的基本组成语句是数据顺序结构的基本组成语句是数据的输入输出、赋值语句等,数据的输入输出、赋值语句等,数据的输入和输出已在上一节介绍,的输入和输出已在上一节介绍,下面介绍顺序结构中常用的赋值下面介绍顺序结构中常用的赋值语句和语句的续行与注释功能。语句和语句的续行与注释功能。19Vi
28、sual FoxPro 6.0 程序设计.课件前页 后页 首页1.1.赋值语句赋值语句q程序设计中经常要使用变量,变量在使用之前需要设定一程序设计中经常要使用变量,变量在使用之前需要设定一个初始值,使用过程中也可能要重新赋值,因此可以使个初始值,使用过程中也可能要重新赋值,因此可以使用赋值语句将指定的值赋给变量或对象的某个属性,赋用赋值语句将指定的值赋给变量或对象的某个属性,赋值语句主要有如下两种格式:值语句主要有如下两种格式:(1)(1)使用赋值符号使用赋值符号“=”=”q该语句的格式如下:该语句的格式如下:=q该语句的意思是将表达式的值计算出来后赋给变量名所代该语句的意思是将表达式的值计算
29、出来后赋给变量名所代表的存储单元。表的存储单元。(2)(2)使用使用STORETOSTORETO命令命令q该命令的格式如下:该命令的格式如下:STORE STORE TO TO q该命令是将表达式的值计算出来后赋值变量名表中的每个该命令是将表达式的值计算出来后赋值变量名表中的每个变量。如:变量。如:STORE 3*5 TO STORE 3*5 TO a,b,c,da,b,c,d 是将变量是将变量a,b,c,da,b,c,d同同时赋值为时赋值为151520Visual FoxPro 6.0 程序设计.课件前页 后页 首页q在使用赋值语句时需要注意以下几点:在使用赋值语句时需要注意以下几点:应注意
30、区分赋值符号与数学中的等号。应注意区分赋值符号与数学中的等号。a=3a=3应读作应读作“将将数值数值3 3赋给变量赋给变量a”a”,a=a+1a=a+1表示将原来表示将原来a a的值加上的值加上1 1后再后再放到原来放到原来a a的存储单元中,即将原来的存储单元中,即将原来a a的值加上的值加上1 1后再赋后再赋给给a a。因此,下面两个语句的意思是不同的:。因此,下面两个语句的意思是不同的:X=y X=y&表示将表示将y y的值赋给的值赋给x xy=x y=x&表示将表示将x x的值赋给的值赋给y y若要对日期型或日期时间型内存变量赋值,如果表达若要对日期型或日期时间型内存变量赋值,如果表达
31、式是同样类型的常量,必须用花括号式是同样类型的常量,必须用花括号“”括起来并括起来并在前面加一个在前面加一个“”符号,如果表达式是字符串,则应符号,如果表达式是字符串,则应用转换函数将其转换为相应的类型。用转换函数将其转换为相应的类型。例如:例如:t1=2008/5/27t1=2008/5/27 t2=2008-5-27 11:14:20a t2=2008-5-27 11:14:20a t3=CTOD(05-27-08)t3=CTOD(05-27-08)t4=CTOT(05-27-08 11:14:20a)t4=CTOT(05-27-08 11:14:20a)赋值符号的左边只能是变量,不能是表
32、达式,如赋值符号的左边只能是变量,不能是表达式,如x+yx+y=z=z是错误的赋值语句。是错误的赋值语句。21Visual FoxPro 6.0 程序设计.课件前页 后页 首页2.2.语句的续行语句的续行q当一条语句很长时,在程序编辑窗口中书写或阅读都不方当一条语句很长时,在程序编辑窗口中书写或阅读都不方便,例如:便,例如:select top 50 percent select top 50 percent 学号学号,姓名姓名,身高身高,year(,year(出生日期出生日期)出生年份出生年份from student order by from student order by 出生年份出生
33、年份 descdesc,身身高高q这时,为了便于书写和理解,可以使用语句的续行功能,这时,为了便于书写和理解,可以使用语句的续行功能,用用分号分号“;”;”将较长的语句分为两行或多行。因此上述语将较长的语句分为两行或多行。因此上述语句可以改写为:句可以改写为:select top 50 percent select top 50 percent 学号学号,姓名姓名,身高身高,year(,year(出生日期出生日期)出生年份出生年份;from student;from student;order by order by 出生年份出生年份 descdesc,身高身高q注意:作为续行符的分号只能出现
34、在行尾。注意:作为续行符的分号只能出现在行尾。22Visual FoxPro 6.0 程序设计.课件前页 后页 首页3.3.语句的注释语句的注释 为了提高程序的可读性,通常在程序的适当位置加上相应为了提高程序的可读性,通常在程序的适当位置加上相应的注释,的注释,Visual FoxProVisual FoxPro中提供了两种注释语句。中提供了两种注释语句。(1)(1)程序注释程序注释q该语句的格式如下:该语句的格式如下:NOTE|*NOTE|*q该语句通常单独放置一行,用于对程序进行注释,程序运该语句通常单独放置一行,用于对程序进行注释,程序运行时,不执行以行时,不执行以NOTENOTE或或*
35、开头的行。开头的行。(2)(2)行注释行注释q语句格式如下:语句格式如下:&q该语句通常放在某行命令之后,用于对该行命令进行注释。该语句通常放在某行命令之后,用于对该行命令进行注释。q注意:不能在命令语句行的续行分号后面加入注释。注意:不能在命令语句行的续行分号后面加入注释。23Visual FoxPro 6.0 程序设计.课件前页 后页 首页6.2.2 分支结构 分支结构也称为选择结构,是在程序执行时,根据不同的分支结构也称为选择结构,是在程序执行时,根据不同的条件,选择执行不同的语句。条件,选择执行不同的语句。Visual FoxProVisual FoxPro中提供了两中提供了两种分支结
36、构语句,分别是种分支结构语句,分别是IFIF语句和语句和DO CASEDO CASE语句。语句。1.IF1.IF语句语句IFIF语句主要有两种形式:单分支形式和双分支形式。语句主要有两种形式:单分支形式和双分支形式。(1)(1)单分支形式单分支形式q单分支形式的格式如下:单分支形式的格式如下:IF IF ENDIFENDIFq注意:注意:IFIF和和ENDIFENDIF必须成对使用,并分两行书写。必须成对使用,并分两行书写。24Visual FoxPro 6.0 程序设计.课件前页 后页 首页q其中条件表达式是关系表达式或逻辑表达式,语句执行时,其中条件表达式是关系表达式或逻辑表达式,语句执行
37、时,首先计算条件表达式的值,若为真首先计算条件表达式的值,若为真(.T.)(.T.)则执行语句块中则执行语句块中的语句,否则不执行语句块。无论是否执行语句块中的语的语句,否则不执行语句块。无论是否执行语句块中的语句,程序都将转向句,程序都将转向ENDIFENDIF后面的下一条语句继续执行。后面的下一条语句继续执行。q流程图如图。流程图如图。25Visual FoxPro 6.0 程序设计.课件前页 后页 首页【例例6-36-3】从键盘上输入两个数从键盘上输入两个数x x和和y y,比较大小,若,比较大小,若x x小于小于y y,则交换两个变量值,使得,则交换两个变量值,使得x x不小于不小于y
38、 y。q分析:根据题目要求,若满足分析:根据题目要求,若满足“x x小于小于y”y”这个条件,则执这个条件,则执行行“交换两个变量值交换两个变量值”的操作,因此的操作,因此IFIF后面的后面的 应是应是“xy”xy”,满足条件后执行的,满足条件后执行的 ,应是,应是“交换两个变量值交换两个变量值”。q由于计算机内存有易被覆盖的特点,因此计算机中交换两由于计算机内存有易被覆盖的特点,因此计算机中交换两个变量的值只能借助于第三个中间变量来间接交换,如个变量的值只能借助于第三个中间变量来间接交换,如图图6-96-9所示,则交换两个变量值的代码应为:所示,则交换两个变量值的代码应为:t=xt=xx=y
39、x=yy=ty=t26Visual FoxPro 6.0 程序设计.课件前页 后页 首页q本题程序代码如下:本题程序代码如下:*prog3.prgprog3.prginput x=to xinput x=to xinput y=to yinput y=to yif xyif xy t=x t=x x=y x=y y=t y=tendifendif?x=,x?x=,x?y=,y?y=,y27Visual FoxPro 6.0 程序设计.课件前页 后页 首页 (2)(2)双分支形式双分支形式q双分支格式:双分支格式:IF IF 1ELSEELSE 2 ENDIF ENDIFq语句执行时,根据条件表
40、达式的值选择执行两个语句块中语句执行时,根据条件表达式的值选择执行两个语句块中的一个。若条件表达式的值为真(的一个。若条件表达式的值为真(.T.T.),则执行),则执行IFIF后面后面的语句块的语句块1 1,然后执行,然后执行ENDIFENDIF后面的语句;若条件表达式后面的语句;若条件表达式的值为假(的值为假(.F.F.),则执行),则执行ELSEELSE后面的语句块后面的语句块2 2,然后执,然后执行行ENDIFENDIF后面的语句。其流程图如图后面的语句。其流程图如图6-106-10所示。所示。28Visual FoxPro 6.0 程序设计.课件前页 后页 首页 用双分支实现,其程序代
41、码如下:用双分支实现,其程序代码如下:if x=0 y=cos(x)+sqrt(x2+1)else y=log(x2)+x-10endif 也可用单分支实现,其程序代码如下:也可用单分支实现,其程序代码如下:y=cos(x)+sqrt(x2+1)if x0 y=log(x2)+x-10endif【例例6-4】计算分段函数:计算分段函数:29Visual FoxPro 6.0 程序设计.课件前页 后页 首页(3)IF(3)IF语句的嵌套语句的嵌套qIFIF语句的上述两种形式中的语句块可以包含任何合法的语句的上述两种形式中的语句块可以包含任何合法的VFPVFP语句,当然也可以包含另一条语句,当然也
42、可以包含另一条IFIF语句,这就构成了语句,这就构成了IFIF语句的嵌套,利用语句的嵌套,利用IFIF语句的嵌套可以实现多分支的选择语句的嵌套可以实现多分支的选择结构,结构,【例例6-56-5】从键盘上输入从键盘上输入3 3个数个数a a、b b、c c,求这,求这3 3个数的最大值个数的最大值并输出。并输出。q分析:假设分析:假设abab且且acac,则最大值肯定是,则最大值肯定是a a,若这个条件不,若这个条件不满足,而所满足的条件是满足,而所满足的条件是baba且且bcbc,则最大值肯定是,则最大值肯定是b b,否则最大值肯定是否则最大值肯定是c c。30Visual FoxPro 6.
43、0 程序设计.课件前页 后页 首页p 程序代码如下:程序代码如下:*prog5.prgprog5.prginput input 请输入请输入a a的值的值 to a to ainput input 请输入请输入b b的值的值 to b to binput input 请输入请输入c c的值的值 to c to cif ab and acif ab and ac t=a t=aelseelse if ba and bc if ba and bc t=b t=b else else t=c t=c endif endifendifendif?三个数中的最大值是:三个数中的最大值是:,t,t31Vi
44、sual FoxPro 6.0 程序设计.课件前页 后页 首页2.DO CASE2.DO CASE语句语句q该语句的格式如下:该语句的格式如下:DO CASE DO CASE CASE CASE 1 1 CASE CASE 2 2 CASE CASE n nOTHERWISEOTHERWISE n+1 ENDCASE ENDCASEq语句执行时,依次判断条件表达式的值,一旦某一条件满足,则执行语句执行时,依次判断条件表达式的值,一旦某一条件满足,则执行相应语句块;如果所有条件表达式的值都为假,若无相应语句块;如果所有条件表达式的值都为假,若无OTHERWISEOTHERWISE子句,子句,则不
45、执行任何语句,若有则不执行任何语句,若有OTHERWISEOTHERWISE子句,则执行子句,则执行OTHERWISEOTHERWISE后面的后面的语句块语句块n+1n+1,无论执行哪一个语句块后,都不再判断下面的条件,而,无论执行哪一个语句块后,都不再判断下面的条件,而转去执行转去执行ENDCASEENDCASE后面的语句,其流程图如图后面的语句,其流程图如图6-116-11所示所示 32Visual FoxPro 6.0 程序设计.课件前页 后页 首页【例例6-6】某百货公司打折促销的某百货公司打折促销的优惠方法:每位顾客一次性购物:优惠方法:每位顾客一次性购物:500元以上者,按九五折优
46、惠;元以上者,按九五折优惠;1000元以上者,按九折优惠;元以上者,按九折优惠;2000元以上者,按八五折优惠;元以上者,按八五折优惠;5000元以上者,按八折优惠。元以上者,按八折优惠。编写程序,实现输入购物款数,编写程序,实现输入购物款数,计算并输出优惠后的价格。计算并输出优惠后的价格。程序代码如下:程序代码如下:*prog6.prginput 请输入原价:请输入原价:to xdo casecase x500y=xcase x1000 y=x*0.95case x2000y=x*0.9case x5000y=x*0.85otherwisey=x*0.8endcase?优惠后的价格是:优惠后
47、的价格是:,y33Visual FoxPro 6.0 程序设计.课件前页 后页 首页6.2.3 循环结构qVFPVFP提供了提供了3 3种循环语句:当型循环种循环语句:当型循环DO WHILEDO WHILE语句、计数型语句、计数型循环循环FORFOR语句和扫描型循环语句和扫描型循环SCANSCAN语句。语句。1.1.当型循环当型循环DO WHILEDO WHILE语句语句q该语句的格式如下:该语句的格式如下:DO WHILE DO WHILE EXITEXITLOOPLOOP ENDDO ENDDO34Visual FoxPro 6.0 程序设计.课件前页 后页 首页【例例6-7】编制程序求
48、编制程序求1+2+3+100的和,并输出结果。的和,并输出结果。分析:实现自然数的累加,应该设置一个累加变量和一个分析:实现自然数的累加,应该设置一个累加变量和一个计数变量,累加变量的初值为计数变量,累加变量的初值为0,计数变量从,计数变量从1开始逐次累加开始逐次累加到累加变量中,每累加一次,计数变量加到累加变量中,每累加一次,计数变量加1,直到计数变量,直到计数变量为为100为止。为止。程序代码如下:程序代码如下:*prog7.prgs=0i=1do while i20n=n+1 endif skip&修改记录指针,指向下一记录修改记录指针,指向下一记录,若没该句,将造成死循环若没该句,将造
49、成死循环enddouse?年龄大于年龄大于20岁的人数有:岁的人数有:,n 36Visual FoxPro 6.0 程序设计.课件前页 后页 首页q该语句的格式如下:该语句的格式如下:FOR FOR=TO TO STEP STEP EXIT EXIT LOOP LOOPENDFOR|NEXTENDFOR|NEXTq语句执行时,首先给循环变量赋予初值,与终语句执行时,首先给循环变量赋予初值,与终值比较,若超过终值,则循环体一次也不执行,值比较,若超过终值,则循环体一次也不执行,直接转去执行直接转去执行ENDFOR|NEXTENDFOR|NEXT后面的语句;若不超后面的语句;若不超过终值,则依次执
50、行循环体中的语句,遇到过终值,则依次执行循环体中的语句,遇到ENDFORENDFORNEXTNEXT语句,将循环变量加上步长后,语句,将循环变量加上步长后,程序转回到循环初始语句,继续判断,流程图程序转回到循环初始语句,继续判断,流程图如图如图6-136-13所示。所示。q步长可正可负步长可正可负.步长为步长为1 1时,可省略时,可省略STEPSTEP子句。子句。q当循环次数事先已知时,通常使用计数型循环,当循环次数事先已知时,通常使用计数型循环,循环次数可以根据下式计算:循环次数可以根据下式计算:INT(ABS(INT(ABS(终值终值-初值初值)/)/步长步长)+1)+12.2.计数型循环