第八章 程序设计518.ppt

上传人:qwe****56 文档编号:70023515 上传时间:2023-01-14 格式:PPT 页数:128 大小:1.17MB
返回 下载 相关 举报
第八章 程序设计518.ppt_第1页
第1页 / 共128页
第八章 程序设计518.ppt_第2页
第2页 / 共128页
点击查看更多>>
资源描述

《第八章 程序设计518.ppt》由会员分享,可在线阅读,更多相关《第八章 程序设计518.ppt(128页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、第八章第八章VFPVFP程序设计程序设计1目录上页下页退出Visual FoxProVisual FoxPro的工作方式的工作方式 Visual FoxProVisual FoxPro系统提供有三种工作方式:系统提供有三种工作方式:单命令方式、单命令方式、菜单方式、菜单方式、程序文件方式。程序文件方式。2目录上页下页退出1.单命令方式单命令方式:即输入一条命令,完成一个单命令方式:即输入一条命令,完成一个操作的工作方式。操作的工作方式。Visual FoxProVisual FoxPro单命令方式单命令方式是利用是利用Command Command 窗口来实现的。窗口来实现的。用户通过用户通过

2、Command Command 窗口输入命令,窗口输入命令,回车回车执执行操作。行操作。3目录上页下页退出2.菜单方式所谓菜单方式,即通过打开不同的菜单选所谓菜单方式,即通过打开不同的菜单选项并完成不同的操作。项并完成不同的操作。4目录上页下页退出3.程序文件方式程序文件(简称程序)也叫做命令文件。程序文件(简称程序)也叫做命令文件。通过程序文件编辑工具,把相应的命令,通过程序文件编辑工具,把相应的命令,集中在一个以(集中在一个以(.PRGPRG)为扩展名的程序文为扩展名的程序文件中,然后再通过菜单方式或命令方式运件中,然后再通过菜单方式或命令方式运行该程序文件。行该程序文件。5目录上页下页退

3、出第一节第一节 程序文件的建立程序文件的建立一、一、一、一、Visual FoxProVisual FoxProVisual FoxProVisual FoxPro程序的几点说明程序的几点说明程序的几点说明程序的几点说明 P206P2061、注释语句、注释语句【格式1】NOTE【格式2】*【格式3】&【功能】增强程序文件的易读性6目录上页下页退出2、清屏命令CLEAR3、显示文本内容TYPE4、文本输出命令TEXTENDTEXT5、终止执行命令CANCEL7目录上页下页退出6、对话开关语句、对话开关语句【格式】SETTALKOFF|ON【功能】关闭或打开命令执行时的对话开关8目录上页下页退出7

4、、命令的分行、命令的分行VisualFoxPro程序是命令行的序列,每个命令都以回车键结束。一行只能写一条命令;若一条命令太长,一行写不下,也可分行书写,并在分行处加上续行符“;”,再按回车键。9目录上页下页退出二、程序文件的建立、修改与执行二、程序文件的建立、修改与执行 1 1建立或修改程序文件建立或修改程序文件1)1)命令方式:命令方式:MODIFY COMMAND MODIFY COMMAND 程序文件名程序文件名 或 MODIFY FILE MODIFY FILE 程序文件名程序文件名功能:功能:建立或修改指定的程序文件建立或修改指定的程序文件 10目录上页下页退出2)2)菜单方式:菜

5、单方式:打打开开“文文件件”菜菜单单,选选择择“新新建建”;在在“新新建建”窗窗口口,选选择择“程程序序”,再再选选择择“新建文件新建文件”11目录上页下页退出3)3)项目管理器:项目管理器:选选定定项项目目管管理理器器“代代码码”选选项项卡卡中中的的“程序程序”项,选择项,选择“新建新建”命令。命令。12目录上页下页退出单击【文件】单击【文件】|【保存】菜单项【保存】菜单项;利用工具栏;利用工具栏;按按Ctrl+WCtrl+W组合键。组合键。程序文件的默认扩展名是程序文件的默认扩展名是.PRGPRG。2 2保存程序文件保存程序文件13目录上页下页退出3 3执行程序文件执行程序文件程序文件建立

