第五章 VFP6程序设计基础

上传人:少*** 文档编号:243137536 上传时间:2024-09-16 格式:PPT 页数:43 大小:263.50KB
返回 下载 相关 举报
第五章 VFP6程序设计基础_第1页
第1页 / 共43页
第五章 VFP6程序设计基础_第2页
第2页 / 共43页
第五章 VFP6程序设计基础_第3页
第3页 / 共43页
点击查看更多>>
资源描述
*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,第五章 程序设计基础,本章主要内容,Visual FoxPro,的工作方式,程序与,程序文件,程序的基本结构,多模块程序,程序测试,Visual FoxPro,的工作方式,Visual FoxPro,系统提供有三种工作方式:即单命令方式、菜单方式及程序文件方式。,1.单命令方式,Visual FoxPro,单命令方式是利用命令窗口实现的。用户通过命令窗口输入命令,并执行操作。在命令窗口中,用户可以输入单个的操作命令和系统命令,完成对数据库的操作管理和系统环境的设置;也可以建立命令文件及运行命令文件。,命令,窗口不仅是,Visual FoxPro,命令的执行窗口,也是,Visual FoxPro,命令文件的编辑窗口。,所谓单命令方式,即输入一条命令,完成一个操作的工作方式。,2.菜单方式,在,Visual FoxPro,环境下,也可以通过系统提供的菜单选项,对数据库资源进行操作管理和对系统环境进行设置;并通过菜单建立命令文件及运行命令文件。所谓菜单方式,即通过打开不同的菜单选择并完成不同的操作,3.程序文件方式,程序文件(简称程序)也叫做命令文件。运用程序文件方式进行数据库管理,是通过程序文件编辑工具,将对数据库资源进行操作管理的命令和对系统环境进行设置的命令,集中在一个以(.,PRG),为扩展名的命令文件中,然后再通过菜单方式或命令方式运行该命令文件。所谓命令方式,即通过程序文件中的命令完成不同的操作。,5.1,程序与程序文件,5.1.1,程序的概念,程序是能够完成一定任务的命令的有序集合。这组文件被存放在成为程序文件或命令文件的文本文件中。默认的是扩展名为,.,prg,的文件,采用程序方式的好处,1,)可以利用编辑器,方便的输入、修改和保存程序,2,)可以用多种方式,多次运行程序,3,)可以在一个程序中调用另一个程序,有关,Visual FoxPro,程序的几点说明,1注释语句,【格式1】,NOTE ,【格式2】* ,【格式3】& ,【功能】增强程序文件的易读性或放弃中语句的执行,2对话开关语句,【格式】,SET TALK OFF|ON,【,功能】关闭或打开命令执行时的对话开关,3命令的分行,Visual FoxPro,程序是命令行的序列,每个命令都以回车键结束,一行只能写一条命令;有时,若一条命令太长,一行写不下,也可分行书写,并在分行处加上续行符“;”,再按回车键。,5.1.2,程序文件的建立、修改与执行,1建立或修改程序文件,可用两种方式调用系统内置的文本编辑器建立或修改程序文件,1)命令方式,MODIFY COMMAND,程序文件名,或,MODIFY FILE,程序文件名,2)菜单方式,打开“文件”菜单,选择“新建”,在“新建”窗口,选择“程序”,再选择“新建文件”,2保存程序,程序输入、编辑完毕,单击【文件】|【保存】菜单项,或按,Ctrl+W,复合键,在“另存为”对话框中指定程序文件的存放位置和文件名,并单击“保存”按钮保存程序文件并退出文本编辑器。程序文件的默认扩展名是.,PRG。,3执行程序,程序文件建立后,可以用多种方式、多次执行它。下面是两种常用的方式,(,1,)菜单方式, 单击【程序】|【运行】菜单项,打开“运行”对话框, 从文件列表框中选择要运行的程序文件,并单击“运行”命令按钮,启动运行该程序文件,(,2,)命令方式,【格式】,DO,【功能】执行指定的程序文件,执行程序文件时,将依次执行文件中的命令,直到所有命令执行完毕,或者执行到以下命令:,CANCAL:,终止程序运行,清除所有的私有变量,返回命令窗口;,DO,: 转去执行另一个程序,RETURN:,结束程序执行,返回调用它的上级程序,若无上级程序则返回命令窗口;,QUIT:,结束程序执行并退出,Visual FoxPro,系统,返回操作系统,5.1.3,简单的输入输出命令,1,ACCEPT,命令,【格式】,ACCEPT ,TO ,【功能】在程序执行过程中,将用户交互式输入的内容作为字符串赋值给指定内存变量。,该命令只接受字符型数据,输入的字符串不需要加定界符,【例,5-1】,编程从键盘输入某数据库的文件名,要求打开该数据库并显示其内容。程序文件名为,PROG1.PRG,SET TALK OFF,CLEAR,ACCEPT “,请输入数据库名:,”,TO AAA,OPEN DATABASE &AAA,ACCEPT ,请输入表名,TO BBB,USE &BBB,LIST,USE,SET TALK ON,RETURN,2,INPUT,命令,【格式】,INPUT ,TO ,【功能】在程序执行过程中,将用户交互式输入的内容赋值给指定内存变量,可以输入字符型、数值型、逻辑型、日期型和日期时间型等类型数据,而且可以是常量、变量、函数或表达式等形式,按回车键结束输入,系统将输入的数据赋值给。,【例,5-2】,从键盘输入两个任意正数,编程求以两数为边长的长方形面积。程序文件名为,PROG2.PRG,SET TALK OFF,CLEAR,INPUT “,长方形一边的长为:,”,TO A,INPUT “,长方形另一边的长为:,”,TO B,S=A*B,? “,长方形的面积为:,” ,S,SET TALK ON,RETURN,3,WAIT,命令,【格式】,WAIT ,TO ,WINDOW AT, ,NOWAIT CLEAR|NOCLEAR TIMEOUT,【功能】显示提示信息,暂停程序执行,直到用户按任意键或单击鼠标时继续执行程序。,若选择可选项,TO ,将输入的单个字符作为字符型数据赋给指定的;若用户是按,Enter,键或单击鼠标,的值为空串。,若省略所有可选项,屏幕显示“键入任意键继续”默认提示信息,【例,5-3】,在,STUDENT,数据库的,STUD,表中显示学生的情况信息。程序文件名为,PROG3.PRG,SET TALK OFF,CLEAR,OPEN DATABASE STUDENT,USE STUD,LIST,WAIT “,请按任意键退出,” TO N,CLOSE DATABASE,SET TALK ON,RETURN,三条输入命令的异同,ACCEPT,命令只能接受字符型数据,不需定界符,输入完毕按回车键结束,如果不输入任何内容直接按回车键,系统会将空串赋给指定的内存变量;,WAIT,命令只能输入单个字符,且不需定界符,输入完毕不需按回车键;,INPUT,命令可接受数值型、字符型、逻辑型、日期型和日期时间型数据,数据形式可以是常量、变量、函数和表达式,如果是字符串,需用定界符,输入完毕按回车键结束,不允许不输入任何内容直接按回车键,7.2,程序的基本结构,Visual FoxPro,系统提供的命令丰富,且功能强大,把这些命令和程序设计语句有效地组织在一起,就形成了实现某一特定功能的程序。,Visual FoxPro,系统的程序有两个特点:一是程序控制流模式,由顺序、选择、循环三种基本结构构成。二是面向对象可视化的结构程序模块,在每一个模块的内部也是由程序控制流组成。常见的控制结构如下:,1顺序结构,顺序结构是在程序执行时,根据程序中语句的书写顺序依次执行的命令序列。,Visual FoxPro,系统中的大多数命令都可以作为顺序结构中的语句。,2选择结构,选择结构是在程序执行时,根据不同的条件,选择执行不同的程序语句,用来解决有选择、有转移的诸多问题,3循环结构,循环结构则能够使某些语句或程序段重复执行若干次。如果某些语句或程序段需要在一个固定的位置上重复操作,使用循环是最好的选择。,4过程结构,在许多应用程序中,有一些程序段需要反复执行多次,这些程序段不在一个固定的位置上,而是分散在程序的许多位置上重复执行,可将其与嵌入它的程序分开,形成独立的程序序列,待使用时再调入程序中,以实现不同位置上的重复操作。这样做增强了程序的可读性和模块化。我们称这种具有独立功能而且可以被其它程序调用的程序序列为过程。,选择结构形式有如下三种:,1,条件语句,单向分支语句,即根据用户设置的条件表达式的值,决定某一操作是否执行。,(1)语句格式:,IF,条件表达式,命令行序列,ENDIF,(2),语句功能:,该语句首先计算条件表达式的值,当条件表达式的值为真时,执行命令行序列;否则,执行,ENDIF,后面的第一条命令,7.2.1,选择结构,【例,5-4】,求一元二次方程,AX,2,BXC0,的实根。程序文件名为,PROG6.PRG,SET TALK OFF,CLEAR,INPUT ”a=” TO A,INPUT “b=” TO B,INPUT “c=” TO C,Z,B2-4*A*C,IF Z=0,X1=(-B+SQRT(Z)/(2*A),X2=(-B-SQRT(Z)/(2*A),? X1,X2,ENDIF,SET TALK ON,RETURN,双向分支,双向分支语句,即根据用户设置的条件表达式的值,选择两个操作中的一个来执行。,(1)语句格式:,IF,条件表达式, 命令行序列1,ELSE,命令行序列2,ENDIF,(2),语句功能:,该语句首先计算条件表达式的值,当条件表达式的值为真时,执行命令行序列1中的命令;否则,执行命令行序列2中的命令;执行完命令行序列1或命令行序列2后都将执行,ENDIF,后面的第一条命令。,【例,5-5】,编写一密码校验程序(假设密码为,ABC)。,程序文件名为,PROG7.PRG,SET TALK OFF,CLEAR,ACCEPT “,请输入您的密码:,”,TO AAA,IF AAA=”ABC”,CLEAR,? ”,欢迎使用本系统!,”,ELSE,?”,密码错误!,”,WAIT,QUIT,ENDIF,SET TALK ON,2多向分支,多向分支语句,即根据多个条件表达式的值,选择执行多个操作中的一个对应执行,(1)语句格式:,DO CASE, CASE,条件表达式1, 命令行序列1,CASE,条件表达式2, 命令行序列2,CASE,条件表达式,N,命令行序列,N,OTHERWISE,命令行序列,N+1,ENDCASE,(2)语句功能:,该语句根据给出的,N,个条件表达式的值,选择,N+1,个命令行序列中的一个执行。当所有,CASE,中条件表达式的值都是假的时候,如果有,OTHERWISE,项,则执行命令行序列,N+1,,再执行,ENDCASE,后面的第一条命令;否则,直接执行,ENDCASE,后面的第一条命令,【例,5-6】,假设收入(,P),与税率(,R),的关系如下表,编程求税金。程序文件名为,PROG8.PRG,CASE P5000,R=0.08,OTHERWISE,R=0.1,ENDCASE,TAX=P*R,? ”,税金为:,”,TAX,SET TALK ON,RETURN,0 P800,R= 0.05 800 P2000,0.08 2000P5000,0.1 P5000,SET TALK OFF,CLEAR,INPUT “,请输入收入:”,TO P,DO CASE,CASE P800,R=0,CASE P2000,R=0.05,(1),IF,ENDIF,和,DO CASE,ENDCASE,必须配对使用,,DO CASE,与第一个,CASE,条件表达式之间不应有任何命令。,(2)条件表达式可以是各种表达式或函数的组合,其值必须是逻辑值。,(3)命令行序列可以由一个或多个命令组成,可以是条件控制语句组成的嵌套结构。,(4),DO CASE ENDCASE,命令,每次最多只能执行一个命令行序列。在多个,CASE,项的条件表达式值为真时,只执行第一个条件表达式值为真的命令行序列,然后执行,ENDCASE,的后面的第一条命令,使用选择语句应注意的几点,7.2.2,循环结构,1,DO WHILE,循环语句,【格式1】,DO WHILE ,ENDDO,一个循环结构一般应具备如下的条件,1)循环的初始条件:一般为给循环控制变量赋初值;,2)循环头:循环语句的起始,设置、判断循环条件,3)循环尾:循环语句的结尾,4)循环体:位于循环头和循环尾之间、循环控制重复执行的语句序列,【格式2】,DO WHILE ,LOOP,EXIT,ENDDO,LOOP,语句:强行返回到循环开始语句。,EXIT,语句:强行跳出循环,接着执行,ENDDO,后的语句,【例】编程求123100之和,SET TALK OFF,CLEAR,S=0,i=1,DO WHILE i=100,S=S+i,i=i+1,ENDDO,? ”1,2,3,100,”,S,SET TALK ON,RETURN,【例】逐条显示在,STUDENT,数据库的,STUD,表中性别为“男”的所有记录,SET TALK OFF,CLEAR,OPEN DATABASE STUDENT,USE STUD,DO WHILE .NOT. EOF(),IF,性别,=”,男,”,DISPLAY,ENDIF,SKIP,ENDDO,CLOSE DATABASE,SET TALK ON,RETURN,【例】编程显示,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,2,FOR,循环语句,【格式】,FOR =,TO ,STEP,ENDFOR|NEXT,执行该语句时,首先将初值赋给循环变量,然后判断循环条件是否成立。若循环条件成立则执行循环体,然后循环变量增一个步长值,并再次判断循环条件是否成立,若循环条件不成立则结束该循环语句,执行,ENDFOR,之后的语句,使用,FOR,循环语句的有关说明:, 省略,STEP ,则步长为默认值1;,初值、终值以及步长都可以是数值表达式,但这些表达式仅在循环语句开始执行的时候计算一次。在循环语句的执行过程中,初值、终值和步长是不会改变的,并由此确定循环的次数;, 可以在循环体内改变循环变量的值,但会改变循环执行次数;,EXIT,和,LOOP,命令可以出现在循环体内。执行,LOOP,命令时,结束本次循环,循环变量增加一个步长值,返回,FOR,循环头判断循环条件是否成立。当执行,EXIT,命令的时候,程序跳出循环,执行循环尾后面的语句,【例】从键盘输入10个数,编程找出其中的最大值和最小值,SET TALK OFF,CLEAR,INPUT “,请从键盘输入一个数:,”,TO A,STORE A TO MAX,MIN,FOR I=2 TO 10,INPUT “,请从键盘输入一个数:,”,TO A,IF MAXA,MIN=A,ENDIF,ENDFOR,? “,最大值为:,” ,MAX,? “,最小值为:,” ,MIN,SET TALK ON,RETURN,3“指针”型循环控制语句,“指针”型循环控制语句,即根据用户设置的表中的当前记录指针,决定循环体内语句的执行次数据。,(1)语句格式:,SCAN,范围,FOR,条件表达式1,WHILE ,条件表达式2,命令行序列,ENDSCAN, (2),语句功能:,该语句在指定的范围内,用数据记录指针来控制循环次数。执行语句时,首先判断函数,EOF(),的值,若其值为“真”,则结束循环,否则,结合条件表达式1或条件表达式2,执行命令行序列,记录指针移到指定的范围和条件内的下一条记录,重新判断函数,EOF(),的值,直到函数,EOF(),的值为真时结束循环。,【例】输出,STUDENT,数据库的,STUD,表中所有团员的姓名和地址,SET TALK OFF,CLEAR,OPEN DATABASE STUDENT,USE STUD,SCAN FOR,是否团员,=,“,是,”,?,姓名,地址,ENDSCAN,CLOSE DATABASE,SET TALK ON,RETURN,使用循环语句时应注意的几点,1),DO WHILE,和,ENDDO、FOR,和,ENDFOR、SCAN,和,ENDSCAN,必须配对使用。,2)命令行序列可以是任何,FoxPro,命令或语句,比如循环语句,即可以为多重循环。,3)循环变量应是数值型的内存变量或数组元素。,4),EXIT,和,LOOP,命令嵌入在循环体内,可以改变循环次数,但是不能单独使用。,EXIT,的功能是跳出循环,转去执行,ENDDO、ENDFOR、ENDSCAN,后面的第一条命令;,LOOP,的功能是转回到循环的开始处,重新对“条件”进行判断,相当于执行了一次,ENDDO、ENDFOR、ENDSCAN,命令,它可以改变命令行序列中部分命令的执行次数。,EXIT、LOOP,可以出现在命令行序列的任意位置。,过程与过程调用,过程声明,PROCEDURE proc_name,命令语句序列,ENDPROC,函数声明,FUNCTION,func_name,命令语句序列,ENDFUNC,调用过程或函数:,1.使用,DO,命令,2.在函数名后加上一对小括号,可以向过程或函数传递参数,参数之间需用逗号分开,过程与过程调用,在过程或函数中检验参数,TYPE(),VARTYPE(),和,PARAMETERS(),例:,FUNCTION plus2weeks (,dDate,),IF,TYPE(dDate,) = D,*,或写成,IF,VARTYPE(dDate,) = D,注意与,TYPE(),的区别,RETURN,dDate,+ 14,ELSE,MESSAGEBOX (,必须传递一个日期型数据!),RETURN &,返回空的日期,ENDIF,ENDFUNC,过程与过程调用,参数传递,调用函数或过程时,可以同时将一些数据值或者变量以参数的形式传递给被调用的过程或函数,格式:,DO |,WITH ,,|(,,, ),过程与过程调用,作用域,1.局部变量(,LOCAL,),只能在一个例程中被访问.局部变量的初值为.,F.,2.私有变量(,PRIVATE,),默认的,不需要特殊的关键字定义.如果在上级例程中已经有同名变量,可以用,PRIVATE,关键字予以声明.,3.公共变量(全局变量)(,PUBLIC,),可用语所有例程,公共变量不会自动清除,而只能用命令来清除,RELEASE,或,CLEAR ALL,例:,clear,public x1,local x2,do p6,?,主程序中的变量值,?,x1=,x1,?x2=,x2,return,procedure p6,?,过程,p6,中的变量值,x1=1,x2=2,x3=3,?x1=,x1,?x2=,x2,?x3=,x3,endproc,注:,在命令窗口中定义的任何变量都属于公共变量,
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 小学资料


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

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


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