Visual FoxPro程序设计课件第3章Visual FoxPro 基本知识_第1页
Visual FoxPro程序设计课件第3章Visual FoxPro 基本知识_第2页
Visual FoxPro程序设计课件第3章Visual FoxPro 基本知识_第3页
Visual FoxPro程序设计课件第3章Visual FoxPro 基本知识_第4页
Visual FoxPro程序设计课件第3章Visual FoxPro 基本知识_第5页
已阅读5页,还剩41页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第3章VisualFoxPro基本知识3.1VisualFoxPro数据类型

3.2常量和变量3.3运算符和表达式3.4函数

3.1VisualFoxPro数据类型

每种计算机语言的基本成分都是相同的,只是它们的表示方法有所不同。计算机语言的基本成分包括常量、变量、表达式、函数以及所使用的数据类型。数据类型是简单数据的基本属性,只有相同类型的数据之间才能直接运算,否则就会发生数据类型不匹配的错误。3.1.1字符型(Character,类型代号C)字符型数据的定界符可以是双引号、单引号或方括号,用定界符括起来的任何字符都是字符型数据,其最大长度为254字节。例如: "工程师" ‘李娟’

[123]通常姓名、住址等不参加计算的数据可被设置为字符型数据,学号、电话、编号等由数字符号组成但不参加数学运算的数据也是字符型数据。3.1.2数值型(Numeric,类型代号N)任何由正负号、0至9的数字和小数点组成的实数都是数值型数据,它的最大长度为20字节,其中包括正负号和小数点。数值型数据不仅可以用十进制表示,而且也可以用十六进制表示,还可以用科学记数法表示。比如,整数128可以有以下三种表示法:十进制表示法:128十六进制表示法:0x80科学记数法:1.28E+23.1.3逻辑型(Logic,类型代号L)用来表示逻辑判断的结果。逻辑值只有两个:“True”和“False”,分别用.T.(.t.)和.F.(.f.)或.Y.(.y.)和.N.(.n.)表示,长度固定为1字节。3.1.4日期型(Date,类型代号D)用于表示日期,以一对花括号({})作为定界符,它的长度固定为8字节。1.日期格式的分类(1)通常日期格式表示方式为:{mm/dd/yy},其默认日期格式为美国日期格式(2)严格日期格式表示方法为:{^yyyy/mm/dd}2.与日期格式有关的命令(1)SET

STRICTDATE

TO命令格式:SET

STRICTDATE

TO

1|0功能:实现严格日期格式与通常日期格式的转换。默认值为1,表示必须使用严格日期格式,0表示可以使用通常日期格式。(2)SET

CENTURY命令格式:SET

CENTURY

off|on功能:设置年份用2位还是4位表示

(3)SET

DATE

TO命令格式:SET

DATE

TO

american|ansi|british|long功能:设置日期的显示格式。其中:american表示mm/dd/yy格式,此为默认值;

ansi表示yy.mm.dd格式;

british表示dd/mm/yy格式;

long表示yyyy年mm月dd格式。3.1.5日期时间型(DateTime,类型代号T)如果要存储的数据包含日期和时间或仅包含时间,则要采用日期时间类型,如员工上下班的打卡时间,就适合采用日期时间型数据。日期时间型数据的长度固定为8字节,默认的日期时间型数据的表示格式为:{^yyyy/mm/ddhh:mm:ssam|pm}。时间有两种表示方法:12小时制和24小时制,默认为12小时制,用下面的设置命令可以在两者间切换:

SET

HOURS

TO