6、后,可以用多种方式、多次执行它。下面是两种常用的方式。1)菜单方式)菜单方式单击【程序】|【运行】菜单项,打开“运行”对话框;从文件列表框中选择要运行的程序文件,并单击“运行”命令按钮,启动运行该程序文件14目录上页下页退出2)命令方式)命令方式【格式】DO【功能】执行指定、下的程序文件。【说明】当程序文件被执行时,文件中包含的命令将被依次执行,直到所有命令被执行完毕,或者执行到以下命令:15目录上页下页退出1)CANCAL:终止程序运行,清除所有的私有变量,返回命令窗口;(2)RETURN:结束程序执行,返回调用它的上级程序,若无上级程序则返回命令窗口;(3)QUIT:结束程序执行并退出Vi

7、sualFoxPro系统,返回操作系统(4)DO:转去执行另一个程序。16目录上页下页退出3 3)项目管理器)项目管理器若程序包含在一个项目中,则在项目管理器中选定它并选择“运行”命令。17目录上页下页退出三、三、交互式命令交互式命令1 1字符串接受命令字符串接受命令 (ACCEPT)(ACCEPT)【格式】【格式】ACCEPT ACCEPT TO TO 【功能】在程序执行过程中,将用户交互式输入的内【功能】在程序执行过程中,将用户交互式输入的内容作为字符串赋给指定内存变量。容作为字符串赋给指定内存变量。【说明】【说明】1 1)该命令只接受)该命令只接受字符型数据字符型数据;2 2)输入的字符

8、串不需要加定界符)输入的字符串不需要加定界符 。18目录上页下页退出【例】【例】编编程程从从键键盘盘输输入入某某数数据据库库的的文文件件名名,要要求求打打开该数据库的表并显示表的内容。开该数据库的表并显示表的内容。程序文件名为程序文件名为*PROG1.PRGPROG1.PRG。命令窗口输入:命令窗口输入:MODI COMMAND PROG1.PRGMODI COMMAND PROG1.PRG19目录上页下页退出SET TALK OFFSET TALK OFFCLEARCLEARACCEPT ACCEPT “请输入数据库名:请输入数据库名:”TO AAATO AAAOPEN DATABASE&A

9、AAOPEN DATABASE&AAAACCEPT ACCEPT 请输入表名请输入表名 TO BBBTO BBBUSE&BBBUSE&BBBLISTLISTUSEUSESET TALK ONSET TALK ONRETURNRETURN20目录上页下页退出2 2任意字符接受命令任意字符接受命令 (INPUT)(INPUT)【格式】【格式】INPUT INPUT TO TO 【功能】【功能】在程序执行过程中,将用户交互式输入在程序执行过程中,将用户交互式输入的内容赋给指定内存变量。的内容赋给指定内存变量。21目录上页下页退出【说明】【说明】1 1)可以输入字符型、数值型、逻辑型、)可以输入字符型

10、、数值型、逻辑型、日期型和日期时间型等类型数据,日期型和日期时间型等类型数据,2 2)系统将输入的数据赋给指定的内存变量。)系统将输入的数据赋给指定的内存变量。22目录上页下页退出例:从键盘随机输入一个例:从键盘随机输入一个正数,以该正数为半径,正数,以该正数为半径,求圆的周长和面积。求圆的周长和面积。(*PROG2.PRG)命令窗口输入:命令窗口输入:MODI COMMAND PROG2MODI COMMAND PROG2settalkoffclearinput半径=torl=2*PI()*rs=PI()*r*r?圆周长=,l?圆面积=,ssettalkonreturn23目录上页下页退出【

11、例】【例】从从键键盘盘输输入入两两个个任任意意正正数数,编编程程求求以以两两数数为为边边长长的长方形面积。程序文件名为的长方形面积。程序文件名为*PROG3.PRG命令窗口输入:命令窗口输入:MODIFY COMMAND PROG3.PRGMODIFY COMMAND PROG3.PRG24目录上页下页退出SET TALK OFFCLEARINPUT “长方形一边的长为:长方形一边的长为:”TO AINPUT “长长方方形形另另一一边边的的长长为为:”TO BS=A*B?“长方形的面积为:长方形的面积为:”,SSET TALK ONRETURN25目录上页下页退出3单字符接受命令单字符接受命令

12、WAIT【格式】【格式】WAIT;TO;WINDOWAT,;TIMEOUT【功能】【功能】显显示示提提示示信信息息,暂暂停停程程序序执执行行,直直到到用用户户按按任任意意键键或或单击鼠标时继续执行程序。单击鼠标时继续执行程序。提示信息将在指定位置的窗口中出现设置等待的时间26目录上页下页退出【说明】【说明】1)1)若若选选择择可可选选项项TO,将将输输入入的的单单个个字符作为字符型数据赋给指定的字符作为字符型数据赋给指定的;2)若若用用户户是是按按Enter键键或或单单击击鼠鼠标标,的的值为空串。值为空串。3)若若省省略略所所有有可可选选项项,屏屏幕幕主主窗窗口口显显示示“键键入入任任意键继续

