版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
常量变量表达式和函数第一页,共三十七页,2022年,8月28日第一节
数据类型
(1)字符型:简称C型,是默认的数据类型。一个字符型字段最长为255个字符。用户可按需要确定宽度。
(2)货币型:简称Y型。货币单位,如价格。宽度为8,自动取4位小数。
(3)数值型:简称N型。整数或小数,如考试分数。需要用户确定其宽度。最多可以有20位数字(包括小数点)。
(4) 日期型:简称D型。表示年月日,如出生日期等,标准宽度为8个字节长度。
(5)日期时间型:简称T型。表示年月日和时分秒,标准宽度为8个字节长度。
(6)逻辑型:简称L型。只有两个值,真(.T.)或假(.F.),标准宽度为1个字节。
(7)备注型:简称M型。存放不定长文本,如个人简历等。标准宽度度为4个字节。
(8)通用型:简称G型。用来存放OLE对象数据,如图片、照片等,标准宽度为4个字节。2第二页,共三十七页,2022年,8月28日一、常量1、数值型常量数值型常量也就是常数,是由数字0~9、小数点和正负号构成的数字序列。例如:123,123.45,-123.45等。2、字符型常量字符型常量又称字符串,是由英文状态的单引号、双引号和方括号括起来的字符序列,这里的单引号、双引号和方括号又称定界符。例如:”VisualFoxPro”,'VF系统开发',[计算机],"","","I'mastudent",[I'mastudent]等。3、日期型常量日期型常量是使用花括号括起来的日期型数据序列,花括号内包含年、月、日三部分内容,各部分之间用分割符分割,(/)(-)和(.)。在VisualFoxPro中日期型常量具有以下两种表示格式:(1)
传统的日期格式:{MM/DD/YY}或{MM/DD/YYYY},其中MM、DD、YY分别表示月、日、年。例如:{04/28/05}或{04/28/2005}(2)
严格的日期格式:{^YYYY-MM-DD}格式中的符号“^”表明该日期格式是严格的,并按照YMD的格式来解释日期如{^2005-04-28}第二节常量与变量返回3第三页,共三十七页,2022年,8月28日注意:l
VisualFoxPro默认日期格式为严格的日期格式,若要使用传统的日期格式须先执行命令SETSTRICTDATETO0传统的日期格式中年月日的默认顺序为MDY,若要改变可使用命令
SETDATETOYMD/MDY/DMY传统的日期格式中分割符的默认值为斜杠(/),若要改变可使用如下命令: 格式:SETMARKTO[日期分割符]
功能:用于设置日期分隔符,如“-”、“.”等。格式中分隔符要用单引号或双引号定界。l
传统的日期格式中年份的默认值为2位,若要显示世纪值即4位数的年份值,可使用如下命令: 格式:SETCENTURYON/OFF
功能:用于设置显示日期型数据是否显示世纪,ON表示年份用4位,OFF则只显示2位。返回4第四页,共三十七页,2022年,8月28日【例3.1】在命令窗口输入如下命令,查看各种日期数据的输出结果。解:SETSTRICTDATETO0SETCENTURYOFF?{04/28/05}&&?号用来显示表达式的值主屏幕显示
04/28/05
接着再输入命令
SETCENTURYON?{04/28/05}
主屏幕显示
04/28/2005
接着再输入命令
SETSTRICTDATETO1?{04/28/05}
主屏幕提示出错信息如图4-1所示。?{^2005-04-28}主屏屏显示:04/28/2005图4-1错误提示信息返回5第五页,共三十七页,2022年,8月28日(4)日期时间型常量日期时间型常量是用花括号括起来的日期时间型数据序列,括号内主要包括日期和时间两部分内容:{<日期>,<时间>},其中日期部分的表示格式与日期型常量相同,时间部分的表示格式为:[HH[:MM[:SS]]][A|P]这里的HH、MM、SS分别表示时、分和秒,A(或AM)和P(或PM)分别表示上午和下午。【例3.2】在主窗口显示日期时间型常量的内容。解:在命令窗口输入命令:?{^2005-04-28,11:25:30A}主屏幕显示:04/28/0511:25:30AM(5)逻辑型常量逻辑型常量只有两个值:“真”与“假”,用.T.或.t.,.Y.或.y.表示“真”,用.F.或.f.,.N.或.n.表示“假”。注意:逻辑型常量前后两边的小圆点作为逻辑型常量的定界符不能省略。返回6第六页,共三十七页,2022年,8月28日二、变量变量是指在程序运行过程中可以变化的量,即变量的值是可以随时更改的。在VisualFoxPro中的变量可以分为字段变量和内存变量两大类。1、字段变量字段变量是指数据表中已定义的任意一个字段,个数据由于在一表中,字段的值是随着记录行的变化而变化的,所以称它为变量。使用字段变量首先要建立数据表,在建立表的过程中创建字段变量。2、内存变量内存变量是指内存中的一个存储单元,该单元的名称称为内存变量名,该单元内存放的数据,称为内存变量的值,而内存变量的类型取决于内存变量值的类型,它可以是数值型、字符型、逻辑型、日期型和日期时间型。(1)内存变量的命名为区分不同的存储单元,对不同的存储单元就应该具有不同的名称,即每个内存变量都应该有自己的名称。在VisualFoxPro中内存变量名可以由字母(也可以是汉字)、数字和下划线组成,其长度不超过128个字符,且须以字母或下划线开头,不可与保留字同名。返回7第七页,共三十七页,2022年,8月28日(2)内存变量的赋值命令格式1:<内存变量名>=<表达式>格式2:STORE<表达式>TO<内存变量名表>功能:计算表达式,并将计算结果赋值给内存变量。【例3.3】定义内存变量并将其赋值。解:在命令窗口输入以下命令:Y="VFP"STORE“李平”
TOXMSTORE2TOn1,n2,n3注意:格式2可以同时为多个变量赋相同的值,格式1只能为单个变量赋值。(3)表达式值的显示命令格式1:?<表达式表>格式2:??<表达式表>功能:计算表达式,并将计算结果在主屏幕中显示。区别:格式1自动产生换行符,表示要换行显示结果,而格式2不会产生换行符,表示要在当前行光标所在位置起显示结果。返回8第八页,共三十七页,2022年,8月28日注意:系统规定,如果内存变量与打开的当前数据表文件中的字段同名,在显示时字段变量优先于内存变量,此时若要显示内存变量的内容,必须在内存变量名前加写“M->”或“M.”以示区别。(4)内存变量的显示命令格式:LIST|DISPLAYMEMORY[LIKE<通配符>]功能:显示内存变量的当前信息,包括变量名、作用范围、类型和值。说明:LIST不分屏显示,DISPLAY分屏显示。通配符中"*"表示一个或多个字符,“?”表示单个字符。【例3.4】分屏显示所有内存变量。
DISPLAYMEMORY返回9第九页,共三十七页,2022年,8月28日(5)内存变量的清除命令所谓内存变量的清除,是指清除内存存储单元中存放的内容,并收回该内存变量所占用的内存空间。它有以下几种命令格式。
格式1:CLEARMEMORY
格式2:RELEASE<内存变量名表>
格式3:RELEASEALL[LIKE<通配符>]
功能:清除内存变量。区别:格式1清除所有的内存变量,格式2清除指定的内存变量,格式3清除与通配符相匹配的内存变量。【例3.5】清除所有以n开头的内存变量解:在命令窗口输入命令
RELEASEALLLIKEn*(6)宏替换命令格式:&<字符型内存变量>[.]功能:用字符型内存变量中存放的内容取代"&"号及其后面的变量名,[.]中的圆点用作结束的标识。【例3.6】设L=8,M=5,N="L+M",求表达式5+&N的值。解:?5+&N
主屏幕显示结果为:18返回10第十页,共三十七页,2022年,8月28日(7)数组
数组是按一定顺序排列的一组内存变量,在内存中用一串连续的区域来存放,数组用统一的名称来表示,称为数组名,数组中的每一个内存变量都称为数组的元素,数组元素用数组名及它在数组中的排列标号(简称下标)来表示。例如:A(1)、A(2)、A(3)、A(4)其中A表示数组名,1、2、3、4为下标。根据下标的个数又可以把数组分为一维数组和二维数组,例如A(3)表示一维数组、A(3,4)表示二维数组。①数组的定义与内存变量不同,数组在使用之前必须先定义后使用,具体定义格式如下:格式1:DIMENSION<数组名>(<下标1>[,<下标2>])格式2:DECLARE<数组名>(<下标1>[,<下标2>])注意:数组元素的下标从1开始,每个数组元素的默认值为逻辑假。②数组的赋值数组的赋值和内存变量赋值方法相同,例如:A(1)="张三",当省略下标时表示将一个值赋值给数组的所有元素,例如:A=15。在VisualFoxPro系统中,数组经常用于和表交换数据,使用方法在以后有关内容中介绍。
返回11第十一页,共三十七页,2022年,8月28日表达式是指用括号和运算符把常量、变量以及函数连接而成的式子,表达式具有计算、判断和数据类型转换等作用。
一、运算符运算符是对数据进行各种操作的一种符号,又称操作符。在VisualFoxPro中运算符分为4类,即:算术运算符、字符运算符、关系运算符和逻辑运算符。1.算术运算符算术运算符是对数值型数据进行操作的一种符号,在VisualFoxPro中的算术运算符如表4—1所示。(),**、^,*、/、%,+、-【例3.7】假定变量X的值为5,计算表达式3+4X+53的值。解:?3+4*X+5^3
主屏幕显示结果为:
148.00注意:表达式中4和X之间的乘号不能省略。第三节运算符与表达式返回12第十二页,共三十七页,2022年,8月28日作为一种特例,加法和减法运算符也可以用于日期型和日期时间型数据的操作,其操作规则如下:l
日期型数据+数值(天数)
&&结果为日期型数据加上数值后的一个新日期l
日期型数据-数值(天数)
&&结果为日期型数据减去数值后的一个新日期l
日期型数据1-日期型数据2&&结果为两个日期间相差的天数l
日期时间型数据+数值(秒数)&&结果为日期时间型数据加上数值后的一个新日期时间l
日期时间型数据-数值(秒数)
&&结果为日期型数据减去数值后的一个新日期时间l
日期时间型数据1-日期时间型数据2&&结果为两个日期时间相差的秒数l
两个日期型或日期时间型数据不能相加返回13第十三页,共三十七页,2022年,8月28日【例3.8】日期型数据操作举例。解:?{^2010-10-16}+20
主屏幕显示结果为:11/05/10?{^2010-10-16}-10主屏幕显示结果为:10/06/10?{^2011-07-15}-{^2010-10-16}主屏幕显示结果为:272?{^2011-07-15}+{^2010-10-16}主屏幕显示“操作符/操作数类型不匹配”的错误信息。返回14第十四页,共三十七页,2022年,8月28日2.字符运算符字符运算符是对字符串进行连接操作的一种符号,在VisualFoxPro中的字符运算符如表4-2所示。+:将加号前后的字符串连接起来组成一个新的字符串。-:先将减号前字符串尾部的空格移至减号后字符串的尾部,然后再将两个字符串连接组成一个新的字符串。【例3.9】在命令窗口分别输入A="hello"和B="everyone",求A+B和A-B的值。解:在命令窗口输入?A+B主屏幕显示为:helloeveryone
接着再输入:?A-B主屏幕显示为:helloeveryone返回15第十五页,共三十七页,2022年,8月28日3.关系运算符关系运算符:<小于、<=小于等于、>大于、>=大于等于、=等于、<>或#或!=不等于、==字符串精确比较、$字符串包含测试。两个数据的比较规则:(1)
两个数值型数据比较时,按值的大小直接比较。【例3.10】在命令窗口分别输入A=6和B=9,分别求表达式A>B,A=B,A=A+3的值。解:在命令窗口输入:?A>B,A=B,A=A+3主屏幕显示结果都为逻辑假.F.返回16第十六页,共三十七页,2022年,8月28日(2)
两个日期型数据比较时,按年、月、日顺序比较。例如:?{^2011-07-15}>{^2010-10-16}显示结果为逻辑假.T.(3)
两个字符型数据比较时,英文字符按ASCII码值的大小比较,汉字按机内码值比较,即对常用的一级汉字而言,根据它们的拼音顺序决定大小。注意:①字符串比较具有方向性。②字符串比较可以有非精确比较(使用比较符“=”,当右串是左串中从第一个字符开始的子串时结果为真)和精确比较(使用比较符“==”,左、右两串完全相同时结果为真)两种形式,若要使比较符“=”也进行精确比较,必须使用命令SETEXACTON进行设置。默认是setexactoff.③<串1>$<串2>中,当串1是串2的一个子串时结果为真,否则为假。返回17第十七页,共三十七页,2022年,8月28日【例3.11】在命令窗口进行如下关系运算的操作,试给出操作结果。解:?"ABC">"ACD"
主屏幕显示结果为:.F.?"张三">"李四"
主屏幕显示结果为:.T.?"ABC"="AB"
主屏幕显示结果为:.F.?"AB"="ABC"
主屏幕显示结果为:.F.?"AB"$"XABY"
主屏幕显示结果为:.T.?"XABY"$"AB"
主屏幕显示结果为:.F.返回【例3.12】字符串精确比较示例。解:在命令窗口输入以下命令
SETEXACTOFF?"ABC"="AB"
主屏幕显示结果为:.T.
在命令窗口输入以下命令
SETEXACTON?"ABC"="AB"
主屏幕显示结果为:.F.18第十八页,共三十七页,2022年,8月28日4.逻辑运算符逻辑运算符是对逻辑型数据进行操作的一种符号,其运算结果仍为逻辑值,在VisualFoxPro中的逻辑运算符如表4-5所示。
.NOT.或!—逻辑非;.AND.—逻辑与;.OR.—逻辑或高←——————————————————→低
逻辑运算规则的定义:l
.NOT.A当A为真时结果为假,反之结果为真。l
A.AND.B当A和B都为真时结果为真,否则结果为假。l
A.OR.B当A和B当中有一个为真时结果就为真,只有A和B都为假时结果才为假。返回19第十九页,共三十七页,2022年,8月28日二、运算符的优先级别运算符优先级别级别示意图()一级算术运算符二级字符运算符三级关系运算符四级逻辑运算符五级低高20第二十页,共三十七页,2022年,8月28日一、数值函数数值函数是指函数值为数值的一类函数。1.绝对值函数格式:ABS(数值表达式)功能:返回数值表达式的绝对值。【例3.13】?AbS(-6)62.取整函数
格式:INT(数值表达式)
CEILING(数值表达式)FLOOR(数值表达式)
功能:INT返回指定数值表达式的整数部分;CEILING向上取整,FLOOR向下取整【例3.14】求表达式5.85的整数值。
x=5.85?INT(x),CEILING(x),FLOOR(x)
主屏幕显示结果为:565
第四节函数返回21第二十一页,共三十七页,2022年,8月28日3.四舍五入函数格式:ROUND(数值表达式1,数值表达式2)功能:对数值表达式1进行四舍五入,按数值表达式2给定的位数保留小数的位数。【例3.15】对数123.456做各种四舍五入操作。解:?ROUND(123.456,2),ROUND(123.456,1),ROUND(123.456,0)
主屏幕显示结果为
123.46123.5123?ROUND(123.456,-1),ROUND(123.456,-2),ROUND(125.456,-1)主屏幕显示结果为:
1201001304.平方根函数格式:SQRT(数值表达式)功能:返回指定数值表达式的平方根值(四舍五入保留两位小数)。?SQRT(2)1.415.圆周率函数格式:PI()功能:返回圆周率∏的值。返回22第二十二页,共三十七页,2022年,8月28日6.求余数函数格式:MOD(数值表达式1,数值表达式2)功能:返回<数值表达式1>除以<数值表达式2>的余数。求余规则:余数符号与除数的符号相同,其绝对值小于除数的绝对值,且满足等式被除数=除数×商+余数【例3.16】用余数函数求两个数相除的余数。解:?MOD(10,3),MOD(10,-3)
主屏幕显示结果为:1-2?MOD(-10,3),MOD(-10,-3)
主屏幕显示结果为:2-17.求最大值和最小值函数格式:MAX(表达式表)功能:MAX返回所有表达式表值的最大值。
MIN(表达式表)功能:MIN返回所有表达式表值的最小值。注意:这里的表达式必须为同类的表达式。返回23第二十三页,共三十七页,2022年,8月28日【例3.17】求以下数据的最大值和最小值。
2,15,3"2","15","13""语文","数学","计算机"
解:?MAX(3,27,16),MIN(3,27,17)
主屏幕显示结果为
273?MAX("3","27","16"),MIN("3","27","16")
主屏幕显示结果为
316?MAX("王一","李明","张三"),MIN("王一","李明","张三")
主屏幕显示结果为:张三李明返回24第二十四页,共三十七页,2022年,8月28日二、字符函数字符函数处理的对象通常为字符型表达式,但函数的返回值不一定是字符型数据。1.求字符串长度函数格式:LEN(字符表达式)功能:返回指定字符表达式的长度,即字符表达式所包含的字符个数。注意:一个汉字占两个字符的宽度,空格也计算在内。【例3.18】求字符串长度。解:?LEN("中国CHINA您好!")
主屏幕显示结果为:162.空格函数格式:SPACE(数值表达式)功能:产生指定长度的空格字符串,长度由数值表达式的值确定。返回25第二十五页,共三十七页,2022年,8月28日3.删除字符串前后空格的函数
格式:TRIM(字符表达式)LTRIM(字符表达式)ALLTRIM(字符表达式)功能:TRIM删除字符串右边的空格,即字符串末尾的空格。
LTRIM删除字符串左边的空格,既字符串前导的空格
ALLTRIM删除字符串两端的空格。注意:以上均不能删除字符串中间的空格。【例3.19】删除字符串前后空格示例。STORESPACE(3)+“CHINA”+SPACE(2)TOB?LEN(B),LEN(LTRIM(B)),LEN(TRIM(B)),LEN(ALLTRIM(B))
主屏幕显示结果为:10785返回26第二十六页,共三十七页,2022年,8月28日4.取子串函数格式:LEFT(字符表达式,长度)RIGHT(字符表达式,长度)SUBSTR(字符表达式,起始位置[,长度])功能:LEFT对字符串从左端开始取指定"长度"的子串作为函数值。
RIGHT对字符串从右端开始取指定"长度"的子串作为函数值。
SUBSTR对字符串从指定的"起始位置"开始取指定"长度"的子串作为函数值,若省略"长度"则从指定的"起始位置"开始取到最后一个字符的子串作为函数值。【例3.20】在字符串"VisualFoxPro程序设计"中分别截取子串"Visual"、"程序设计"和"FoxPro"。解:?LEFT("VisualFoxPro程序设计",6)
主屏幕显示结果为:Visual返回27第二十七页,共三十七页,2022年,8月28日?RIGHT("VisualFoxPro程序设计",8)
主屏幕显示结果为:程序设计?SUBSTR("VisualFoxPro程序设计",7,6)
主屏幕显示结果为:FoxPro5.求子串位置函数格式:AT(字符表达式1,字符表达式2[,数值表达式])功能:求"字符表达式1"在"字符表达式2"中的开始位置,未找到时结果为0,[,数值表达式]用于表明"字符表达式1"是第几次出现的,若省略默认为1。【例3.21】求子串位置函数示例。STORE"thisisabook"TOm
解:?AT("is",m),AT("IS",m),AT("is",m,2)
主屏幕显示结果为:
306返回28第二十八页,共三十七页,2022年,8月28日三、日期和时间函数日期和时间函数的自变量一般是日期表达式或日期时间表达式,但函数的返回值不一定是日期型或日期时间型。1.系统日期和时间函数格式:DATE()TIME()DATETIME()功能:DATE()返回当前系统的日期,函数值为日期型。
TIME()以24小时制返回当前系统的时间,函数值为字符型。
DATETIME()返回当前系统的日期及时间,函数值为日期时间型。【例3.24】显示系统当前的日期、时间。解:?DATE(),TIME(),DATETIME()
主屏幕显示结果为:当前系统时间的日期、时间、日期时间。返回29第二十九页,共三十七页,2022年,8月28日2.年、月、日函数格式:YEAR(日期表达式/日期时间表达式)MONTH(日期表达式/日期时间表达式)DAY(日期表达式/日期时间表达式)功能:YEAR函数返回日期表达式或日期时间表达式中的年份。
MONTH函数返回日期表达式或日期时间表达式中的月份。
DAY函数返回日期表达式或日期时间表达式中的月份中的天数。【例3.25】显示系统当前的日期。解:?YEAR(DATE()),MONTH(DATE()),DAY(DATE())
主屏幕显示结果为:当前系统时间的年月日。返回30第三十页,共三十七页,2022年,8月28日3.时、分、秒函数格式:HOUR(日期时间表达式)MINUTE(日期时间表达式)SEC(日期时间表达式)功能:HOUR函数返回日期时间表达式中的小时部分。
MINUTE函数返回日期时间表达式中的分钟部分。
SEC函数返回日期时间表达式中的秒数部分。三个函数的结果都为数值型。返回31第三十一页,共三十七页,2022年,8月28日四、数据类型转换函数数据类型转换函数可以将某一种类型的数据转换成另一种类型的数据。1.数值转换为字符函数格式:STR(数值表达式[,长度][,小数位数])功能:将数值表达式的值转换为字符串,转换时自动四舍五入。默认长度为10,若不指定小数位则保留到整数位,如果长度小于数值表达式值的整数位数,则返回一串*号。长度大于转换后的位数时,右对齐左补空格【例3.26】将数值型数据456.789转换为字符型数据,并显示其结果。解:?STR(456.789)
主屏幕显示结果为:凵凵凵凵凵凵凵457
返回32第三十二页,共三十七页,2022年,8月28日?STR(456.789,7,2),STR(456.789,5,2),STR(456.789,2)
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论