1、2019/7/5,中国医科大学计算机中心 徐东雨讲师,1,第三讲,一VF中表达式、常量、变量 二变量与数组操作 三函数与函数操作,2019/7/5,中国医科大学计算机中心 徐东雨讲师,2,一、VF中的表达式、常量、变量,表达式 (五种) 算术表达式 字符表达式 日期表达式 关系表达式 逻辑表达式,2019/7/5,中国医科大学计算机中心 徐东雨讲师,3,算术表达式,也称数字表达式。由算术运算符、数字常量、变量、函数组成。 运算符; 、或、 ( ),数学公式 表达式AX2+BX+C ASQRT(B2-4*A*C) (a+b)/(cd)(ab)/(c+d),2019/7/5,中国医科大学计算机中心
2、 徐东雨讲师,4,2. 字符表达式,字符串定界符:“abc”、 abc、abc 字符运算符: 有两个:和 运算 例如 结果? “abcd ” “efg” “abcd efg”? “abcd ” “efg” “abcdefg ”,2019/7/5,中国医科大学计算机中心 徐东雨讲师,5,日期表达式,由算术运算符、,算术表达式、日期常量、变量、函数组成。 例如?Date() 15?Date() 15?ctod(“01/25/2005”)ctod(“01/10/2005”) 结果等于 ,2019/7/5,中国医科大学计算机中心 徐东雨讲师,6,关系表达式,由关系运算符、算术表达式、字符串表达式、变量
3、、函数组成。关系运算符两侧的类型必须一致。 关系运算的结果为逻辑真值(.t.)或逻辑假值(.f.) 关系运算符; 大于= 大于等于或 # 不等于$ 字符串包含= 字符串精确比较,2019/7/5,中国医科大学计算机中心 徐东雨讲师,7,逻辑表达式,由关系表达式、逻辑运算符、变量、函数组成。 一般格式为:结果;真值 .T. 或 假值 .F. 表示 逻辑运算符 .NOT 逻辑非.AND 逻辑与.OR. 逻辑或运算优先级 一级 算术运算、字符串运算二级 关系运算三级 逻辑运算 表达式运算次序 按照运算符的优先级进行运算。,2019/7/5,8,中国医科大学计算机中心 王世伟教授,二、VF中的常量,V
4、FP中的常量也称常数(四种) 数字常数 字符常数 逻辑常数 日期常数,2019/7/5,中国医科大学计算机中心 徐东雨讲师,9,. 数字常数,由正负号、数字、小数点组成。 例如 123 -34.5 76 0.67,2. 字符常数 用定界符括起来的字符序列称为字符串。 定界符有三种; “ ”、 、 例如 “中国” 医科 大学,2019/7/5,中国医科大学计算机中心 徐东雨讲师,10,3.逻辑常数,由真值和假值组成。 .y. .Y. .T. .t. 代表真值.n. .N. .F. .f. 代表假值,4.日期常数一般格式 月日年例如 ,2019/7/5,11,中国医科大学计算机中心 王世伟教授,三
5、、变量与数组操作,变量(3种)运算中可以改变的量称为变量,用变量名来标识。 变量名;字母或汉字开头,后跟字母、数字、符号等组成, 最多不超个字符,中间不能有空格。 字段变量 内存变量 数组变量,2019/7/5,中国医科大学计算机中心 徐东雨讲师,12,VFP有三种变量,字段变量;是数据库处理的最基本的变量,用字段名表示,有五种类型,、。 内存变量:是独立于表的临时工作单元。可随时给变量赋值或释放。由名字、类型、宽度组成。类型分、。 数组变量:也称下标变量,由数组名和括号内的下标组成。其中下标也可以是变量或表达式例如 (20) B(5,10) C( 2+8) D(x),2019/7/5,中国医
6、科大学计算机中心 徐东雨讲师,13,内存变量的操作,. 内存变量的赋值操作; 命令格式一 STORE TO 例 STOR 3*5 TO A,B,C,DSTOR “中国医大” to xm 命令格式二 = name=“张山”aa=12b=aa+15c=.t.d=ctod(“03/15/2005”),2019/7/5,中国医科大学计算机中心 徐东雨讲师,14,内存变量的操作,2. 内存变量的显示; 命令格式一 LIST MEMO TO PRINTDISPLAY MEMO TO PRINT 例 list memo 命令格式二 ? 变量名表 ? 变量名表 例如 name=“张山”nl=12? “姓名”,
7、Name,“年龄”,nl,2019/7/5,中国医科大学计算机中心 徐东雨讲师,15,内存变量的操作,3. 内存变量的删除; 命令格式一 CLEAR MEMO (清除全部变量) 命令格式二 RELEASE 例如 name=“张山”nl=12rele nldisp memo,2019/7/5,中国医科大学计算机中心 徐东雨讲师,16,内存变量的操作,4. SAVE TO all LIKE / EXCEPT 通配变量名表功能:将变量保存到磁盘文件中,扩展名为. Mem 例如 save to blk save to blk all like A* (保存所有字母开头的变量到名为的文件中,将产生blk
8、.mem的磁盘文件。,2019/7/5,中国医科大学计算机中心 徐东雨讲师,17,内存变量的操作,5. 内存变量的恢复; 命令格式 RESTORE FROM ADDITIVE 功能;打开磁盘上的变量文件,将变量恢复并替换到内存变量中。如用ADDITIVE参数则全部追加到内存变量 例如 现有内存变量个;restore from blk (有个变量)disp memo (显示个变量)restore from blk addi (有个变量)disp memo (显示5个变量),2019/7/5,中国医科大学计算机中心 徐东雨讲师,18,数组变量的操作,数组的定义; dimension (数字表达式)
9、, (数字表达式) 功能 定义数组名,维数及各维的大小。 例如 dime a(20), b(3,) 说明 定义了一维数组数组A(1), A(2), a(3) , a(4), a(5) a(20)定义了二维数组B数组b(1,1), b(1,2), b(1,3), b(1,4)b(2,1), b(2,2), b(2,3), b(2,4)b(3,1), b(3,2), b(3,3), b(3,4),2019/7/5,中国医科大学计算机中心 徐东雨讲师,19,数组变量的操作,数组的赋值;store to 数组名(下标) 数组名(下标) = 例如 dime a(4), b(3,)A(1)=12A(2)=
10、“ok”store 3*5 to b(1,1) , b(2,1) ? A(1),A(2),B(1,1),B(2,1),2019/7/5,中国医科大学计算机中心 徐东雨讲师,20,三、 VFP的函数操作,VFP中函数是一种可以运行的特殊运算,并立即给出函数值。 函数的一般形式;函数名(自变量表)如开平方 ? SQRT (123) 输出结果 11.09vfp提供六大类73个函数算术运算函数、字符函数、日期时间函数 类型转换函数、测试函数、标识函数 。,2019/7/5,中国医科大学计算机中心 徐东雨讲师,21,算术运算函数,1.取绝对值函数 ABS( N) 例 ? ABS(-123) 123 2.
11、指数函数 EXP( N) 求eX值 例 ? EXP(3) 20.09 3.取整函数 INT(N) (不舍入) 例?Int(123.67) 123 4.自然对数LOG(N) 求e为底的对数例?LOG(10) 2.30 5.平方根函数SQRT(N) 例 ? SQRT(123) 11.09,2019/7/5,中国医科大学计算机中心 徐东雨讲师,22,6.最大值函数 MAX(N1,N2) 求两个数字表达式中最大值,也可以比较字符型或日期型值。?max(123,342) 342 ?Max(“fish”,“cat”) fish 7.最小值函数 MIN(N1,N2) 求两个数字表达式中最小值,也可以比较字符
12、型或日期型值。 ?min(123,342) 123 ?Min (“fish”,“cat”) cat 8.求余数函数 MOD(N1,N2) 求n1/n2的余数?MOD(10,3) 1 9.舍入函数ROUND(N,M) 求对保留位小数,有舍入 ?Round(1.5678,2) 1.57,2019/7/5,中国医科大学计算机中心 徐东雨讲师,23,2. 字符操作函数,宏替换函数 字符变量 例如 km=“stu” use &km 打开了名为stu的表 例如 h=“好”?“您h.!” 您好! 子字符串检索函数 AT(串1,串2) 给出串1在串2中的开始位置数,无则给出。例如?At(“is”, “it i
13、s a cat”) 4?At(“中医”, “中国医科大学”) 0,2019/7/5,中国医科大学计算机中心 徐东雨讲师,24,生成空格函数 SPACE(N) 产生个空格?“同学们”SPACE(3)+”大家好!” 同学们 大家好! 4. 左字符串截取函数left(串,n) 对串从左截取n个字符?Left(“abcdefghij”,4) abcd 右字符串截取函数 right(串,n) 对串从右截取n个字符?right(“abcdefghij”,4) ghij 中间截取子字符串 substring(串,m,n) 对串从m位起截取n个字符。?Subs(“abcdefghij”,5,4) efgh ?
14、 Subs(“ 中国医科大学”,5,4) 医科,2019/7/5,中国医科大学计算机中心 徐东雨讲师,25,删除字符串尾空格函数 rtrim ( 串) / trim (串)例如 a=“abc ”b=“xyz”? Trim(a)+b abcxyz? a+b abc xyz 删除字符串前面空格函数 ltrim(串)例如 a=“ abc”b=“xyz”? Ltrim(a)+b abcxyz? a+b abcxyz 字符重复函数 replicate(串,n) 重复产生n个串?Repl(“*”,5) *,2019/7/5,中国医科大学计算机中心 徐东雨讲师,26,3. 日期和时间函数,时间函数 time
15、() 给出hh:mm:ss格式的时间?Time( ) 18:25:35 日期函数 date( ) 给出系统当前日期?Date() 09/09/05 求年份函数 year(d) 求出日期的年份数值?Year(date( ) 2005 求月份函数 MONTH(D)求出日期的月份数值?Month(date( ) 9,2019/7/5,中国医科大学计算机中心 徐东雨讲师,27,求文字月份函数 CMONTH(D) 求出日期的月份文字值?CMonth(date() September 求日期函数 day(d) 求出日期的天数值?Day (date() ) 9 求星期函数 dow(d )求出d日期的星期数?
16、Dow(date() 6 (星期日为) 求文字星期函数 cdow( ) 求文字星期值 ? cdow(date() Friday,2019/7/5,中国医科大学计算机中心 徐东雨讲师,28,4. 转换函数,字符转换ASCII数值函数 ASC(“数值串”)例如 ?Asc(“123”) 49 ? ASC(“ABC”) 65? ASC(“abc”) 97 ASCII数值转换字符函数 CHR(N)? CHR(66) B 字符转换日期函数 ctod(“mm/dd/yy”) a=ctod(“02/25/05”) 日期转换字符函数 dtoc( d )? “今天是”Dtoc(date() 今天是03/14/05
17、,给出第一个字符的ASCII码值,2019/7/5,中国医科大学计算机中心 徐东雨讲师,29,大写转换小写函数 lower( 串)?Lower(“ABCD”) abcd 小写转换大写函数 Upper( 串)?upper(“abcd”) ABCD 数值转成字符函数 STR(N,长度,小数位)? Str(12. 57,2,0)+ “班” 3班? Str(123. 57,2,0)+ “班” *班 字符转换成数值函数 VAL(数值串)?Val(“2005.3a16”)+2 2007.3,2019/7/5,中国医科大学计算机中心 徐东雨讲师,30,5. 测试函数,数据类型测试函数 TYPE( 字符表达式
18、)? Type(“12+5”) N? Type (“abc”) C? Type(“ctod(“03/14/05”)”) D? Type () L? Type (123) U,2019/7/5,中国医科大学计算机中心 徐东雨讲师,31,文件测试函数 file (文件名串)?File(“d:vfpstu.dbf”) .T. 工作区测试函数 SELECT( )? SELE( ) 1 表内记录数测试函数 RECCOUNT( )? RECC( ) 19 表结构字段数测试函数 FCOUNT( )?FCOUNT( ) 8串首字母测试函数 ISALPHA( 串)? ISALPHA(“I am a thache
19、r.”) .T.? ISALPHA(“123.5”) .F. 串首小写字母测试函数 ISLOWER(串)? Islower(“abcd”) .T.,2019/7/5,中国医科大学计算机中心 徐东雨讲师,32,串首大写字母测试函数 ISUPPER(串)?Isupper(“abcd”) .F. 记录长度测试函数 RECSIZE( ) ?Recsize( ) 38字符串长度测试函数 len( 串) ? Len(“abc ”) 5 表文件起始测试函数 BOF( ) .T. / .F.表文件结束测试函数 EOF( ) .T. / .F. 当前记录号测试函数 RECNO( ) ? RECNO() 9 检索测试函数 FOUND( ) .T. / .F.测试检索命令FIND、SEEK、LOCATE是否成功,2019/7/5,33,中国医科大学计算机中心 王世伟教授,再见,