2022年程序设计-VisualFoxpro程序设计教案 .pdf

上传人:Q****o 文档编号:30525003 上传时间:2022-08-06 格式:PDF 页数:34 大小:362.91KB
返回 下载 相关 举报
2022年程序设计-VisualFoxpro程序设计教案 .pdf_第1页
第1页 / 共34页
2022年程序设计-VisualFoxpro程序设计教案 .pdf_第2页
第2页 / 共34页
点击查看更多>>
资源描述

《2022年程序设计-VisualFoxpro程序设计教案 .pdf》由会员分享,可在线阅读,更多相关《2022年程序设计-VisualFoxpro程序设计教案 .pdf(34页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、Visual Foxpro 程序设计教案第四章程序设计教学目的与要求 掌握结构化程序设计的三种结构控制语句的使用,在编程中能熟练使用程序模块,包括子程序、函数和过程。学会设计窗口的方法。教学内容 结构化程序设计的三种结构;子程序,函数和过程的概念;窗口的设计。教学重点与难点 结构化程序设计的三种结构;子程序,函数和过程。补充知识语言基础数据类型数据类型决定了数据的取值范围和可以参加的运算,只有同种类型的数据之间才可以直接运算,否则系统提示“ 数据类型不匹配” 的错误信息。VFP 常用数据类型有:字符型 (C) ,货币型 (Y) ,数值型 (N) ,日期型 (D) ,日期时间型 (T) ,逻辑型

2、 (L),备注型 (M) ,通用型 (G)等。常量和变量1. 常量指一个具体的、不变的值。不同类型的常量有不同的书写格式。VFP6.0中只有 6种常量:数值型常量(N) 用来表示数量, 它由数字 09,e,E、一个符号 (或 )和一个小数点(.)组成。 例如:80,-52.6 ,3E+9( 表示 3 109),2e-3( 表示 2 10-3) 等。字符型常量(C) 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 1 页,共 34 页 - - - - - - - - - Visual

3、Foxpro 程序设计教案用定界符括起来的由键盘上英文字母、空格、数字和汉字等字符组成的字符串。这里的定界符可以是一对单引号或一对双引号或一对方括号。例如:”abcd”, ? 杨红 ? , 男。注意:空串和空格串的区别;逻辑型常量(L) 只有两个值:真和假。“ 真” 用.t. .T.表示; “ 假” 用.f. .F.表示。日期型常量格式为: yyyy/mm/dd,yyyy-mm-dd,yyyy.mm.dd 日期时间型常量格式为: yyyy/mm/dd hh:mm:ss 货币型常量$12.34 2.变量存放可变数据的内存单元为“ 变量 ” ,其中存放的数据称为变量的值。在 VFP中有 3种变量:

4、字段变量、用户内存变量和系统内存变量。系统内存变量由VFP 定义;字段变量定义在数据表中;(用户 )内存变量多定义在程序中。每个变量都有一个名称,叫做变量名,VFP通过引用相应的变量名来实现对变量操作。变量名的命名规则是: 以字母、汉字或下划线开头,后跟字母、汉字、数字下划线等。例如变量名:姓名,出生日期 ,a,x1,x2,sum,delta,pi,max,zdz,stu_name。给变量命名时最好能“ 见名知义 ” 。另外,使用变量名不区分大小写。字段变量内存变量独立于表文件而存在于内存中的存储单元,它可以用来在程序的执行过程中保留中间名师资料总结 - - -精品资料欢迎下载 - - - -

5、 - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 2 页,共 34 页 - - - - - - - - - Visual Foxpro 程序设计教案结果与最后结果。内存变量的类型包括CDLNTY 六种类型,类型取决于它所存放的值。内存变量与字段变量同名,系统优先处理字段变量,可用前缀m.引用内存变量。变量的初值:在程序中若要使用变量,必须在使用之前为变量设定一个初值(以后根据需要还再改变它的值),这一操作可通过赋值语句实现。赋值语句可以将指定的值赋给该变量。一般格式为:a.变量名= 表达式系统计算 的值,并将结果送入指定的变量。b.stor

6、e to 系统计算 的值,并将结果送入 中的各个变量中。说明:、计算机先计算右边表达式的值,然后再将该值赋给指定变量。、不要将赋值号 (=) 与是数学中的等号混淆,a=5 应读作 “ 将数值 5赋给变量a” 或是“ 使变量 a 的值等于 5” 。不同于数学表达式,下面两个语句的作用是不同的x=y y=x 、不同于C 语言, VFP是一种弱类型语言,它允许通过此语句随时定义一个变量,并其值可以随时改变。x=10 &定义变量x,并赋初值x=x+10 &将 x 的值在原来的基础上增10 x=x*x &将 x 的值平方后再赋值给x 、 z=x+y不能写成x+y=z 、在引用一个变量前必须确保它已经赋值

7、。x=3 y=x*10 y=z+2 &此时系统提示出错:找不到变量z 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 3 页,共 34 页 - - - - - - - - - Visual Foxpro 程序设计教案例1 use sb browse ?名称&显示字段名称的值名称 =” 计算机 ” &定义内存变量名称,c 型,?名称&显示字段名称的值?m.名称&显示内存变量姓名的值例2 store 28.21 to a store “ 宿州学院 ” to b store .t. to

8、c d= $ 100 e=2002.5.10 store 0 to x,y,z 数组运算符和表达式运算是对数据进行加工的过程,描述各种不同运算的符号称为运算符,如加、减、乘、除,而参与运算的数据称为操作数。表达式由运算符和配对的圆括号将常数、变量、函数等操作数以合理的形式组合而成的式子。一、算术运算符及数值表达式a.算术运算符。它们运算的含义与数学中基本相同。+ 加法、正号- 减法、负号* 乘法,同数学中的/ 除法,同数学中的 或* 乘方,同数学中的乘方,如43或 4*3表示 43求余, 125 表示 12 除以 5 所得的余数2 ( ) 括号,只允许出现圆括号名师资料总结 - - -精品资料

9、欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 4 页,共 34 页 - - - - - - - - - Visual Foxpro 程序设计教案算术运算符在计算时的优先次序是:( ) */ + - b.算术表达式50*2+(70-6)8,a+b/a-b , (a+b)/(a-b) (哪个相当于baba?) c.注意事项:算术表达式与数学中的数学表达式写法有所区别,在书写表达式时应当特别注意:每个符号占1 格,所有符号都必须一个一个并排写在同一横线上,不能在右上角或右下角写方次或下标。例如: 23要写成 23 ,X

10、1 十 X2 要写成 X1+X2 。原来在数学表达式中省略的内容必须重新写上。例如: 2X 要写成 2*X 。所有括号都用小括号() ,且括号必须配对。例如: 3x+2(y+z)必须写成 3*(x+2*(y+z)。要把数学表达式中的某些希腊、拉丁符号,改成VFP 中可以表示的符号。例如:要把2r 改为 2*pi()*r。例如:数学的求根公式2a4acbb2应写成 (-b+sqrt(b2-4*a*c)/(2*a)和(-b-sqrt(b2-4*a*c)/(2*a),这里的sqrt 是个数学函数,求数的平方根。二、字符串运算符及字符表达式字符串运算符c1 c2 将 c1 和 c2 连接形成一个新串。

11、c1 - c2 将 c1 的尾部空格移到c2 后在连接成新串。ABCl23+666xyz 连接后结果为:ABCl23666xyz 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 5 页,共 34 页 - - - - - - - - - Visual Foxpro 程序设计教案ABC - DEFG 连接后结果为:ABC DEFG 三、日期表达式日期 + 天数、日期 -天数、日期1-日期 2 四、关系运算符及关系表达式用于判定指定的数据是否满足给定的关系,若满足计算的值为.t.;否则结果

12、为.f. (1)运算符= 等于 大于= 大于等于 小于= 小于等于 或# 或!= 不等于c1$c2 判断 c1 是否包含在c2 中= 字符型数据的精确相等(2)表达式常用于表示条件? 53 &结果为 .t. x=3 ?x=3 store “中国北京 ” to s1store “北京 ” to s2?s2$s1 &结果 .t. ?s1$s2 &结果 .f. 五、逻辑型运算符及逻辑型表达式逻辑型运算符将逻辑型数据连接起来的式子。前面关系运算的结果是逻辑型,因而逻辑型运算符常用于描述较复杂的关系,例如1x10 等。(1)运算符 and 与操作(.and.) 格式:条件1 and 条件 2 例如: x

13、=1 and x=10 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 6 页,共 34 页 - - - - - - - - - Visual Foxpro 程序设计教案说明:只有两个条件都为.t. 时,结果为 .t.( 也称条件满足 ); 否则结果为 .f. ( 也称条件不满足 )。or 或操作( .or .) 格式:条件1 or 条件 2 例如:x=1 说明:两者中只要有一个条件.t. ,结果为 .t. ;否则,结果为.f. not 条件取反(.not.) 格式: not 条件例

14、如:not x1 相当于 x=1) and (xb 或ac and a+cb and b+ca year 是否闰年:( year%400=0) or (year%4=0 and year%1000) 说明:一个表达式中出现多种运算,先进行算术运算,再比较大小,最后将比较结果进行复合。常用函数在 VFP中,算术运算仅提供加减乘除的四则运算,如何求一些复杂的运算(例如正弦、余弦 )呢?学过高数的同学知道有个“泰勒公式”,太复杂!事实上,为方便用户编程,每种程序设计语言都提供功能强大的系统函数(与数学上的函数没有什么区别)供用户调用, 从而名师资料总结 - - -精品资料欢迎下载 - - - - -

15、 - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 7 页,共 34 页 - - - - - - - - - Visual Foxpro 程序设计教案避免了一些繁琐的计算。从程序设计的角度来看,函数是子程序的一种,它能完成一种特定的运算。函数有三要素:函数名、逗号分开的参数、函数值。例如abs(-9),max(9,-3)等。我们用户在学习使用这些函数时要注意参数的个数、参数的约束条件及函数值的类型,比如date() 是无参函数, 返回一个日期值;求平方根函数sqrt 需要一个参数,并且只能是个非负数。1.数值函数函数格式说明abs(n) 求 n

16、的绝对值例如: abs(-9) 的值是 9 int(n) 取 n 的整数部分例如: int(4.5) 的值是 4,int(-4.5) 的值是-4 sin(n) cos(n) 对 n 分别求正弦和余弦值max(n1,n2,)min(n1,n2,)求 n1、n2中的最大者例如: max(9,3) 的值是 9 求 n1、n2中的最小者例如: min(9,3) 的值是 3 sqrt(n) 求 n 的平方根( n=0 )例如: sqrt(9) 的值是 3 mod(m,n) 求 m%n 的值,可用 %替代。rand(n) 返回 0 到 1 之间的随机数2.字符函数函数格式说明len(c) 求字符串 c 长

17、度。例如 len(“ a123bc de”)的值是 9。 Len( “奥运会 ”)的值为 6,len( ”)的值为 0 space(n) 产生含有n 个空格的字符串。例如space(5) 得到字符串” ” 。alltrim(c) 删除字符串c 的首尾空格。substr(c,n,m) 求子串。从字符串c 中提取从 n 开始的 m 个字符的子串。substr(“ abcde ” ,2,3) 结果 ” bcd ”,substr( “ abce ” ,1,1) 结果”a”, substr( “abce”,2) 结果 ”bce”。名师资料总结 - - -精品资料欢迎下载 - - - - - - - -

18、- - - - - - - - - - 名师精心整理 - - - - - - - 第 8 页,共 34 页 - - - - - - - - - Visual Foxpro 程序设计教案left(c,n) right(c,n) 右或左取字符串c 的 n 的字符形成一个新串upper(c),lower(c) 求字符串c 的大写或小写形式的字符串replicate(c,n) 将指定的c 重复 n 次,形成一个字符串at(c1,c2) 求串 c1 在 c2 中第一次出现的位置;若不出现c2 中,返回值为 0 3.日期函数函数格式说明date() 返回系统日当前日期time() 返回系统日当前时间yea

19、r(d) month(d) day(d) 对一个日期求四位年份、月份、日数4.转换函数转换函数的作用是将某一种数据类型转换成另一种数据类型,以便在一起参加运算。函数格式说明str( ,n3) 将数值 n1 转换成数字字符串(nc) val(c) 将字符串 c 转换成数值型数据(cn) asc(c) 求字符串c 中首字符的asc 值说明: ”A”Z的 asc 值是 6590 ;”a”z”的asc 值是 97122 chr(n) 根据 asc 值求对应的字符ctod(c) 将形如日期的字符串c 转换成日期型数据见例 3-36,37,38,39 5.测试函数函数格式说明名师资料总结 - - -精品资

20、料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 9 页,共 34 页 - - - - - - - - - Visual Foxpro 程序设计教案eof(n),bof(n) 判定表文件的记录指针是否到文件头或文件尾recno(n) 求表文件的当前记录号reccount(n) 求表文件的总记录个数found(n) 测试针对表文件的查找是否成功ctod(c) 将形如日期的字符串c 转换成日期型数据type(“表达式 ”)测 试 表 达 式 的 类 型例 如 : type(“12”)值 是n,type(“ 12”)值为

21、 c iif(,) 测试条件表达式的值,若为.t. ,函数的值是 ;否则函数的值是 。说明:这里的n 均指表所在的工作区,缺省时指当前工作区。type 函数形式较特殊。 4.1 程序文件4.1.1 程序文件的建立与执行一、程序文件 (*.prg) 的建立与修改命令格式:modify command 说明:(1)程序文件由VFP 命令组成。文件名前也可以指明路径,如:modify command e:s12qh (2)关闭编辑窗口的方法:Ctrl+W ;Esc;双击控制菜单;关闭按钮(3)文本编辑窗口也可以编辑由ASCII 字符组成的非.PRG 文件。二、程序的运行命令格式:Do 名师资料总结

22、- - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 10 页,共 34 页 - - - - - - - - - Visual Foxpro 程序设计教案功能:执行程序说明:Do 也可以运行其它程序, 必须包含扩展名。三、程序书写规则1、命令分行续行符 ? ;?2、命令注释独立的注释行是以* 开头;注释部分以&开头。例 * 本程序用于修改表的指定记录set date USA &日期格式设置为MM-DD-YY 四、求解的基本逻辑与程序通用性1、求解的基本逻辑输入数据处理数据输出数据r=3 s=3.14*r

23、*r ?” 圆面积 = ” ,s 2、程序的通用性4.1.2 程序文件中的专用命令一、程序结尾的专用命令return: 使程序结束执行, 返回到调用它的上级程序继续执行,若无上级程序则返回到命令窗口。一般缺省。cancel: 能使程序运行终止,清除程序的私有变量,并返回到命令窗口。quit: 正常退出VFP,自动保存文件,并删除磁盘中的临时文件,程序终止运行后返回到Windows 。二、输入输出专用命令命令基本格式:名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 11 页,共 34

24、页 - - - - - - - - - Visual Foxpro 程序设计教案say get default (1) 表示数据在窗口中显示的位置。(2)say 子句用来输出数据,get 子句用来输入数据及编辑数据。(3)get 子句中的变量必须具有初值,或用default 子句的 指定初值。(4)get 子句的变量必须用read 命令来击活。例 4-1 编程根据记录号来修改某设备的价格和部门。*e4-1.prg clear use sb jlh=1 2,10 say “ 请输入记录号:” get jlh read go jlh 4,10 say “ 请修改第 ” +str(jlh,1)+”

25、个设备的数据:”&输出提示字符串6,10 say “ 价格 ” get 价格8,10 say “ 部门 ” get 部门read use 三、 wait 命令命令格式:wait to windows at , nowaitclear | nocleartimeout 说明:(1)wait 命令使 VFP 程序暂停执行,等用户按任一键后,程序继续执行。(2) 用来保存键入的字符,如果不选to 子句,则输入的数据不予保存。(3)如果缺省 ,则执行命令后屏幕显示” 按任意键继续,” ,提示按任一键继续执行。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - -

26、- - - - - 名师精心整理 - - - - - - - 第 12 页,共 34 页 - - - - - - - - - Visual Foxpro 程序设计教案(4)Windows 子句可使主屏幕上出现一个wait 提示窗口,位置由wait 选项的 ,来指定。若缺省at 选项, 将显示在主屏幕右上角。(5)若使用nowait 选项,系统将不等用户按键,立即往下执行。(6)clear 选项用来关闭提示窗口。Noclear 表示不关闭提示窗口,wait 窗口将在执行到下一个 wait ,window 命令时自动关闭。(7)timeout 子句用来设定等待时间(秒数 ),一旦超时自动往下执行命

27、令。例 4-2 wait命令输出信息示例wait “ 请检查输入内容!” window 4.2 程序的控制结构4.2.1 顺序结构按照语句排列顺序的先后执行。4.2.2 分支结构一、简单的条件语句语句格式:if endif 例 4-3 将 sb.dbf 中第一个非主要设备的价格减少10% 。*e4-3.prg use sb locate foe not 主要设备if found( ) display 名称 ,价格replace 价格with 价格 *(1-0.1) 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 -

28、 - - - - - - 第 13 页,共 34 页 - - - - - - - - - Visual Foxpro 程序设计教案display 名称 ,价格endif use return 二、带 else 的条件语句语句格式:if else endif 宏代换函数格式:& , 功能:替换出字符型内存变量的值。例 4-4 宏代换示例m=5 x= ” m”& x 为字符型内存变量?x & 显示 m ?&x & 显示 5,得到了变量x 的值。例 4-5 试编一程序,能打开任意一个表来浏览。*4-5.prg 5,10 say “ 请输入表名: ” get bm default space(10)

29、read bm=alltrim(bm) if file( “ &bm.dbf”) use &bm 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 14 页,共 34 页 - - - - - - - - - Visual Foxpro 程序设计教案browse else wait ” 该文件不存在!” window endif 注意: VFP不允许直接用变量名作为表名。还可以用use (bm) 。三、多分支语句语句格式:do case case case ,case otherwise

30、 endcase 例 4-6 显示当前季节程序*e4-6.prg yue=month(date() do case case inlist(yue,3,4,5) jj= ” 春”case inlist(yue,6,7,8) jj= ” 夏”case inlist(yue,9,10,11) 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 15 页,共 34 页 - - - - - - - - - Visual Foxpro 程序设计教案jj= ” 秋”case inlist(yue,1

31、2,1,2) jj= ” 冬”endcase wait jj window 注意:(1)if 和 endif 必须成对出现;do case 和 endcase 必须成对出现。(2)采用缩进的书写格式,便于理解和阅读。(3)表达分支和循环的语句不能在一行写完,必须一行一行的写。4.2.3 循环结构一、条件循环语句格式:do while enddo 例 4-7 试编一个程序,显示sb.dbf 中所有单价超过10000 元的设备名称。*e4-7.prg use sb do while not eof( ) if 价格 10000 ?名称endif skip enddo use 例 4-8 按 9 万

32、元以上, 19 万元, 1 万元以下三级价格分档统计sb.dbf 中设备的个数。循环条件循环体名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 16 页,共 34 页 - - - - - - - - - Visual Foxpro 程序设计教案*e4-8.prg store 0 to k1,k2,k3 use sb do while not eof( ) do case case 价格 90000 k1=k1+1 case 价格 10000 k3=k3+1 otherwise k2=k

33、2+1 endcase skip enddo ?” 9 万元以上设备个数:” +str(k1) ?” 19 万元设备个数:” +str(k2) ?” 1 万元以下设备个数:” +str(k3) use 二、步长循环语句格式:for = to step endfor | next 说明:内存变量称为循环变量; 称为初值; 称为终值; 称为步长,缺省为1。例 4-9 编写计算s=1+2+3+,+100 的程序。*e4-9.prg 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 17 页,

34、共 34 页 - - - - - - - - - Visual Foxpro 程序设计教案s=0 for i=1 to 100 s=s+i next ?” s= ” ,s 三、扫描循环语句格式:scan for endscan 说明: scan 针对于当前表进行循环。例 4-10 根据 4-7 的要求,用扫描循环语句编程。*e4-10.prg use sb scan for 价格 10000 ?名称endscan use 四、循环辅助语句do while do while Loop exit 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - -

35、- - - 名师精心整理 - - - - - - - 第 18 页,共 34 页 - - - - - - - - - Visual Foxpro 程序设计教案enddo enddo 例 4-11 编程计算s=1+2+3+,+100 ,并求 1100 之间的奇数之和。*e4-11.prg store 0 to i,s,t do while i100 i=i+1 s=s+i if int(i/2)=i/2 Loop endif t=t+i enddo ?” 1+2+3+, +100= ” ,s ?” 1100 奇数和为: ” ,t 五、多重循环(循环的嵌套)例 4-12 在 sb.dbf 表中找出

36、所有价格超过P的设备的编号、名称与价格,并要求在各输出行下显示一行虚线。*e4-12.prg clear use sb 5,10 say ” 请输入价格: ” get jg default 0 read scan if 价格 jg ?编号 +space(3)+名称 +space(3)+str(价格 ,9,2) ? for i=1 to 30 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 19 页,共 34 页 - - - - - - - - - Visual Foxpro 程序设计

37、教案?” -“endfor endif endscan use 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 20 页,共 34 页 - - - - - - - - - Visual Foxpro 程序设计教案 4.3 多模块程序4.3.1 子程序一、调用和返回调用: Do 返回: Return 二、带参数子程序的调用与返回命令格式:do with in 说明:(1)中的参数可以是表达式,但若是内存变量必须具有初值。(2)当 是 in 子句 中的一个过程时,Do 命令调用该过程。子

38、程序中的参数格式:parameters 说明:(1)parameters必须是被调用程序的第一个语句。(2)命令中的参数被VFP默认为私有变量,返回时回送参数值后即被清除。(3)参数的个数必须相同。例 4-13 设计一个计算圆面积的子程序,并要求在主程序中带参数调用它。*e4-13.prg ymj=0 5,10 say “ 请输入半径: ” get bj default 0 read do js with bj,ymj ?” ymj= ” ,ymj return 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 -

39、- - - - - - 第 21 页,共 34 页 - - - - - - - - - Visual Foxpro 程序设计教案子程序:*js.prg parameters r ,s s=PI( )*r*r return 三、子程序嵌套嵌套返回命令方式:return to master | to 说明:to master:返回主程序时直接返回到最外层主程序。to :强制返回到指定的程序文件。QUIT:任何情况下都能退出VFP。4.3.2 自定义函数VFP提供了很多的系统函数,我们尽量优先使用系统函数,但在系统函数不能解决问题时我们就不得不自己定义函数。一、自定义函数的建立格式:function

40、 parameters return 说明:(1)自定义函数名不能和VFP系统变量同名,也不能和内存变量同名。(2)自定义函数调用方法和系统函数相同,形式:函数名 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 22 页,共 34 页 - - - - - - - - - Visual Foxpro 程序设计教案例 4-14 设计一个自定义函数,用来求一元一次方程AX+B=0的根。解法一:自定义函数作为一个独立的文件*root.prg parameters a,b return iif

41、(a=0,” 无解 ” ,-b/a) 调用 root 函数来解决方程3X+1=0: ?” X:” ,root(3,1) 解法二:自定义函数与其调用语句包含在同一程序中。*root1.prg clear 5,10 say “ 一次项系数: ” get a default 1 7,10 say “ 常数项: ” get b default 0 read ?” x: ” ,root(a,b) function root parameters u,v return iif(u=0,” 无解 ” ,-v/u) 二、数组参数的传递*root2.prg clear dimension fs(2) fs(1)

42、=1 fs(2)=0 5,10 say “ 一次项系数: ” get fs(1) 7,10 say “ 常数项: ” get fs(2) read 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 23 页,共 34 页 - - - - - - - - - Visual Foxpro 程序设计教案?” x: ” ,root( fs ) function root parameters js return iif(js(1)=0,” 无解 ” ,-js(2)/js(1) 4.3.3 过程

43、主程序以外的每个模块都是一个过程文件,扩展名仍是.prg 。过程的格式:procedure parameters return 例 4-15 将例 4-13 的程序改变为过程调用*4-15.prg set decimals to 2 5,10 say “ 请输入半径: ” get bj default 0 read do js with bj,ymj return procedure js parameters r ,s s=PI( )*r*r return 例 4-16 调用过程文件中的过程示例主程序:*e4-16.prg 名师资料总结 - - -精品资料欢迎下载 - - - - - - -

44、 - - - - - - - - - - - 名师精心整理 - - - - - - - 第 24 页,共 34 页 - - - - - - - - - Visual Foxpro 程序设计教案ymj=0 5,10 say “ 请输入半径: ” get bj default 0 read do js with bj,ymj in js1 ?” ymj= ” ,ymj 过程文件:*js1.prg procudre js parameters r ,s s=PI( )*r*r 4.3.4 变量的作用域作用域:变量的作用范围。变量按作用域划分:公共变量;私有变量和本地变量一、公共变量:任何模块都能使用

45、的变量。命令格式:public 说明:(1)若下层模块中建立的内存变量要供上层模块使用,或某模块中建立的内存变量要供并列模块使用,必须将这种变量说明成公共变量。(2)VFP 默认命令窗口中定义的变量都是公共变量,但这样的变量不能在程序方式下使用。(3)程序终止执行时公共变量不会自动清除,必须用release 和 clear all 命令来清除。二、私有变量VFP默认在程序中定义的变量是私有变量,私有变量仅在定义它的模块及其下层模块中有效,而在定义它的模块运行结束时自动清除。上级模块出现同名的变量时,则屏蔽上级变量。命令格式:名师资料总结 - - -精品资料欢迎下载 - - - - - - -

46、- - - - - - - - - - - 名师精心整理 - - - - - - - 第 25 页,共 34 页 - - - - - - - - - Visual Foxpro 程序设计教案private all like | except 说明:(1)private “声名”:仅指变量的类型。public “建立”:初声名外还对变量赋初值。(2)私有变量能避免多个人员设计同一个程序时出现变量同名时的互相干扰问题。(3)在程序模块调用时,参数接受命令parameters声名的参变量也是私有变量,与 private命令作用相同。例 4-17 变量隐藏与恢复的示例*e4-17.prg parame

47、ters sj private mj mj=3.14*sj*sj ?” 程序运行时的变量清单:”list memo like ?j return (2)在命令窗口中键入下列命令:release all mj=0 bj=3 ?” 程序执行前的变量清单:”list memo like ?j do e4-17 with bj ?” 程序执行后的变量清单:”list memo like ?j 三、本地变量只能在建立它的模块中使用,而且不能在高层或低层模块使用,该模块运行结束时本地变量就自动释放。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - -

48、 - 名师精心整理 - - - - - - - 第 26 页,共 34 页 - - - - - - - - - Visual Foxpro 程序设计教案命令格式:local 注意: local 和 locate 前 4 个字母相同,故不可缩写。4.3.5 程序调式的方法一、调式的概念:反复的检查更正,直至达到预定设计要求。调试的三步:检查程序是否存在错误;确定出错位置;纠正错误。1、程序中常见的错误(1)语法错误命令拼写错误;命令格式写错;使用未定义的变量;数据类型不匹配;操作文件不存在。(2)超出系统允许最大范围错误文件太大(不超过20G) ;嵌套超出范围(DO 允许 128 层嵌套)。(3

49、)逻辑错误计算和处理有逻辑错误。2、差错技术第一类:静态差错,阅读程序找出其中的错误。第二类:动态差错,四种方法如下:(1)设置断点:若程序执行到某语句处能自动暂停运行,则该处成为断点。?” x= ” ,x wait window (2)单步执行:一次执行一个命令(3)跟踪:在程序执行中跟踪某些信息的变化,有的系统还能显示执行过的语句的行号。(4)设置错误陷阱:出现错误会中断到处理程序,再回到中断处。二、调式器1、打开调试窗口(1)选定 VFP工具菜单的调式器命令。(2)在命令窗口中键入debug 命令。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - -

50、- - - - - - 名师精心整理 - - - - - - - 第 27 页,共 34 页 - - - - - - - - - Visual Foxpro 程序设计教案2、调试器窗口的组成(1)跟踪窗口正在执行的代码行断点断点的设置:双击某代码行的行首,显示一个圆点,表示该语句被设置为断点。双击圆点则能取消断点。(2)监视窗口:用于设置监视表达式及其当前值。可以在监视文本框中键入表达式。(3)局部窗口:用于显示程序、过程和方法程序中的所有变量、数组、对象以及对象成员。(4)调用堆栈窗口:用于显示正在执行的过程、程序和方法程序。(5)调试输出窗口:用于显示活动程序、过程或方法程序代码的输出。3

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

当前位置:首页 > 技术资料 > 技术总结

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

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