13、意键继续”默认提示信息。默认提示信息。27目录上页下页退出【例】在”学生档案”数据库的”学生情况表”中显示任意一个系学生的情况。程序文件名为PROG4.PRG(系的代号为“01”、“02”、“03”)28目录上页下页退出SET TALK OFFSET TALK OFFCLEARCLEAROPEN DATABASE OPEN DATABASE 学生档案学生档案USE USE 学生情况表学生情况表 WAIT WAIT “请输入待查学生的系号(请输入待查学生的系号(1 13 3):):”TO NTO N IF VAL(N)3 IF VAL(N)3 WAIT WAIT“输入无效,结束程序运行!输入无效

14、,结束程序运行!”WINDOW TIMEOUT 5WINDOW TIMEOUT 5 RETURN RETURN ELSE ELSE STORE STORE “0 0”+N TO AAA+N TO AAA LIST FOR LIST FOR 系别号系别号=AAAAAA ENDIF ENDIFCLOSE DATABASECLOSE DATABASESET TALK ONSET TALK ONRETURN RETURN 29目录上页下页退出4三条输入命令的异同三条输入命令的异同ACCEPTACCEPT命命令令只只能能接接受受字字符符型型数数据据,不不需需定定界界符符,输输入完毕入完毕按回车键按回车键

15、结束。结束。WAITWAIT命命令令只只能能输输入入单单个个字字符符,且且不不需需定定界界符符,输输入入完毕完毕不需按回车键不需按回车键。INPUTINPUT命命令令可可接接受受数数值值型型、字字符符型型、逻逻辑辑型型、日日期期型型和和日日期期时时间间型型数数据据,数数据据形形式式可可以以是是常常量量、变变量量、函函数数和和表表达达式式,如如果果是是字字符符串串,需需用用定定界界符符,输输入入完毕完毕按回车键按回车键结束。结束。30目录上页下页退出5 5编辑修改变量语句编辑修改变量语句 【格式】SAY“SAY“提示信息提示信息”GETGETREADREAD【功能】在屏幕上或窗口中指定的坐标位置

16、对内存变量(它已预先赋值)或表中当前记录的字段名变量进行编辑修改。31目录上页下页退出【说明】【说明】1)VFP1)VFP系统把屏幕横向分成系统把屏幕横向分成8080格格,用用0-790-79表示表示,每格能输出一个英文字符每格能输出一个英文字符(一个汉字占两格一个汉字占两格)纵向分成纵向分成2525行行,用用0-240-24表示表示,每行能输出一行每行能输出一行字符。字符。32目录上页下页退出2)GET语句必须与编辑修改语句READ一起使用才有意义。3)当执行READ语句时,系统将光标移到GET的变量位置,这时如果从键盘上键入新的数据,则变量中原来的数据被新数据取代。33目录上页下页退出【例

17、】建立程序文件,要求通过程序方式在“读者”表中添加一条新记录,程序文件名为PROG5.PRG。CLEARCLEARUSE USE 读者读者APPEND BLANKAPPEND BLANK 2,8 SAY 2,8 SAY 读者基本情况输入界面:读者基本情况输入界面:4,10 4,10 SAY SAY 读者编号:读者编号:GET GET 读者编号读者编号 6,10 6,10 SAY SAY 读者姓名:读者姓名:GET GET 姓名姓名 8,10 8,10 SAY SAY 读者性别:读者性别:GET GET 性别性别 10,10 10,10 SAY SAY 出生日期:出生日期:GET GET 出生日

18、期出生日期 12,10 12,10 SAY SAY 少数民族否:少数民族否:GET GET 少数民族否少数民族否 14,10 14,10 SAY SAY 籍贯籍贯 GET GET 籍贯籍贯READREADUSEUSE34目录上页下页退出【例】编写程序文件*PROG6.PRG,修改读者表中第二条记录的姓名和籍贯两个字段。SET TALK OFFSET TALK OFFUSE USE 读者读者 GO 2GO 2 2,20 SAY“2,20 SAY“姓名姓名”GET GET 姓名姓名 4,20 4,20 SAY SAY 籍贯籍贯 GET GET 籍贯籍贯 READREAD DISPLAY DISPL

