550 likes | 656 Views
第二章 数据与数据运算. 第一节 数据类型 第二节 常量、变量与数组 第三节 运算符与表达式 第四节 常用函数. 学习目标之一. 知识目标 1 、掌握 VFP 的数据类型,应用范围 2 、熟练掌握各种类型常量的表示方法 3 、掌握变量的概念、声明、类型与使用 4 、明确 VFP 的运算符与表达式的构成,理解表达式的运算顺序 5 、理解函数的概念,函数的使用方法,熟悉典型的函数的运用 6 、理解数组的概念,数组的定义,数组的使用. 学习目标之二. 技能目标 1 、会根据不同的数据选择合适的数据类型
E N D
第二章 数据与数据运算 • 第一节 数据类型 • 第二节 常量、变量与数组 • 第三节 运算符与表达式 • 第四节 常用函数
学习目标之一 • 知识目标 • 1、掌握VFP的数据类型,应用范围 • 2、熟练掌握各种类型常量的表示方法 • 3、掌握变量的概念、声明、类型与使用 • 4、明确VFP的运算符与表达式的构成,理解表达式的运算顺序 • 5、理解函数的概念,函数的使用方法,熟悉典型的函数的运用 • 6、理解数组的概念,数组的定义,数组的使用
学习目标之二 • 技能目标 • 1、会根据不同的数据选择合适的数据类型 • 2、能够理解变量与数学中的变量的区别与联系,会将一般的数学表达式转换成为合法的VFP表达式 • 3、会根据不同的要求选择不同的函数 • 4、学会利用VFP来完成数据处理的实验
重点与难点 • 一、学习重点 • 1、数据类型及其选用 • 2、常量的表示,变量的定义与应用 • 3、各种运算符的规则,表达式 • 4、数组的定义与使用 • 5、常用函数的功能与应用 • 二、学习难点 • 1、数组的定义与使用 • 2、函数的调用与返回值 • 3、复杂表达式的运算
第一节 数据类型 • 1. 数据类型 • 数据类型:数据对象的取值集合,以及对之可施行的运算集合。 • 数据结构的种类 • 说明一个数据在数据分类中的归属 • 数据的一种属性。 • 数据类型种类 • 简单的数据类型 • 构造的数据类型 • 用户自定义的数据类型 • VFP中数据类型:变量数据类型、字段数据类型
第一节 数据类型 • 2、VFP中的数据类型 • (1)字符型(Character) 可变 • (2)数值型(Numberic) 可变 • (3)货币型(Currency Y) 8 • (4)日期型(Date) 8 • (5)日期时间型(DateTime) 8 • (6)逻辑型(Logic) 1 • (7)浮点型(Float) 可变 • (8)双精度型(Double) 8 • (9)整型(Integer) 4 • (10)备注型(Memo) 4 • (11)通用型(General) 4
第一节 数据类型 • 3、VFP数据类型说明 • 前6种为通用的数据类型,后5种仅用于表 • 数据类型的选择要根据语义,而不能根据其构成的字符类型 • 长度是指在表中所占的长度
第二节 常量、变量与数组 • 一、常量 • 数据处理过程中,值固定不变的量称为常量 • 1、数值型常量 • 组成:数字、小数点、正负号) • 表示:一般表示法、浮点表示法 • 示例:10、-12.3、3.1E12(即3*1012) • 2、货币型常量 • 组成:同数值型 • 表示:$加货币值 • 示例:$12、$5699.98、$23.23
2.2.1 常量 • 一、常量 • 字符型常量 • 组成:任意字符 • 表示:用定界符将字符串括起 • 示例:’12’、“ABC”、[中国]、[/“] • 注意: • 逻辑型常量 • 组成:真、假 • 表示:.t. .f. .y. .n. (也可以是大写) • 注意: 1、定界符不能是中文符号 2、定界符必须成对出现 3、字符串含定界符时,必须采用另一种定界符 4、空串与空格字符串不同 5、字母大小写不同 6、字符串与其他类型常量的区别如:’12’与12、‘.T.’与.T. 1、表示逻辑值的字母前后的点不能缺少
2.2.1 常量 • 一、常量 • 日期型与日期时间型常量 • 组成:数字、分隔符(如:/ - :) • 表示 • 传统格式:{mm/dd/yy [hh[:mm[:ss]]] [a|p]} 示例:{16-02-04}表示2004年2月16日 • 严格格式:{^ yyyy/mm/dd [hh[:mm[:ss]]] [a|p]} 示例:{^2004-02-16 12:10}表示2004年2月16日12时10分 • 注意 1、不同版本VFP对日期格式处理的差别 2、传统日期格式受SET DATE、SET CENTURY命令限制 3、空日期表示{}、{//}等
2.2.2 数据存储—变量 • 名称命名规则 • 可用字符集 • 字母、数字、下划线、汉字 • 首字符限制 • 不能使用数字开头 • 长度规则 • 表字段名、索引名:1-10个字符 • 其他1-128个字符 • 不能使用的名称 • 系统保留字 • 示例 合法名称:lcString、nLenth、Average_of_gz 不合法名称:2abc、x#y、 x-y
2.2.2 数据存储—变量 • 2、内存变量的创建 • 直接建立 • STORE或= • 示例:STORE 5 TO x或x=5 • 使用关键字创建 • LOCAL • 示例:LOCAL cX,nX • PRIVATE • 示例:PRIVATE cY,nY • PUBLIC • 示例:PUBLIC cZ,nZ
2.2.2 数据存储—变量 • 3、内存变量的访问 • 使用内存变量名可以对内存变量进行访问,当字段变量与内存变量同名时,在变量名前加“m.”即可 • 示例: • STORE 5 TO a,b • C=a+b • ?a • ?b • ?m.c • 内存变量的显示:list ,display
2.2.2 数据存储—变量 • 4、内存变量的的保存与恢复 • SAVE TO FileName [ALL LIKE Skeleton|ALL EXCEPT Skeleton] • 示例:SAVE TO mVar ALL LIKE c* • RESTORE FROM FileName [ADDITIVE]
2.2.3 数组 • 1、数组定义 • 定义:存储在一个变量中由单个变量名引用的有序数据集合,它们在内存中占用一片连续的存储单元 • 数组的声明 • DECLARE—私有数组 • DIMENSION—私有数组 • PUBLIC—全局数组 • LOCAL—局部数组 • 命令格式: • 命令动词 数组名(行数[,列数]) • 默认值(.f.) • 示例:DECLARE|DIMESION X[5]
2.2.3 数组 • 2、数组的访问 • 数组元素的访问 • 使用下标标识数组元素,首元素的下标为1,下标值不能超过数组的大小 • 注意不带下标(包括括号)时的情况 • 赋值:给该数组所有元素赋给相同的值 • 访问:获得该数组首元素的值 • 举例 • DIMENSION ARRY1(4) • ARRY1(1) = "990103" ARRY1(2) ="张山" ARRY1(3) ="男" ARRY1(4) = .T .?Arry(1), Arry(2),Arry(3),Arry(4)
2.3 运算符 • 数值运算符
2.3.1 运算符与优先级 • 字符运算符 注意:$运算结果为逻辑值
2.3.1 运算符与优先级 • 日期和日期时间运算符 注意:两个日期不能相加;日期与日期时间型不能相减
2.3.1 运算符与优先级 • 关系运算符 注意:==只能用于字符串比较;字符串(字符)比较时与 COLLATE设置有关:Machine、PinYin、Stroke
2.3.1 运算符与优先级 • 字符串的比较问题 • 字符序列的设置问题 • COLLATE设置有关:Machine、PinYin、Stroke • 精确比较问题(相等比较) • EXACT • ON:长度相等的条件下进行比较 • OFF:以右边为准,左边取与右边等长,然后进行比较。
2.3.1 运算符与优先级 • 逻辑运算符 注意:参加逻辑运算的各目必须是逻辑值
2.3.1 运算符与优先级 • 运算符的优先级
2.3.2 表达式 • 表达式是通过运算符将常量、变量、字段名等组合起的可以运算的式子。 • 表达式具有单个的结果值 • VFP表达式分类 • 算术表达式 • 字符表达式 • 日期表达式 • 关系表达式 • 逻辑表达式 • 名称表达式
2.3.2 表达式 • 算术表达式 • 由数值类型数据和算术运算符组成的式子 • 计算结果为数值型数据 • 示例: • #DEFINE PI=3.14 • R=10 • S=PI*R*R
2.3.2 表达式 • 字符表达式 • 由字符类型的数据和字符连接符组成 • 计算结果为字符型 • 示例: • “姓名:”+TRIM(js.xm) • LEFT(“中华人民共和国”,4)
2.3.2 表达式 • 日期表达式 • 由日期或日期时间型数据和日期运算符组成 • 计算结果为日期型或日期时间型或数值型 • 示例: • DATE()-{^2004-02-10} • {^2004-02-10}+10
2.3.2 表达式 • 关系表达式 • 同种类型数据用关系运算符进行比较的式子 • 结果为逻辑值 • 示例: • 30>30 • ‘A’==‘a’ • DATE()-10>{^2004-02-10}
2.3.2 表达式 • 逻辑表达式 • 由逻辑型数据(也可以是关系表达式)与逻辑运算符组成的式子 • 运算结果为逻辑型 • 示例: • NOT (50>300) • ‘A’=‘a’ AND .F. • .T. OR .F.
2.3.2 表达式 • 名称表达式 • 由圆括号括起来的字符表达式 • 作用:替换命令或函数中的名称 • 示例: • nVar=‘x’ • STORE 5 TO (nVar) • 注意: • 上述命令不能用 (nVar)=5 代替 • 在上述命令执行后 (nVar)+5 也不能使用
2.3.2 表达式 • 名称表达式 • 使用方法 • 1、替换命令中的变量名 • 2、替换文件名 • 3、作为函数的参数 • 使用过程 cVa=“x” stor 0 to (cVa) ?cVa ?x dbf_name=“js.dbf” dir (dbf_name) cVa cVa=“x” x x stor 0 to (cVa)) 0
2.3.2 表达式 • 宏替换 • 用“&”放在字符变量名前,“.”放在变量名后,VFP会将此变量的值作为名称使用 • 示例: • Var_name=‘nX’ • STORE 12 TO &Var_name • STORE 12 TO &Var_name.b • 名称表达式与宏替换的比较 1、凡是使用名称表达式的地方都可以使用宏替换 2、名称表达式不能作为表达式的组成部分 3、在某些命令和函数中不能使用名称表达式
2.3.2 表达式 • NULL的处理 • NULL(.NULL.)指空值即没有任何值 • 与0、“”、“”不同 • 排序优先 • 会影响命令、函数、逻辑表达式等的行为 • 可以用ISNULL()测试变量、字段或逻辑表达式的值是否为.NULL.
2.4 函数 • 函数是一种预先编制好的程序代码,可供用户调用。 • 函数可以接受0或多个参数。 • 函数只能有一个返回值。 • 函数的使用的语法格式: 函数名([参数1[,参数2[,……]]])
2.4.1 系统函数的分类 • 数据类型类 • 数据库类 • 环境类 • 输入输出类 • 程序设计类
2.4.2 常用函数简介 • 数值函数 • ABS()* • 格式: ABS(nExpression) • 示例: ABS(-5) • MAX()* • 格式: MAX(nExpression1,nExpression2[,……]) • 示例: MAX(10,5,-2)
2.4.2 常用函数简介 • 数值函数 • MIN() • 格式:MIN(eExpression1,eExpression2[,……]) • 示例:MIN(10,5,-2) • INT()* • 格式:INT(nExpression) • 示例:INT(12.5),INT(-12.5)
2.4.2 常用函数简介 • 数值函数 • MOD()* • 格式:MOD(nDividend,nDivisor) • 示例:MOD(36,5),MOD(12.6,5) • ROUND()* • 格式:ROUND(nExpression,nDecimalPlaces) • 示例:ROUND(12.345678,3)
2.4.2 常用函数简介 • 数值函数 • SQRT() • 格式:SQRT(nExpression) • 示例:SQRT(16) • RAND()* • 格式:RAND() • 示例:INT(1+RAND()*10)
2.4.2 常用函数简介 • 字符函数 • ALLTRIM() • 格式:ALLTRIM(cExpression) • 示例:ALLTRIM(“中国 ”) • TRIM()* • 格式:TRIM(cExpression) • 示例:TRIM(“中国 ”)
2.4.2 常用函数简介 • 字符函数 • LEN()* • 格式:LEN(cExpression) • 示例:LEN(“中国 ”) • AT() • 格式AT(cExpression,cExpression2[,nOccurrence]) • 示例 AT(‘b’,’abcabc’), AT(‘b’,’abcabc’,2)
2.4.2 常用函数简介 • 字符函数 • SUBSTR()* • 格式:SUBSTR(cExpression,nStartosition,nLen) • 示例:SUBSTR(“伟大的中国共产党”,7,4) • LEFT()* • 格式: LEFT(cExpression, nLen) • 示例:LEFT(“中国共产党”,4)
2.4.2 常用函数简介 • 字符函数 • RIGHT() • 格式: RIGHT(cExpression, nLen) • 示例: RIGHT(“伟大的中国”,4) • SPACE() • 格式:SPACE(nExpression) • 示例:SPACE(5)
2.4.2 常用函数简介 • 时间/日期函数 • DATE()* • 格式:DATE() • 示例:DATE() • DATETIME() • 格式:DATETIME() • 示例:DATETIME()
2.4.2 常用函数简介 • 时间/日期函数 • DOW() • 格式:DOW(dExpression|tExpression) • 示例:DOW(DATE()) • DAY()* • 格式:DAY(dExpression|tExpression) • 示例:DAY(DATE())
2.4.2 常用函数简介 • 时间/日期函数 • MONTH() • 格式:MONTH(dExpression|tExpression) • 示例:MONTH(DATE()) • YEAR()* • 格式:YEAR(dExpression|tExpression) • 示例:YEAR(DATE())
2.4.2 常用函数简介 • 时间/日期函数 • TIME() • 格式:TIME() • 示例:TIME()
2.4.2 常用函数简介 • 类型转换函数 • ASC()* • 格式:ASC(cExpression) • 示例:ASC(‘a’) • CHR()* • 格式:CHR(nExpression) • 示例:CHR(97)
2.4.2 常用函数简介 • 类型转换函数 • VAL()* • 格式:VAL(cExpression) • 示例:VAL(“1983年”) • DTOC()、TTOC()* • 格式:DTOC(dExpression)、TTOC(tExpression) • 示例:DTOC(DATE())
2.4.2 常用函数简介 • 类型转换函数 • CTOD()、CTOT() • 格式:CTOD(cExpression)、CTOT(cExpression) • 示例:CTOD(“04-01-20”) • STR()* • 格式:STR(nExpression[,nLength[,nDecimal]]) • 示例:STR(12.456),STR(12.456,5,3) 默认为10 默认为0