12|243.1.6货币型(Currency,类型代号Y)货币型是数值型的一种变型,用来表示货币值,长度固定为8字节。在使用货币型数据时,要在数字前面加上一个货币符号“$”。货币型数据最多只能保留到小数点后4位,超过4位时会四舍五入,少于4位时系统自动在后面补0。3.1.7备注型(Memo,类型代号M)用于存储指向一个数据块的指针,长度固定为4字节。备注型只能用于字段变量,它用于存放超过字符型字段254个字符长度限制的文本,备注型字段能接受一切字符型数据,而且比字符型字段更灵活。一般来说,像“简历”、“备注”这样的需要保存大段文字的变量可将其定义为备注型字段,每个人的“简历”数据保存在与数据表文件同名的扩展名为.FPT的文件的一个数据区域,在这个区域中可以保存大量的字符数据,保存数据量的大小仅受内存空间的限制。“简历”字段4字节长度保存的指针就指向.FPT文件中相应的区域。如果表中没有备注型字段,则.FPT文件不存在。3.1.8通用型(General,类型代号G)用于存储指向一个OLE对象的指针,长度固定为4字节。它可用来存放图形、图像、电子表格、声音等多媒体数据。通用型数据也存储于扩展名为.FPT的文件中,存储量仅受内存空间限制。所谓的OLE就是“对象链接与嵌入(ObjectLinking&Embedding)”,它是Windows中一种数据交换方式。利用OLE的“复制”与“粘贴”方式,或是“插入对象”的功能,可直接轻易将各种OLE对象存入表中。3.2常量和变量3.2.1常量常量分为一般常量和符号常量。1.一般常量一般常量是指直接使用的常量。比如:字符型常量是由汉字和ASCII字符集中可打印字符组成,如:"工程师"、"2000";数值型常量是由0到9的数字、小数点和正负号组成,如:128、10.5;逻辑型常量是由表示逻辑判断结果的“.T.”或“.F.”符号组成,如:.T.、.F.、.f.、.t.;货币型是由货币符号$和一个数值型数据组成,如:$12.5;日期型常量是由按照其严格输入格式{^yyyy/mm/dd}表示的符号组成,如:{^2010/09/10};日期时间型常量是由按照其严格输入格式{^yyyy/mm/ddhh:mm:ss}表示的符号组成,如:{^2010/09/1011:50:00}。2.符号常量符号常量是将一般常量定义为一个符号。符号常量的定义方法是:#DEFINE<符号常量名><值>例如:#DEFINE

pi

3.14使用符号常量的好处是当常量值需要改变时只需改变符号常量定义的值即可,否则将必须修改程序中所有用到该常量的地方。3.2变量1.字段变量字段变量是存储在数据表中的用于表示表中数据的变量。它随表的存在而存在,随表的消失而消失。(1)变量的命名规则字段变量名由字母、数字、汉字和下划线构成,第一个字符必须是字母或汉字,最多不超过10个字符。(2)变量的类型字段变量的类型有字符型、数值型、浮点型、双精度型、整型、逻辑型、日期型、日期时间型、备注型、通用型等,即包括所有的数据类型。2.内存变量内存变量存储在内存的存储单元中,是用来保存程序运行的中间结果的临时工作单元。它可以随时定义,随时释放。(1)变量的命名规则由字母、汉字、数字和下划线组成,以字母、汉字或下划线开头,最多不超过128个字符,其中一个汉字占两个字节。(2)变量的类型内存变量的类型由它所存放的数据类型所决定。当内存中存放的数据类型改变时,内存变量的类型也随之改变。内存变量仅能拥有部分类型的数据,它们是:字符型、数值型、货币型、日期型、日期时间型、逻辑型。(3)变量的作用域内存变量根据它所定义的方式不同,其作用范围也不同。

PUBLIC LOCAL PRIVATE(4)内存变量的赋值内存变量必须先定义后使用,给内存变量赋值的同时也就定义了它,在VisualFoxPro中,有两个命令用于给内存变量赋值。格式1:<内存变量>=<表达式>格式2:STORE<表达式>TO<内存变量表>说明:①内存变量的类型由所赋值的类型决定。②<内存变量表>可包含一个或多个内存变量,若有多个内存变量,变量间以逗号间隔。(5)内存变量值的输出使用?或??命令可以在屏幕上显示内存变量的值。格式1:?[<表达式表>]格式2:??[<表达式表>]功能:在屏幕上显示表达式的值。说明:①输出项可以是一个或多个表达式,若有多个表达式,表达式间以逗号间隔。②?与??的区别是:?命令在输出表达式值之前先执行一次回车换行;而??命令则是在当前光标处输出。③若省略<表达式表>,则?命令表示换行。3.数组(1)数组的概念数组是按一定顺序排列的一组内存变量,数组中的各变量称为数组元素,每个数组元素具有相同的变量名但带有不同的下标,带有一个下标的数组称为一维数组,带有两个下标的数组称为二维数组。使用数组的好处是方便编程、可以提高效率。例如:a(1)、a(2)、a(3)称为一维a数组。