19、AYUSEUSERETURN RETURN 35目录上页下页退出第二节程序的基本结构第二节程序的基本结构一、结构化程序设计基础一、结构化程序设计基础一、结构化程序设计基础一、结构化程序设计基础1基本结构基本结构结构化程序由若干基本结构组成,每一个基本结构化程序由若干基本结构组成,每一个基本结构可以包含一个或多个命令。结构可以包含一个或多个命令。它们有以下三种基本结构它们有以下三种基本结构:36目录上页下页退出(1 1)顺顺序序结结构构,如如图图1 1所所示示,该该结结构构先先执执行行A A操操作作,再执行再执行B B操作。操作。图1顺序结构流程图37目录上页下页退出例:打开指定数据库表,显示表

20、的结构和记录。例:打开指定数据库表,显示表的结构和记录。*PROG7.PRGset talk offset talk offclearclearaccept accept“请输入数据库表名请输入数据库表名 :to name:to nameuse&nameuse&name list structure list structure wait wait“按任一键后显示数据库表的内容按任一键后显示数据库表的内容 list listuse use set talk onset talk onreturnreturn38目录上页下页退出例:从键盘输入一个大写字母,要求改用小写字母输出。*PROG8.PR

21、Gset talk offclearwait 请输入一个大写字母:to ax=asc(a)y=chr(x+32)?yset talk onreturn39目录上页下页退出settalkoffclearwait请输入一个大写字母:toay=LOWE(a)?ysettalkonreturn40目录上页下页退出(2)分支结构:如图2所示,该结构中P代表一个条件,当条件P成立时执行A操作,否则执行B操作。图2分支结构流程图41目录上页下页退出(3)循环结构:能够使某些语句或程序段重复执行若干次。如果某些语句或程序段需要在一个固定的位置上重复操作,使用循环是最好的选择。该结构有以下两种形式:当型循环结构

22、,如图3所示。直到型循环结构,如图4所示。图3当型循环结构流程图形图4直到型循环结构流程图42目录上页下页退出分支结构形式有如下三种:分支结构形式有如下三种:1 1单向分支单向分支 单单向向分分支支语语句句,即即根根据据用用户户设设置置的的条条件件表达式的值,决定某一操作是否执行。表达式的值,决定某一操作是否执行。二、分支结构二、分支结构 43目录上页下页退出【语句语句格式】格式】IFIF条件表达式条件表达式 语句序列语句序列 ENDIFENDIF44目录上页下页退出【语句功能语句功能】该该语语句句首首先先计计算算条条件件表表达式的值,达式的值,当当条条件件表表达达式式的的值值为为真真时时,执

23、执行行语语句句序序列;列;否否则则,执执行行ENDIFENDIF后后面面的的命令。命令。45目录上页下页退出【例例】输输入入两两个个实实数数,按按其其值值由由大大到到小小输输出出这这两两个个数。数。*PROG9.PRGCLEARINPUT“A=”TOAINPUT“B=”TOBIFABT=AA=BB=TENDIF?A,BRETURN46目录上页下页退出 2 2双向分支双向分支双双向向分分支支语语句句,即即根根据据用用户户设设置置的的条条件件表表达达式式的的值值,选选择择两两个个操操作作中中的的一一个来执行。个来执行。47目录上页下页退出【语句语句格式】格式】IFIF条件表达式条件表达式 语句序列

24、语句序列1 1 ELSEELSE 语句序列语句序列2 2 ENDIFENDIF48目录上页下页退出【语句功能语句功能】当当条条件件表表达达式式的的值值为为真真时时,执行语句序列执行语句序列1 1中的命令;中的命令;否否则则,执执行行语语句句序序列列2 2中中的命令;的命令;执执行行完完语语句句序序列列1 1或或语语句句序序列列2 2后后都都将将执执行行ENDIFENDIF后后面的命令。面的命令。49目录上页下页退出【例】从键盘上接受一个数,判断是否为奇数*PROG10.PRG。SET TALK OFFCLEARACCEPT “请输入数:”TO A IF MOD(A,2)=1?”该数为奇数!”E

