第九章 表达式、函数.doc_第1页
第九章 表达式、函数.doc_第2页
第九章 表达式、函数.doc_第3页
第九章 表达式、函数.doc_第4页
第九章 表达式、函数.doc_第5页
已阅读5页,还剩8页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

(一) 常量和变量1、 常量常量:指程序运行期间其值不变的量, 其类型主要有以下五种:(1) 字符型常量:用定界符(单引号、双引号 和方括号 )括起来的字符串。(示例:ade 568 book)注意:1、 定界符不作为字符型常量本身,但它规定了常量的类型以及常量的起始与终止界限。2、 字符型常量的定界符必须成对匹配 (例:my name , bcde” 两种表示均错。3、 若某种定界符也是字符串本身的内容,则需要用另一种定界符作为该字符串的定界符。 (例: abcd, abcned )4、 不包含任何字符的字符串()叫空串,它与包含空格的字符串( 不同)。(2) 数值型常量:用来表示一个数量的大小。 构成:由数字,负号,小数点构成。表示形式:一般: 538, -10.5科学记数法: 56E-12, 34E4, -1.05E+20(3) 货币型常量: 用来表示货币值,书写时应加前导符”$”注:货币型常量无科学记数表示法,其处理和运算时采用4位小数,如果一个货币型常量多于4位小数,则系统会自动将多余的小数四舍五入。例:$123.45678将存储为$123.4568 (超过4位自动四舍五入)例:$332E12 (错误) $435 (正确)(4) 日期型常量:表示一个确切的日期, 花括号作为定界符,分隔符为斜杠(/),连字符(-),句点(.)或空格中任一种,默认为斜杠(/)。 影响日期格式的命令:1) SET MARK TO 日期分隔符 功能:设置日期的分隔符 分隔符可设置为”/”,” “,”-”,缺省时系统统默认为斜杠。2) SET DATE TO AMERICAN | ANSI | YMD等功能:设置日期的的显示格式,默认为美国格式3) SET CENTURY ON/OFF功能:设置日期型数据显示时年份以4位还是以2位显示。4) SET STRICTDATE TO 0/1/2功能:用设置是否对日期格式进行检查 0表示不进行严格日期格式检查,与早期FoxPro兼容1表示进行严格日期格式检查,系统默认 2表示进行严格日期格式检查,且对CTOD( )和CDOT( )函数也有效。(5) 逻辑型常量: 只有逻辑真或逻辑假两个值,用句点(. .)来作定界符。 逻辑真的表示形式有: .T. , .t. , .Y. , .y. 逻辑假的表示形式有: .F. , .f. , .N. , .n. (示例:.t. .T. .f. .F. .Y. .N. .y. .n.) 注:逻辑型常量的定界符不能省略。2、 变量变量:在使用过程中其值可以改变的量。分为字段变量、内存变量两大类(1) 内存变量:它是内存中的一个区域,其值就是存储于该区域里的数据,它常用来存储常数、中间结果或最终结果。(2) 当内存变量名与字段变量名同名时,字段名优先于内存变量名,若确实要使用内存变量,则可在其前加上M-或(M.)以示访问的是内存变量,而非字段变量。(3) 内存变量的赋值格式1:STORE 表达式 TOstore 变量名列表或数组名列表功能:将表达式的值赋给一个或多个内存变量.格式2:内存变量名=表达式格式2只能给一个变量赋值,而格式1可给多个内存变量或数组赋值。【例如】store 3*4 to a1,a2 ,a3,a4,a5 则a1,a2,a3,a4,a5值均为12【例如】 b1=3 将b1赋值3; b2=b1+2 将b1加2后的值赋给b2,此时b2等于5;b2=b2+3 将b2加3后的值再赋给b2,此时b2等于8。说明:一个变量的值可以不断变化,最终结果是它最后一次的赋值,在此,=不是等于运算符,而赋值运算符。一个命令行只能有一个命令动词,若命令行中没有其他命令动词,则最左边的等号为赋值语句的命令动词;如果一个命令行已经有一个命令动词,则等号是关系运算符。(4) 表达式值的显示? 换行显示内存变量或表达式的值? 同行显示内存变量或表达式的值(5) 显示内存变量格式:LIST / DISPLAY MEMORY LIKE 通配符 TO PRINTER / TO FILE 文件名 说明:通配符指”?”和”*”。?:表示任意的一个字符。*:表示任意多个字符。like短语用于显示与通配符匹配的内存变量list 和display区别为:滚屏和分屏显示(6) 释放内存变量格式1:RELEASE 内存变量名表格式2:RELEASE ALL LIKE 通配符/EXCEPT 通配符格式3:RELEASE ALL EXTEND 格式4:CLEAR MEMORY说明:(1)、格式1用释放指定的内存变量。(2)、格式2:选用LIKE短语用于清除与通配符本匹配的内存变量,若选用EXCEPT短语,用于清除与通配符不相匹配的变量。(3)、格式3用于清除所有内存变量。(4)、格式4用于在关闭所有文件的同时清除所有的内存变量。示例:RELEASE ALL RELEASE X,Y,Z RELEASE ALL LIKE A*(7) 数组定义数组的命令:Dimension | declare 数组名1 (下标上限1 ,下标上限2)说明:1) 数组的下标允许使用圆括号或方括号括起来。2) 在同一个数组中,不同的数组元素数据类型可以不同。3) 数组一旦被定义之后,该数组的每个元素的初值为逻辑假值,即.F.,可以使用有关的命令给数组元素赋值。 例如:Dimension aa(3),C2,3二维数组举例:DIMENSION A(2,3)A(1,1)=1 A(1,2)=2 A(1,3)=3 A(2,1)=4 A(2,2)=5 A(2,3)=61 2 34 5 6?a(1,1)二维数组元素的存放:按行存放例如: 给二维数组X和一维数组Y进行赋值。 DIMENSION X(3,4),Y(3) STORE 5 TO X Y(1)=325 Y(2)=“ABC” Y(3)=.T.(二) 表达式表达式是指用运算符将常量、变量、字段或函数连接起来的有意义的式子。表达式值:表达式最终计算结果表达式的类型:由表达式值的数据类型决定,主要有:数值型、字符型、日期型、关系型、逻辑型等。1、 数值表达式数值表达式是由算术运算符将常量、变量、字段或函数连接起来的式子,其结果仍为数值型数据。(1)、数值运算符:圆括号()、乘方(*或)、乘(*)、除(/)、取余(%)、加(+)、减(-)。(2)、数值表达式:由数值运算符将数值型常量、变量、函数等连接起来的式子,其结果为数值型。(3)、运算符的优先顺序:括号、乘方、乘除与取模、加减。例:取余运算符(%)的应用。?10%3 & 结果为 1?-10%3 & 结果为 2 例:取乘方(*或)运算符的应用?9*1/2 & 结果为 4.52、 字符表达式 字符表达式是由字符运算符将常量、变量、字段或函数连接起来的式子,其结果仍为字符型数据。在字符运算符两边的数据必须是字符型数据。(1)字符串运算符:+、-、字符串包含运算符($)和精确比较运算符(= =)。说明:+:两个字符串首尾连接形成新字符串;-:当第一个字符串的尾部有空格时,将第一个字符串尾部的空格移到第二个字符串的尾部,然后,再将两个字符串连接起来。【例】 ? ABC +DEF =ABC DEF ? ABC - DEF=ABCDEF 包含运算符$:检测左边的字符串是否被包含在右边的字符串中。如果包含,返回逻辑真值(.T.),否则返回逻辑假值(.F.)。精确比较运算符=:只有当两边的字符串完全相等时,才返回逻辑真值(.T.),反之假(.F.)。(2)字符表达式:由字符串运算符将字符型常量、变量、函数等连接起来的式子。 例: ? abc + bcd 结果为abc bcd ? abc - bcd 结果为abc bcd ? book$bookstore结果为(.T.) ? the$”this结果为(.F.) ? that= =that结果为(.T.) ? that = =that结果为(.F.)3、 日期表达式和日期时间表达式 (1)日期型运算符:(+)、(-) 只有此两种例如? 04/03/99,12:30:20+20 结果为:04/23/99,12:30:40? 04/03/99, 12:30:20- 20 结果为:03/14/99,12:30:00? 03/03/99,12:30:20- 03/3/99,11:30:20 结果为3600例如:已知某个人的出生日期为1979年7月20日,计算其现在年龄为多少? ?(2010-11-20-1979/7/20)/365(2)比较:后大前小 例:2010-11-282010-11-27 & 结果为 .T.(3)4种合法应算:T+N D+NN+T N+DT-T D-DT-N D-N注意:(1)两个日期及日期时间型数据的相加是无意义的。(2)+和-既可作为日期运算符,也可作算术和字符串运算符,而使用时具体做何种运算符受其所连接运算对象决定。4、 关系表达式 1、关系运算(1)关系运算符:小于()、等于(=)、不等于(、#或!=)、小于等于(=) 子串包含测试($)。(2)关系表达式:由关系运算符、数值表达式、字符表达式或日期表达式组合而成的式子,返回结果为逻辑型数据。(3)关系运算符的两边,可以是字符表达式、数值表达式或者日期表达式,但两边的数据类型必须一致才能进行比较。(4) =与= =不完全相同。前者称为普通比较,后者称为精确比较。 当环境设定为SET EXACT ON时,二者有一定区别;当环境设定为SET EXACT OFF时,结果是不同的。(P59页)比较时,使用右字符串去比较左字符串。当右字符串比较完,则比较结束。如果此时的比较结果相同,则=比较的值为.T.,而不管左字符串是否结束;相反,= =则要求左右必须完全一致,结果才为.T. 。【例】? abcde = abc 当设置了SET EXACT OFF时,上述关系表达式结果为.T.当设置了SET EXACT ON时,上述关系表达式结果为.F.(5)比较大小时,日期早的日期型数据小于日期晚的日期型数据;越早的越小,越晚的越大。如:2000-06-11ab 结果为(.T.)(7)字符串包含运算符”$”用于比较左字符串是否存在于右字符串中,如果存在,则为.T.,反之为.F.。(8)比较货币或数值时,按数值及货币的大小比较 例: ?$564$234 结果为(.T.)例: ? “王”$”王红” 结果为.T.2、字符排序次序的设置当比较两个字符串时,系统对两个字符串的字符自左向右逐个进行比较,一旦发现两个对应的字符不同,则根据这两个字符的排列次序决定两个字符串的大小,其字符的排列次序(即字符的大小)受设置命令的影响,其命令设置方法:(1)在”工具”菜单下选择”选项”,打开”选项对话框,选择其中的”数据选项卡,再选择右上方的”排列序列”下列框中选择”Machine(机器)”,”PinYin(拼音)”,或者”Stroke(笔画)”(2)命令设置方式 命令:SET COLLATE TO “排序次序名“ 次序名可以是:”Machine”,”PinYin”,或”Stroke”(3)字符的排列次序Machine(机器)次序:西文字符按照ASCII码值排列,空格在最前面,大写ABCD字母序列在小写abcd字母序列的前面, 因此大写字母小于小写字母;对于汉字,据它们的拼音顺序决定其大小,其拼音第一个字母在后的值大。例: ? 计算机电脑 结果为(.T.) ? a=28 结果为.T. ?性别=“男” .AND.年龄=28结果为.F.?性别=“女”.OR.年龄2 .AND. 人 人民 .OR. .T.2,再判断人 人民,再运算AND,之后再运算.T. .F.,最后运算OR.(三) 常用函数函数的格式:函数名(参数1,参数2)其常见类型有:1、 数值型函数(1) 绝对值函数格式:ABS (数值表达式)功能:返回数值表达式的绝对值。【例】 ? ABS (-12.34) 结果为12.34(2) 最大值函数格式:MAX (数值表达式1,数值表达式2)功能:计算各数值表达式的值并返回最大值。【例】? MAX(5*4,60/2) 结果为30(3) 最小值函数格式:MIN (数值表达式1,数值表达式2)功能:计算数值表达式的值,返回最小值。(4) 平方根函数格式:SQRT (数值表达式)功能:计算数值表达式的平方根。注:其自变量表达式不能为负【例】? SQRT (25*4) 结果为10? -SQRT(ABS(10) 结果为 -3.16(5) 取整函数格式:INT (数值表达式) 功能:返回数值表达式的整数部分。 CEILING(数值表达式) 功能:返回大于数值表达式的最小整数。FLOOR(数值表达式) 功能:返回小于数值表达式的最大整数。(6) 四舍五入函数格式:ROUND (数值表达式,保留小数位数)功能:返回指定数值表达式指定位置后的结果。说明:如果保留小数位数为正数n,则对小数位进行四舍五入;如果保留小数位数为负数n,则对整数位进行四舍五入.第0位指整数部分的第一位数即个位【例】? ROUND (123.34567,3) 结果为123.346? ROUND (753.34567,-3) 结果为1000(7) 圆周率函数格式:PI( )功能:返回圆周率(数值型),无自变量(8) 求余函数(与%等同)格式:MOD(数值表达式1,数值表达式2)功能:返回两个数相除后的余数。 数值表达式1为被除数,数值表达式2为除数,如果被除数与除数同号,则函数值即为两数相除的余数;若被除数与除数异号,则函数值为两数相除的余数再加上除数的值。例:?MOD(10,3),MOD(10,-3),MOD(-10,3),MOD(-10,-3)则结果为: 1 -2 2 -1注:首先将除数和被除数的符号忽略进行求余运算,得到X =1。再将X的符号定为被除数的符号,得到Y=-1。由于除数和被除数是异号,所以结果是:Y+除数=-1+3=2。mod(15,-4)=-1 3+(-4) 15-12=3+(-4)=-1mod(-15,4)=1 -3+4 -15+12=-3+4=1满足MOD(X,2)=0这个表达式时,说明X是一个偶数。满足MOD(X,2)=1这个表达式时,说明X是一个奇数。2、 字符型函数字符型函数主要对字符型数据进行运算。(1) 求子串位置函数格式: AT (字符表达式1,字符表达式2, 数值表达式n)ATC(字符表达式1,字符表达式2, 数值表达式n)功能:查找字符表达式1在字符表达式2中的起始位置。如果有数值表达式n,则确定字符型表达式1在字符型表达式2中的第n次出现的起始位置,若缺省数值表达式n,默认为1;如果字符表达式1不是字符表达式2的子串,则返回为0。【例】? AT (A,BCDE) 结果为0 ? AT (A,ABADE) 结果为1 ? AT (A,ABCADE,2)结果为4ATC函数不区分大小写 ?ATC(a,ABCDA,2) (2) 截取子串函数左截取子串函数格式:LEFT (字符表达式,数值表达式)功能:从字符表达式左边开始,截取数值表达式指定长度的字符串。【例】? LEFT (HARDWORK,3) 结果为HAR右截取子串函数格式:RIGHT (字符表达式,数值表达式)功能:从字符表达式右边开始向左截取数值表达式指定长度的字符串。【例】? RIGHT (HARDWORK,3) 结果为ORK 任意位置截取函数格式: SUBSTR (字符表达式,起始位置, 长度)功能:从指定的起始位置开始,在字符表达式中截取指定长度的字符串。说明:假设起始位置为m,长度为n。若省略n,则从m开始截取以后的所有字符串; 若n大于从m开始的字符串长度,则从m开始截取以后的所有字符串;若m大于字符表达式的长度,则截取的字符串为空白字符串。【例】 ?SUBSTR (HARDWORK,3,4) 结果为RDWO?SUBSTR (HARDWORK,2) 结果为ARDWORK ?SUBSTR (HARDWORK,3,9) 结果为RDWORK?SUBSTR (HARDWORK,9,5) 结果为 (3) 生成空字符串函数格式:SPACE (数值表达式)功能:生成指定空格数的空字符串。【例】? SPACE (3) 结果为 (4) 字符串长度函数格式:LEN (字符表达式)功能:求字符串的长度(包括空格)。【例】? LEN(how are you) & 结果为 11? LEN(space(3)-space(6) & 结果为 9(5) 字符串替换函数格式: STUFF (字符表达式1,起始位置, 长度,字符表达式2)功能:从指定的起始位置开始,用字符表达式2替换字符表达式1中指定个数的子串。说明:替换与被替换的字符个数不一定相等;若长度为0,则将字符表达式2插入到字符表达式1中;若字符表达式2为空,则指定长度的字符串被删除。【例】?STUFF(computer,3,4,abc) 结果为coabcer?STUFF(computer,3,1,abc) 结果为coabcputer?STUFF(computer,3,4, ) 结果为co er(6) 删除前后空格函数 格式:TRIM(字符表达式)LTRIM(字符表达式)ALLLTRIM(字符表达式)功能:TRIM()返回指字符表达式值去掉尾部空格后形成的字符串LTRIM()返回指字符表达式值去掉前导空格后形成的字符串ALLTRIM( )返回指字符表达式值去掉前导和尾部空格后形成的字符串例: STORE SPACE(1) + “TEST” + SPACE(3) TO SS?TRIM(SS) + LTRIM(SS) + ALLTRIM(SS)结果为:” TESTTEST TEST”?LEN(SS),LEN(TRIM(SS),LEN(LTRIM(SS), LEN(ALLTRIM(SS)结果为:8 5 7 4(7) 计算子串出现次数函数格式:OCCUS(字符表达式1, 字符表达式2)功能:返回第一个字符串在第二个字符串中出现的次数,若第一个字符串不是第二个字符串的子串,则返回0。例: STORE abracadabra TO S?OCCUS(a,S),OCCUS(b,S),OCCUS(c,S),OCCUS(e,S)结果为: 5 2 1 0(8) 字符串匹配函数(等同于 = =)格式:LIKE(字符串表达式1,字符串表达式2)功能:比较两个字符串对应位置上的字符,若所有对应字符都相匹配,函数返回逻辑真(.T.),反之,返回逻辑假(.F.)字符表达式1中可包含有通配符”*”和”?”* 表示任意的字符,? 表示一个字符例:STORE “abc” TO x STORE “abcd” TO y ?LIKE(“ab”,x), LIKE(“ab*”,y), LIKE(“?b”,x), LIKE(“Abc”,x) 结果为:.F. .T. .F. .F. (大小写区分)(9) 字符替换函数格式:CHRTRAN (字符表达式1,字符表达式2,字符表达式3)功能:当第一个字符串中的一个或多个字符与第二字符串中的某个字符相匹配时,就用第三个字符串中的对应字符(即与第二个字符串位置对应)替换这些字符,若第三个字符串包含的字符个数少于第二个字符串包含的字符个数,即无对应字符,则第一个字符串中相匹配的字符被删除;反之,若多余,则多余字符被忽略.例:y1=CHRTRAN(计算机ABC,计算机,电脑)?y1 &结果等于: 电脑ABCz1=CHRTRAN(大家好,大家,你)?z1 &结果等于: 你好3、 日期函数(1) 系统时间函数格式:TIME ( ) 功能:返回当前系统时间。时间格式为HH:MM:SS说明:此函数返回值不是日期时间型,而是字符型。(2) 系统日期函数格式:DATE ( ) 功能:返回当前系统日期,函数值为日期型(3) 系统日期时间格式:DATETIME( )功能:返回当前系统的日期时间,函数值为日期时间型(4) 年函数格式:YEAR (日期型|日期时间型) 功能:输出日期型表达式的年份。【例】? YEAR (DATE( ) 假设当前日期为2001/2/17 那么结果为 2001。(5) 月函数格式:MONTH (日期型|日期时间型) 功能:输出日期型表达式的月份。【例】? MONTH (DATE( ) 假设当前日期为2001/2/17,那么结果为2(6) 日函数格式:DAY (日期型|日期时间型)功能:输出日期型表达式的日。【例】? DAY (DATE( ) 假设当前日期为2001/2/17,那么结果为 17(7) 时、分、秒函数格式:HOUR(日期时间表达式) MINUTE(日期时间表达式) SEC(日期时间表达式)功能:返日期时间型表达式的当前小时,分钟和秒数注:此三函数的参数只能为日期时间型,而不能是日期型。4、 转换函数(1) 数值型转换为字符型函数格式:STR (数值表达式,长度,小数位数) 功能:将数值表达式按设定的长度和小数位数转换成字符型数据。说明:转换后字符串的理想长度应为L,即刚好等转换后的数值所有位,包括小数点及负号在内。长度为转换后的字符串位数,若长度的设定值大于L,则转换后的字符串前补”空格”;若长度的设定值小于L而大于实际数值的整数部分位数,则优先满足整数部分而自动调整小数位数;若长度的设定值小于L又小于实际数值的整数部分位数,则返回一串星号(*)【例】 ? STR (123.4567,6,2) &结果为 “123.46” ? STR (123.4567,9,2) &结果为 “ 123.46” ? STR (123.4567,6,3) &结果为 123.46 ? STR (123.4567,1,2) &结果为 *(2) 字符型转换为数值型函数格式:VAL (字符型表达式) 功能:将字符串转换为数值。说明:转换时遇到非数字字符时停止;若第一个字符就不是数字,则值为0.00【例】VAL (“123.45AB”) 结果为123.45 VAL (“A123.45AB”) 结果为0.00(3) 日期型或日期时间型转换为字符型格式:DTOC (日期型表达式日期时间型,1 ) TTOC(日期时间表达式, 1)功能:DTOC将日期型或日期时间型转换为字符型TTOC将日期时间型表达式转换为字符串。说明:若使用选项,1,则转换为年月日无分隔符的形式。【例】?DTOC(DATE( ) 假设当前日期为2001/2/17,那么结果为 02/17/01 ?DTOC (DATE( ),1) 假设当前日期为2001/2/17,那么结果为 2001 02 17(4) 字符型转换为日期型函数格式:CTOD (字符型表达式) CTOT (字符型表达式)功能:CTOD将字符型表达式转换为日期型。 CTOD将字符型表达式转换为日期时间型说明:字符串表达式的内容必须是0-9之间的字符,否则出错【例】? CTOD (“02/17/64”) 结果为02/17/64(5) 大写字母转换为小写字母函数格式:LOWER (字符型表达式)功能:将字符型表达式中的大写字母转换为小写字母。【例】? LOWER (“AaBbCc”) 结果为aabbcc(6) 小写字母转换为大写字母函数格式:UPPER (字符型表达式)功能:将字符型表达式中的小写字母转换为大写字母。【例】? UPPER (“AaBbCc”) 结果为AABBCC5、 测试函数1、系统对表的记录是逐个处理的,对于一个打开的表来说,在每一时刻只能处理一条记录,VFP为每一个打开的表设置一个内部使用的记录指针,指向正在被操作的记录,该记录称为当前记录.记录指针的作用是标识表的当前记录.2、表的逻辑结构如图所示,最上面的记录是首记录,记为TOP,最下面的记录是尾记录,记为BOTTOM.在第一个记录之前有一个文件起始标识,称为Beginning of File(BOF); 在最后一个记录的后面还有一个文件结束标志,称为End of File(EOF).使用测试函数能够得到指针的位置,刚打开表时,记录指针总是指向首记录.(1) 值域测试函数格式:BETWEEN ( 表达式T,表达式L,表达式H)功能:判断表达式T的值是否在表达式L与表达式H之间,若在,则返回真.T.,反之返回假.F;若表达式L和表达式H中有任一个为NULL是, 则返回NULL.【例】 STORE NULL TO X STORE 100 TO Y ?BETWEEN(150

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论