VisualFoxPro基础3.1数据和数据的类型3.2常量3.3变量3.4运算符和表达式3.5常用函数授课时间:4学时教学目的:1、认识并熟练掌握VFP中的常用数据类型。2、掌握常用函数和表达式。3、操作:利用显示命令验证常用函数表的基本操作。数据和数据的类型•数据和数据的分类数据是计算机程序处理的对象,也是运算产生的结果,可以从各种不同的角度对数据进行分类。从数据的类型来分,数据可分为数值型数据,字符型数据,逻辑型数据等。从数据的处理层次来分,数据可分为常量、变量、函数和表达式。3.1.2数据类型1)字符型(Character)简写为C字符型由字母(汉字)、数字、空格等任意ASCII码字符组成,字符数据的长度为0~254,每个字符占1个字节。2)数值型(Numeric)简写为N数值型用来表示数量,它由数字0~9、一个符号(+或-)和一个小数点(.)组成。数值型数据的长度为1~20,每个数据占8个字节。数值型数据取值范围是-0.9999999999E+19~+0.9999999999E+203)日期型(Date)简写为D(8)日期型用以保存不带时间的日期值。日期型数据的存储格式为“yyyymmdd”。4)日期时间型(DateTime)简写为T(8)日期时间型用于保存日期和时间值,日期时间型数据的存储格式为“yyyymmddhhmmss”。5)逻辑型(Logical)简写为L(1)逻辑型用于存储只有两个值的数据。存入的值只有真(.T.)和假(.F.)两种状态。6)货币型(Currency)简写为Y(8)在使用货币值时,可以使用货币型来代替数值型7)双精度型(Double)简写为D双精度型用于取代数值型,以便能提供更高的数值精度。8)浮点型(Float)简写为F浮点数只能用于数据表中字段的定义,包含此类型是为了提供兼容性。浮点型在功能上与数值型等价。9)整型(Integer)简写为I(4)整型用于存储无小数部分的数值,只能用于数据表中的字段的定义。10)通用型(General)简写为G(4)通用型用于存储OLE对象,只能用于数据表中字段的定义,该字段包含了对OLE对象的引用,而OLE对象的具体内容可以是一个电子表格、一个字处理器的文本、图片等,是由其他应用软件建立的11)备注型(Memo)简写为M(4)备注型用于字符型数据块的存储,只能用于数据表中字段的定义。在数据表中,备注型字段占用4个字节。常量常量是一个命名的数据项,在整个操作过程中其值保持不变。如π值是:3.1415926535是数值型常量。1)数值型常量,5,28.23,-3。2)字符型常量,用单引号、双引号或[]括起来的字符串,如“ABCD”,“你好”,[教育出版社]3)逻辑型常量,只有两种:.T.和.F.;.Y.和.N.4)浮点常量浮点常量是数值型常量的浮点格式。例如:158E+10,-3.14E-20等。5)货币常量4)日期型常量和日期时间型常量,如{^2006-7-25},{^2006-07-2511:30am}。04/12/98可确定日期格式的命令:Setmarkto“日期分隔符“如setmarkto“-”?{^2002/07/08}显示结果为:07-08-02变量在高级语言中,利用变量可以对多个数据进行相同的操作,以简化计算和设计。VFP有四种变量:内存变量、数组变量、字段变量和系统变量。1.变量名的命名规则每个变量都有一个名称,叫做变量名。变量名的命名规则是:变量名由字母、数字及下划线组成,以字母或下划线开头,长度为1-128个字符。但要注意,不能使用VFP中的保留字。中文VFP中,可以使用汉字作变量名,可以汉字开头,每个汉字占2个字符。[例如3-1]定义合法的变量名示例ABCDP0000xy_z姓名是合法的变量名7abIFA[b]5是不合法的变量名2.变量的作用域变量的作用域包括定义它的过程所调用的子过程范围,在VFP中,还可以使用LOCAL,PRIVATE和PUBLIC命令强调规定变量的作用范围。用LOCAL创建的变量只能在创建它们的过程中使用和修改,不能被更高层或更低层的过程访问。PRIVATE用于定义私有变量,它用于定义当前过程的变量,并将以前过程定义的同名变量保存起来,在当前过程中使用私有变量而不影响这些同名变量的原始值。PUBLIC用于定义全局变量。本次运行期间,所有过程都可以使用这些全局变量。•变量的类型1.字段变量字段变量是指数据中的字段,它是建立数据表时定义的一类变量。随着当前记录的变化而变化。2.内存变量内存变量是内存中的一些临时工作单元,独立于数据库各和表文件,常用来保存所需要的常数、中间结果或对数据表和数据库进行某种处理后的结果等。1)内存变量的命名规则内存变量可以用数字、字母(大小写能用)、汉字和下画线组成,用户定义的变量名只能以字母、汉字开头。例如:X、井冈山学院、a2、Class_1是合法的内存变量名3m、a*为非法内存变量名。2)内存变量的赋值[格式1]STORE表达式TO内存变量名表[格式2]内存变量名=表达式[功能]在赋值给内存变量的同时定义内存变量,确定其数据类型.[例3-2]STORE5TOa1,a2STORE”井冈山”TO城市m=5rq={^08/20/80}性别=.t.3)内存变量的显示输出[格式]DISPLAY/LISTMEMORY[LIKE通配符][TOPRINTER/TOFILE文件名][例3-3]定义内存变量a的值为2,a1的值为”多媒体计算机”,在屏幕上显示出来.a=2a1=”多媒体计算机”LISTMEMORYLIKE“a”LISTMEMORYLIKE“a1”结果为:APubN2(2.00000000)A1PubC“多媒体计算机”如果只是查看内存变量的值,也可用表达式显示命令?/??实现.[格式]?/??表达式表[功能]换行或在当前位置显示表达式表中每个内存变量的值。[例3-4]显示上例内存变量a和a1赋值后的值。?a,a1结果为:2多媒体计算机以下为错误的形式:?x=“中国”+”香港”?x=54)内存变量的保存与恢复当退出VFP系统后,用户所建立的内存变量将不会存在,如果希望保存这些内存,可用下面的命令将它们保存到变量文件中。[格式]SAVETO内存变量文件名RESTOREFROM内存变量文件名5)内存变量的删除为节省存储空间,不用的内存变量应使用删除命令来释放其所占的内存空间。[格式1]CLEARMEMORY[格式2]RELEASE〈内存变量名表〉[格式3]RELEASEALL[LIKE/EXCEPT〈通配符〉]3.数组变量数组变量(数组)是按一定顺序排列的一组内存变量的集合。数组中的变量称为数组元素。每一数组元素用数组名以及该元素在数组中排列中的序号一起表示,也称为下标变量。例如x(1),x(2),y(1,1),y(1,2),y(2,2)等。因此数组也看成名称相同、而下标不同的一组变量。下标变量的下标个数称为维数,只有一个下标的数组叫一维数组,有两个的叫二维数组。数组的命名方法和一般内存变量的命名方法相同,如果新定义的数组名称和已经存在的内存变量同名,则数组取代内存变量。1).数组的定义数组使用前一般须先定义,VFP中可以定义一维数组和二维数组。[格式]DIMENSION/DECLARE〈数组名1〉(〈数组表达式1〉[,〈数组表达式2〉])[,〈数组名2〉(〈数组表达式3〉[,〈数组表达式4〉])]……[功能]定义一个或多个一维或二维数组。[例3-5]DIMENSIONabc(3),b(2,3)[说明]该命令定义了两个数组,一个是一维数组,它有三个元素,分别为abc(1),abc(2)和abc(3);另一个是二维数组b,它有6个元素,分别是b(1,1)、b(1,2),b(1,3),b(2,1),b(2,2)和b(2,3)。2).数组的赋值数组定义好后,数组中的每个数组元素自动被赋予逻辑值.F.。当需要对整个数值或个别数组元素进行新的赋值时,与一般内存变量一样,可以通过STORE命令或赋值号“=”来进行。对数组的不同元素,可以赋予不同数据类型的数据。[例3-6]DIMENSIONabc(3),b(2,3)STORE10TObabc(1)=30abc(2)=“TCP/IP”abc(3)=.F.4.系统变量系统变量是由VFP自动生成和维护的内存变量,以下画线“”开头,用于控制输出和显示信息的格式,其名称由系统规定。例如,系统变量PEJECT用于设置打印输出时的走纸方式,打印前要求走纸换页时,可将其值设为MON;DIARYDATE用于设置当前日期。•运算符和表达式常量和变量及其数据类型构成了处理数据的基础,而对数据的处理最终要通过操作符、函数和命令来实现。表达式用来表示某个求值规则,它由运算符和配对的圆括号将常量、变量、函数、对象等操作数以合理的形式组合而成。表达式分为算术表示式、字符表达式、关系表达式、日期或日期时间表达式、逻辑表达式五种。1.算术表达式算术表达式是由算术运算符、数值型常量、数值型变量、数值型数组和函数组成。算术表达式的运算结果是数值型数据。算术运算时,运算的规则是:括号优先,然后乘方、再乘除、再取模,最后加减。表1算术运算及表达式一览表运算符功能举例结果+加(正号)?5+712-减(负号)?5-20-15*乘?12*336/除?7/23.5^或**乘方?2^416%取模?16%312.字符表达式字符表达式是由字符运算符、字符型常量、字符型字段变量、字符型数组和函数组成。字符表达式的运算结果仍然是字符型数据。字符运算符用于连接字符串。字符运算符及表达式如表2所示。运算符功能举例结果+连接两个字符串?“ABC”+“DEF”“ABCDEF”-连接两个字符串将掉第一个字符串尾部空格移到连接后的字符串最后?“ABC”-“DEF”“ABCDEF“$比较两个字符串时,第一个字符串是否在第二个字符串中出现?“FOX”$“FOXPro”.T.?len(space(5)-space(10))?len(space(5)+space(10))3.关系表达式关系表达式是关系运算符、算术表达式、字符表达式等组成。关系表达式的运算结果是逻辑值。当关系成立,结果为.T.(真);当关系不成立,结果为.F.(假)。关系运算符及表达式如表3-3所示:表3关系运算符与表达式一览表运算符功能举例结果小于?6537.F.=小于或等于?4*6=24.T.大于?563*9.T.=大于等于?3*7=4*6.F.=等于?“Fox”=“Fox”.T.#!=不等于?“ABCD”“ABC”.T.4.日期或日期时间表达式日期或日期时间表达式是由算术运算符(+或-),算术表达式、日期或日期时间型变量、日期或日期时间型内存变量及函数组成。日期或日期时间型的运算结果是日期或日期时间型或常数。日期或日期时间运算及表达式如表4所示。表4日期或日期时间运算及表达式一览表运算符功能举例结果+相加?{^2006/05/16}+1006/26/05日期型{^2006/05/2610:20:20}+15006/26/0510:22:50日期时间型-相减?{^2006/05/26}-1506/11/05日期型?{^2006/05/26}-{^2005/05/26}365数值型5.逻辑表达式逻辑表达式是由逻辑运算符、逻辑型内存变量、逻辑型数组、函数和关系表达式.在逻辑表达式中,可以描述复合条件的多个关系表达式,一般格式为:关系表达式1逻辑运算符关系表达式2逻辑表达式运算的结果是逻辑值,即真(T)或假(F)。表3-5逻辑运算符及表达式一览表运算符功能举例结果NOT逻辑非、取逻辑值相反的值?NOT73.F.AND逻辑与、两边的条件都成立,其结果为真?5*927AND3616.T.OR逻辑或,只要一边条件成立,其结果值为真?3*720or2519.T.表3-6逻辑运算的规则如表所示AB.NOT.BA.AND.BA.OR.B.T..T..