25、LSE?”该数为偶数!”ENDIF?sSET TALK ON50目录上页下页退出【例】从键盘上接受一个两位数,判断该数是否为回文数*PROGlx11.PRG。51目录上页下页退出【例】从键盘上接受一个三位数,判断该数的十位与个位之和除以3后是否刚好等于百位。*PROGlx2.PRG。52目录上页下页退出从键盘上接受一个两位数,判断该数是否为水仙花数。*PROGlx3.PRG53目录上页下页退出从键盘上接受一个数,判断该数是否为正数。*PROGlx4.PRG54目录上页下页退出3 3多向分支多向分支多向分支语句,即根据多个条件表达式的值,选择执行多个操作中的一个对应执行。55目录上页下页退出【语

26、句格式】DO CASEDO CASE CASE CASE条件表达式条件表达式1 1 语句序列语句序列1 1 CASECASE条件表达式条件表达式2 2 语句序列语句序列2 2 CASECASE条件表达式条件表达式N N 语句序列语句序列N N OTHERWISEOTHERWISE 语句序列语句序列N+1N+1ENDCASEENDCASE56目录上页下页退出【语句功能】该语句根据给出的N个条件表达式的值,选择N+1个语句序列中的一个执行。当所有CASE中条件表达式的值都是假时,如果有OTHERWISE项,则执行命令行序列N+1,再执行ENDCASE后面的第一条命令;否则,直接执行ENDCASE后

27、面的第一条命令。57目录上页下页退出【例】假设收入(P)与税率(R)的关系如下表,编程求税金。程序文件名为PROG11.PRG。0P800R=0.05 800P20000.082000P50000.1P5000 58目录上页下页退出SET TALK OFFCLEARINPUT “请输入收入:”TO PDO CASE CASE P800 R=0 CASE P2000 R=0.05 CASE P5000 R=0.08 OTHERWISE R=0.1ENDCASE TAX=P*R?”税金为:”,TAXSET TALK ON RETURN59目录上页下页退出4 4使用分支语句应注意的几点使用分支语句应

28、注意的几点(1)IF ENDIF和DO CASE ENDCASE 必须配对使用必须配对使用。(2)DO CASE与第一个CASE之间不应有任何命令。(3)(条件表达式)可以是各种表达式或函数的组合,其值必须是逻辑值。(4)DO CASE ENDCASE 命令,每每次次最最多多只只能能执执行行一一个个(语句序列)。(5)在多个CASE的(条件表达式)值为真时,只执行第一个(条件表达式)值为真的(语句序列),然后执行ENDCASE的后面的第一条命令。60目录上页下页退出四、循环结构四、循环结构 P2111 1条件循环语句条件循环语句【格式1】DOWHILEENDDO 初值61目录上页下页退出【说明

29、】一个循环结构一般应具备如下的条件:(1)循环的初始条件:一般给循环控制变量赋初值;(2)循环头:循环语句的起始,设置、判断循环条件;(3)循环尾:循环语句的结尾;(4)循环体:位于循环头和循环尾之间、循环控制重复执行的语句序列。62目录上页下页退出【格式2】DOWHILELOOPEXITENDDO63目录上页下页退出LOOP语句:强行返回到循环开始语句。EXIT语句:强行跳出循环,执行ENDDO后的语句64目录上页下页退出【例】编程求123100之和。程序文件名为PROG12.PRG。SET TALK OFFCLEARS=0X=1DO WHILE X=100 S=S+X X=X+1ENDDO

30、?”123100”,SSET TALK ONRETURN 循环体65目录上页下页退出求100到4000内能被4和6整除的整数的个数。66目录上页下页退出求1到1000中能被5和7整除的奇数之和。67目录上页下页退出求被3整除且有一位是5的三位数的个数。68目录上页下页退出求三位数中,个位数字与十位数字之和除以10所得的余数是百位数字的偶数的个数。69目录上页下页退出【例】逐条显示在STUDENT数据库的STUD表中性别为“男”的所有记录。程序文件名为PROG13.PRG。SETTALKOFFCLEAROPENDATABASESTUDENTUSESTUDDOWHILE.NOT.EOF()IF性别

31、=”男”DISPLAYENDIFSKIPENDDOCLOSEDATABASESETTALKONRETURN70目录上页下页退出【例】编程显示STUDENT数据库的STUD表中除“李宁”以外的所有记录。程序文件名为PROG14.PRG。SETTALKOFFCLEAROPENDATABASESTUDENTUSESTUDDOWHILE.NOT.EOF()IF姓名=”李宁”SKIPLOOPENDIFDISPLAYSKIPENDDOCLOSEDATABASESETTALKONRETURN71目录上页下页退出 2 2FORFOR循环语句循环语句【格式】FOR=TOSTEP 1 LOOPLOOP 2 EXI

