2014.11.26 星期三
教学内容:函数(二)
教学目的:掌握常用的函数
教学重点:函数的分类、功能调用
教学难点:类型转换函数、测试函数
教学过程:
一、导入
前几节,我们从认识什么函数,函数的长相,函数调用时应该注意的事项,进行了学习。也接触到了INT()、round()等函数,对函数的功能及函数的调用,有了比较更改的认识,这节课,我们分别讲一下,在VFP中常用到的函数。
二、新授
1.函数的分类
根据函数的处理的源数据类型(即自变量类型),可以分为:
1)处理数据型的函数,即5.2.1节的“数值运算函数”
2)处理字符串的函数,即5.2.2节的“字符串操作函数”
3)处理日期和时间的函数,即5.2.3节的“日期与时间函数”
4)处理类型匹配的函数,即5.2.4节的“类型转换函数”
5)处理测试数据的函数,即5.2.5节的“测试函数”
2.函数的功能(只写出相关的函数名)
1)数值运算函数:取整函数INT、四舍五入函数round、求平方根函数sqrt、取模函数MOD、最大值函数max、最小值函数min
2)字符串操作函数:截取子字符串函数substr、字符串长度函数len、左截取left、右截取函数right
3)日期与时间函数:当前日期函数date、年份函数year、时间函数time等
4)类型转换函数:数据转字符串函数str、字符串转数值val、字符串转日期ctod、日期转字符dtco、转大写字母函数uppe、转小写字母函数lower
5)测试类型函数:测试数据类型函数type、条件函数if、文件开始bof、文件结尾eof、当前指针recn、当前表dbf、当前库dbc等
3.分类型介绍函数(每类重点讲解一两个函数,学习掌握一个函数的相关要素,达到主动学习和自学的目的)
1)数据运算型函数
2)字符串处理函数
SUBSTR(expC,expN1,expN2)
截取一个字符串的一部分,返回一个字符串,是原串的子串。
substr函数
STORE 'abcdefghijklm' TO mystring
CLEAR
? SUBSTR(mystring, 1, 5) && 显示 abcde
? SUBSTR(mystring, 6) && 显示 fghijklm,省略第expN2,则从第6个到末尾。
相关函数:left(expC,expN),right(expC,expN),即左截取、右截取。
2.LEN函数
A=“abcdefg”
?len(a) &&显示结果为7
?len(a)+2 &&显示结果为9,即函数值可参与运算
?len(a+a) &&显示两个字符串的长度,结果为14
Accept “请输入一个字符串” to x &&从键盘上获得一个字符串
Y=len(x) &&将x中字符的个数,保存到变量y中。
For i=y to 1 step -1 &&从Y个循环至1,步长为-1
?? subs(x,i,1) &&从X中截取第i个,顺序为:最后一个,倒数第二个…第一个。
Endfor &&这个循环的结果就是
3)日期日间型函数
格式:DATE([nYear, nMonth, nDay])
功能:返回由操作系统控件的当前系统日期,或创建一个与2000年兼容的日期值。
返回值:日期型
2.注意:
1)DATE() 函数将返回当前的系统日期。
2)Visual FoxFro 命令或函数都不能直接改变系统日期。
3.示例:下面例子显示带有世纪和不带世纪的当前系统日期。
CLEAR
SET CENTURY OFF
? DATE() && 显示不带世纪的本日日期
SET CENTURY ON
? DATE() && 显示带世纪的本日日期
? DATE(1998, 02, 16) && 显示 2000 年兼容的日期值
4)类型转换函数
N->C(数值型转换成字符串型)
STR(expN1,expN2,expN3)
&&将N型的expN1转化成expN2个长度且保留expN3个小数的C型字符串,内容由expN1中的数字组成,转化过程中可能补空格,或者四舍五入。
A=123.45678 &&建立一个N型的变量,值为123.45678
? str(a) &&省略后边自变量,默认转换成10个长度,前7个空格,0个小数,结果四舍五入123
? str(a,6,2) &&结果为 123.46
?str(a,5,2) &&结果为 123.5
?str(a,2) &&结果为 ** 宽度不足盛放变量a的整数位数时,输出*
?str(a,4,2) &&结果为 123 其中,123前有一个空格,共4个长度,2没有效果
C->N(字符串型转换成数值型)
VAL(expC)
&&将expC转换成N型,结果为N型,转换到第一个非数字结束,字母e除外。
CLEAR
STORE '12' TO A
STORE '13' TO B
? VAL(A) + VAL(B) && 显示25.00
STORE '1.25E3' TO C
? 2 * VAL(C) && 显示2500.00
? val(“ 1234 5abc”) &&结果为1234.00
? val(“ 1234 e2”) &&结果为1234.00
?val(“ 1234e 2”) &&结果为123400.00
?val(“ 1234d 2”) &&结果为1234.00 科学计数只承认字母e
?val(“ 1234.567.88”) &&结果为1234.57 默认保留2个小数,第三位四舍五入
D->C(日期型转字符型);C->D(字符型转日期型)
CTOD(expC)、DTOC(expD) &&C型数据与D型数据之间的转换。
Clea
SET CENTURY ON && 显示世纪4位年份
Set date amer &&设置当前的日期格式为美国格式
cDate="01/01/2003"
?CTOD(cDate) &&显示D型的 01/01/2003
?GOMONTH(CTOD(cDate),12) && 返回12个月后的日期01/01/2004
?CTOD(cDate)+12 && 显示12天后的日期 01/13/2003
B=date() &&即获得今天的日期,前边说01/21/2011
? dtoc(b) &&显示的结果为01/21/2011 这里是C型的01/21/2011
?”今天的日期:”+dtoc(b) &&结果为 今天的日期:01/21/2011
?dtoc(b,1) &&忽略set date所设置的日期格式,统一返回20110121格式的日期,没有分隔符,且采用yyyymmdd格式。
5)测试函数(这个我们下次有机会再讲)
类型测试函数:TYPE
条件函数:IF
三、练习
功能调用
函数不是命令,需要配合显示命令?使用,如int函数的调用?int(-3.5)
P110页的试一试,请大家在机子上试一试,感觉一下调用函数的功能及格式,体会一个函数在使用上的感受
四、总结
五、作业
|