2.1常量与变量1.数值型常量数值型还可分成浮动型(F),整数型(I)和双

  • 格式:doc
  • 大小:171.00 KB
  • 文档页数:23

2.1常量与变量1.数值型常量数值型还可分成浮动型(F),整数型(I)和双精度型(B).2.货币型常量占8个字节加$符.例如$4.21.存储时只保留四位小数3.字符型常量由中文,英文,数字,空格等字符组成.每个字符占一个字节,一个汉字占两个字节.字符型数据的表示方法是用半角单引号,双引号或方扩号把字符串扩起来.这里的单引号,双引号或方扩号我们称之为定界符.方扩号常用在字符串本身包含有引号的场合.注意数字也可以是字符类型,但这时候的数字已经不再表示计数,而是表示数字本身这个字符.例如”6”是个字符型数据,可以显示,可以打印,但不能用”6”X5.不包含任何字符的字符串叫空串’’.空格本身也算一个字符.所以空串并不等于’ ‘.例2.1 显示几个字符型常量?”计算机”,’123’,[数据],[‘ABX’”abc”]??”学习”,’字符串’,“ ”,[表示方法]其中单问号?是换行输出命令,双问好??是不换行输出命令,即输出后面表达式的结果.4.日期型常量占8个字节.前面的数值型,货币型也都是占8个字节.日期型常量有输入格式和输出格式之分.输出格式可以定制.影响日期格式的设置命令:①SET MARK TO[<日期分隔符>]约定:[]代表可选项.<>代表必选项用于指定显示日期值时所用的分隔符,如:SET MARK TO “.”则表示以”.”来做分隔符:如果省略日期分隔符,则表示恢复系统默认的斜杠分隔符/②SET DATE TO AMERICAN|GERMAN|…|MDY|DMY|YMD用于设置日期的显示格式.默认值为AMERICAN③SET CENTURY ON|OFFON表示四位年份,OFF表示两位年份.默认值是OFF例(书P50,例2.2):设置不同的日期输出格式SET CENTURY ONSET MARK TOSET DATE TO YMD?{^2001-08-26}主窗口显示:2001/08/26SET CENTURY OFFSET MARK TO “.”SET DATE TO MDY?{^2001-08-26}主窗口显示:08.26.015.日期时间型常量{^日期,时间}.其中时间部分的格式为:hh:mm:ss[a|p]或[AM|PM].默认值为12:00:00.也占8个字节.6.逻辑型常量.T..t..Y..y..F..f..N..n. 只占1个字节2.1.1 变量常量通常指一个具体的,不变的值.而变量是用于存储数据的单元,它的值能够随时改变.每个变量有一个变量名,我们通过这个变量名来访问变量的取值.变量名必须以字母,汉字和下划线开头,不能以数字开头.例如2X则不能用做变量名.VF中的变量分为字段变量和内存变量两大类.字段变量是指数据表中的各字段的名字,内存变量是指内存中的一个存储单元.注意:在VF中,内存变量的类型是可以改变的(加上”内存”两字).也就是说,可以把不同类型的数据赋给同一个变量.1.简单内存变量给简单内存变量赋值前不必事先定义.赋值命令有两个格式:①<内存变量名>=<表达式>②STORE <表达式> TO <内存变量名表>注释:①=命令一次只能给一个变量赋值,而STORE命令可以同时给若干个变量赋予相同的值.例: X=2 ** 给变量X赋值2STORE X+3 TO Y,Z ** 给变量Y,Z同时赋X+3的值5②在VF中,一个变量在使用之前并不需要特别声明或定义.当给变量赋值时,如果该变量并不存在,那么系统自动创建它.③可以通过对内存变量重新赋值来改变其取值和类型.④当出现内存变量与字段变量同名时,若简单地用变量名访问,则系统默认为字段变量.如果要访问内存变量,则必须在变量名前加上前缀M.或M->,例如M.姓名2.数组在VF中,一个数组中的各元素类型可以不同.与简单内存变量不同,数组在使用前必须用DIMENSION或DECLARE命令来声明,格式为: DIMENSION|DECLARE <数组名> (<下标上限1[,<下标上限2>])[,...]其中,①使用DIMENSION还是DECLAR没有任何区别.②下标的下限已经规定为1.③数组在创建后,未赋值前,系统自动给每个数组元素赋以逻辑值假.F.④在同一个运行环境下,数组名不能与简单变量名重复.例如:DIMENSION x(5),y(2,3)定义了两个数组:x(1),x(2),x(3),x(4),x(5)y(1,1),y(1,2),y(1,3)y(2,1),y(2,2),y(2,3)又例:DIMENSION A(3)A(2)=“ABC”A(3)=100?A(1),A(2),A(3)主窗口显示结果:.F. ABC 1002.1.3内存变量常用命令(略)2.2表达式表达式是由常量,变量和函数通过运算符连接起来的式子.1.数值表达式①算术运算符: **或^表示乘方②求余运算: 符号%或MOD( ).如15%4或MOD(15,4)意义完全一样. 运算法则:①若被除数与除数同号,结果为两数相除的余数②若………………异号,结果为………………….再加上除数.运算规律:结果的符号总是与除数符号相同运算要求:除数不能为0例:? MOD(10,3), MOD(10,-3), MOD(-10,3),MOD(-10,-3)主窗口显示结果: 1 –2 2 -1? –3 % -9 , 3 % -9, -3 % 9主窗口显示结果: -3 -6 62.字符表达式由字符运算符连接字符型数据而形成的表达式,其结果依然是字符型数据.其中,字符运算符有加减运算符和$运算符两种,①加减运算符:都表示连接,不同的是减号要把两个字符串连接处的空格移到新的字符串的尾部。