b(1,1)、b(1,2)、b(2,1)、b(2,2)称为二维b数组。(2)数组的定义数组在使用之前首先必须定义它。命令格式:DIMENSION<数组名1>(<下标1>[,<下标2>])[,<数组名2>(<下标1>[,<下标2>])……]DECLARE<数组名1>(<下标1>[,<下标2>])[,<数组名2>(<下标1>[,<下标2>])……](3)数组赋值给数组赋值,就是分别给每个数组元素赋值,与给内存变量赋值操作完全相同。(4)数组特性在VisualFoxPro数据库管理系统环境下,对数据库进行操作时引用数组,会使数据操作更方便。数组和数据表相比有如下优点:①数组可以不像数据表一样有一个固定的结构。②因为数组中的数据存放在内存中,数据表中的数据存放在磁盘上,所以对数组中数据的访问比对数据表中的数据访问速度要快。③数据可以在原有的内存空间进行数据排序,不需要额外的内存和磁盘空间。3.3运算符和表达式VisualFoxPro提供了5类运算符和表达式:(1)算术运算符和算术表达式(2)字符串运算符和字符串表达式(3)日期运算符和日期表达式(4)关系运算符和关系表达式(5)逻辑运算符和逻辑表达式3.3.1算术运算符和算术表达式1.算术运算符:^***/+-%() 模运算%的运算规则是:(1)如果被除数和除数同号,则求余就是两数相除的余数。(2)如果被除数和除数异号,则运算结果是两数相除的余数再加上除数的值。余数的符号和除数相同。2.表达式的书写规则(1)每个符号占1格,所有符号都必须并排写在一行上,不能在右上角或右下角写方次或下标。(2)乘号不能省略,也不能用“·”代替。(3)括号不论有多少级一律使用小括号(),不准使用方括号[]和大括号{}3.3.2关系运算符和关系表达式关系运算符:><=>=<=<>!=#$==(1)“$”(包含于):如果a和b都是字符串,而且a与b相同或a是b的子串,则a$b结果为真。(2)“==”(精确比较):只有当比较符两边的字符串完全相等时,返回的结果才为真值。(3)“=”:运算符两边的字符串均以左边第一个位置为起点,逐个字符向右比较,运算符右边字符串只要与左边字符串的前部相同,则认为两个字符串相等。“=”运算的结果与以下设置有关:SET

EXACT