32、TEXITENDFOR/NEXTFOR语句的执行流程如右图所示。72目录上页下页退出使用FOR循环语句的有关说明:省略STEP,则步长为默认值1;初值、终值和步长都可以是数值表达式,但这些表达式仅在循环语句开始执行时计算一次。循环语句执行过程中,初值、终值和步长是不会改变的,并由此确定循环的次数;可以在循环体内改变循环变量的值,但会改变循环执行次数;EXIT和LOOP命令可以出现在循环体内。执行LOOP命令时,结束本次循环,循环变量增加一个步长值,返回FOR循环头判断循环条件是否成立。执行EXIT命令时,程序跳出循环,执行循环尾后面的语句。73目录上页下页退出【例6-15】从键盘输入10个数,

33、编程找出其中的最大值和最小值。程序文件名为PROG15.PRG。SETTALKOFFCLEARINPUT“请从键盘输入一个数:”TOASTOREATOMAX,MINFORI=2TO10INPUT“请从键盘输入一个数:”TOAIFMAXAMIN=AENDIFENDFOR?“最大值为:”,MAX?“最小值为:”,MINSETTALKONRETURN74目录上页下页退出【例6-16】编程判断一个数是否素数,程序文件名为PROG16.PRG。SET TALK OFFSET TALK OFFCLEARCLEARINPUT INPUT 请输入一个数请输入一个数:TO xTO xFOR i=2 TO x-1

34、FOR i=2 TO x-1 IF Mod(x,i)=0 IF Mod(x,i)=0 EXIT EXIT ENDIF ENDIF ENDF ENDF IF i=xIF i=x?STR(X)+“?STR(X)+“是素数是素数”ELSE ELSE?STR(X)+?STR(X)+不是素数不是素数 ENDIFENDIF 程序N-S流程图 75目录上页下页退出【例6-17】从键盘输入任意的10个数,按从大到小的顺序依次输出,程序文件名为PROG17.PRG。DIME A(10)DIME A(10)FOR i=1 TO 10 FOR i=1 TO 10 INPUT INPUT 请输入一个数请输入一个数 T

35、O a(i)TO a(i)?a(i)a(i)ENDFORENDFORFOR i=1 TO 9FOR i=1 TO 9 FOR j=1 TO 10-i FOR j=1 TO 10-i IF a(j)a(j+1)IF a(j)a(j+1)t=a(j)t=a(j)a(j)=a(j+1)a(j)=a(j+1)a(j+1)=t a(j+1)=t ENDIF ENDIF ENDFOR ENDFOR ENDFOR ENDFOR FOR i=1 TO 10FOR i=1 TO 10?a(i)?a(i)程序N-S流程图 ENDFOR76目录上页下页退出 3 3“指针指针”型循环控制语句型循环控制语句 “指针”型

36、循环控制语句,即根据用户设置的表中的当前记录指针,决定循环体内语句的执行次数据。【语句格式】SCANSCAN范围范围FORFOR条件表达式条件表达式1 1 WHILE WHILE 条件表达式条件表达式2 2 命令行序列命令行序列 ENDSCANENDSCAN【语句功能】该语句在指定的范围内,用数据记录指针来控制循环次数。执行语句时,首先判断函数EOF()的值,若其值为“真”,则结束循环,否则,结合(条件表达式1)或(条件表达式2),执行(命令行序列),记录指针移到指定的范围和条件内的下一条记录,重新判断函数EOF()的值,直到函数EOF()的值为真时结束循环。77目录上页下页退出【例6-18】

37、输出STUDENT数据库的STUD表中所有团员的姓名和地址。程序文件名为PROG18.PRG。SETTALKOFFCLEAROPENDATABASESTUDENTUSESTUDSCANFOR是否团员是否团员?姓名姓名,地址地址ENDSCANCLOSEDATABASESETTALKONRETURN78目录上页下页退出 4 4使用循环语句时应注意的几点使用循环语句时应注意的几点(1)DO WHILE和 ENDDO、FOR和 ENDFOR、SCAN和 ENDSCAN必须配对使用。(2)命令行序列可以是任何FoxPro命令或语句,也可以是循环语句,即可以为多重循环。(3)循环变量应是数值型的内存变量或

