版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第7章 FoxPro程序设计,Visual FoxPro的工作方式 程序文件的建立与编辑 程序的基本结构 分支结构 循环结构 过程,Visual FoxPro的工作方式,Visual FoxPro系统提供有三种工作方式:即单命令方式、菜单方式及程序文件方式。 1.单命令方式 所谓单命令方式,即在Command 窗口输入一条命令,完成一个操作的工作方式。 2.菜单方式 所谓菜单方式,即通过打开不同的菜单选择并完成不同的操作。 3.程序文件方式 程序文件(简称程序)也叫做命令文件。将对数据库资源进行操作管理的命令和对系统环境进行设置的命令,集中在一个以(.PRG)为扩展名的命令文件中,然后再通过菜
2、单方式或命令方式运行该命令文件。所谓命令方式,即通过程序文件中的命令完成不同的操作。,7.1.1 程序的概念,有关此Visual FoxPro程序的几点说明 : 1注释语句 【格式1】NOTE 【格式2】* 【格式3】& 【功能】增强程序文件的易读性或放弃中语句的执行 2对话开关语句 【格式】SET TALK OFF|ON 【功能】关闭或打开命令执行时的对话开关 3命令的分行 Visual FoxPro程序是命令行的序列,每个命令都以回车键结束,一行只能写一条命令;若一条命令太长,一行写不下,也可分行书写,并在分行处加上续行符“;”,再按回车键。,7.1.2 程序文件的建立、修改与执行,1建立
3、或修改程序文件 可用两种方式调用系统内置的文本编辑器建立或修改程序文件 : 命令方式 MODIFY COMMAND 程序文件名 或 MODIFY FILE 程序文件名 菜单方式 打开“文件”菜单,选择“新建”;在“新建”窗口,选择“程序”,再选择“新建文件” 2保存程序 程序输入、编辑完毕,单击【文件】|【保存】菜单项,或按Ctrl+W复合键,在“另存为”对话框中指定程序文件的存放位置和文件名,并单击“保存”按钮保存程序文件并退出文本编辑器。程序文件的默认扩展名是.PRG。,3执行程序 程序文件建立后,可以用多种方式、多次执行它。下面是两种常用的方式。 (1)菜单方式 单击【程序】|【运行】菜
4、单项,打开“运行”对话框; 从文件列表框中选择要运行的程序文件,并单击“运行”命令按钮,启动运行该程序文件 (2)命令方式 【格式】DO 【功能】执行指定、下的程序文件 注:执行程序文件时,将依次执行文件中的命令,直到所有命令执行完毕,或者执行到以下命令: CANCAL:终止程序运行,清除所有的私有变量,返回命令窗口; RETURN:结束程序执行,返回调用它的上级程序,若无上级程序则返回命令窗口; QUIT:结束程序执行并退出Visual FoxPro系统,返回操作系统,7.1.3 简单的输入输出命令,1ACCEPT命令 【格式】ACCEPT TO 【功能】在程序执行过程中,将用户交互式输入的
5、内容作为字符串赋值给指定内存变量。 该命令只接受字符型数据,输入的字符串不需要加定界符 2INPUT命令 【格式】INPUT TO 【功能】在程序执行过程中,将用户交互式输入的内容赋值给指定内存变量 可以输入字符型、数值型、逻辑型、日期型和日期时间型等类型数据,而且可以是常量、变量、函数或表达式等形式,按回车键结束输入,系统将输入的数据赋值给。,【例】编程从键盘输入某数据库的文件名,要求打开该数据库并显示其内容。程序文件名为PROG2.PRG。 MODI COMMAND PROG2 SET TALK OFF CLEAR ACCEPT “请输入数据库名:” TO AAA OPEN DATABAS
6、E &AAA ACCEPT 请输入表名 TO BBB USE &BBB LIST USE SET TALK ON RETURN(p1.prg),【例】从键盘输入两个任意正数,编程求以两数为边长的长方形面积。程序文件名为PROG4.PRG SET TALK OFF CLEAR INPUT “长方形一边的长为:” TO A INPUT “长方形另一边的长为:” TO B S=A*B ? “长方形的面积为:” , S SET TALK ON RETURN (p2.prg),3WAIT命令 【格式】WAIT TO WINDOW AT, NOWAIT CLEAR|NOCLEAR TIMEOUT 【功能】
7、显示提示信息,暂停程序执行,直到用户按任意键或单击鼠标时继续执行程序。 若选择可选项TO ,将输入的单个字符作为字符型数据赋给指定的;若用户是按Enter键或单击鼠标,的值为空串。 若省略所有可选项,屏幕显示“键入任意键继续”默认提示信息,【例】在STUDENT数据库的STUD表中显示任意一个系学生的情况。程序文件名为PROG6.PRG SET TALK OFF CLEAR OPEN DATABASE STUDENT USE STUD WAIT “请输入待查学生的系号(13):” TO N IF VAL(N)3 WAIT “输入无效,结束程序运行!” WINDOW TIMEOUT 5 RETU
8、RN ELSE STORE “0”+N TO AAA LIST FOR 系别号=AAA ENDIF CLOSE DATABASE SET TALK ON RETURN,4三条输入命令的异同 ACCEPT命令只能接受字符型数据,不需定界符,输入完毕按回车键结束; WAIT命令只能输入单个字符,且不需定界符,输入完毕不需按回车键; INPUT命令可接受数值型、字符型、逻辑型、日期型和日期时间型数据,数据形式可以是常量、变量、函数和表达式,如果是字符串,需用定界符,输入完毕按回车键结束。,程序的基本结构,Visual FoxPro系统提供的命令丰富,且功能强大,把这些命令和程序设计语句有效地组织在一
9、起,就形成了实现某一特定功能的程序。 Visual FoxPro系统的程序有两个特点:一是程序控制流模式(面向过程),由顺序、分支、循环三种基本结构构成。二是面向对象可视化的结构程序模块,在每个模块的内部也是由程序控制流组成。常见的控制结构如下: 1顺序结构 2分支结构 3循环结构 4过程(函数)结构,分支结构,1单向分支 【格式1】 IF条件表达式 命令行序列1 ELSE 命令行序列2 ENDIF 语句功能: 该语句首先计算条件表达式的值,当条件表达式的值为真时,执行命令行序列1;否则,执行命令行序列2。,【例】编写一密码校验程序(假设密码为ABC)。程序文件名为P3.PRG。 SET TA
10、LK OFF CLEAR ACCEPT “请输入您的密码:” TO AAA IF AAA=”ABC” CLEAR ? ”欢迎使用本系统!” ELSE ?”密码错误!” WAIT QUIT ENDIF SET TALK ON(p3.prg),【例】编写一查询学生基本情况的程序,P4.PRG。 set talk off open database jsjdjks use t_bmb clear accept 请输入学生的准考证号: to zzz locate for zkzh=zzz if .not. eof() ?姓名: + xm ?性别: + IIF(xb,男,女) ?出生日期: + DTOC
11、(csrq,1) else ?查无此人! endif close database return,3多向分支 多向分支语句,即根据多个条件表达式的值,选择执行多个操作中的一个对应执行 。 语句格式: DO CASE CASE条件表达式1 命令行序列1 CASE条件表达式2 命令行序列2 CASE条件表达式N 命令行序列N OTHERWISE 命令行序列N+1 ENDCASE,【例】假设收入(P)与税率(R)的关系如下表,编程求税金。程序文件名为P5.PRG。 0 P800 R= 0.05 800 P2000 0.08 2000P5000 0.1 P5000 SET TALK OFF CLEAR
12、 INPUT “请输入收入:” TO P DO CASE CASE P800 R=0 CASE P2000 R=0.05,CASE P5000 R=0.08 OTHERWISE R=0.1 ENDCASE TAX=P*R ? ”税金为:”,TAX SET TALK ON RETURN (p5.prg),4使用分支语句应注意的几点 (1)IF ENDIF和DO CASE ENDCASE 必须配对使用,DO CASE与第一个CASE条件表达式之间不应有任何命令。 (2)条件表达式可以是各种表达式或函数的组合,其值必须是逻辑值。 (3)命令行序列可以由一个或多个命令组成,可以是条件控制语句组成的嵌套
13、结构。 (4)DO CASE ENDCASE 命令,每次最多只能执行一个命令行序列。在多个CASE项的条件表达式值为真时,只执行第一个条件表达式值为真的命令行序列,然后执行ENDCASE的后面的第一条命令。,循环结构,1DO WHILE循环语句 【格式1】DO WHILE ENDDO 一个循环结构一般应具备如下的条件: (1)循环的初始条件:一般为给循环控制变量赋初值; (2)循环头:循环语句的起始,设置、判断循环条件; (3)循环尾:循环语句的结尾; (4)循环体:位于循环头和循环尾之间、循环控制重复执行的语句序列,【格式2】 DO WHILE LOOP EXIT ENDDO LOOP语句:
14、强行返回到循环开始语句。 EXIT语句:强行跳出循环,接着执行ENDDO后的语句,【例】编程求123100之和。程序文件名为P6.PRG。 SET TALK OFF CLEAR S=0 I=1 DO WHILE I=100 S=S+I I=I+1 ENDDO ? ”123100”,S SET TALK ON RETURN,【例】逐条显示在jsjdjks数据库的t_cjb表中bscj=90的所有记录。程序文件名为P7.PRG。(p71.prg) SET TALK OFF CLEAR OPEN DATABASE jsjdjks USE t_cjb DO WHILE .NOT. EOF() IF b
15、scj=90 DISPLAY ENDIF SKIP ENDDO CLOSE DATABASE SET TALK ON RETURN,SET TALK OFF CLEAR OPEN DATABASE jsjdjks USE t_cjb LOCATE FOR bscj=90 DO WHILE .NOT. EOF() DISPLAY WAIT CONTINUE ENDDO CLOSE DATABASE SET TALK ON RETURN,【例】编程显示STUDENT数据库的STUD表中除“李宁”以外的所有记录。 SET TALK OFF CLEAR OPEN DATABASE STUDENT US
16、E STUD DO WHILE .NOT. EOF() IF 姓名=”李宁” SKIP LOOP ENDIF DISPLAY SKIP ENDDO CLOSE DATABASE SET TALK ON RETURN,2FOR循环语句 【格式】FOR = TO STEP ENDFOR|NEXT 使用FOR循环语句的有关说明: 省略STEP ,则步长为默认值1; 初值、终值和步长都可以是数值表达式,但这些表达式仅在循环语句开始执行时计算一次。循环语句执行过程中,初值、终值和步长是不会改变的,并由此确定循环的次数; 可以在循环体内改变循环变量的值,但会改变循环执行次数; EXIT和LOOP命令可以出
17、现在循环体内。执行LOOP命令时,结束本次循环,循环变量增加一个步长值,返回FOR循环头判断循环条件是否成立。执行EXIT命令时,程序跳出循环,执行循环尾后面的语句,【例6-23】从键盘输入10个数,编程找出其中的最大值和最小值。程序文件名为P8.PRG。 SET TALK OFF CLEAR INPUT “请从键盘输入”+alltrim(str(i)+“个数: TO ASTORE A TO MAX,MIN FOR I=2 TO 10 ? “请从键盘输入”+I+ ?i ?“个数:” TO A IF MAXA MIN=A ENDIF ENDFOR ? “最大值为:” , MAX ? “最小值为:
18、” , MIN SET TALK ON RETURN,4使用循环语句时应注意的几点 (1)DO WHILE和ENDDO、FOR和ENDFOR必须配对使用。 (2)命令行序列可以是任何FoxPro命令或语句,也可以是循环语句,即可以为多重循环。 (3)循环变量应是数值型的内存变量或数组元素。 (4)EXIT和LOOP命令嵌入在循环体内,可以改变循环次数,但是不能单独使用。EXIT的功能是跳出循环,转去执行ENDDO、ENDFOR后面的第一条命令;LOOP的功能是转回到循环的开始处,重新对“条件”进行判断,相当于执行了一次ENDDO、ENDFOR命令,它可以改变命令行序列中部分命令的执行次数。EX
19、IT、LOOP可以出现在命令行序列的任意位置。,5多重循环 多重循环即循环的嵌套,是在一个循环结构的循环体中又包含另一个循环。我们称外层循环为外循环,被包含的循环为内循环。嵌套层数一般没有限制,但内循环的循环体必须完全包含在外循环的循环体中,不能相互交叉。正确的嵌套关系如: DO WHILE DO WHILE DO WHILE ENDDO ENDDO ENDDO,【例】编程输出下三角形乘法口诀表。程序文件名为P9.PRG。 SET TALK OFF CLEAR X=1 DO WHILE X=9 Y=1 DO WHILE Y=X S=X*Y ? STR(Y,1)+*+STR(X,1)+=+STR
20、(S,2)+ Y=Y+1 ENDDO ? X=X+1 ENDDO SET TALK ON RETURN,7.3 多模块程序,应用程序一般都是包含多个程序模块,模块是一个相对独立的程序段,它可以被其他模块所调用,也可以去调用其他的模块。通常被其他模块调用的模块称为子程序,后之为主程序。 7.3.1 模块的定义和调用 格式:PROCEDURE|FUNCTION RETURN 表达式 ENDPROC、ENDFUNC 注意:过程执行到RETURN时将跳转到调用程序,并返回表达式的值。如果缺少RETURN时,将默认返回一个逻辑真.T.。,1 过程/模块文件的建立 过程文件的建立方法与程序文件相同。可用
21、MODIFY COMMAND 命令或调用其他文字编辑软件来建立。 2 过程/模块的调用 格式1:DO | 格式2:( ) &即在名字后加一对小括号 注:格式2即可以作为命令使用(返回值被忽略),也可以作为函数出现在表达式里。,&p10.prg set procedure to p12 clear * p11() do f1 ?流程序结束 * 过程f1 procedure f1 ?过程f1开始 ?调用f3( ) ?返回值:,f3( ) ?过程f1结束 endproc,&p11.prg ? 子程序p11开始 ?调用f3( ) x=f2() ?返回值为:,x ?子程序p11结束 return,&p1
22、2.prg procedure f2 return procedure f3 return 100,2过程文件的打开 如果被调用某过程文件与主程序不在同一同件中时,必须先打开该过程文件,打开过程文件命令为: 【格式】SET PROCEDURE TO ADDITIVE 任何时候系统只能打开一个过程文件,当打开一个新的过程文件时,原已打开的过程文件自动关闭。如果选用ADDITIVE,那么在打开过程文件时,并不关闭原先已打开的过程文件。 3过程文件的关闭 关闭过程文件可用下列命令: 【格式一】SET PROCEDURE TO 【格式二】CLOSE PROCEDURE 过程文件,7.3.3 过程调用中
23、的参数传递,过程可以接收调用程序传递过来的参数,并能够根据接收到的参数控制程序流程或对接收的参数进行处理,从而大提供了模块程序功能设计的灵活性 1有参过程中的形式参数定义 有参过程中的形式参数定义语句为: 【格式】PARAMETERS|LPARAMETERS 该语句必需是过程中第一条语句。中的参数可以是任意合法的内存变量名,用PARAMETERS命令声明的形参变量被看作过程程序的私有变量。而LPARAMETERS则被看成是局部变量。,2程序与被调用过程间的参数传递 程序与被调用过程间的参数传递是通过过程调用命令 DO WITH 来实现的。 【说明】 (1)DO命令中参数称为实际参数,PARAM
24、ATERS命令中的参数称为形式参数。两个中的参数必须相容,即个数相同,类型和位置一一对应; (2)Visual FoxPro的参数传递规则为:如果实际参数是常数或表达式则传值,如果实际参数是变量则传址,即传递的不是实参变量的值而是实参变量的地址,这样,过程中对形参变量值的改变也将使实参变量值改变。如果实参是内存变量而又希望进行值传递,可以用圆括号将该内存变量括起来,强制该变量以值方式传递数据,【例】用参数传递编程,计算圆的面积。 * 主程序名P13.prg SET TALK OFF CLEAR S=0 INPUT ”请输入圆的半径:” TO R DO AREA WITH R,S ? ”圆的面积为:”,S SET TALK ON PROCEDURE AREA & 计算面积的过程 PARAMETER X,Y & 形参说明 Y=3.1416*X*2 RETURN,SET TALK OFF CLEAR S=0 INPUT 请输入圆的半径: TO R DO AREA WITH R,(S) &强制按传值方式 ? 圆的面积为:,S SET TALK ON ? PROCEDURE AREA &
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年河北省廊坊市中小学编制教师招聘考试备考试题及答案详解
- 2026年林芝地区中小学编制教师招聘考试参考试题及答案详解
- 2026年宁夏回族自治区吴忠市中小学编制教师招聘笔试模拟试题及答案详解
- 2026年湖南省岳阳市中小学编制教师招聘笔试参考题库及答案详解
- 2026年江苏省南京市中小学编制教师招聘考试模拟试题及答案详解
- 2026年三明市三元区中小学编制教师招聘笔试参考试题及答案详解
- 2026年宁夏回族自治区固原市中小学编制教师招聘考试参考试题及答案详解
- 2026年沈阳市东陵区中小学编制教师招聘考试备考试题及答案详解
- 2026年池州市贵池区中小学编制教师招聘笔试备考试题及答案详解
- 2026年防城港市防城区中小学编制教师招聘考试备考试题及答案详解
- 全国出版专业技术人员职业资格考试试题及答案
- 2026年中职单招数学试题及答案
- 国家开放大学专科《人力资源管理》一平台机考真题及答案(第三套)
- 软件系统升级与维护实施方案
- 理论联系实际谈一谈你对党的十三大所概括的党在社会主义初级阶段的基本路线的理解(一)
- 2026年耳廓矫正器行业分析报告及未来发展趋势报告
- 国开2026年《组织行为学》形考任务1-4答案
- 公司举报信范文
- 盐城师范学院《运动生理学》2025-2026学年期末试卷
- 2026年麻醉学(正-副高)考试题库及答案详解(基础+提升)
- 孕产妇危重症救治指南(2026年)
评论
0/150
提交评论