例如:“中国”+”合肥”=”中国合肥”“中国”-“合肥”=”中国合肥”“AB”+“ AB”=“AB AB”“AB”-“ AB”=“ABAB ”②“$”运算符:可以理解为“是否包含在”。

返回的结果为逻辑值。

例如:“中国”$“中国合肥”的值为“真”,“中合”$“中国合肥”的值为“假”3.日期时间表达式可以使用的运算符也有+和-两种.但这里的+-是指+-天数.如果是日期时间型,则指加减秒数.例:{^2004-01-01}+5={^2004-01-06}{^2004-01-01}-5={^2003-12-27}{^2004-01-01,}+5={^2004-01-06,12:00:05 AM}3.关系表达式用于比较两个运算对象的大小或相等关系.由关系运算符连接而成.关系运算符有>,>=,<,<=,=,!=或<>等组成特殊比较:①日期,时间型的比较:越晚越大②逻辑型的比较:.T.大于.F.③字符串比较:系统对两个字符串的字符从左向右逐个进行比较,一旦发现两个字符不同,就根据这两个字符的大小决定两个字符串的大小.排序的次序按照书P58下面第2点所述,即在字符集中排在前面的字符小,排在后面的字符大.对汉字默认按拼音排序,但可以重新设置例如: ?'a'>'b' 主屏幕显示: .F.?”飞机”>”飞船”主屏幕显示: .T.另外,要注意相等比较运算和赋值运算的区别(P59中间.第4点) 例:在Visual Foxpro中,可以比较大小的数据类型包括( )(A)数值型,字符型,日期型和逻辑型 (B)数值型,字符型和日期型(C)数值型和字符型 (D)数值型4.逻辑表达式由逻辑运算符连接逻辑型数据而形成的表达式.其结果依然是逻辑型数据.逻辑运算符有与或非三种,分别用符号.AND.,.OR.,.NOT.来表示.这里的定界符可以省略,加点不加点都可以.逻辑非表示取反.如果操作数为逻辑真,结果就是逻辑假,反之亦然. 例如 NOT 'a'>'b'的值为.T.逻辑非是单目运算符.所谓单目运算符,只指它的操作对象只有一个.逻辑与表示”并且”的含义.只有当两个操作数的值均为逻辑真时,运算结果才为逻辑真,否则为假逻辑或表示”或者”的含义.两个操作数中只要有一个为真,则运算的结果就为真.否则为假.2.3常用函数函数用函数名加一对( )来调用,自变量放在( )里,如LEN(x).函数可以分为数值函数,字符处理函数,日期类函数,数据类型转换函数和测试函数五类.2.3.1数值函数1.绝对值函数ABS( )例如: ? ABS(-34) 结果为34。

2.符号函数SIGN( )正数,负数和0的返回值分别为1,-1和03.平方根函数SQRT( )例如: ? SQRT (36) 结果为6 (只取正值)4. 圆周率函数PI( )无自变量.返回值为圆周率的值5.取整函数INT( ):返回整数部分CEILING( ):返回大于或等于指定数值表达式的最小整数FLOOR( ):返回小于或等于指定数值表达式的最大整数例(书P62例2.14): STORE 5.8 TO x?INT(x),INT(-x),CEILING(x),CEILING(-x),FLOOR(x),FLOOR(-x) 主屏幕显示: 5 -5 6 -5 5 -66. 四舍五入函数ROUND( )格式: ROUND(<数值表达式1>,<数值表达式2>)其中: <数值表达式1>指的是要求的数值,<数值表达式2>指当前数小数点移动位数.如果该值为正,向右移(,移动后新小数点位置后数字全部换0);如果该值为负数,向左移(其后全部换0)例(书P62例2.15): X=345.345?ROUND(X,2),ROUND(X,1),ROUND(X,0),ROUND(X,-1)主屏幕显示: 345.35 345.3 345 3507.求余函数MOD( )8.求最大值和最小值函数MAX( )和MIN( )9.指数函数EXP( )例如: ? EXP(5) 结果为148.41。

10.对数函数LOG例如: ? LOG(EXP(1)) 结果为1.00。

