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