《VFP的编程基础》PPT课件.ppt_第1页
《VFP的编程基础》PPT课件.ppt_第2页
《VFP的编程基础》PPT课件.ppt_第3页
《VFP的编程基础》PPT课件.ppt_第4页
《VFP的编程基础》PPT课件.ppt_第5页
已阅读5页,还剩79页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第2章,VFP编程基础,本章教学计划,教学目的:掌握数据类型的分类,熟练掌握常量、变量、各种表达式的定义,熟练操作常量、变量、内部函数及表达式的运算 重点:数据类型的定义、常量与变量的使用、内部函数的使用、表达式的构成 难点:表达式运算、内部函数使用 课时:课堂讲授2 课时,本章纲要,数据类型,常量与变量,函 数,表达式,数据类型 数据对象的取值集合,以及对之可施行的运算集合。 VFP的数据类型特点 VFP语言操作对象即包括常规编程语言处理的数据,也包括数据库数据。 数据类型分为内存变量数据类型、字段数据类型,2.1 数据类型、常量与变量,2.1.1 数据类型,仅用于字段数据类型 浮点型(Float) 双精度型(Double) 整型(Integer) 备注型(Memo) 通用型(General) 备注型(二进制) 字符型(二进制),通用数据类型 字符型(Character) 数值型(Numberic) 货币型(CurrencyY) 日期型(Date) 日期时间型(DateTime) 逻辑型(Logic) 对象型(Object),2.1.1 数据类型,备注型,用于存放较多字符型数据(超过254个字符)或者长度不一的字符型数据 用字母M表示 备注型数据只能作为数据表中备注型字段的值 备注型字段长度固定为4个字节,这4个字节存储的是实际数据在.fpt文件中的存储位置。 例如:职工信息表中的简历。,数据类型,通用型,数据类型,存储OLE(对象链接与嵌入)对象 (比如:电子表格、文档、图形、声音 ) 可以是任意类型数据。 只能用于数据表中的字段类型定义 通用型数据字段长度固定为4个字节,实际数据存放在与表文件同名的备注文件(.fpt)中 例如:职工信息表中的照片。,对象型与通用型类似,2.1.2 常量,定义:在命令操作和程序执行时,值与类型都不变的量。 分类:直接常量(6种)和编译常量。,直接常量类型定义,2019年7月30日星期二,第9页,直接常量类型定义,2.1 数据类型、常量与变量,2.1.3 变量,定义:在命令操作和程序执行时,值可以改变的量。 分类:字段变量和内存变量。,1、字段变量,定义:数据表各条记录的同一字段取值可能不同,因此表中的字段名可看为一变量。 字段变量包括字段名、字段值和域的概念。 随表的建立而定义,表中输入记录时为其赋值。,2.1.3 变量,1、字段变量,如果数据库中有20条记录,每个字段名就有20个可取值。表有一个记录指针,它指向的记录定义为当前记录,字段名变量的现值就是当前记录中对应字段的值。记录指针,是可以移动的,因此,字段名的取值随着指针的移动而改变,所以它是变量。,第12页,定义:数据库结构之外独立存在于内存中的临时存储变量。退出VFP时被清除。 命名规则 可用字符集:字母(不区分大小写)、数字、下划线、汉字。 不能使用数字开头 不的超过254个字符 不能使用系统保留字.例如clear 示例 合法名称:lcString、姓名、Average_of_gz 不合法: 2abc 同一变量: x-y,X-Y,2.1.3 变量,2、内存变量,如果内存变量与字段变量同名,则在调用该内存变量时应在内存变量名前加上符号“M.”或“M-” 。例如,M.姓名表示内存变量“姓名”的值。,2.1.3 变量,2、内存变量,分类:系统变量、简单内存变量和数组。,(1) 系统变量:VFP自动创建和命名的变量(74个)。用下划线字符开头。例如_SCREEN,可以用display memory命令查看。,(2) 简单内存变量:只存储一个值的变量。赋值前不用预先定义。,2.1.3 变量,2、内存变量,(3)数组:由一组有序排列的内存变量组成的变量。分为一维数组和二维数组。 每一个数组的数据元素的类型可以不相同 数组使用前需要预先定义 DIMENSION|DECLARE 数组名1(行下标 ,列下标) 下标是从1到n的自然数,DIMENSION a(2) b(2,2),2.1.3 变量,2、内存变量,例子:DIMENSION a(2) b(2,2) a(1)=5 a(2)=6 b(1,1)=1 b(1,2)=2 b(2,1)=你好 ?a(1),a(2) ?b(1,1), b(1,2), b(2,1), b(2,2),定义后的数组的初始值为逻辑型的.F.,结果:5 6 1 2 你好 .F.,内存变量的赋值 命令格式1:= 命令格式2:STORE TO 例子:DECLEAR c(2,2),d(2,2) a=.t. & a为逻辑型 b=100 & b为数值型 store “2” to a & a为字符型,这两条命令的区别是:第一种格式只能给一个内存变量赋值,第二种格式可以同时给多个内存变量赋相同的值。,3、内存变量操作命令,内存变量的显示 命令格式1:DISPLAY MEMORY LIKE TO PRINTERTO FILE 命令格式2: LIST MEMORY LIKE TO PRINTERTO FILE 例子: list memory & 连续显示所有内存变量 display memo like a* & 分屏显示所有以a开头的内存变量 list memo like ?1 & 连续显示所有首个字符为任意字 符,第二个字符为1的内存变量,两条命令的区别:LIST MEMORY命令一次连续显示指定的内存变量; DISPLY MEMORY命令分屏显示指定的内存变量,LIKE选项表示显示与通配符相匹配的内存变量,通配符?表示任意一个字符,通配符*表示任意多个字符,3、内存变量操作命令,内存变量的保存 格式:SAVE TO ALL LIKE|EXCEPT 内存变量的读入 格式:RESTORE FROM ADDITIVE 内存变量的清除 格式1:CLEAR MEMORY 功能:删除所有内存变量。 格式2:RELEASE ALL LIKE|EXCEPT 功能:删除指定的内存变量。,为了便于以后使用,可以将所定义内存变量的相关信息全都保存到一个文件中,该文件称为内存变量文件,默认的扩展名为.mem,3、内存变量操作命令,VFP变量总结,数据类型分为内存型和字段型 变量命名不区分大小写 常规变量使用前不需要定义,而数组需要先定义。字段变量随表的建立而定义,表中输入记录时为其赋值 数组的元素的数据类型可以不同,2.2 运算符与表达式,运算:对数据加工处理称为运算。运算分为运算符和运算量 表达式:由特定运算符将运算量连接起来的式子。 表达式分类: 数值表达式 字符表达式 日期表达式 关系表达式 逻辑表达式,1、表达式的输出命令: 格式:?表达式,表达式 功能:计算表达式的值,并在屏幕或打印机上输出。 ?表示换行显示表达式的值。 例如: ?4*6+10 34,2.2 运算符与表达式,2019年7月30日星期二,第23页,2、数值表达式,2.2 运算符与表达式,2019年7月30日星期二,第24页,3、字符运算符,注意:$运算结果为逻辑值,2.2 运算符与表达式,2019年7月30日星期二,第25页,4、日期和日期时间运算符,注意:两个日期不能相加;日期与日期时间型不能相减,2.2 运算符与表达式,2019年7月30日星期二,第26页,5、关系运算符,注意:(1)一表达式只能有一个关系运算符,且两边的运算量数据类型必须一致 (2)=只能用于字符串比较,2.2 运算符与表达式,所有关系运算符的优先级是相同的,2019年7月30日星期二,第27页,6、逻辑运算符,注意:参加逻辑运算的各项必须是逻辑值,2019年7月30日星期二,第28页,7、运算符的优先级,为了增强系统的功能和方便用户使用,VFP提供了许多内部函数,每个函数实现某一功能或运算。 函数调用的格式为: 函数名(参数表) 其中参数可根据实际需要选用,有些函数没有参数。即使没有参数,函数名后的一对括号也不能参略。 函数可分为数值型、字符型、日期时间型、数据类型转换型、测试型几种类型。,2.3 函数,1.程序设计基础,程序 ,算法:解决问题的方法和步骤,数据结构,算法,对数据的描述:在程序中指定数据的类型和数据的组织形式,对操作的描述,类比理解:菜谱原料操作步骤,一系列计算机指令的集合,2.4 程序设计方法与工具,2.程序设计的基本原则,程序设计基本原则,自顶向下,逐步分解 模块化设计,结构化编码 程序=数据结构+算法,将酒瓶和油瓶中的液体互换。 解决方法 1.拿来一个空瓶 2.酒瓶的酒倒入空瓶 3.油瓶的油倒入酒瓶 4.空瓶的酒倒入油瓶 思考 如何将变量A、B中存放的值互换?,3.程序文件的建立与运行,程序文件又称为命令文件 ,其扩展名为.PRG。,建立或修改程序文件 (1) 命令方式 格 式:MODIFY COMMAND ? 功 能:建立或修改一个程序文件。 (2) 菜单方式 文件新建,2. 程序的运行 运行方法:先编译,后执行;边编译边执行 (1) 命令方式 格 式:DO 功 能:依次执行程序中的各条命令。 (2) 菜单方式 程序运行 程序执行,2、置会话状态命令,3、交互式命令,4、等待命令,5、程序结束专用命令,1、程序注释命令,2.4 程序设计中常用专用命令,1、程序注释命令,格 式 :NOTE* 或 & 功 能 : NOTE*多用于对一个程序模块的 功能进行说明。&是用于在命令语 句末尾加上注释信息。都不被执行. 例 子 : a=mod(sqrt (9) , 3) & 对9求平方根,然后对3求模。,格 式 :SET TALK ONOFF 功 能 :控制Visual FoxPro编辑环境中调试状态的 打开与关闭。 说 明 :在调试状态开通( on )时 ,VFP在执行命令的时候会向用户提供大量的中间结果及反馈信息 ,一般用于程序调试时。开通不仅会减慢程序的运行速度,而且还会与程序本身的输出相互夹杂,引起混淆。所以在执行程序时,则通常置“会话”于关闭状态(off),2、置会话状态命令,3、交互式命令,(1)字符串接收命令,(2)任意数据输入命令,(3)定位输入输出命令,(1)字符串接收命令,格 式:ACCEPT TO 功 能:此命令是专门用于字符串的输入。,(2)任意数据输入命令,格 式 :INPUT TO 功 能 :从键盘输入数据保存在指定的内存变量中。,(3)定位输入输出命令,屏幕格式 系统将整个屏幕划分为: 25行 80列 XY平面坐标系。 命令格式 SAY GET DEFAULT READ,说明: (1)子句用来表示数据在窗口中显示的位置 ,行与列都是数值表达式或是数值型常量。 (2)SAY子句用来输出提示信息,GET子句用来输入及编辑数据。若缺省SAY子句,GET变量值从指定位置开始显示。 (3)GET子句中的变量必须具有初值,可用DEFAULT子句的指定初值。 (4)通过GET子句从外界输入的变量的值,必须通过READ命令来激活。在一个程序中如果有多个GET子句,只需在最后GET子句后面加上一个READ子句。一个READ子句可以激活它前面所有的未被激活的GET子句中的变量。,格 式: WAIT TO WINDOW AT , NOWAIT CLEAR | NOCLEAR TIMEOUT 功 能:暂停程序运行,直到用户输入任意的一个字符才重新开始执行程序,也可以用于输出一条提示信息。 说 明: 1)to :将用户键入的字符保存到内存变量。 2)Window at,:在VFP主屏幕 的指定位置出现一个Wait提示窗口。 3)Timeout:用来设定等待时间。,4、等待命令,例 子: WAIT “请检查输入内容“ WINDOW AT 9,9,RETURN & 终止程序执行,并返回到调用它 的上级程序继续执行,如无上级 程序则返回命令窗口。 CANCEL & 终止程序执行,清除程序的私有 变量,并返回命令窗口。 QUIT & 退出VFP系统,返回 WINDOWS, 与文件菜单的退出功能相同。,5、程序结束专用命令,三种基本的控制结构,顺序结构,分支结构,循环结构,2.5 程序设计的控制结构,1、顺序结构设计,顺序结构的程序在运行时按照语句排列的先后顺序,自顶向下依次执行。,开始,结束,语句1,语句2,2.5 程序设计的控制结构,2、分支结构,程序应具有判断功能,而判断是通过程序中的分支结构(选择结构)来实现的。,分支结构可分为单分支、双分支和多分支结构。实现分支结构的语句有 IF语句和DO CASE语句。,2.5 程序设计的控制结构,(1)、单分支结构 格式: IF ENDIF,(2)、双分支结构 格式:IF ELSE ENDIF,(3)、多分支DO CASE语句,格式: DO CASE CASE CASE CASE OTHERWISE ENDCASE,3、循环结构设计,(1).条 件 循 环,(2).步 长 循 环,(3).扫 描 循 环,2.5 程序设计的控制结构,(1)、条件循环,格式: DO WHILE LOOP EXIT ENDDO,注意事项:,(1)此循环为当型循环。对于当型循环,如果条件第一次就不成立,那么循环一次也不做。 (2)循环体内应有修改循环条件的语句或EXIT。 (3)LOOP,EXIT可在适当时候控制循环,一般用在IF或DO CASE语句中。,(2)、步长循环,条件循环可以实现已知和未知循环次数的循环。 对于循环次数已知的循环还可采用步长循环。,格式: FOR = TO STEP ENDFORNEXT,数值表达式,默认值为1。,说明: (1)循环变量按步长值增加或减小。 (2)当循环变量的值不在初值与终值范围内时,结束循环。,(3)、扫描循环,格 式: SCAN FORWHILE ENDSCAN,说 明: (1)针对当前工作区中被打开的表的记录进行扫描。 (2)子句确定扫描记录的范围,缺省则为ALL。 (3)对子句内满足FOR或WHILE的记录执行循环体中的规定操作。 (4)记录指针可自动往下移。,USE 员工表 STORE 0 TO n1,n2,j1,j2 SCAN IF 性别=“男” n1=n1+1 ELSE n2=n2+1 ENDIF DO CASE CASE 职称=“教授” j1=j1+1 CASE 职称=“副教授” j2=j2+1 ENDDO ENDSCAN,【例6.15】,统计员工表中男女人数,以及教授和副教授 的人数。,?“总共有”,n1,“个男员工” ?“总共有”,n2,“个女员工” ?“总共有”,j1,“个教授” ?“总共有”,j2,“个副教授” USE,循环小结,a)循环体中的变量一定要赋初值。 b)条件循环(do while)命令适用于各种类型的循环程序。为了避免死循环,循环体内要有修改循环变量的语句 c)计数循环(for)适用于已知循环次数的循环程序。尽可能不要在FOR循环内部使用改变循环变量的语句,循环小结,d) 扫描循环(scan)适用于对数据库操作的循环程序。 e) 事实上,ForEndfor和ScanEndscan是 Do WhileEnddo的特殊形式。,1.子 程 序,2.过程与过程文件,3.自定义函数,4.内存变量的作用域,5.数据传递,2.6 程序的模块化设计,1、子程序,一、定义: 子程序实际上是一个相对的概念,通常称调用的程序为主程序,被调用的程序为子程序。,二、调用与返回 DO WITH 1、主程序执行时遇到DO命令,执行就转向子程序。子程序执行完后就会返回到主程序。 2、参数表可以是表达式,若为内存变量,必须具有初值。 3、调用子程序时,参数表中的参数要传送给子程序。,三、子程序参数的定义: PARAMETERS 功能:接受主程序发送的参数值,调用返回主程序时把变 量的值回送给主程序相应的变量。 说明: a) PARAMETERS必须是被调用程序的第一个语句。 b) 程序返回主程序后,该命令定义的参数即被清除。 c) DO 命令传送参数的个数不能多于PARAMETERS参数 表中所列参数的个数。 d) DO命令所带的参数叫实际参数,PARAMETERS所对 应的叫形式参数。,求一个半径等于边长的圆与正方形面积之差。,主程序: STORE 0 TO S1,S2 INPUT “输入半径或边长的值:“ TO A DO YUAN.PRG WITH A,S1 DO ZHENG.PRG WITH A,S2 ?S1-S2,YUAN.PRG PARAMETERS R,S S=3.14*R2 RETURN,ZHENG.PRG PARAMETERS L,S S=L2 RETURN,【例6.15】,注 意 1、只有当DO命令中参数为内存变量时,子程序的参数才能返回给主程序,若参数为常量或表达式时,子程序的参数值不能够返回给主程序。 2、若子程序不需要参数时,DO命令也可以不带参数。,四、子程序的返回 RETURN TO MASTER|TO 说明: TO MASTER 直接返回到最外层主程序;TO 强制返回到指定的程序文件。,2、过程与过程文件,如果将多模块程序中的每个模块(主程序,子程序或自定义函数)分别保存为一个独立的.PRG文件,则每执行一个模块就要打开一个文件,势必会增加运行时间。为此VFP允许在一个.PRG文件中设置多个程序模块,并将主程序以外的每个模块定义为一个过程,即“过程文件”,仍以.PRG为扩展名。,一、过程的定义 PROCEDURE PARAMETERS RETURN,说 明: a) 每个过程均以PROCEDURE开始,以RETURN结束。每个过程实际上是一个独立的子程序或一个用户定义函数。 b) PROCEDURE 用于过程的第一条语句,它标识了每个过程的开始,同时定义了过程名。 c) 过程如果以RETURN 作为结束语句,则该过程既可用DO 的形式执行,又可当做一个合法的自定义函数,可供随时调用。,1,2,【例6.16】,二、过程文件 一个过程可以以文件形式单独存在,也可以将多个过程合并到一个过程文件。 过程文件是把多个过程集中起来用一个文件的形式存储在磁盘上,要调用其中的过程,必须先打开该过程文件。,格 式:SET PROCEDURE TO 功 能:打开过程文件。,【例6.18】,用过程文件实现求一个半径等于边长的圆与正方形面积之差的问题。,*Main.prg CLEAR SET TALK OFF SET PROCEDURE TO sub &打开过程文件sub.prg STORE 0 TO s1,s2 INPUT “输入半径或边长的值:“ TO a DO yuan WITH a,s1 &调用过程文件中的过程yuan DO zhen WITH a,s2 &调用过程文件中的过程zhen ?s1-s2 SET TALK ON RETURN,*过程文件sub.prg PROCEDURE yuan &过程yuan PARAMETERS r,s s=3.14*r2 RETURN PROCEDURE zhen &过程zhen PARAMETERS i,s s=i2 RETURN,3、自定义函数,一、自定义函数的定义 FUNCTION PARAMETERS RETURN ,自定义函数与系统函数调用方法相同: 函数名(),【例6.19】,将子程序中的例题改为自定义函数。,CLEAR S=0 INPUT “输入半径或边长的值:” TO A ?YUAN(A)-ZHEN(A) FUNCTION YUAN PARAMETERS R S=3.14*R2 RETURN S FUNCTION ZHEN PARAMETERS L S=L2 RETURN S,若两函数存在一个独立文件中,调用前也需要用SET PROCEDURE指定文件名,4、内存变量的作用域,一、全局变量 PUBLIC 功能:声明并建立全局变量。 说明: a) 一旦定义,可供所有的程序,模块使用。 b) 在命令窗口定义的变量是全局变量。 c) 程序执行完后不会自动清除。,若以内存变量的作用域分类,可分为下列四种: 全局变量、局部变量、局域变量、私有变量,二、局部变量 在程序中定义的变量,若没带PUBLIC声明,它只能在定义它的程序及其下级程序中使用,一旦定义它的程序运行结束,它便自动被清除。,三、局域变量 LOCAL 只能在定义它的程序中使用,一旦定义它的程序运行结束,它便自动被清除。,四、私有变量 PRIVATE 功能:声明并隐藏上级模块中的同名变量。,说明:a) 对PRIVATE中内存变量的修改并不影响上级程序中与之同名的内存变量的值。此命令只对本级程序及以下各级子程序有效,当返回到上级程序时,被PRIVETE隐藏的当前程序中的内存变量自动删除。 b) 在它们被隐藏期间,程序就不能再调用这些被隐藏的上级内存变量,但实际上它们仍然存在,一旦含有PRIVATE内存变量的程序结束后,被PRIVATE隐藏起来的那些以前建立的同名的上级内存变量自动恢复以前的内容和状态。,5、数据传递,调用子程序时,调用程序要把数据传递给子程序,子程序也可能把数据传回到调用程序,因此在调用子程序过程中,必然要考虑调用程序和被调用程序之间的数据是如何传递的。 调用子程序时的数据传递可以通过两种方式解决:,a)利用变量的作用域实现数据传递,结果为:48,b)利用参数实现数据传递,利用这种方式传递数据,子程序具有更大的独立性。编写子程序时,用PARAMETERS命令来说明将要输入、输出的变量;用DO命令来提供输入值和接受输出结果。 参数传递有两种方式:值传递和地址传递。,值传递:子程序中参数变化后的值不回传各上级调用程序。常量和表达式只能使用值传递方式。使用值传递方式的变量要用括号括起来。,地址传递:子程序中参数变化后的值要回传各上级调用程序。内存变量既可使用值传递方式,又可用地址传递。使用地址传递方式的变量不加括号。,写出下列程序的输出。,分析:程序将3个参数传递给过程SUB,第一个参数X采用地址传递方式,变量A的变化将引起X的变化;第二个参数Y采用值传递方式,B的变化不引起Y的变化;第三个参数是常数,最后输出为9 3。,【例6.23】,2.7 命令标准格式,VFP数据处理命令: 内存数据:主要利用表达式和函数处理 数据库数据:专有的、格式规范处理命令。,数据库数据命令一般格式 范围FIELDS ; FOR|WHILE ; TO PRINT|TO FILET,2.8 数据库命令标准格式,数据库数据命令一般格式 范围FIELDS ; FOR|WHI

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论