2.3.2 字符函数1. 求字符长度函数LEN( )返回指定字符表达式的字符个数.一个汉字算两个字符.一个空格也算一个字符.例(书例2.18): x=”中文Visual Foxpro6.0”?LEN(x)主屏幕显示: 202. 大小写转换函数UP( )和LOWER( )3. 去除左空格函数LTRIM( )例如: ? “中国”+LTRIM(“北京”)结果为:中国北京4. 去除右空格函数RTRIM( )(书上是TRIM,功能一样)例如: ?“中国”+RTRIM(“科技”)+“大学”结果为:中国科技大学5. 去除左右空格函数ALLTRIM( )例如:?ALLTRIM(“ VISUALFOXPRO”)结果为: VISUALFOXPRO6. 产生空格函数SPACE( )例如: ?“数据库”+SPACE(4)+“管理系统”结果为:数据库管理系统7. 左截断函数LEFT( )例如: ?LEFT(“数据库管理系统”,4)结果为:数据8. 右截断函数RIGHT( )例如: ?RIGHT(“数据库管理系统”,4)结果为:系统9. 子串函数SUBSTR( )例如: ?SUBSTR(“数据库管理系统”,5,2)结果为:库?SUBSTR(“数据库管理系统”,5)结果为:库管理系统(如果不指定长度,则一直往右取完所有数值)10. 计算子串出现次数函数OCCURS( )格式: OCCURS(<字符表达式1>,<字符表达式2>)返回字符表达式1在字符表达式2中出现的次数.若没有出现则返回011. 求子串位置函数AT( )和ATC( )格式: AT|ATC(<字符表达式1>,<字符表达式2>[,n])返回字符表达式1在字符表达式2中第n次出现的位置.n缺省为1 12. 子串替换函数STUFF( )格式:STUFF(<字符表达式1>,<起始位置>,<长度>,<字符表达式2>) 把字符表达式1中的字符用字符表达式2来替换.如果<长度>是0,则相当于在<字符表达式1>中从<起始位置>处插入<字符表达式2>如果<字符表达式2>的值是空串,则相当于在<字符表达式1>中从<起始位置>处删除<长度>个字符.例(书例2.24): STORE ‘GOOD BYE!’ TO s1STORE ‘MORNING’ TO s2?STUFF(s1,6,3,s2),STUFF(s1,1,4,s2)主屏幕显示: GOOD MORNING MORNING BYE!?stuff(s1,2,3,''), stuff(s1,2,0,' ')主屏幕显示::G BYE! G OOD BYE!13. 字符替换函数CHRTRAN( )格式:CHRTRAN(<字符表达式1>,<字符表达式2>,<字符表达式3>) 搜索<字符表达式1>中是否含有或部分含有<字符表达式2>,如果有则将其用<字符表达式3>来替换.例(书例2.25): s1=CHRTRAN(‘ABACAD’,’ACD’,’X12’)Y1=CHRTRAN(‘计算机ABC’,’计算机’,’电脑’)?s1,y1主屏幕显示:: XBX1X2 电脑ABC14. 字符串匹配函数LIKE( )格式:LIKE(<字符表达式1>,<字符表达式2>)比较两个字符串对应位置上的字符,若完全匹配则返回逻辑值真,否则返回逻辑值假.注意与其他字符处理函数的不同:函数返回值的类型是逻辑型.<字符表达式1>中可以包含通配符*和?,其中*指代任意数目的字符,?指代单个字符.例: ?like(‘计?机’,’计算机’) ,like(‘计*机’,’计算机’)主屏幕显示: .F. .T.有通配符的地方可填入任意字符.例(书例2.26): STORE “abc” TO xSTORE “abcd” TO y?LIKE(“ab*”,x),LIKE(“ab*”,y),LIKE(x,y),LIKE(‘?b?’,x),L IKE(‘Abc’,x)主屏幕显示: .T. .T. .F. .T. .F.2.3.3日期和时间函数1.系统日期和时间函数DATE( ),TIME( )和DATETIME( )2.年月日函数YEAR( ),MONTH( )和DAY( )3.时分秒函数HOUR( ),MINUTE( )和SECOND( )2.3.4数据类型转换函数1.数值转字符STR( )格式: STR(<数值表达式>[,<长度>[,<小数位数>]])①转换时根据需要自动进行四舍五入.②小数点本身算1位③如果指定的<长度>大于<数值表达式>本身的长度,则字符串前面补加相应数量的空格④如果指定的<长度>大于等于<数值表达式>整数部分的长度但小于<数值表达式>的总长度,则优先满足整数部分的转换⑤如果指定的<长度>小于<数值表达式>整数部分的长度,则返回一串*号.⑥<长度>如缺省,默认值为10;<小数位数>如缺省,默认值为0例(书例2.30): STORE -123.456 TO n?’n=’+STR(n,8,3)主屏幕显示: n=-123.456?STR(n,9,2),STR(n,6,2),STR(n,3),STR(n,6),STR(n)主屏幕显示:: -123.46 -123.5 *** -123 -1232.字符转数值V AL( )如果字符串中有字母,则只取字符表达式中第一个字母前的数字;如果第一个字母前没有数字,则其结果为0.00。