off|on3.3.3逻辑运算符与逻辑表达式逻辑“与”如果有逻辑表达式a.AND.b,只有当a和b的值均为.T.时,表达式的值才为.T.,否则为.F.。逻辑“或”如果有逻辑表达式a.OR.b,只要a和b中有一个为.T.,表达式的值就为.T.。逻辑“非”是原逻辑的否定。3.3.4字符串运算符与字符串表达式(1)“+”运算:两个字符串连接。(2)“-”运算:两个字符串连接时,前一字符串的尾部空格将移到连接后的字符串的后面。3.3.5日期运算符与日期表达式(1)两个日期型数据相减,结果是一个数值型数据,它的值为两个日期相差的天数。(2)一个日期型数据加上一个数值型数据n,结果是一个日期型数据,它的日期值是在原日期的基础上增加了n天。 一个日期时间型数据加一个数值型数据n,结果是一个日期时间型数据,它的时间值是在原时间的基础上增加了n秒。(3)一个日期型数据减去一个数值型数据n,结果是一个日期型数据,它的日期值是在原日期的基础上减少了n天。 一个日期时间型数据减去一个数值型数据n,结果是一个日期时间型数据,它的时间值是在原时间的基础上减少了n秒。3.4函数VisualFoxPro提供的函数分为两种:系统函数和自定义函数。系统函数由VisualFoxPro提供,也被称为标准函数,用户可以直接调用。若系统提供的函数不能满足用户的要求,用户可以自行编写函数,这样的函数称为自定义函数。3.4.1算术运算函数1.绝对值函数格式:ABS(<数字表达式>)功能:求<数字表达式>的绝对值。例如:?ABS(-5) 2.取整函数格式:INT(<数字表达式>)功能:取<数字表达式>的整数部分。例如:?INT(-10.6),INT(12.8) 3.四舍五入函数格式:ROUND(<数字表达式1>,<数字表达式2>)功能:对<数字表达式1>进行四舍五入,<数字表达式2>决定四舍五入的位数。当<数字表达式2>的值为正数时,其值是小数部分保留的位数,并进行四舍五入;当<数字表达式2>的值为负数时,其值是整数部分四舍五入的位数。4.求最大值函数格式:MAX(<表达式表>)功能:返回<表达式表>中的最大值。<表达式表>可以是相同类型的数字型表达式、字符型表达式或日期型表达式。5.求最小值函数格式:MIN(<表达式表>)功能:返回<表达式表>中的最小值。<表达式表>可以是相同类型的数字型表达式、字符型表达式或日期型表达式。6.求余函数格式:MOD(<数字表达式1>,<数字表达式2>)功能:求<数字表达式1>除以<数字表达式2>所得到的余数。7.平方根函数格式:SQRT(<数字表达式>)功能:求<数字表达式>的平方根,要求<数字表达式>大于等于0。8.指数函数格式:EXP(<数字表达式>)功能:求以e=2.718…为底的指数函数值,即:ex。9.自然对数函数格式:LOG(<数字表达式>)功能:求以e=2.718…为底的对数函数值,即:ln(x)。10.常用对数函数格式:LOG10(<数字表达式>)功能:求以10为底的对数函数值,即:lg(x)。11.正弦函数格式:SIN(<数字表达式>)功能:求sin(x)的值,<数字表达式>的单位为弧度。1角度=π/180弧度。例如:?SIN(30*3.14/180) 12.余弦函数格式:COS(<数字表达式>)功能:求cos(x)的值,<数字表达式>的单位为弧度。例如:?COS(30*3.14/180) 13.随机函数格式:RAND(<数字表达式>)功能:产生一个在(0,1)范围内取值的随机数。参数为指定的种子数,它指定RAND()函数返回的数值序列。3.4.2日期和时间函数1.日期函数格式:DATE()功能:返回系统当前日期。例如:?DATE() 2.时间函数格式:TIME()功能:返回系统当前时间,其返回值的数据类型为字符型。例如:?TIME() 3.年函数格式:YEAR(<日期表达式>)功能:以一个4位数给出<日期表达式>的年份。4.月函数格式:MONTH(<日期表达式>)功能:返回<日期表达式>的月份。5.英文月份函数格式:CMONTH(<日期表达式>)功能:以英文的形式给出<日期表达式>的月份。6.日函数格式:DAY(<日期表达式>)功能:返回<日期表达式>的日期号。3.4.3字符串函数1.左子串函数格式:LEFT(<字符表达式>,<n>)功能:从<字符表达式>的左边开始取n个字符。例如:?LEFT("abcd",2) 2.右子串函数格式:RIGHT(<字符表达式>,<n>)功能:从<字符表达式>的右边开始取n个字符。例如:?RIGHT("abcd",2) 3.取子串函数格式:SUBSTR(<字符表达式>,<m>[,<n>])功能:对<字符表达式>从第m个字符开始取n个字符。例如:a="Sheisateacher"?SUBSTR(a,10,7)4.去首部空格函数格式:LTRIM(<字符表达式>)功能:去掉<字符表达式>的首部空格。例如:?LTRIM("abcd") 5.去尾部空格函数格式:RTRIM(<字符表达式>)功能:去掉<字符表达式>的尾部空格。RTRIM与TRIM等价。例如:?RTRIM("abcd") 6.去首尾空格函数格式:ALLTRIM(<字符表达式>)功能:同时去掉<字符表达式>的首尾空格7.求字符串长度函数格式:LEN(<字符表达式>)功能:返回<字符表达式>的长度。得148.宏代换函数格式:&<字符型内存变量>[.<字符表达式>]功能:代换出内存变量所表示的值。“.”是内存变量结束符。9.空格生成函数格式:SPACE(数字表达式)功能:生成指定数目空格的字符串,其空格个数由数字表达式的值确定。例如:?SPACE(5)10.子字符串检索函数格式1:AT(<字符串表达式1>,<字符串表达式2>[,<数字表达式>])功能:返回第一个字符串表达式在第二个字符串表达式中第n次出现的位置,从最左边开始计数。其中n由命令中的<数字表达式>确定。若不指明n,则返回第一次出现的起始位置。若第二个字符串表达式中不包含有第一个字符串表达式,或出现的次数少于n,则函数返回值为0。该函数区分搜索字符的大小写。格式2:ATC(<字符串表达式1>,<字符串表达式2>[,<数字表达式>])功能:除了不区分字符大小写外,其他功能同格式1。例如:?AT("AB","ABCDEFABCAB",3) &&得10?AT("Ab","ABCDEFABCAB",3) &&得0?ATC("Ab","ABCDEFABCAB",2) &&得711.反向字符串检索函数格式1:RAT(<字符串表达式1>,<字符串表达式2>[,<数字表达式>])功能:与AT()函数功能类似,它是从字符串最右边开始检索字符串表达式1在字符串表达式2中出现的位置。检索字符区分大小写。格式2:RATC(<字符串表达式1>,<字符串表达式2>[,<数字表达式>])功能:除了不区分字符大小写外,其他功能同格式1。3.4.4转换函数1.数值型转换为字符型格式:STR(<数字表达式>[,<长度>][,<小数位数>])功能:将<数值表达式>转换为字符型表达式。默认长度为10,若不指定小数位数,则保留到整数位。如果长度小于数值表达式值的整数位数,则返回一串*号。例如:?"面积是:"+STR(123.456) &&面积是:123 ?"面积是:"+STR(123.456,6,2) &&面积是:123.46 ?"面积是:"+STR(123.456,5,2) &&面积是:123.5 ?"面积是:"+STR(123.456,2) &&面积是:**2.字符型转换为日期型格式:CTOD(<字符表达式>)功能:将<字符表达式>转换为日期型表达式,但<字符表达式>必须是日期形式的字符表达式。3.日期型转换为字符型格式:DTOC(<

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论