vf子程序、函数与过程
- 格式:ppt
- 大小:418.51 KB
- 文档页数:36
VFP常用编程命令及常用函数VFP常用编程命令及常用函数常用编程命令及常用函数注:在语法中如用方括号“[]”括起来的词句,表示可以不用。
常用命令假设(if...endif) 循环(dowhile...enddo)分支(docase...endcase)赋值(store...to) 调用表单(do form) 调用子程序(do)返回调用程序(return) 启动事件处理(readevents)清除事件处理(clearevents)开关命令执行状态(set talkon/off)结束程序(cancel)常用函数数值转换字符(str()) 字符转换数值(val()) 取系统日期(date())取年份(year()) 取月份(month()) 取天日(day())取整(int()) 四舍五入(round()) 删除标记(delete())记录号(recno()) 记录数(reccount()) 找到记录(found())表结尾(eof()) 表开头(bof()) 消除后续空格(trim())消除前导空格(ltrim())假设语句根据一逻辑表达式的值,有条件的执行一组命令。
语法:IF 逻辑表达式 [THEN]程序组1[ELSE程序组2]ENDIF参数:逻辑表达式代表一逻辑值,如果这逻辑值为真,系统执行程序组1,否则不执行程序组1,如果有else及程序组2的话,则执行程序组2,如没有则什么也不执行,直接执行endif后面的语句。
备注:在if...endif之间还可以有if...endif,即该命令是可以嵌套的。
then可以有也可以没有,对程序没有影响。
else及程序组2可以有也可以没有,但如果有的话,在逻辑表达式的值为假时,程序组2将被执行。
if 与 endif 必须配对使用,即有一个 if 必须有一个 endif,否则程序会出错。
举例:例1:假如分数字段的值大于等于90,则让等级字段的值为“优”,并显示该记录。
实验三 VFP表达式、函数和命令的使用一、实验目的1、掌握VFP各类型数据的运算符和表达式,能正确由数学表达式转换为VFP 表达式;2、掌握常用VFP函数的功能和使用方法;3、知道VFP命令的一般使用格式,掌握命令的书写规则,了解命令各子句的正确书写格式;二、实验操作内容与步骤1、VFP运算符VFP中运算符分为数值运算符、字符运算符、日期运算符、逻辑运算符和关系运算符,数值运算符以数值数据为操作对象且最终运算结果也是数值数据;字符运算符以字符数据为操作对象而其运算结果可以是字符数据,也可以是逻辑数据;日期运算符以日期数据作为操作对象,运算结果可以是日期数据,也可以是数值数据;逻辑运算符以逻辑数据为操作对象,且其运算结果最终也是逻辑数据;关系运算符以数值、字符、日期、货币等为操作对象,运算最终结果只能是逻辑数据。
数值运算符有:(),^或**,*,,/,+,-,%字符运算符有:+,-,日期运算符有:+,-关系运算符有:<,>,<=,>=,<>或#,=,==,$逻辑运算符有: .NOT.或!,.AND.,.OR.2、VFP表达式(1)数值表达式?2004/4-99^0.5+30%2 491.05a=5b=4c=3n=(a+b+c)/2?”S=”,(n*(n-a)*(n-b)*(n-c))^0.5 6?54%7 5 125.00?5^3(2)字符表达式C1=”CHINA ” &&(注意有四个空格)C2=”中国”C3=”610041 ” &&(注意有四个空格)C4=”2004”?C1+C2 CHINA 中国?C3+C4 6100412004?C1-C2 CHINA中国?C2$C1 .F.?”0”$C3.T.(3)日期表达式?DATE()03/25/11D1=DATE()+20D2={^2004-02-26}D3=DATE-10?D1-DATE() 20?D1+30 05/14/11?D2-D1 -2604?D2>D1 .F.(4)关系表达式?a=b .F.?a>b .T.?a+b>=b+c .T.?c1>C2 .F.?d2<D1 .T.(5)逻辑表达式L1=.T.L2=.F.?.NOT.L1 .F.?L1.Or.L2 .T.?1>2.AND.L1 .F.?DATE()={^2004-02-25}.OR.L1.ANDL2.F.3、常用函数(1)数值函数①、绝对值函数——ABS()?ABS(7-2*4),ABS(-3^4),ABS(200-45) 1 81.00 155②、指数函数——EXP()?EXP(0),EXP(1),EXP(-1) 1.00 2.72 0.37③、取整函数——INT()?INT(100/3),INT(1/6),INT(2**2)33 0 4④、平方根函数——SQRT()?SQRT(9),SQRT(60) 3.00 7.75⑤、最大值和最小值函数——MAX()和MIN()?MAX(12,30,40,90),MIN(1,0,-20,45/9) 90 1⑥、求余函数——MOD()?MOD(4,2),MOD(9,2),MOD(20,-3),MOD(-3,20) 0 1 -1 17MOD(A,B)的功能说明:当A*B>0时,MOD(A,B)=B/|B|*MOD(|A|,|B|)当A*B<0时,MOD(A,B)=B/|B|*(|B|-MOD(|A|,|B|))⑦、圆周率函数——PI()?PI() 3.14(2)字符函数①、求子串位置函数——AT()、ATC()、AT-C()和ATCC()?AT(”FOX”,”Visual FOXPro”),ATC(‘FOX’,“FoxPRO”)8 1 ?ATCC(‘技术’,“发展高新技术产业”) 5②、取子串函数——SUBSTR()和SUBSTRC()?SUBS(“我是中国人”,3,4),SUBSTRC(“我是中国人”,2,2)中国是是③、测试字符串长度函数——LEN()和LENC()?LEN(“中国人民”),LENC(“中国人民”)8 4④、英文字母大小写转换函数——LOWER()和UPPER()?LOWER(“ABCdFG”),UPPER(“dir foxpro”)abcdefgDIR FOXPRO(3)日期时间函数——DATE()、YEAR()、MONTH()和DAY()?DATE(),YEAR(DATE()),MONTH(DATE()),DAY(DATE())03/25/11 2011 3 25(4)转换函数①、ASCII码值与字符转换函数——ASC()和CHR()?ASC“A”),ASC“a“) A a?CHR(65),CHR(97)65 97②、日期形式字符数据与日期数据的转换——CTOD()和DTOC()?CTOD(“03-08-04“)+10,”今天是“+DTOC(DATE())03/18/04 今天是03/25/11③、数值与字符数据的转换函数——STR()和VAL()?STR(12345),VAL(“12345“)12345 12345.004、VFP命令的使用方法(1)、命令名称必须位于命令行的开始位置,其余子句间的位置可以任意,子句间用空格分隔,关键词和命令可以缩写为前四字母组成,大小写等效;(2)、命令中的标点符号必须是英文半角状态下的标点符号;(3)、屏幕行输入不完命令行可以断行于下一行输入,但上行行尾必须使用分号“;“。
VFP命令、函数及程序语句大全(2)二、常用函数1、数学函数函数用途ABS(<数值表达式>)绝对值,|x|CEILING(<数值表达式>)>=自变量的最小整数EXP(<数值表达式>)对基E的幂,e=2.71828FLOOR(<数值表达式>)<=自变量的最大整数INT(<数值表达式>)取整(舍尾)自变量LOG(<数值表达式>)自变量的自然对数,ln xLOG10(<数值表达式>)自变量的普通对数,lg xMAX(<表达式1>,<表达式2>)两个值的最大值MIN(<表达式1>,<表达式2>)两个值的最小值MOD(<数值表达式1>,<数值表达式2>)求余数RAND([<数值表达式1>])返回伪随机数ROUND(<数值表达式1>,<数值表达式2>)四舍五入第一个自变量SIGN(<数值表达式>)自变量的符号SQRT(<数值表达式>)平方根(正根)2、字符串操作函数函数用途&<内存变量> 用于代替内存变量内容LEN(<字符串表达式>)返回字符串表达式的字符个数SPACE(<数值表达式>)生成空格SUBSTR(<字符串表达式>,<数值表达式n>[,<数值表达式L>])求子字符串,从指定的字符串表达式第n个开始,总长为L的字符串LOWER(<字符串表达式>)将字符串字母转换成小写字母UPPER(<字符串表达式>)将字符串字母转换成大写字母TRIM(<字符串表达式>)删除字符串尾空格ASC(<字符串表达式>)返回字符串表达式最左边的第一个字符的ASCII码CHR(<数值表达式>)将数值表达式转换成字符AT(<字符串表达式1>,<字符串表达式2>[,<数值表达式n>])确定字符串表达式1在字符串表达式2中的位置,n 为字符串表达式第几次出现STR(<数值表达式>[,<数值表达式L>][,<数值表达式n>)将数值转换为字符串,L为数值表达式总长,n为小数位数VAL(<字符串表达式>)将数字字符串转换为数字TYPE(<表达式>)检测表达式值的数据类型LTRIM(<字符串表达式>)删除字符串左部空格RTRIM(<字符串表达式>)删除字符串右部空格LEFT(<字符串表达式>,<数值表达式n>)取字符串左边部分字符,n为返回的字符个数RIGHT(<字符串表达式>,<数值表达式n>)取字符串右边部分字符,n从右边截取字符个数3、表(.dbf)操作函数函数用途BOF([<工作区号或别名>])查表文件开始函数EOF([<工作区号或别名>])表文件结尾测试函数RECNO([<工作区号或别名>])测试当前或指定工作区表的当前记录号DELETED([<工作区号或别名>])记录删除测试函数FILE(<"字符串">)测试文件是否存在函数DBF([<工作区号或别名>])检测表的文件名函数4、日期、时间函数函数用途DATE()查系统当前日期函数TIME([<数值表达式>])查系统当前时间函数YEAR(<日期型表达式>|<日期时间型表达式>)由日期查年函数MONTH(<日期型表达式>|<日期时间型表达式>)从日期查月份函数CMONTH(<日期型表达式>|<日期时间型表达式>)由日期查月份名函数DAY(<日期型表达式>|<日期时间型表达式>)从日期查当月的日函数DOW(<日期型表达式>|<日期时间型表达式>[,<数值表达式>])由日期查星期函数CDOW(<日期型表达式>|<日期时间型表达式>)从日期查星期名函数DTOC(<日期型表达式>|<日期时间型表达式>)日期转换为字符函数CTOD(<字符串表达式>)字符串转换为日期函数CTOT(<字符串表达式>)返回日期时间值函数TTOC(<日期时间型表达式>)返回字符值5、显示、打印位置函数函数用途ROW()判断光标行位置函数COL()判断光标列位置函数INKEY([<数值表达式>])检测用户所击键对应的ASCII码函数,数值表达式以秒为单位等待击键的时间6、其他函数函数用途DISKSPACE()返回默认磁盘驱动器中可用字节数函数OS()检测操作系统名称的函数VERSION()返回VFP版本号的函数VFP命令、函数及程序语句大全(3)三、主要程序语句1、条件判断语句(1)IF <条件><命令语句组>ENDIF说明:如果条件为真,则执行命令语句组中的各语句,否则跳过这些命令语句不执行,而执行ENDIF后的语句。
●带参数的子程序调用:1、建立子程序SUBJC.PRG,功能是求x的阶乘,代码如下:Parameters x , y && 定义形式参数N=1Y=1Do while n<=xY=Y*n &&累计乘积的表达式,结果保存y变量中N=N+1Enddoreturn &&返回主程序, 将y值回传给s,即s=y2、建立主程序JCMAIN.PRG,代码如下:S=0Do SUBJC with 5, S && 调用子程序,并传递参数5,S, 即x=5 y=s ? S &&120 5的阶乘值●带参数的过程文件调用1、建立过程文件SP1.PRG,功能是求x的阶乘,代码如下:Procedure JC &&在过程文件中定义一个名为JC的过程Parameters x , y &&定义形式参数N=1Y=1Do while N<=xY=Y*NN=N+1EnddoReturn &&返回主程序,将y值回传给s,即s=y注:多个过程可以放在一个过程文件中,用过程名来区分。
实际上,过程和子程序是一回事,只不过把多个子程序保存在一个PRG文件中,在PRG文件中每个子程序(过程)用Procedure 语句单独定义罢了,而把这个PRG文件成为过程文件。
2、建立主程序SPMAIN.PRG,代码如下:Set procedure to sp1 &&打开过程文件SP1.PRGS=0Do JC with 5,S &&调用JC过程,并传递参数5,S,即x=5 y=s? SSet procedure to &&关闭过程文件。