VFP第2章 VFP数据基础
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
教案
授课时间3月 3 日至 3 月 14日课时数4+2 授课方式
理论课□讨论课□习题课□实验课□上机课□技能课□其他□授课单元第2章VFP数据基础
目的与要求1.掌握常用数据类型
2.掌握变量命名、声明方法及变量种类
3.掌握VFP运算符及表达式
4.掌握各种常用函数
重点与难点本章重点:
整型、数值型、字符型数据;运算符和表达式的运用;常用函数本章难点:表达式和常用函数。
主要内容2.1 数据类型
2.2 常量与变量
2.3 运算符和表达式2.4 VFP常用函数
教学方法手段(教具)采用多媒体投影授课,课中请部分学生到黑板上练习,加强与学生的互动,增加课堂讨论环节,启发式教学,培养学生的实际操作能力。
参考资料《Visual FoxPro程序设计基础》卢湘鸿等编清华大学出版社《数据库系统概论》史嘉权等编清华大学出版社
思考题、作业实验2.1
实验2.2
P46选择题1、2、4、5、6、8
填空题1、4、6
1
2
讲稿
第二章VFP数据基础
[旧课复习]:
复习内容:
1.VFP 6.0的操作界面和主要文件类型
2.在VFP 6.0的集成环境中,创建一个名为“学生管理”的项目,
在该项目中建一数据库,将两自由表添加入库,并进行相关的基本
操作
复习目的:熟悉VFP 6.0集成环境,熟悉项目管理器
复习时长:大约5分钟
[新课导入]:
导入方式:任何语言都有其规定的语言规范,程序设计语言也不例外。
VFP 6.0程序设计语言规定了它自己的语言规范,只有掌握了它,用户才能熟练地运用VFP 6.0系统。
导入目的:让学生了解学习VFP语言的目的
导入时长:大约5分钟
[新课讲授]:
重点:整型、数值型、字符型数据;运算符和表达式的运用;常用函数。
难点:表达式和常用函数。
方法:运用多媒体辅助教学,采用案例教学和任务驱动等教学法。
2.1 数据类型
数据库是用来组织和存储数据的,数据的类型有多种,如数值、字符、图片、多媒体等等。
Visual FoxPro 6.0 给用户提供了多种数据类型,不同的数据类型具有各自的取值范围和特点,计算机根据不同的数据类型,进行不同的操作。
这些数据类型应用于程序设计开发时,可以通过常量、变量、数组等表现出来。
一、数据类型
Visual FoxPro6.0提供了11种数据类型应用于数据库。
(1) 字符型(Character)
(2) 货币型(Currency)
(3) 日期型(Date)
3
(4) 日期时间型(DateTime)
(5) 逻辑型(Logical)
(6) 数值型(Numeric)
(7) 双精度型(Double)
(8) 浮点型(Float)
(9) 通用型(General)
(10) 整型(Integer)
(11) 备注型(Memo)
2.2 数据类型
一、常量
常量是指在程序运行过程中保持不变的数据量。
常被应用于程序开发的调试阶段,具有字符型、数值型、日期型、日期时间型、逻辑型等多种类型。
1、字符型常量,用单引号、双引号或括号括起来的字符串:
如:“ABCD”,…你好‟ ,[VFP6.0]
2、数值型常量,如:5,28.23,-3;
3、日期型常量和日期时间型常量,如:{^2001-10-30},{^2001-10-30 11:25am} ;
4、逻辑型常量,只有两种:逻辑真用.T. 、.t. 或.Y.、.y.表示,逻辑假用.F. 、.f. 或.N.、.n.表示,。
二、变量
变量是指在操作过程中其值允许变化的量。
变量代表计算机内存中的某一位置,其中可存放数据。
可以改变一个变量的内容,但其名称和存储区域可以一直使用,直到结束Visual FoxPro工作期或释放该变量。
变量:
●内存变量
●字段变量
●系统变量
(一)、内存变量:
内存变量用来存储数据,在程序开始运行时在内存中创建,在程序结束时从内存中释放。
内存变量包括简单内存变量和数组两种。
变量名:由英文字母、汉字、数字或下划线构成,但必须以英文字母、汉字或下划线开头,其长度小于等于128字符,但不能与系统的保留字同名。
1、简单内存变量:
VFP通过给简单内存变量赋值的方式来建立简单内存变量:
<内存变量名>=<表达式>
STORE <表达式> TO <内存变量名表>
2、数组
数组是按一定顺序排列的一组内存变量,数组中的各个变量称为数组元素。
数组必须先4
定义后使用。
(1)数组的定义
格式: DIMENSION|DECLARE[<数组名>(<下标1>[,<下标2>]),<数组名>(<下标1>[,<下标2>])......]
VFP规定数组下标从1开始。
(2)数组的赋值
系统将各数组元素的初值设置为.F.,用赋值命令可以为数组元素单个地赋值,也可以为整个数组的各个元素赋以相同值,允许同一数组的元素类型不同。
(二)字段变量
数据库中数据以二维表的形式存在,表的行、列分别称为记录和字段。
表的每一个字段都是一个字段变量,变量的值因记录的不同而不同,字段变量在建立表结构时定义,修改表结构时可以重新定义。
注: 当同名的内存变量与字段变量同时出现时,系统默认为字段变量。
如要指定其中的内存变量,需要在变量名前加上“m.”或“m->”,例如m.ab,m->ab。
(三)系统变量
系统变量是由Visual FoxPro系统提供的,都是以下划线开头,分别用于控制外部设备、屏幕输出格式、或处理有关计算器、日历、剪贴板等方面的信息。
2.3 运算符与表达式
运算符:是在VFP中用来进行运算的符号。
表达式:就是常量,变量和函数用运算符连接起来的式子,根据运算对象的数据类型不同,表达式可以分为算术表达式、字符表达式、日期和时间表达式、关系表达式和逻辑表达式。
常量、变量和函数本身就可作为一个表达式。
一、算术表达式
算术表达式由算术运算符与数值型常量、变量、函数构成,运算结果仍为数值型。
又称数值表达式,其运算对象和运算结果均为数值型数据。
算术运算符及其优先级:
()括号→**或^ (乘方)→*、/、% (乘、除、取余)→+、-(加、减)
计算下列表达式的值
?-8+3*5%2^6/5*(sin(0)-8)
?-8+3*5%-2^6/5*(sin(0)-8)
?-8+3*5%-(2^6)/5*(sin(0)-8)
为了增强程序代码的可读性,可以使用()使表达式的计算次序显得更清晰
程序代码的可读性在很多时候比程序运行的速度更重要
5
6 二、字符表达式
字符表达式由字符运算符与字符型常量、变量、函数构成,运算结果为字符型或逻辑型。
VFP 字符运算有两类:连接运算和包含运算。
它们的优先级相同:
1、连接运算
连接运算符有完全连接运算符“+”和不完全连接运算符“-”2种。
+:前后两个字符串首尾连接形成一个新的字符串。
-:连接前后两个字符串,并将前字符串的尾部空格移到合并后的新字符串尾部。
2、包含运算
“$”是字符串的包含运算符,其运算的结果是逻辑值。
如果字符串1包含在字符串2中,则运算结果为真(.T.),否则为假(.F.)。
包含运算符区分大小写。
三、日期表达式和日期时间表达式
日期和日期时间运算符分为“+”和“-”两种,其作用分别是在日期数据上增加或减少天数,在日期时间数据上增加或减少秒数。
两个运算的优先级别相同。
注意:日期型不能和日期型数据相加
例:已知2009年3月3日星期二,求2010年1月1日星期几?
?({^2010/01/01}-{^2009/03/03}+2)%7
四、关系表达式
由关系运算符连接两个同类数据对象进行关系比较的运算式称为关系表达式。
关系表达式的返回值为逻辑值,关系表达式成立则其值为“真”,否则为“假”。
关系运算符具有相同的优先级。
(见P50)
当运算对象为字符型时,可用命令SET EXACT ON/OFF 来设置“=”是否为精确比较。
在非精确比较时,在关系表达式的格式中,只要后一个表达式是前一个表达式的前缀,其结果便为真。
【例2.10】关系运算示例。
SET EXACT OFF &&设置字符串为非精确比较,只要右边字符串与左边字符串的前面部分相匹配,即为逻辑真。
?1244.33>22 && .T.
字符串表达式
运算结果 "计算机"+"世界" 计算机世界
"I □have □a □□"+"Book" I □have □a □□Book
"计算机□□"-"世界" 计算机世界□□
"I □have □□a □"-"Book" I □have □□aBook □
7
? aa>bb &&.T.或者.F.,取决于变量aa 和bb 的内容
? "A" >"B “ &&.F.
? “助教” >“教授” &&.T.
zc="教授□□"
? zc="教授", "教授"=zc, "教授"==LEFT(zc,4), zc=="教授
"
主窗口显示:.T. .F. .T.
.F.
注意:在非精确比较状态下,条件zc=“教授”与条件“教授”= zc 不等价。
另:’=’与’$’
功能相反
例:
x=50
y=8
x=x+y
?x, x=x+y
58 .F.
z=y=y+1
?z
.F.
a=x>20
?a
.T.
五、逻辑表达式
由逻辑运算符将逻辑型数据对象连接而成的式子称为逻辑表达式。
逻辑表达式的运算对象与运算结果均为逻辑型数据。
逻辑运算符前后一般要加圆点“.”标记,以示区别,也可省略。
逻辑运算符:.NOT.(或!) →.AND.→.OR.
设: a b c
d T F T F
?a and b or c and d &&结果为 F
?(a and b or c) and d &&结果为 F
?a or b and c or d &&结果为 T
?a and !b or !(c and d) &&结果为 T
例:逻辑运算示例。
x=8
y=15
? x>5, y<10, x>5 OR y<10, x>5 AND y<10, NOT y<10
主窗口显示:.T. .F. .T. .F. .T. 例:
?15>2*6 AND (“jiao”<”jiang”
) OR .T.<.F.
.F.
? (13%3=1) AND (27%5=2) OR “ab”=“ad”
.T.
2.4 Visual FoxPro 6.0常用函数
标准函数是系统提供的可以实现特定功能的一段程序。
只要调用它,就能得到相应的输出结果。
函数的一般形式如下:
函数名([<参数名1>][,<参数名2>,]...[,<参数名n>])
Visual FoxPro提供了大量的标准函数。
一、数值处理函数
进行数值运算,处理数值型数据。
包括三角、对数、指数、数值转换和测试等函数。
函数功能如下:
ABS(<数值表达式>):求<数值表达式>的绝对值
EXP(<数值表达式>):求e的<数值表达式>次方的值
SQRT(<数值表达式>):求<数值表达式>的平方根
INT(<数值表达式>):返回<数值表达式>的整数部分
LOG(<数值表达式>):返回<数值表达式>的对数值
MAX(<数值表达式1>,<数值表达式2>...):
返回两个以上数值中的最大者
MOD(<数值表达式1>,<数值表达式2>)取模,
即返回两数相除所得的余数。
ROUND(<数值表达式1>,<数值表达式2>):
<数值表达式1>四舍五入,保留<数值表达式2>位小数
RAND(<数值表达式>):返回一个0~1之间的随机数。
CEILING(<数值表达式>):返回大于等于<数值表达式>的最小整数。
FLOOR(<数值表达式>): 返回小于等于<数值表达式>的最大整数。
二、字符串处理函数
LEN(<字符表达式>):
返回字符串的长度,一个汉字占两个字符长度。
SPACE(<数值表达式>)
返回<数值表达式>个空格
LOWER(<字符表达式>)
将大写字母转换为小写
8
UPPER(<字符表达式>)
将小写字母转换为大写
AT(<字符表达式1>,<字符表达式2>[,<数值表达式>])
返回字符串<字符表达式1>,在<字符表达式2>中第<数值表达式>次出现的起始位
置,若<字符表达式2>不包含<字符表达式1>,则函数值为0。
LEFT(<字符表达式><数值表达式>):
返回<字符表达式>左起<数值表达式>个字符的子串
RIGHT(<字符表达式><数值表达式>):
返回<字符表达式>右起<数值表达式>个字符的子串
SUBSTR(<字符表达式>,<数值表达式1>[,<数值表达式2>])
返回<字符表达式>中第<数值表达式1>位起的长度为<数值表达式2>的子串ALLTRIM(<字符表达式>)删除字符串前导和末尾的空格
三、日期时间函数
CTOD(<字符表达式>):将<字符表达式>转换为日期
DTOC(<日期表达式>):将<日期表达式>转换为字符串
DTOS(<日期表达式>):将<日期表达式>转换为YYYYMMDD格式字符串TIME():以HH:MM:SS的格式返回系统当前时间
DA TE():返回系统的当前日期
DA TETIME():返回系统的当前日期及时间
YEAR(<日期表达式>):返回<日期表达式>所指的年份
MONTH(<日期表达式>):返回<日期表达式>所指的月份
DAY(<日期表达式>):返回<日期表达式>所指的日
HOUR(<日期时间表达式>):返回<日期时间表达式>所指的小时
MINUTE(<日期时间表达式>):返回<日期时间表达式>所指的分
SEC(<日期时间表达式>):返回<日期时间表达式>所指的秒
四、数据类型转换函数
在数据库应用的过程中,经常要将不同数据类型的数据进行相应转换,满足实际应用的需要。
VFP系统提供了若干个转换函数,较好地解决了数据类型转换的问题。
1、字符串转换为数值函数
格式:V AL(<数字字符串>)
功能:将数字字符串(包括正负号、小数点)转换为对应的数值型数据。
若字符串内出现非数字,字符就停止转换;若字符串的首字符为非数字符,则返回值为0,但忽略前导空格
2、数值转换成字符串函数
格式:STR(<数值型表达式>[,<长度>,[,<小数位数>]])
功能:将<数值型表达式>的值转换成字符串,转换时根据需要自动四舍五入。
<小数位数>的默认值为0,<长度>的默认值为10。
X=-1234.567 && L=6+小数位
9
10 数
?STR(X,12,4) &&□□-1234.5670
?STR(X) &&□□□□□-1235
?STR(X,8) &&□□□-1235
?STR(X,7,3)
&&-1234.6 ?STR(X,4) &&**** 3、字符与ASCII 之间的转换函数
格式:ASC(<字符型表达式>)
CHR(<数值型表达式
>)
功能:ASC()函数给出指定字符串最左边的一个字符的ASCII 码值。
函数值为数值型。
CHR()函数将数值表达式的值作为ASCII 码,转换为对应的字符。
函数值为字符型。
4、字符串转换成日期或日期时间函数
格式:CTOD(<字符型表达式>)
CTOT(<字符型表达式
>)
功能:CTOD()将(<字符型表达式>)
值转换成日期型数据。
CTOT()将(<字符型表达式>)值转换成日期时间型数据。
5、日期或日期时间转换成字符串
格式:DTOC(<日期表达式>|<日期时间表达式> [,1])
TTOC(<日期时间表达式
> [,1])
功能:DTOC()将日期型数据或日期时间型数据的日期部分转换成字符串。
TTOC()将日期时间型数据转换成字符串。
五、测试函数
1、NULL 值测试函数
格式:ISNULL(<表达式>)
功能:判断表达式的运算结果是否为NULL 值,若是NULL 值返回逻辑真(.T.),否则返回逻辑假(.F.)。
2、 空值测试函数
格式:EMPTY(<表达式>)
功能:根据指定表达式的运算结果是否为“空”值,返回逻辑真(.T.)或逻辑假(.F.)。
3
、数据类型测试函数
格式:V ARTYPE(<表达式>) 或 TYPE(<表达式>)
功能:测试<表达式>的类型,返回一个表示数据类型的大写字母。
4
、值域测试函数
格式:BETWEEN(<被测试表达式T>,<下限表达式L>,<上限表达式H>)
功能:判断被测试表达式的值是否介于另外两个表达式的值之间。
当<表达式T>值大于等于<表达式L>且小于等于<表达式H>时,函数值为逻辑.T.,否则函数数值为逻辑.F.。
如果<表达式L>或<表达式H>有一个是NULL 值,那么函数值也是NULL 值。
5
、条件测试函数
格式:IIF(<逻辑型表达式>,<表达式1>,<表达式2>)
功能:测试<逻辑表达式>的值,若为逻辑真.T.,函数返回<表达式1>的值;若为逻辑假.F.,函数返回<表达式2>的值。
<表达式1>和<表达式2>的类型不要求相同。
6、表文件首测试函数
格式:BOF(<工作区号>|<表别名>)
功能:判断指定工作区中当前表文件的指针是否指向文件首部,是就返回.T.,否就返回.F.
7、表文件尾测试函数
格式:EOF(<工作区号>|<表别名>)
功能:判断指定工作区中当前表文件的指针是否指向文件尾部,是就返回.T.,否就返回.F.
六、系统对话框函数
MESSAGEBOX
在程序设计过程中,经常要显示一些提示信息、错误信息等,这些信息的显示用的就是函数MESSAGEBOX。
格式:
MESSAGEBOX(<信息文本>[,<对话框类型>][,<对话框标题>])
功能: 以窗口形式显示信息,返回值为数字(表示用户按了那个键)。
练习题
1.设工资=1200,职称=“教授”,下列逻辑表达式的值是
工资>1000 AND (职称=“教授” OR 职称=“副教授”)
2.设系统日期为2001年12月31日,下列表达式的值是
VAL(SUBSTR(“1999”,3)+RIGHT(STR(YEAR(DATE())),2))+17
3.命令?TYPE(“10/25/01”)的输出值是。
4.两个日期型数据可进行减法运算,结果为数据;日期型数据可加或减一个数值数据,结果为。
5.?AT(“+”,”a+b=c”) 。
6.?LEN(“计算机”)<LEN(“COMPUTER”) 。
7.?ROUND(123.456,2) ?ROUND(123.456,-2) 。
8.若a=5,b=“a<10”,则TYPE(b)输出结果为,而?TYPE(“b”)输出结果为。
9.表达式3+3>=6 OR 3+3>5 AND 2+3=5的结果为。
10.表达式“World Wide Web”$”World”的结果为。
11.设R=2,A=“3*R*R”,则&A的值应为()。
A. 0
B. 不存在
C.12
D.3*R*R
11
12.STR(109.87,7,3)的值是()。
A.109.87
B. “□ 109.87”
C.109.870
D.”109.870”
13.在逻辑运算中,正确的运算次序是()。
14.已知D1和D2为日期型变量,下列4个表达式中非法的是()。
A.D1-D2
B.D1+D2
C.D1+28
D.D1-36
15.下列4个表达式中,运算结果为数值的是()。
A.”9988”-”1255”
B. 200+800=1000
C.CTOD({11/22/01}-20)
D.LEN(SPACE(3))-1
16.设有变量sr=“2005年下半年全国计算机等级考试”,能够显示“2005年下半年计算机等级考试”的命令是()。
A.?sr-”全国”
B.?SUBSTR(sr,1,8)+SUBSTR(sr,11,17)
C.?STR(sr,1,12)+STR(sr,17,14)
D.?SUBSTR(sr,1,12)+SUBSTR(sr,17,14)
17.以下赋值语句正确的是()。
A.STORE 8 TO X,Y
B.STORE 8,9 TO X,Y
C.X=8,Y=9
D.X,Y=8
12
[教学总结]:
本单元主要介绍了VFP 6.0 基本语言规范,包括常量、变量、函数、运算符及其表达式。
它是学习后继单元的基础,力求全面掌握。
重点是整型、数值型、字符型数据;运算符和表达式的运用;常用函数。
[作业布置]:
实验2.1
实验2.2
P46选择题1、2、4、5、6、8
填空题1、4、6
[教学后记]:
13。