38、数组元素。(4)EXIT和LOOP命令嵌入在循环体内,可以改变循环次数,但是不能单独使用。EXIT的功能是跳出循环,转去执行ENDDO、ENDFOR、ENDSCAN后面的第一条命令;LOOP的功能是转回到循环的开始处,重新对“条件”进行判断,相当于执行了一次 ENDDO、ENDFOR、ENDSCAN命令,它可以改变命令行序列中部分命令的执行次数。EXIT、LOOP可以出现在命令行序列的任意位置。79目录上页下页退出5 5多重循环多重循环多重循环即循环的嵌套,是在一个循环结构的循环体中又包含另一个循环。我们称外层循环为外循环,被包含的循环为内循环。嵌套层数一般没有限制,但内循环的循环体必须完全包

39、含在外循环的循环体中,不能相互交叉。正确的嵌套关系如:DOWHILEDOWHILEDOWHILEENDDOENDDOENDDO80目录上页下页退出【例6-19】编程输出下三角形乘法口诀表。程序文件名为PROG19.PRG。SETTALKOFFCLEARX=1DOWHILEX=9Y=1DOWHILEY=XS=X*Y?STR(Y,1)+”*”+STR(X,1)+”=”+STR(S,2)+”“Y=Y+1ENDDO?X=X+1ENDDOSETTALKONRETURN81目录上页下页退出第三节第三节 过程的模块化过程的模块化结构化程序设计方法要求将一个大的系统分解成若干个子系统,每个子系统就构成一个程序

40、模块。模块是一个相对独立的程序段,它可以为其他模块所调用,也可以去调用其他模块。将一个应用程序划分成一个个功能相对简单、单一的模块程序,不仅有利于程序的开发,也有利于程序的阅读和维护。VFP模块化在具体实现上提供三种形式,它们是子程序、过程和函数。主程序与子程序调用关系示意图82目录上页下页退出一、子程序一、子程序子程序也叫外部过程,是以程序文件(.PRG)的形式单独存储在磁盘上。子程序只需录入一次,就可反复被调用执行。1 1子程序的结构子程序的结构在VFP中,子程序的结构与一般的程序文件一样,可以用MODIFY COMMAND命令来建立、修改、和存盘,扩展名也默认为.PRG。子程序与其他程序

41、文件的唯一区别是其末尾或返回处必须有返回语句RETURN。【语句格式】RETURN TO MASTER|TO RETURN TO MASTER|TO 程序文件名程序文件名|表达式表达式【语句功能】该命令中止一个程序、过程、或用户自定义函数的执行,返回上一级调用程序、最高级调用程序、另外一个程序或命令窗口。83目录上页下页退出【语句说明】(1)通常程序执行到RETURN时,会自动返回到上级调 用程序调用语句的下一条语句继续执行。如果是在最高一级主程序中,则返回命令窗口。(2)选用TO MASTER 子句时,则返回最高一级调用程序,即在命令窗口下,调用的第一个主程序。(3)TO 程序文件名表示程序

42、将转向到指定的程序。(4)如选用表达式,表示将表达式的值返回调用程序,通常用于自定义函数。(5)在程序最后,如果没有RETURN命令,则程序运行完毕后,将自动默认执行一个RETURN命令,但过程文件除外。84目录上页下页退出2 2子程序的调用:子程序的调用:【语句格式】DO|WITH参数表参数表【语句功能】执行以或为名的过程。【语句说明】WITH参数表子句用来指定传递到程序或过程的参数,在参数表中列出的参数可以是表达式、内存变量、常量、字段名或用户自定义函数,各参数间用逗号分隔。【例6-20】分别建立如下程序文件。*MAIN.PRGSETTALKOFF?”正在执行主程序正在执行主程序”DOSU

43、B1SETTALKON*SUB1.PRG?”正在执行正在执行SUB1”RETURN85目录上页下页退出【例6-21】利用子程序方法求M!/(N!*(M-N)!)(MN)*main.prg *子程序sub1.prgINPUT INPUT 请输入请输入M M:TO m s=1 TO m s=1INPUT INPUT 请输入请输入N N:TO n FOR i=1 TO x TO n FOR i=1 TO xs=0 s=0 s=s*i s=s*i x=m ENDFORx=m ENDFORDO sub1 DO sub1 RETURN s RETURN ss2=ss2=sx=nx=nDO sub1DO s

