《工信版(中职)数据库应用基础——Visual FoxPro模块6教学课件.ppt》由会员分享,可在线阅读,更多相关《工信版(中职)数据库应用基础——Visual FoxPro模块6教学课件.ppt(64页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、YCF(中职)数据库应用基础Visual FoxPro模块6教学课件模块模块6 结构化程序设计结构化程序设计单元单元1 程序文件的建立和运行程序文件的建立和运行单元单元2 程序设计中的常用语句程序设计中的常用语句单元单元3 程序的控制结构程序的控制结构单元单元4 过程与过程调用过程与过程调用单元单元1 程序文件的建立和运行程序文件的建立和运行程序文件也称为命令文件或程序。程序是能够完成一定任务程序文件也称为命令文件或程序。程序是能够完成一定任务的命令的有序集合,它是由一系列的命令的有序集合,它是由一系列Visual FoxPro的命令组的命令组成的文本文件,其扩展名为成的文本文件,其扩展名为.
2、prg。任务任务1.1程序文件的建立、运行和调试程序文件的建立、运行和调试1.1.1程序文件的建立程序文件的建立程序文件可以使用任何文本编辑软件来创建或编辑。在程序文件可以使用任何文本编辑软件来创建或编辑。在Visual FoxPro中创建程序文件的方法有以下中创建程序文件的方法有以下3种。种。在在“项目管理器项目管理器”对话框中选择对话框中选择“代码代码”选项卡的选项卡的“程序程序”选项,然后单击选项,然后单击“新建新建”按钮,在弹出的对话框中,输入按钮,在弹出的对话框中,输入所要建立的程序代码,如所要建立的程序代码,如图图6-1所示。所示。选择选择“文件文件”一一“新建新建”命令,打开命令
3、,打开“新建新建”对话框,在对话框,在其中选择其中选择“程序程序”文件类型,然后单击文件类型,然后单击“新建文件新建文件”按钮,按钮,在弹出的对话框中,输入所要建立的程序代码。在弹出的对话框中,输入所要建立的程序代码。下一页返回单元单元1 程序文件的建立和运行程序文件的建立和运行在命令窗口中执行命令在命令窗口中执行命令:MODIFY COMMAND在弹出的程序窗口中,输入所要建立的程序代码。例如,要在弹出的程序窗口中,输入所要建立的程序代码。例如,要建立一个名为建立一个名为pjz(求平均值求平均值)的程序,可在命令窗口输入命的程序,可在命令窗口输入命令令:MODIFY COMMAND pjz此
4、时主窗口便打开一个标题为此时主窗口便打开一个标题为pjz.prg的文本编辑对话框,的文本编辑对话框,在该对话框中输入相应程序代码即可,如在该对话框中输入相应程序代码即可,如图图6-2所示。所示。程序文件的代码编写完后,必须进行保存。保存程序文件的程序文件的代码编写完后,必须进行保存。保存程序文件的方法是方法是:按按Ctrl+W组合键或按组合键或按Ctrl+S组合键组合键(相当于执行相当于执行“文件文件”菜单中的菜单中的“保存保存”命令命令)。前者存盘并退出编辑,后者。前者存盘并退出编辑,后者只存盘但不退出编辑对话框。只存盘但不退出编辑对话框。上一页 下一页返回单元单元1 程序文件的建立和运行程
5、序文件的建立和运行1.1.2程序文件的修改程序文件的修改程序文件被保存以后,若要对其中的内容进行修改,可以将程序文件被保存以后,若要对其中的内容进行修改,可以将其重新打开。同样有其重新打开。同样有3种方法可以打开程序文件并进行修改。种方法可以打开程序文件并进行修改。若程序包含在一个项目中,则在项目管理器中选中它,单若程序包含在一个项目中,则在项目管理器中选中它,单击击“修改修改”按钮。按钮。在在“文件文件”菜单中选择菜单中选择“打开打开”命令,在弹出的对话框中命令,在弹出的对话框中选择选择“程序程序”文件类型文件类型(*.prg、*.spr、*.mpr、*.qpr),然,然后在文件列表中选中要
6、修改的程序后单击后在文件列表中选中要修改的程序后单击“确定确定”按钮。按钮。使用命令使用命令:MODIFY COMMAND修改完毕,需要重新保存,按修改完毕,需要重新保存,按Ctrl+W组合键。若要放弃所组合键。若要放弃所做的修改,则按做的修改,则按Esc键。键。上一页 下一页返回单元单元1 程序文件的建立和运行程序文件的建立和运行1.1.3程序文件的运行程序文件的运行程序文件创建之后便可运行了。运行程序的方法有以下程序文件创建之后便可运行了。运行程序的方法有以下3种。种。若程序包含在一个项目中,则在项目管理器中选中它,单若程序包含在一个项目中,则在项目管理器中选中它,单击击“运行运行”按钮。
7、按钮。在在“程序程序”菜单中选择菜单中选择“运行运行”命令,从文件列表中选择命令,从文件列表中选择要运行的文件,单击要运行的文件,单击“运行运行”按钮。按钮。在命令窗口中使用命令在命令窗口中使用命令:DO所谓运行程序,就是依次执行程序中的命令。所谓运行程序,就是依次执行程序中的命令。1.1.4程序的调试程序的调试程序调试的目的就是检查并纠正程序中的错误,以保证程序程序调试的目的就是检查并纠正程序中的错误,以保证程序的可靠运行。调试通常分的可靠运行。调试通常分3步进行步进行:检查程序是否存在错误一检查程序是否存在错误一确定出错的位置一纠正错误。确定出错的位置一纠正错误。上一页 下一页返回单元单元
8、1 程序文件的建立和运行程序文件的建立和运行程序中常见错误包括程序中常见错误包括:语法错误,如命令字拼写错、命令格式语法错误,如命令字拼写错、命令格式错、使用未定义的变量、数据类型不匹配、操作的文件不存错、使用未定义的变量、数据类型不匹配、操作的文件不存在、超出系统允许的范围等在、超出系统允许的范围等;逻辑错误,逻辑错误指程序设计逻辑错误,逻辑错误指程序设计的差错,如计算或处理逻辑有错。的差错,如计算或处理逻辑有错。Visual FoxPro提供了一个称为调试器的程序调试工具,打提供了一个称为调试器的程序调试工具,打开调试器窗口的方法有两种。开调试器窗口的方法有两种。选择选择Visual Fo
9、xPro“工具工具”菜单中的菜单中的“调试器调试器”命令。命令。在命令窗口输入在命令窗口输入DEBU命令。命令。用户可通过调试设置、执行程序和修改程序来完成程序调试。用户可通过调试设置、执行程序和修改程序来完成程序调试。调试设置包括为程序设置断点,设置监视表达式,设置要显调试设置包括为程序设置断点,设置监视表达式,设置要显示的变量、数组等示的变量、数组等;执行程序有多种方式,用于观察各种设置执行程序有多种方式,用于观察各种设置的动态执行结果的动态执行结果;如果发现错误,允许当场切换为程序修改方如果发现错误,允许当场切换为程序修改方式。式。上一页 下一页返回单元单元1 程序文件的建立和运行程序文
10、件的建立和运行任务任务1.2程序的书写规则和编辑技巧程序的书写规则和编辑技巧2.1程序的书写规则程序的书写规则正确的程序书写,会使程序具有可读性,将给程序的修改带正确的程序书写,会使程序具有可读性,将给程序的修改带来方便。来方便。首先,程序中的每条命令都以首先,程序中的每条命令都以Enter键结束,一行只能写一键结束,一行只能写一条语句或命令。若命令太长需分行书写,应在要续行的末尾条语句或命令。若命令太长需分行书写,应在要续行的末尾键入续行符键入续行符“;”,然后按,然后按Enter键。键。另外,为了提高程序的可读性,可在程序中插入注释。以符另外,为了提高程序的可读性,可在程序中插入注释。以符
11、号号“*”或命令字或命令字“NOTE”开始的注释行可以出现在程序的任开始的注释行可以出现在程序的任何地方,它是一条非执行语句行,仅在编辑窗口中显示,程何地方,它是一条非执行语句行,仅在编辑窗口中显示,程序执行时,不会对其进行解释执行。如果要在命令或语句行序执行时,不会对其进行解释执行。如果要在命令或语句行后面添加注释,则以符号后面添加注释,则以符号“&”开头添加注释。开头添加注释。例如,例如,*本程序用于计算本程序用于计算1100的和。的和。SUM=1&给求和变量赋初值给求和变量赋初值注意注意:不能在命令语句行续行的分号后面加入不能在命令语句行续行的分号后面加入&和注释和注释上一页 下一页返回
12、单元单元1 程序文件的建立和运行程序文件的建立和运行1.2.2命令窗口的使用技巧命令窗口的使用技巧在在“命令命令”窗口中执行命令时,经常重复执行以前用过的命窗口中执行命令时,经常重复执行以前用过的命令。这时,不需要重新键入命令,只需将光标移到前面命令令。这时,不需要重新键入命令,只需将光标移到前面命令出现的位置,按出现的位置,按Enter键即可重新执行该命令。如果需要修键即可重新执行该命令。如果需要修改该命令,可以用一般的编辑技巧对命令进行修改后再按改该命令,可以用一般的编辑技巧对命令进行修改后再按Enter键。若要执行前面几条连续的命令行,则选定这几条键。若要执行前面几条连续的命令行,则选定
13、这几条命令,然后按命令,然后按Enter键即可。键即可。1.2.3程序文件中的使用技巧程序文件中的使用技巧程序编写好了,如果想只运行程序文件中的部分语句,只需程序编写好了,如果想只运行程序文件中的部分语句,只需选定这些行并单击鼠标右键,执行选定这些行并单击鼠标右键,执行“运行所选区域运行所选区域”命令。命令。上一页 下一页返回单元单元1 程序文件的建立和运行程序文件的建立和运行1.2.4程序代码中的颜色程序代码中的颜色程序代码在代码窗口中会以不同的颜色出现。系统默认的颜程序代码在代码窗口中会以不同的颜色出现。系统默认的颜色设定与含义为色设定与含义为:绿色代码代表注释,蓝色代码代表命令关键绿色代
14、码代表注释,蓝色代码代表命令关键字,黑色代码代表非命令关键字或用户使用的字符,红色代字,黑色代码代表非命令关键字或用户使用的字符,红色代码则表明有语法错误,以提醒用户改正。执行码则表明有语法错误,以提醒用户改正。执行“工具工具”一一“选项选项”一一“语法着色语法着色”命令,可以改变这些默认值。命令,可以改变这些默认值。1.2.5过程与函数列表过程与函数列表在程序编辑窗口中右击鼠标后,执行在程序编辑窗口中右击鼠标后,执行“过程过程”一一“函数列表函数列表”命令,可以显示当前文件中所采用的过程或函数,从中可命令,可以显示当前文件中所采用的过程或函数,从中可快速定位到所需之处。快速定位到所需之处。上
15、一页返回单元单元2 程序设计中的常用语句程序设计中的常用语句1.?输出命令输出命令功能功能:计算表达式的值,并输出计算结果。计算表达式的值,并输出计算结果。语法语法:?Expression1ATnColumn,Expression2说明说明:?Expressionl:计算表达式计算表达式Expression1的值,输出一的值,输出一个回车和换行符,再将计算结果输出到个回车和换行符,再将计算结果输出到Visual FoxPro主窗主窗口。若省略表达式,则显示或打印一个空行。当包含多个表口。若省略表达式,则显示或打印一个空行。当包含多个表达式时,在表达式的结果之间插入一个空格。达式时,在表达式的结
16、果之间插入一个空格。?Expression1:计算表达式:计算表达式Expression1的值,并的值,并把技术结果输出到把技术结果输出到Visual FoxPro主窗口。主窗口。AT nColumn:指定显示结果的列编号,即屏幕上绝对列指定显示结果的列编号,即屏幕上绝对列坐标。坐标。下一页返回单元单元2 程序设计中的常用语句程序设计中的常用语句该命令可以在指定的屏幕或窗口的列坐标处显示表达式的值。该命令可以在指定的屏幕或窗口的列坐标处显示表达式的值。缺省显示坐标时,缺省显示坐标时,?用于当前光标的下一行行首显示,用于当前光标的下一行行首显示,?用用于在当前光标处显示。于在当前光标处显示。2.
17、WAIT输入命令输入命令功能功能:显示信息并暂停显示信息并暂停Visual FoxPro的执行,按某个键或的执行,按某个键或单击鼠标后继续执行。单击鼠标后继续执行。语法语法:WAIT cMessageText TO VarName WINDOWATnRow,nColumn TIMEOUTnSeconds说明说明:cMessageText指定要显示的提示信息。若缺省该参数,指定要显示的提示信息。若缺省该参数,则则Visual FoxPro显示默认的信息显示默认的信息:按任一键继续。按任一键继续。TO VarName将按下的键保存到变量或数组元素中。它将按下的键保存到变量或数组元素中。它专用于接受
18、单个字符,且输入单个字符后不需按专用于接受单个字符,且输入单个字符后不需按Enter键。键。上一页 下一页返回单元单元2 程序设计中的常用语句程序设计中的常用语句WINDOWATnRow,nColumn按指定坐标显示用户按指定坐标显示用户提示信息,按提示信息,按Ctrl键或键或Shift键可以暂时隐藏该窗口。键可以暂时隐藏该窗口。TIMEOUTnSeconds指定在中断指定在中断WAIT命令之前,等待键命令之前,等待键盘或鼠标输入的秒数。盘或鼠标输入的秒数。执行该命令,可以暂停程序的运行,并在屏幕上或指定位置执行该命令,可以暂停程序的运行,并在屏幕上或指定位置的提示信息窗口中显示提示信息。如果
19、给定了等待时间,一的提示信息窗口中显示提示信息。如果给定了等待时间,一旦未击键而超时,将立即结束等待,去执行其后的命令。旦未击键而超时,将立即结束等待,去执行其后的命令。例例6-1用用WAIT命令在信息提示窗口中显示命令在信息提示窗口中显示:谢谢使用谢谢使用Visual FoxPro。WAIT“正在执行中,请稍候正在执行中,请稍候”执行该命令后,屏幕右上角如执行该命令后,屏幕右上角如图图6-3所示。所示。3.格式输入格式输入/输出命令输出命令功能功能:在指定的行列位置显示或打印输出结果。在指定的行列位置显示或打印输出结果。语法语法:SAYExpression1GETMemvarDEFAULT
20、Expression2上一页 下一页返回单元单元2 程序设计中的常用语句程序设计中的常用语句说明说明:row,column:指定光标放置在屏幕上的位置。指定光标放置在屏幕上的位置。SAY Expression1:读取表达式读取表达式Expressionl的值,并的值,并在在row,column指定的坐标位置显示。指定的坐标位置显示。GET Metnvar GET子句中的变量必须具有初值或用子句中的变量必须具有初值或用DEFAULT子句的子句的Expression2指定初值。指定初值。GET子句的变子句的变量必须用量必须用READ命令来激活。在多个命令来激活。在多个GET命令之后,只要使命令之后
21、,只要使用一个用一个READ命令即可,如果只使用命令即可,如果只使用GET命令而不加入命令而不加入READ命令,则不能由键盘输入任何值。因为命令,则不能由键盘输入任何值。因为.GET命令之命令之后必须有后必须有READ,才能读取用户的输入。,才能读取用户的输入。4.CLEAR清屏命令清屏命令功能功能:清除屏幕或窗口中显示的内容。清除屏幕或窗口中显示的内容。语法语法:CLEAR上一页 下一页返回单元单元2 程序设计中的常用语句程序设计中的常用语句5.ACCEP下内存变量接收命令下内存变量接收命令功能功能:从键盘输入字符给内存变量。从键盘输入字符给内存变量。语法语法:ACCEPT cPromPtT
22、ext TO MemVarName说明说明:cPromptText1:指定提示信息。指定提示信息。Mem VarName:指定接收所击键值的内存变量。指定接收所击键值的内存变量。执行该命令时,屏幕上显示由执行该命令时,屏幕上显示由cPromptText给定的提示信给定的提示信息,然后等待用户从键盘上输入数据,并将其值赋给内存变息,然后等待用户从键盘上输入数据,并将其值赋给内存变量。量。本命令可将字符直接从键盘输入内存变量本命令可将字符直接从键盘输入内存变量MemVarName,无须使用分界符。输入的数据作为字符串存储起来。,无须使用分界符。输入的数据作为字符串存储起来。上一页 下一页返回单元单
23、元2 程序设计中的常用语句程序设计中的常用语句例例6-2用用ACCEPT命令编写程序实例。命令编写程序实例。CLEARUSE新生入学信息新生入学信息ACCEPT“请输入待查学生的姓名请输入待查学生的姓名:”TO XM LOCATE FOR姓名姓名=XMDISPLAY编号编号;姓名姓名;入学成绩入学成绩;专业专业USERETURN这里我们输入学生的名字为这里我们输入学生的名字为“刘中平刘中平”,运行程序结果如下。,运行程序结果如下。上一页 下一页返回单元单元2 程序设计中的常用语句程序设计中的常用语句6.INPUT内存变量输入命令内存变量输入命令功能功能:从键盘输入数据给内存变量。从键盘输入数据
24、给内存变量。语法语法:INPUTcPromPtTextTO Mem VarName说明说明:参数含义同参数含义同ACCEPT该命令与该命令与ACCEPT命令都是接收键盘数据赋给内存变量,执命令都是接收键盘数据赋给内存变量,执行时都会在屏幕上显示提示信息,提示用户应该输入什么数行时都会在屏幕上显示提示信息,提示用户应该输入什么数据不同之处是据不同之处是:INPUT命令可以接收任何有效的表达式,表达命令可以接收任何有效的表达式,表达式中可以包含函数、字段变量、内存变量和常数。式中可以包含函数、字段变量、内存变量和常数。当输入字符串常量时,当输入字符串常量时,INPUT命令要求用单引号、双引号或命令
25、要求用单引号、双引号或方括号括起来,内存变量的类型也取决于输入数据的类型方括号括起来,内存变量的类型也取决于输入数据的类型;上一页 下一页返回单元单元2 程序设计中的常用语句程序设计中的常用语句例例6-3用用INPUT命令编写程序实例命令编写程序实例CLEARINPUT“请输入圆的半径请输入圆的半径:”TORS=3.1415926*R*R?“圆的面积为圆的面积为:”,S这里我们输入半径为这里我们输入半径为3.4,运行程序结果如下,运行程序结果如下RETURN上一页返回单元单元3 程序的控制结构程序的控制结构Visual FoxPro的程序与其他高级语言类似,其基本控制结的程序与其他高级语言类似
26、,其基本控制结构包括构包括:顺序结构、分支顺序结构、分支(选择选择)结构和循环结构。结构和循环结构。任务任务3.1顺序结构顺序结构顺序结构是最简单的程序结构,它只能顺序地逐条执行程序顺序结构是最简单的程序结构,它只能顺序地逐条执行程序中的命令。当一条命令执行完后就会自动开始下一条命令的中的命令。当一条命令执行完后就会自动开始下一条命令的执行,每条命令按顺序都要执行一次,且只执行一次。本模执行,每条命令按顺序都要执行一次,且只执行一次。本模块前面所举例子都是顺序结构的例子。块前面所举例子都是顺序结构的例子。任务任务3.2介支结构介支结构分支结构是在程序执行时,根据不同的条件,选择执行不同分支结构
27、是在程序执行时,根据不同的条件,选择执行不同的程序语句,用来解决有选择的诸多问题。分支结构是的程序语句,用来解决有选择的诸多问题。分支结构是Visual FoxPro系统程序的基本结构之一,分支语句是非常系统程序的基本结构之一,分支语句是非常重要的语句,其基本形式有重要的语句,其基本形式有3种。种。3.2.1单向分支单向分支语句,即根据条件表达式的值,决单向分支单向分支语句,即根据条件表达式的值,决定某一操作是否执行。定某一操作是否执行。下一页返回单元单元3 程序的控制结构程序的控制结构语句格式语句格式:IfEndIf语句功能语句功能:首先计算首先计算的值,当的值,当的值为真时,执行的值为真时
28、,执行;否则,执行否则,执行EndIf后面的后面的命令命令单向分支语句的流程如单向分支语句的流程如图图6-4所示。所示。上一页 下一页返回单元单元3 程序的控制结构程序的控制结构例例6-4修改修改“专业特长专业特长”表中的数据,把编号为表中的数据,把编号为“yy101”的专业由的专业由“英语英语”改为改为“数学数学”。编写的程序代码如下编写的程序代码如下Use新生入学信息新生入学信息.dbf ExclusiveLocate All For编号编号=“YY101”If专业专业=“英语英语”Replace专业专业With“数学数学”EndIfBrowse Last程序的运行结果如程序的运行结果如图
29、图6-5所示。所示。上一页 下一页返回单元单元3 程序的控制结构程序的控制结构3.2.2双向分支双向分支双向分支语句,即根据条件表达式的值,选择两个操作中的双向分支语句,即根据条件表达式的值,选择两个操作中的一个来执行。一个来执行。语句格式语句格式:IfElseEndIf语句功能语句功能:首先计算首先计算的值,当的值,当的值为真时,执行的值为真时,执行中的命令中的命令;否则,执行否则,执行中的命令中的命令;执行完执行完或或后都将执行后都将执行EndIf后面的第一条命令。后面的第一条命令。双向分支语句的流程如双向分支语句的流程如图图6-6所示。所示。上一页 下一页返回单元单元3 程序的控制结构程
30、序的控制结构例例6-5在专门人才档案在专门人才档案“人才档案人才档案”表中,查找姓名为表中,查找姓名为“林立报林立报”的记录,如果找到把该记录加上删除标记,没有找的记录,如果找到把该记录加上删除标记,没有找到则显示提示信息到则显示提示信息“查无此人查无此人”。编写的程序代码如下。编写的程序代码如下。ClearUse新生入学信息新生入学信息.dbf ExclusiveLocate All For姓名姓名=“林立报林立报,If.not.eof()De1eteElse2,30Say“查无此人查无此人”EndIfBrowse Last程序运行结果如程序运行结果如图图6-7所示。所示。上一页 下一页返回
31、单元单元3 程序的控制结构程序的控制结构从图从图6-7中可以看出,姓名为中可以看出,姓名为“林立报林立报”的记录已加上删除的记录已加上删除标记标记;如果没有找到林立报,会在屏幕的第如果没有找到林立报,会在屏幕的第2行、第行、第30列显示列显示提示信息提示信息“查无此人查无此人”。3.2.3多向分支多向分支多向分支语句,即根据多个条件表达式的值,选择多个操作多向分支语句,即根据多个条件表达式的值,选择多个操作中的一个对应执行。语句格式中的一个对应执行。语句格式:上一页 下一页返回单元单元3 程序的控制结构程序的控制结构DoCaseCase Case Case Otherwise EndCase上
32、一页 下一页返回单元单元3 程序的控制结构程序的控制结构语句功能语句功能:该语句根据给出的该语句根据给出的n个个的值,选择的值,选择n+1个个中的一个执行。当所有中的一个执行。当所有CASE中的中的的值都是假时,如果有的值都是假时,如果有Otherwise项,则执行项,则执行,再执行,再执行EndCase后面的第一条命令后面的第一条命令;否则,直接执行否则,直接执行EndCase后面的第一条命令。后面的第一条命令。多向分支语句的流程如多向分支语句的流程如图图6-8所示。所示。任务任务3.3循环结构循环结构循环结构用于实现有规律性的重复操作,控制程序段的反复循环结构用于实现有规律性的重复操作,控
33、制程序段的反复执行,直到满足某种条件为止。具有这种控制循环机制的程执行,直到满足某种条件为止。具有这种控制循环机制的程序就称为循环结构程序。序就称为循环结构程序。Visual FoxPro。支持循环结构的。支持循环结构的语句有语句有:DO WHILE.ENDDO,FOR.ENDFOR和和SCAN.ENDSCAN。上一页 下一页返回单元单元3 程序的控制结构程序的控制结构如果要改变循环语句的执行顺序,可以用如果要改变循环语句的执行顺序,可以用EXIT和和LOOP命令。命令。EXIT命令用于结束语句的执行,退出循环体,转去执行命令用于结束语句的执行,退出循环体,转去执行ENDDO后面的语句后面的语
34、句;LOOP命令用于结束循环体的本次执行,命令用于结束循环体的本次执行,重新开始下一次循环。重新开始下一次循环。3.3.1DO WHILEENDDO功能功能:在一个条件循环里执行一组命令。在一个条件循环里执行一组命令。语法语法:DOWHILE 1Expression Commands LOOP EXIT ENDDO上一页 下一页返回单元单元3 程序的控制结构程序的控制结构说明说明:根据指定的逻辑表达式根据指定的逻辑表达式1Expression,控制循环中命,控制循环中命令的执行次数。如果条件为真令的执行次数。如果条件为真(.T.),则执行,则执行DO WHILE与与ENDDO之间的命令序列。当
35、执行到之间的命令序列。当执行到ENDDO时,再返回到时,再返回到DOWHILE,再次判断循环条件是否为真,以确定是否再次,再次判断循环条件是否为真,以确定是否再次执行循环体,只有当执行循环体,只有当DOWHILE的条件为假的条件为假(.F.)时,才结时,才结束循环。束循环。如果第如果第1次判断条件时,条件为假,则循环体一次都不执行。次判断条件时,条件为假,则循环体一次都不执行。上一页 下一页返回单元单元3 程序的控制结构程序的控制结构例例6-6计算计算1100的平方和。的平方和。上一页 下一页返回单元单元3 程序的控制结构程序的控制结构例例6-7计算计算110的阶乘的阶乘(10!)。上一页 下
36、一页返回单元单元3 程序的控制结构程序的控制结构3.3.2FOR.ENDFOR功能功能:按指定的次数重复执行一组命令。按指定的次数重复执行一组命令。说明说明:Var:循环控制变量。循环控制变量。nInilialValue:指定循环次数控制变量初值。指定循环次数控制变量初值。nFinalValue:指定循环次数控制变量终值。指定循环次数控制变量终值。上一页 下一页返回单元单元3 程序的控制结构程序的控制结构STEP nIneretnent:指定循环次数控制变量增量,其值指定循环次数控制变量增量,其值可正可负。当缺省此项时,增量值默认为可正可负。当缺省此项时,增量值默认为1。Commands:循环
37、体命令组。循环体命令组。ENDFOR/NEXT:循环终止语句。循环终止语句。例例6-8输出九九乘法表的矩阵形式。输出九九乘法表的矩阵形式。上一页 下一页返回单元单元3 程序的控制结构程序的控制结构该程序的运行结果为该程序的运行结果为:上一页 下一页返回单元单元3 程序的控制结构程序的控制结构3.3.3SCANENDSCAN功能功能:在当前选定表中移动记录指针,并对每一个满足指定条在当前选定表中移动记录指针,并对每一个满足指定条件的记录执行一组命令。件的记录执行一组命令。语法语法:SCANScopeFOR1Expression1WHILE1Expression2CommandsLOOPEXITE
38、NDSCAN说明说明:SCOPE:指定扫描记录的范围,只有范围之内的记录才能指定扫描记录的范围,只有范围之内的记录才能扫描到。扫描到。SCAN的默认范围是所有记录的默认范围是所有记录(ALL)。FOR1Expression1:指定记录的操作条件。指定记录的操作条件。上一页 下一页返回单元单元3 程序的控制结构程序的控制结构WHILE 1Expression2:指定记录的操作条件。指定记录的操作条件。Commands:指定要执行的指定要执行的Visual FoxPro命令。命令。ENDSCAN:标志标志SCAN过程的结束。过程的结束。该命令对当前表指定范围和满足条件的记录执行循环体语句,该命令对
39、当前表指定范围和满足条件的记录执行循环体语句,每执行一次循环,该命令自动将记录指针移到下一条满足指每执行一次循环,该命令自动将记录指针移到下一条满足指定条件的记录,并执行相应的命令组。当记录指针从头到尾定条件的记录,并执行相应的命令组。当记录指针从头到尾移动通过整个表时,移动通过整个表时,SCAN循环将对记录指针指向的每一个循环将对记录指针指向的每一个满足条件的记录执行一遍满足条件的记录执行一遍SCAN与与ENDSCAN之间的命令。之间的命令。上一页 下一页返回单元单元3 程序的控制结构程序的控制结构例例6-9J输出输出“新生入学信息新生入学信息.DBF”中所有女学生的姓名、中所有女学生的姓名
40、、性别、学号、入学成绩和专业。性别、学号、入学成绩和专业。clearUSE新生入学信息新生入学信息SCANFOR性别性别=女女DISPLAY编号,姓名,入学成绩,专业编号,姓名,入学成绩,专业ENDSCANUSERETURN上一页 下一页返回单元单元3 程序的控制结构程序的控制结构输出结果如下输出结果如下:上一页 下一页返回单元单元3 程序的控制结构程序的控制结构3.3.4三种循环的比较三种循环的比较若事先知道循环次数,可以使用若事先知道循环次数,可以使用DO WHILE或或FOR循环。循环。若事先不知道循环的次数,只知道在某一条件满足时结束若事先不知道循环的次数,只知道在某一条件满足时结束循
41、环,可以使用循环,可以使用DO WHILE循环。循环。DO WHILE循环和循环和FOR循环可以用于对表的循环处理,循环可以用于对表的循环处理,也可以用于其他循环处理,而也可以用于其他循环处理,而SCAN循环只用于对表的处理。循环只用于对表的处理。因为因为SCAN循环语句的功能是移动表内指针,所以不能处理循环语句的功能是移动表内指针,所以不能处理除了表之外的其他问题。除了表之外的其他问题。上一页返回单元单元4 过程与过程调用过程与过程调用任务任务4.1主程序和子程序主程序和子程序4.1.1主程序和子程序的概念主程序和子程序的概念子程序的建立方法与程序文件的方法相同,扩展名为子程序的建立方法与程
42、序文件的方法相同,扩展名为.prg。在许多应用程序中,有一些程序段需要反复执行多次,这些在许多应用程序中,有一些程序段需要反复执行多次,这些程序段不是集中在一个固定的位置上重复执行,而是分散在程序段不是集中在一个固定的位置上重复执行,而是分散在程序的许多位置上重复执行。通常将这样的程序段与嵌入它程序的许多位置上重复执行。通常将这样的程序段与嵌入它的程序分开,形成独立的程序序列,待使用时再调入程序中,的程序分开,形成独立的程序序列,待使用时再调入程序中,以实现不同位置上的重复操作。这样做增强了程序的可读性以实现不同位置上的重复操作。这样做增强了程序的可读性及模块化。一般情况下,把这种具有独立的功
43、能,并且可以及模块化。一般情况下,把这种具有独立的功能,并且可以被其他程序调用的程序序列称为过程,将调用过程的程序称被其他程序调用的程序序列称为过程,将调用过程的程序称为主程序。为主程序。下一页返回单元单元4 过程与过程调用过程与过程调用过程是由一个或多个命令、语句构成,以返回语句过程是由一个或多个命令、语句构成,以返回语句(Return)结束的独立程序段。使用过程时,通过过程名调用并执行。结束的独立程序段。使用过程时,通过过程名调用并执行。过程文件可以存储多个过程,调用执行一个过程文件后,就过程文件可以存储多个过程,调用执行一个过程文件后,就可以调用执行其中每个过程构成的程序段。过程文件是以
44、过可以调用执行其中每个过程构成的程序段。过程文件是以过程说明语句开头,以过程返回命令结束的多个程序段落的集程说明语句开头,以过程返回命令结束的多个程序段落的集合。合。4.1.2子程序的调用子程序的调用在某一程序中安排一条在某一程序中安排一条DO命令来运行一个独立存储的程序,命令来运行一个独立存储的程序,就是调用子程序。其语法格式如下就是调用子程序。其语法格式如下:DOWITH中的参数可以是任何合法的表达式,包括常量、中的参数可以是任何合法的表达式,包括常量、已赋值的变量或可计算的表达式等,各参数间用逗号间隔。已赋值的变量或可计算的表达式等,各参数间用逗号间隔。上一页 下一页返回单元单元4 过程
45、与过程调用过程与过程调用子程序的调用与返回主程序的过程如子程序的调用与返回主程序的过程如图图6-9所示。当主程序所示。当主程序执行到子程序调用语句时,立即转去执行子程序执行到子程序调用语句时,立即转去执行子程序;当在子程序当在子程序中遇到中遇到RETURN语句或遇到语句或遇到ENDPROC语句时,又转回主语句时,又转回主程序,执行程序,执行DO命令的下一条语句。命令的下一条语句。需要说明的是,主程序和子程序的概念是相对的,一个子程需要说明的是,主程序和子程序的概念是相对的,一个子程序还可以调用其他的程序,即程序的嵌套调用。程序的嵌套序还可以调用其他的程序,即程序的嵌套调用。程序的嵌套调用如调用
46、如图图6-10所示。所示。4.1.3子程序返回语句子程序返回语句语法格式如下语法格式如下:RETURNTO MASTERRETURN称为返回语句,即当程序执行该语句时,返回到其称为返回语句,即当程序执行该语句时,返回到其上级程序。语句上级程序。语句RETURN TO MASTER在过程嵌套调用时在过程嵌套调用时使用,表示返回到最高级调用者。使用,表示返回到最高级调用者。上一页 下一页返回单元单元4 过程与过程调用过程与过程调用例例6-10调用两个子程序调用两个子程序sub1.PRG和和sub2.PRG。上一页 下一页返回单元单元4 过程与过程调用过程与过程调用任务任务4.2过程及过程文件过程及
47、过程文件子程序是完成某一功能的程序,它以独立的文件形式子程序是完成某一功能的程序,它以独立的文件形式(.prg)存储在磁盘中。主程序需要的时候可以多次调用它,每调用存储在磁盘中。主程序需要的时候可以多次调用它,每调用一次子程序就要访问磁盘一次,如果要调用多个子程序,在一次子程序就要访问磁盘一次,如果要调用多个子程序,在内存中打开和管理的文件多了,就增加了读磁盘的时间和内内存中打开和管理的文件多了,就增加了读磁盘的时间和内存管理的难度,从而降低了系统的运行效率。存管理的难度,从而降低了系统的运行效率。解决的方法是解决的方法是:把每一个子程序作为过程文件中的一个把每一个子程序作为过程文件中的一个“
48、过程过程”,整个过程文件是磁盘中的一个文件,进行存储。当打开,整个过程文件是磁盘中的一个文件,进行存储。当打开过程文件时,过程文件中的所有过程都调入内存,主程序可过程文件时,过程文件中的所有过程都调入内存,主程序可以任意调用其中的过程以任意调用其中的过程(子程序子程序)。但从打开文件的个数来说,。但从打开文件的个数来说,只打开了一个过程文件。只打开了一个过程文件。上一页 下一页返回单元单元4 过程与过程调用过程与过程调用4.2.1过程文件的建立过程文件的建立过程文件是过程的集合,一个过程文件中可包含若干个过程过程文件是过程的集合,一个过程文件中可包含若干个过程或自定义函数。在或自定义函数。在V
49、isual FoxPro中,过程文件的建立方法中,过程文件的建立方法与一般程序相同,可以用与一般程序相同,可以用MODIFYCOMMAND命令、菜单命令、菜单方式或项目管理器等多种方式操作,扩展名为方式或项目管理器等多种方式操作,扩展名为.prg。4.2.2过程的定义过程的定义过程定义的语法格式如下过程定义的语法格式如下:PROCEDUREPARAMETERSRETURNTO MASTERENDPROC上一页 下一页返回单元单元4 过程与过程调用过程与过程调用PROCEDURE是过程的第一条语句,它标志着过程的始是过程的第一条语句,它标志着过程的始;PARAMETERS用于定义形式参数,是可选
50、项用于定义形式参数,是可选项;命令命令语句序列则构成了一个过程体。在该过程的最后一条语句后,语句序列则构成了一个过程体。在该过程的最后一条语句后,自动执行一条隐含自动执行一条隐含RETURN命令,也可以在过程最后一行中命令,也可以在过程最后一行中包含一条包含一条RETURN命令。命令。注意注意:可以将过程放在单独的过程文件中,也可放在程序的结尾可以将过程放在单独的过程文件中,也可放在程序的结尾过程名和过程文件是两个不同的概念,过程名是一个没有过程名和过程文件是两个不同的概念,过程名是一个没有扩展名的过程名称,而过程文件可由多个过程构成扩展名的过程名称,而过程文件可由多个过程构成4.2.3过程的