980 likes | 1.12k Views
数据类型、 常量、变量、 表达式和函数. 数据和数据类型. 1. 数据. 2. Visual FoxPro 数据类型. 数据. 数据是描述客观实物的数、字符以及所有能输入到计算机中并被计算机程序加工处理的符号集合。 数据是计算机程序处理的对象,也是运算的结果,所以应该认识 Visual FoxPro 能处理哪些数据,掌握各种数据的表达方法。. 数据类型 ?type(""). 一、数值型数据 N ( Numeric ). 二、字符型数据 C ( Character ). 三、逻辑型数据 L ( Logical ).
E N D
数据和数据类型 1. 数据 2. Visual FoxPro 数据类型
数据 • 数据是描述客观实物的数、字符以及所有能输入到计算机中并被计算机程序加工处理的符号集合。 • 数据是计算机程序处理的对象,也是运算的结果,所以应该认识Visual FoxPro能处理哪些数据,掌握各种数据的表达方法。
数据类型 ?type("") 一、数值型数据 N(Numeric) 二、字符型数据 C(Character) 三、逻辑型数据 L(Logical) 四、日期型数据 D(Date) 五、备注型数据 M(Memo) 六、通用型数据 G(General)
数值型数据N • 可以进行数学运算的数据称为数值型数据。这种数据只能包含0-9、小数点、正负号。包括符号位和小数点,在内存中占8个字节;在表中占1-20个字节,精度16位。数值范围从.9999999999E-19到.9999999999E+20,用N表示。 • 如: 9.98 0.668 -36.99 9000
字符型数据C • 字符型数据是指一切可打印的字符和字符串,包括26个英文字母、0-9数字、空格、汉字以及各种符号及其组成的字符串等。每个字符占一个字节,最多可有254个字符,用C表示。对字符型常量需用单引号或双引号括起来。 • 如:"010-3989987" "visual foxpro" • "汉字" "#$%%^"
逻辑型数据L • 逻辑型数据只包含有两个值:"真"(.T.)或"假"(.F.)。长度固定为1位,用L表示。逻辑型数据是为进行各种判断而设计的。
日期型数据D • 日期型数据用来表示日期。在中文版Visual FoxPro中,日期默认格式为yy/mm/dd(年/月/日),可用SET DATE TO命令或用“工具”、“选项”、“国际”选项卡设置日期为其它格式。日期型变量以“yyyymmdd”字符格式进行保存,范围从100/01/01到9999/12/31,长度固定为8位,用D表示。 • 注意:必须用{ } • 如:{^99/03/08}
备注型数据M • 备注型数据是一种存储长度、容量任意的字符型数据。备注字段含有一个10字节的指针,它指向真正的备注内容。表中记录的备注型字段数据保存在单独文件中,文件名与表名相同并且扩展名为.FPT。备注字段仅受可用磁盘空间大小的限制,在表中占4个字节,用M表示。
整数数值型数据N • 存储的数值型数据为整数。占4个字节,范围从-2147483647到+2147483646。用N表示。
通用型数据G • 通用型数据一般用在表中的字段,即通用字段。通用字段用来保存OLE对象。通用字段包含一个10字节的指针,它指向该字段真正的内容。如:Excel电子表格 、WORD文档、画图BMP图片、声音等。 • 通用字段的真正类型和数据大小取决于创建这些OLE对象服务器,以及是以链接方式还是以嵌入方式创建。通用字段的真正的内容大小只受磁盘空间的限制。在表中占4个字节,用G表示。
常量和变量 常量是以直观的数据形态和意义直接出现在程序中的数据。在程序中,常量一旦定义,其值就不会再被改变。 在程序中,变量是指用标识符命名的用以存放数据的计算机内存单元。在程序执行的某个时刻,变量的值都是确定的、已知的,但在整个程序运行过程中是可变的。
常量类型 一、数值型常量 二、字符型常量 三、逻辑型常量 四、日期型常量 五、日期时间型常量
数值型常量 • 数值型常量是指在程序中不变的数值型数据。 • 如:6 • 5.18 • 66 • -99.8 • 1.23785E-12
字符型常量 • 是必须用界限符双引号""或单引号‘’或方括号[]括起来的一个或几个字母、空格、数字、汉字或其它特殊符号,称为字符型常量或字符串。 • 如:"A" 、‘b’、‘168’、 [计算机]等。 • 当字符串本身还包含某种界限符时,则要选择另外两种不同的界限符作为真正的界限符,以示区别。 • 如:[She said,"I am a student."]表示字符常量She said,"I am a student." 。
逻辑型常量 • 用于逻辑型数据。真用.T.或.t.、 .Y.或 .y.表示,假用.F.或.f.、.N.或.n.表示。 日期型常量 属于日期型数据。用大括号{}括起来表示日期型常量。如:{^2000/12/18}表示2000年12月18日。
日期时间型常量 • 属于日期时间型数据。用{}作界限符,日期与时间必须用空格隔开。 • 如:{^97/12/3 8:58:18AM} • 表示1997年12月3日上午8点58分18秒。
变量名及变量分类 一、变量名 二、简单变量 三、数组变量 四、字段变量 五、系统内存变量
变量名 • 为了区分变量,给每个变量起个名字,称为变量名。Visual FoxPro规定变量名最多为10个字符,可以由字母、数字和嵌在字母或数字之间的下划线组成,但必须以字母开头,中间不能有空格。如:XY、DD、D43、D_43等。在为变量命名时应注意以下原则: • 1. 见名知义的原则。 • 2. 简单明了。 • 3. 用户定义的变量名不能与系统的命令或函数重名,否则程序运行时将出现错误。
简单变量 • 简单变量也称内存标量变量。内存变量用于存储用户经常用到的常量、程序运行过程中所要用到的各种中间数据或最终结果、用户输入的信息等,它只保留在内存中,需要时可以定义,不需要时可以释放掉。 • Visual FoxPro中的内存变量有数值型内存变量、字符型内存变量、逻辑型内存变量、日期型内存变量、日期时间型内存变量、货币型内存变量、对象型内存变量。
简单变量 • 在命令窗口输入下列命令,可定义有关变量的类型。(?,??,=,STORE TO,DISPLAY MEMORY [LIKE ...],RELEASE,CLEAR MEMORY) • A1=123 • A2="GOOD!" • A3=.T. (STORE .T. TO A3) • A4={^1999/12/18} • ? A1,A2,A3,A4 • 显示结果为:123 GOOD! .T. 99-12-18
数组变量 • 数组是指名字相同而下标不同的一组有序变量。Visual FoxPro中可以定义一维或二维数组。数组使用前必须先用DIMENSION集合定义数组的大小。 • 如:DIMENSION A(2,3)
字段变量 • 字段变量是随着数据表的建立而产生的,它是表中最基本的数据单元,它使用专门的命令(CREATE)或菜单打开表设计器,在表设计器中定义字段名、字段类型、字段长度、小数位数等内容。字段变量的值随着记录指针的移动而改变。字段变量的类型有前面介绍的所有类型,共十三种。
系统内存变量 • 系统内存变量是Visual FoxPro建立并自动维护的内部变量,它的变量名都是以下划线开始,可以象使用一般内存变量一样来使用系统内存变量。使用系统内存变量设计程序,可以简化程序设计。Visual FoxPro有5种系统内存变量,即数值型N、字符型C、逻辑型L、日期型D、对象型O。 • 查看:display memory
表达式 • 把符合Visual FoxPro规定的、用运算符号和括号将常量、内存变量、字段变量、函数等连接起来的式子称为Visual FoxPro表达式。 • 最简单的表达式可以是一个常量、内存变量、字段变量或函数。如果表达式含有不同类型的数据,则先要用有关转换函数将它们转换为同一类型后再运算。 • 表达式运算的结果,称为表达式的值。
表达式的类型 一、数值型表达式 二、字符型表达式 三、关系型表达式 四、逻辑表达式 五、日期型表达式
一、数值型表达式 • 数值型表达式由括号、数值型运算符(也称算术运算符)、数值型常量、内存变量、字段变量和函数组成,运算的结果为数值型。 • 如:25*4+(33-11)*4 结果 188 • 再如: 相应的表达式该怎么写?
举例 • 1. A+B/C*D*Y^2 • 2. (A+B)/C*D*Y^2 • 3. (A+B)/(C*D)*Y^2 • 4. (A+B)*Y^2/C*D • 5. (A+B)/C/D*Y^2 • 6. (A+B)*Y^2/C/D • 7. (A+B)/(C/D)*Y^2
数值型运算符的优先级 高 • () • +或-号 • ^或** • *或/ • % • +或- 低
书写表达式的规则 • 1.所有字符都必须写在同一行上; • 如:X3Y要写成:X^3*Y。 • 2. 所有运算符都不能省略。 • 如:2Y;2*Y,WX;W*X。 • 3. 所有括号都用小括号(),括号必须配对。 • 4.一律用半角英文符号。
二、字符型表达式 • 字符型表达式由字符型运算符、字符型常量、内存变量、字段变量和函数组成。字符型表达式只能对字符型数据进行操作,其运算结果为字符型数据。字符型运算符为: • + 字符串连接运算符 • - 串尾空格移位运算符 • 如:"Visual "+"FoxPro 3.0" • 运算结果为:"Visual FoxPro 3.0" • 再如:"Visual "-"FoxPro 3.0" • 运算结果为:"VisualFoxPro 3.0 "
三、关系型表达式 • 关系型表达式由关系运算符、数值表达式、字符表达式、日期表达式组成。关系运算符用于对两个相同数据类型表达式值的大小进行比较。被比较的数据应该是数值型数据、字符型数据、日期型数据,但不能是逻辑数据。关系运算的结果为逻辑型数据,只能是真.T.或假.F.。
关系运算符 • > 大于 >= 大于或等于 • < 小于 <= 小于或等于 • = 等于 $ 字符串包含 • <>或#或!= 不等于 == 字符串精确比较 • 关系运算的优先级相同,但所有关系运算符的优先级低于数学运算符或算术运算符。 • 如:3+5>=45/5
数据类型的比较方法 • 1. 数值型数据按其大小比较; • 2.日期型数据将日期看成"yymmdd"6位整数,按数值大小比较; • 3. 汉字字符是按区位码比较的; • 4. 对字符型数据,按ASCII码值比较。 • 如:"张三">"王五" • "abcd"<"Zyxtgf" • {^97/02/21}>{^96/12/30} .T. .F. .T.
四、逻辑表达式 • 逻辑表达式由关系表达式、逻辑运算符、逻辑常量、内存变量、字段变量和函数组成。运算结果为.T.或.F.。 • 逻辑运算符为: • ( ) • NOT 或 ! 或 .NOT. • AND 或 .AND. • OR 或 .OR.
逻辑运算真值表 • 逻辑运算符的优先级为: • ( )、.NOT.、.AND.、.OR.。
举例 • 例1:求下列表达式的值。 • 5>3.AND. 10+2>11 运算结果为.T. • "ABC">"123" OR 10<6 运算结果为.T. • .NOT.18>9.AND.16*3>45 运算结果为.F. 例2:根据所给条件,列出逻辑表达式。 (1)一元二次方程 有实根的条件是A<>0,并且B^2-4AC>=0。 逻辑表达式为: A<>0.AND.B^2-4*A*C>=0
举例 • 例3 写出满足下列条件的关系表达式: • 设A、B代表主课成绩,C代表副课成绩。 • 三门课成绩之和大于270,或一门主课100, • 另两门在80以上。 A+B+C>270 OR A=100 AND B>80 AND C>80 OR B=100 AND A>80 AND C>80 A+B+C>270 OR (A=100 AND B>80 OR B=100 AND A>80) AND C>80
五、日期型表达式 • 日期表达式由算术运算符(加+或减-)、算术表达式、日期型常量、内存变量、字段变量和函数组成。日期型数据是一种特殊的数值型数据,它们之间只能进行加、减运算。有以下三种情况: • ?{^2000/12/18}-{^2000/11/30} • ?{^1999/8/8}+10 • ?{^1999/8/18}-10
表达式运算的优先级 • 数值型表达式和字符型表达式 • 关系型表达式 • 逻辑型表达式 • 在每一种表达式中按各自的运算符的优先级进行。如果是同一级别,则按照从左到右的规则进行。
函数 • 函数是事先编好的一组程序,作为系统的一部分资源供用户使用。 • 函数运算后都会返回一个值。根据函数值的类型,可将Visual FoxPro系统函数分为:数值型函数、字符型函数、逻辑型函数和日期型函数。 • 如果按函数的性质和功能划分,可将函数分为:
函数 1. 数值运算函数 2. 字符操作函数 3. 日期时间函数 4. 类型转换函数 5. 测试函数
数值运算函数(ABS) • 一、求绝对值函数ABS() • 语法:ABS(<数值表达式>) • 功能:返回指定数值表达式的绝对值。函数值为数值型。 • ?ABS(-68) 结果68 • ?ABS(80-22) 结果58 • A=46 • B=8 • ?ABS(B-A) 结果38
数值运算函数(INT) • 二、取整数部分函数INT() • 语法:INT(<数值表达式>) • 功能:计算数值表达式的值,截去数值表达式值的小数部分,并返回其整数值。函数值为数值型。如: • ?INT(18.9) 结果为18 • ?INT(18.4*2) 结果为36 • ?INT(-16.5) 结果为-16
数值运算函数(INT) • 二、取整数部分函数INT() • 可用来: • 1。判断整数:?X=INT(X) • 2。判断奇偶:?X/2=INT(X/2) • 3。求余数;X=A-INT(A/B)*B • 4.求数位的值: • ?INT(384/10)-INT(384/100)*10
数值运算函数(ROUND) • 三、四舍五入函数ROUND() • 语法:ROUND(<数值表达式1>,<数值表达式2>) • 功能:返回四舍五入到<数值表达式2>指定小数位数的数值表达式。函数值为数值型。如果<数值表达式2>为负数,则向前数。 • 如:?ROUND(532.6548,3) 结果为532.655 • ?ROUND(5432.6543,-1) 结果为5430 • ?ROUND(5432.6543,-3) 结果为5000
数值运算函数(SQRT) • 四、求平方根函数SQRT() • 语法:SQRT(<数值表达式>) • 功能:求一个正数的平方根。函数值为数值型。如: • ?SQRT(9) 结果为3 • ?SQRT(12) 结果为 3.464101615138 • ?SQRT(-34) ??
数值运算函数(MOD) • 五、MOD()函数 • 语法:MOD(被除数,除数) • 功能:返回被除数与除数相除的余数。结果为数值型。如: • ? mod(10,3) &&结果为1 • ? mod(10,-3) &&结果为-2
字符操作函数(&) • 一、宏代换& • 语法:&<内存变量>[.<字符型表达式>] • 功能:用于代换一个字符型内存变量的内容。 • &必须放在一个字符型内存变量之前,就用该变量的值来代替&及该变量名。 • &<内存变量>与跟在它后面的其它字符之间,一般要隔一个或多个空格。如果代换后的值要与后面其它字符连在一起,则必须在&<内存变量>之后与其它字符之间插入一个终止宏代换符号"."。
宏代换函数举例(&) • 如:STORE "A" to X • Store "X" to Y • ?&Y 结果为A • 再如:STORE "hello" to hi • Store "hi" to s • ?&s 结果为hello