44、ub1s3=ss3=sx=m-nx=m-nDO sub1DO sub1s4=ss4=ss1=s2/(s3*s4)s1=s2/(s3*s4)?s1?s186目录上页下页退出二、过程二、过程(内部内部)内部过程:把多个过程组织在一个文件中(这个文件称之为过程文件),或者把过程放在调用它的程序文件的末尾。VisualFoxPro为了识别过程文件或者程序文件中的不同过程,规定过程文件或者程序文件中的过程必需用PROCEDURE语句说明。其格式为:PROCEDUREPARAMETERRETURN 过程有两种存放方式:(1)把所有的过程集中写入一个被称为过程文件(.prg文件)的磁盘文件中(2)直接把过程

45、写在调用它的主程序文件中,主程序被打开时,过程同时被调入内存。87目录上页下页退出1 1过程写在过程文件里过程写在过程文件里主程序与过程的相互关系如下图所示。调用过程之前,首先要打开存放该过程的过程文件,任何时候只能打开一个过程文件。打开过程文件的命令:SET PROCEDURE TO SET PROCEDURE TO 关闭过程文件的命令:SETPROCEDURETO或用:CLOSEPROCEDURE88目录上页下页退出2 2过程与主程序写在同一个程序文件里过程与主程序写在同一个程序文件里主程序与过程的相互关系如下图所示。过程和子程序都是用DO来调用,当出现了同名的过程和子程序时,调用的顺序首

46、先从过程与主程序在同一文件中调用,其次从过程文件中调用,最后从子程序中调用。89目录上页下页退出【例6-22】建立如下程序文件,过程放在程序文件中。*MAIN.PRG SET TALK OFF?”正在执行主程序”DO SUB1DO SUB1SET TALK ONProcedure SUB1Procedure SUB1?”正在执行SUB1”RETURNRETURN90目录上页下页退出【例6-22】请考察下述程序运行流向,求出正确运行结果。*prog22.prgCLEARCLEARSTORE 2 TO ISTORE 2 TO I,C C,T TDO WHILE I=4DO WHILE I=4 DO

47、 PR DO PR?F(+STR(I,1)+)=+STR(C,2)?F(+STR(I,1)+)=+STR(C,2)I=I+1 I=I+1ENDDOENDDO?T=+STR(T,2)?T=+STR(T,2)RETURNRETURNPROCEDURE PRPROCEDURE PR C=C+2 C=C+2 T=T+C T=T+CRETURNRETURN91目录上页下页退出三、过程文件的建立三、过程文件的建立过程文件的建立方法与程序文件相同。可用MODIFYCOMMAND命令或调用其他文字编辑软件来建立。过程文件的结构一般为:PROCEDURERETURNPROCEDURERETURNPROCEDUR

48、ERETURN92目录上页下页退出1过程文件的调用过程文件的调用调用某过程文件中的过程时,必须先打开该过程文件,打开过程文件命令为:【格式】SETPROCEDURETO任何时候系统只能打开一个过程文件,当打开一个新的过程文件时,原已打开的过程文件自动关闭。2过程文件的关闭过程文件的关闭关闭过程文件可用下列命令:【格式一】SETPROCEDURETO【格式二】CLOSEPROCEDURE93目录上页下页退出【例6-23】用过程文件实现对STUDENT数据库的STUD表进行查询、删除和插入操作。主程序如下:*PROG23&主程序文件名SETTALKOFFCLEAROPENDATABASESTUDE

49、NTSETPROCEDURETOPROCE&打开过程文USESTUDINDEXON姓名TOXMDOWHILE.T.&显示菜单CLEAR2,20SAY“学籍管理系统”4,20SAY“A:按姓名查询”6,20SAY“B:按记录号删除”94目录上页下页退出8,20SAY“C:插入新的记录”10,20SAY“D:退出”CHOISE=”12,20SAY”请选择A、B、C、D:”GETCHOISEREADDOCASECASECHOISE=”A”DOPROCE1CASECHOISE=”B”DOPROCE2CASECHOISE=”C”DOPROCE3CASECHOISE=”D”EXITENDCASEENDDO

50、SETPROCEDURETO&关闭过程文件CLOSEDATABASESETTALKON95目录上页下页退出过程文件如下:*PROCE.PRG&过程文件名PROCEDUREPROCE1&查询过程CLEARACCEPT”请输入姓名:”TONAMESEEKNAMEIFFOUND()DISPLAYELSE?”查无此人”ENDIFWAITRETURN96目录上页下页退出PROCEDUREPROCE2&删除记录过程CLEARINPUT”请输入要删除的记录号:”TONGONDELETEWAIT”物理删除吗Y/N:”TOFLAGIFFLAG=”Y”.OR.”y”PACKENDIFRETURNPROCEDURE

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 技术资料 > 其他杂项

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