Visual FoxPro程序设计初步

上传人:hy****d 文档编号:243016789 上传时间:2024-09-13 格式:PPT 页数:41 大小:106KB
返回 下载 相关 举报
Visual FoxPro程序设计初步_第1页
第1页 / 共41页
Visual FoxPro程序设计初步_第2页
第2页 / 共41页
Visual FoxPro程序设计初步_第3页
第3页 / 共41页
点击查看更多>>
资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,第7章 FoxPro程序设计初步,第7章 FoxPro程序设计,Visual FoxPro,的工作方式,程序文件的建立与编辑,程序的基本结构,分支结构,循环结构,过程,1,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程序是命令行的序列,每个命令都以回车键结束,一行只能写一条命令;若一条命令太长,一行写不下,也可分行书写,并在分行处加上续行符“;”,再按回车键。,3,7.1.2,程序文件的建立、修改与执行,1,建立或修改程序文件,可用两种方式调用,系统内置的文本编辑器建立或修改程序文件,:,命令方式,MODIFY COMMAND 程序文件名,或,MODIFY FILE 程序文件名,菜单方式,打开“文件”菜单,选择“新建”;在“新建”窗口,选择“程序”,再选择“新建文件”,2保存程序,程序输入、编辑完毕,单击【文件】|【保存】菜单项,或按Ctrl+W复合键,在“另存为”对话框中指定程序文件的存放位置和文件名,并单击“保存”按钮保存程序文件并退出文本编辑器。程序文件的,默认扩展名是.PRG,。,4,3执行程序,程序文件建立后,可以用多种方式、多次执行它。下面是两种常用的方式。,(,1,)菜单方式, 单击【程序】|【运行】菜单项,打开“运行”对话框;, 从文件列表框中选择要运行的程序文件,并单击“运行”命令按钮,启动运行该程序文件,(,2,)命令方式,【格式】DO ,【功能】执行指定、下的程序文件,注:执行程序文件时,将依次执行文件中的命令,直到所有命令执行完毕,或者执行到以下命令:, CANCAL:终止程序运行,清除所有的私有变量,返回命令窗口;, RETURN:结束程序执行,返回调用它的上级程序,若无上级程序则返回命令窗口;, QUIT:结束程序执行并退出Visual FoxPro系统,返回操作系统,5,7.1.3 简单的输入输出命令,1ACCEPT命令,【格式】ACCEPT TO ,【功能】在程序执行过程中,将用户交互式输入的内容作为字符串赋值给指定内存变量。,该命令只接受字符型数据,输入的字符串不需要加定界符,2,INPUT命令,【格式】INPUT TO ,【功能】在程序执行过程中,将用户交互式输入的内容赋值给指定内存变量,可以输入字符型、数值型、逻辑型、日期型和日期时间型等类型数据,而且可以是常量、变量、函数或表达式等形式,,按回车键结束输入,系统将输入的数据赋值给。,6,【例】编程从键盘输入某数据库的文件名,要求打开该数据库并显示其内容。程序文件名为PROG2.PRG。,MODI COMMAND PROG2,SET TALK OFF,CLEAR,ACCEPT “,请输入数据库名:,” TO AAA,OPEN DATABASE &AAA,ACCEPT ,请输入表名, TO BBB,USE &BBB,LIST,USE,SET TALK ON,RETURN(p1.prg),7,【例】从键盘输入两个任意正数,编程求以两数为边长的长方形面积。程序文件名为PROG4.PRG,SET TALK OFF,CLEAR,INPUT “,长方形一边的长为:,” TO A,INPUT “,长方形另一边的长为:,” TO B,S=A*B,? “,长方形的面积为:,” , S,SET TALK ON,RETURN,(p2.prg),8,3WAIT命令,【格式】WAIT TO WINDOW AT, NOWAIT CLEAR|NOCLEAR TIMEOUT,【功能】显示提示信息,暂停程序执行,直到用户按任意键或单击鼠标时继续执行程序。,若选择可选项TO ,将输入的单个字符作为字符型数据赋给指定的;若用户是按Enter键或单击鼠标,的值为空串。,若省略所有可选项,屏幕显示“键入任意键继续”默认提示信息,9,【例】在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,RETURN,ELSE,STORE “0”+N TO AAA,LIST FOR,系别号,=AAA,ENDIF,CLOSE DATABASE,SET TALK ON,RETURN,10,4三条输入命令的异同,ACCEPT命令只能接受字符型数据,不需定界符,输入完毕按回车键结束;,WAIT命令只能输入单个字符,且不需定界符,输入完毕不需按回车键;,INPUT命令可接受数值型、字符型、逻辑型、日期型和日期时间型数据,数据形式可以是常量、变量、函数和表达式,如果是字符串,需用定界符,输入完毕按回车键结束。,11,程序的基本结构,Visual FoxPro系统提供的命令丰富,且功能强大,把这些命令和程序设计语句有效地组织在一起,就形成了实现某一特定功能的程序。,Visual FoxPro系统的程序有两个特点:一是程序控制流模式(面向过程),由顺序、分支、循环三种基本结构构成。二是,面向对象,可视化的结构程序模块,在每个模块的内部也是由程序控制流组成。常见的控制结构如下:,1顺序结构,2分支结构,3循环结构,4过程(函数)结构,12,分支结构,1单向分支,【格式1】,IF条件表达式, 命令行序列1, ELSE,命令行序列2, ENDIF,语句功能:,该语句首先计算条件表达式的值,当条件表达式的值为真时,执行命令行序列1;否则,执行命令行序列2。,13,【例】编写一密码校验程序(假设密码为ABC)。程序文件名为P3.PRG。,SET TALK OFF,CLEAR,ACCEPT “,请输入您的密码:,” TO AAA,IF AAA=”ABC”,CLEAR,? ”,欢迎使用本系统!,”,ELSE,?”,密码错误!,”,WAIT,QUIT,ENDIF,SET TALK ON(p3.prg),14,【例】编写一查询学生基本情况的程序,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(csrq,1),else,?查无此人!,endif,close database,return,15,3多向分支,多向分支语句,即根据多个条件表达式的值,选择执行多个操作中的一个对应执行 。,语句格式:,DO CASE, CASE条件表达式1, 命令行序列1, CASE条件表达式2, 命令行序列2, ,CASE条件表达式N,命令行序列N,OTHERWISE,命令行序列N+1,ENDCASE,16,【例】假设收入(P)与税率(R)的关系如下表,编程求税金。程序文件名为P5.PRG。,0 P,800,R=,0.05 800,P,2000,0.08 2000,P,5000,0.1 P5000,SET TALK OFF,CLEAR,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),17,4使用分支语句应注意的几点,(1)IF ENDIF和DO CASE ENDCASE 必须配对使用,DO CASE与第一个CASE条件表达式之间不应有任何命令。,(2)条件表达式可以是各种表达式或函数的组合,其值必须是逻辑值。,(3)命令行序列可以由一个或多个命令组成,可以是条件控制语句组成的嵌套结构。,(4)DO CASE ENDCASE 命令,每次最多只能执行一个命令行序列。在多个CASE项的条件表达式值为真时,只执行第一个条件表达式值为真的命令行序列,然后执行ENDCASE的后面的第一条命令。,18,循环结构,1,DO WHILE,循环语句,【格式1】DO WHILE ,ENDDO,一个循环结构一般应具备如下的条件:,(1)循环的初始条件:一般为给循环控制变量赋初值;,(2)循环头:循环语句的起始,设置、判断循环条件;,(3)循环尾:循环语句的结尾;,(4)循环体:位于循环头和循环尾之间、循环控制重复执行的语句序列,19,【格式2】,DO WHILE ,LOOP,EXIT,ENDDO,LOOP语句:强行返回到循环开始语句。,EXIT语句:强行跳出循环,接着执行ENDDO后的语句,20,【例】编程求123100之和。程序文件名为P6.PRG。,SET TALK OFF,CLEAR,S=0,I=1,DO WHILE I=90的所有记录。程序文件名为P7.PRG。(p71.prg),SET TALK OFF,CLEAR,OPEN DATABASE jsjdjks,USE t_cjb,DO WHILE .NOT. EOF(),IF,bscj=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,22,【例】编程显示STUDENT数据库的STUD表中除“李宁”以外的所有记录。,SET TALK OFF,CLEAR,OPEN DATABASE STUDENT,USE STUD,DO WHILE .NOT. EOF(),IF 姓名=”李宁”,SKIP,LOOP,ENDIF,DISPLAY,SKIP,ENDDO,CLOSE DATABASE,SET TALK ON,RETURN,23,2FOR循环语句,【格式】FOR = TO STEP,ENDFOR|NEXT,使用FOR循环语句的有关说明:, 省略STEP ,则步长为默认值1;,初值、终值和步长都可以是数值表达式,但这些表达式仅在循环语句开始执行时计算一次。循环语句执行过程中,初值、终值和步长是不会改变的,并由此确定循环的次数;, 可以在循环体内改变循环变量的值,但会改变循环执行次数;, EXIT和LOOP命令可以出现在循环体内。执行LOOP命令时,结束本次循环,循环变量增加一个步长值,返回FOR循环头判断循环条件是否成立。执行EXIT命令时,程序跳出循环,执行循环尾后面的语句,24,【例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,? “,最小值为:,” , MIN,SET TALK ON,RETURN,25,4,使用循环语句时应注意的几点,(1)DO WHILE和ENDDO、FOR和ENDFOR必须,配对使用,。,(2)命令行序列可以是任何FoxPro命令或语句,也可以是循环语句,即可以为多重循环。,(3),循环变量应是数值型的内存变量或数组元素,。,(4),EXIT和LOOP命令嵌入在循环体内,可以改变循环次数,但是不能单独使用。,EXIT的功能是跳出循环,转去执行ENDDO、ENDFOR后面的第一条命令;LOOP的功能是转回到循环的开始处,重新对“条件”进行判断,相当于执行了一次ENDDO、ENDFOR命令,它可以改变命令行序列中部分命令的执行次数。EXIT、LOOP可以出现在命令行序列的任意位置。,26,5多重循环,多重循环即循环的嵌套,是在一个循环结构的循环体中又包含另一个循环。我们称外层循环为外循环,被包含的循环为内循环。嵌套层数一般没有限制,但内循环的循环体必须完全包含在外循环的循环体中,不能相互交叉。正确的嵌套关系如:,DO WHILE ,DO WHILE ,DO WHILE ,ENDDO,ENDDO,ENDDO,27,【例】编程输出下三角形乘法口诀表。程序文件名为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(S,2)+ ,Y=Y+1,ENDDO,?,X=X+1,ENDDO,SET TALK ON,RETURN,28,7.3 多模块程序,应用程序一般都是包含多个程序模块,模块是一个相对独立的程序段,它可以被其他模块所调用,也可以去调用其他的模块,。通常被其他模块调用的模块称为,子程序,,后之为,主程序,。,7.3.1 模块的定义和调用,格式:PROCEDURE|FUNCTION , RETURN 表达式 ,ENDPROC、ENDFUNC,注意:过程执行到RETURN时将跳转到调用程序,并返回表达式的值。如果缺少RETURN时,将默认返回一个逻辑真.T.。,29,1 过程/模块文件的建立,过程文件的建立方法与程序文件相同。可用,MODIFY COMMAND ,命令或调用其他文字编辑软件来建立。,2 过程/模块的调用,格式1:DO |,格式2:( ) &即在名字后加一对小括号,注:格式2即可以作为命令使用(返回值被忽略),也可以作为函数出现在表达式里。,30,&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,&p12.prg,procedure f2,return,procedure f3,return 100,31,2过程文件的打开,如果被调用某过程文件与主程序不在同一同件中时,必须先打开该过程文件,打开过程文件命令为:,【格式】,SET PROCEDURE TO ADDITIVE,任何时候系统只能打开一个过程文件,,当打开一个新的过程文件时,原已打开的过程文件自动关闭。如果选用ADDITIVE,那么在打开过程文件时,并不关闭原先已打开的过程文件。,3过程文件的关闭,关闭过程文件可用下列命令:,【格式一】SET PROCEDURE TO,【格式二】CLOSE PROCEDURE 过程文件,32,7.3.3 过程调用中的参数传递,过程可以接收调用程序传递过来的参数,并能够根据接收到的参数控制程序流程或对接收的参数进行处理,从而大提供了模块程序功能设计的灵活性,1有参过程中的形式参数定义,有参过程中的形式参数定义语句为:,【格式】PARAMETERS|LPARAMETERS ,该语句必需是过程中第一条语句。中的参数可以是任意合法的内存变量名,用PARAMETERS命令声明的形参变量被看作过程程序的,私有变量,。而LPARAMETERS则被看成是,局部变量,。,33,2程序与被调用过程间的参数传递,程序与被调用过程间的参数传递是通过过程调用命令,DO WITH ,来实现的。,【说明】,(1)DO命令中参数称为,实际参数,,PARAMATERS命令中的参数称为,形式参数,。,两个中的参数必须相容,即个数相同,类型和位置一一对应,;,(2)Visual FoxPro的参数传递规则为:如果,实际参数是常数或表达式则传值,,,如果实际参数是变量则传址,,即传递的不是实参变量的值而是实参变量的地址,这样,过程中对形参变量值的改变也将使实参变量值改变。,如果实参是内存变量而又希望进行值传递,可以用圆括号将该内存变量括起来,强制该变量以值方式传递数据,34,【例】用参数传递编程,计算圆的面积。,*,主程序名,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,35,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.14*X*2,RETURN,36,7.3.6 内存变量的作用域,1全局变量,全局变量是指在所有程序模块中都有效的内存变量,在程序或过程中定义全局变量的语句为:,【格式】,PUBLIC ,【,例,】 public g , h,说明:,(1)用PUBLIC语句定义过的内存变量,在程序执行期间可以在任何层次的程序模块中使用;,(2)变量定义语句要放在使用此变量的语句之前,否则会出错;,(3)任何已经定义为全局变量的变量,可以用PUBLIC语句再定义,但不允许重新定义为局部变量;,(4)使用全局变量可以增强模块间的通信,但会降低模块间的独立性。,37,2私有变量,私有变量是指在建立它的程序以及被此程序调用的程序中有效的内存变量,在程序中没有被PUBLIC或LOCAL说明的内存变量都被看作是私有变量。,有时为避免在子程序中修改全局变量或上层私有变量,我们可以用以下命令来隐藏指定的全局变量或上上层私有变量。,【格式1】PRIVATE ,【格式2】PRIVATE ALL LIKE | EXCEPT ,38,3局部变量,局部变量是指中能在建立它的程序中使用,不能在上层或下层程序/模块中使用的内存变量。,局部变量也可以用LOCAL说明,命令格式为:,【格式】LOCAL ,39,&程序p15.prg,release all& 清除内容变量,public x1&说明全局变量,local x2&说明局部变量,store abcd to x3&?,x2 = 1234,do f6,? 主程序中.,? x1=,x1,? x2=,x2,? x3=,x3,return,* 过程f6,procedure f6,? 子程序中.,x2=5678,? x1=,x1,? x2=,x2,? x3=,x3,return,40,7.4 程序调试,VF提供了调试环境,而从使用我们更容易修改程序中错误。,进入调试环境:,命令:,debug,41,
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 课件教案


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


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