1. 首页
  2. 文档大全

第2章 VFP语言基础

上传者:7****0 2022-06-07 00:04:42上传 PPT文件 1.26MB
第2章 VFP语言基础_第1页 第2章 VFP语言基础_第2页 第2章 VFP语言基础_第3页

《第2章 VFP语言基础》由会员分享,可在线阅读,更多相关《第2章 VFP语言基础(43页珍藏版)》请在文档大全上搜索。

1、1第第2 2章章Visual FoxProVisual FoxPro语言基础语言基础 2.1 常量和变量2.2 Visual FoxPro中的常用函数2.3 运算符和表达式2.4 Visual FoxPro命令格式及书写规则 2 本本 章章 要要 点点理解数据类型、常量、变量的概念与表示方法。熟练掌握各类型运算符及表达式的使用方法。熟练掌握常用函数。2.1 2.1 常量和变量常量和变量 在在Visual FoxProVisual FoxPro中,处理过程中其值不发生变化的量中,处理过程中其值不发生变化的量称为称为“常量常量”,分为,分为“字符型字符型”、“数值型数值型”、“逻辑型逻辑型”、“日

2、期型日期型”、“日期时间型日期时间型”和和“货币型货币型”。2.1.1 2.1.1 常量常量(1 1) 数值型(数值型(N N):): 数值型常量也就是数学上的常数,用来表示一个数量的大小。 取值范围:-0.9999999999E+20 0.9999999999E+20 如:6 , 8.45, 6.5e3 ( E前要有数字,E后要有整数)5(2 2)字符型()字符型(C C):): 字符型常量也称为“字符串”,通常用来表示文本类型的信息;由“中英文字符”、“数字”、“空格”和特殊符号组成。 (3)日期型(D) 日期型常量用来表示日期数据,界定符号为 ;花括号内包含年、月、日,各部分用“/” 或

3、 “-” 分隔;严格格式 ( 默认输入格式 ):严格日期格式为yyyy-mm-dd。如:2009-10-23。 (4 4) 日期时间型日期时间型(T)(T): 日期时间常量表示日期时间数据, 系统默认的日期时间型为“月/日/年 时:分:秒”; 日期时间型常量用yyyy-mm-dd hh:mm:ss a/p; 如:2001-03-22 11:30 p 日期时间中间可以用空格隔开也可以用逗号隔开!(5) (5) 逻辑型常量逻辑型常量(L)(L)只有逻辑真和逻辑假两个值,长度为1,逻辑型常量用来表示逻辑值,用L(Logic)表示。在Visual FoxPro中,逻辑真用.T.、.t.、.Y.或.y.

4、表示,逻辑假用.F.、.f.、.N.或.n.表示。 8(6) (6) 货币型常量货币型常量(Y)(Y)货币型常量用来表示货币的值,与数值型不同的是,需要加一个前置的货币符号($),如$23.3。货币型数据默认保留4位小数,超出部分将进行四舍五入,如将$3.1415926存储为$3.1416。 变量是指在程序运行过程中其值可以变化的数据。确定一个变量,要需要确定其3个要素:变量名、数据类型和变量值。1变量的命名规则不同的变量具有不同的变量名,变量的命名需要遵守以不同的变量具有不同的变量名,变量的命名需要遵守以下规则。下规则。(1) 由英文字母、汉字、下划线和数字组成。(2) 不能以数字开头,如1

5、23ab不能作为变量名。(3) 不能使用系统保留字(系统中的命令,如use)。(4) 英文字母不区分大小写,即变量名 ab、aB、AB在系统中被认作是同一变量。2.1.2 2.1.2 变量变量102变量的分类 Visual FoxProVisual FoxPro中的变量分为字段变量和内存变量。内存变量又分为简单内存变量、数组和系统变量,如图所示。1)字段变量 字段变量就是数据表中的字段,变量名就是表中的字段名。 内存变量是一种临时变量,是在程序或命令状态时用于存放临时数据的内存工作单元,内存变量的值就是存放在这个区域里的数据。内存变量的类型取决于变量值的类型。 内存变量的类型有字符型、数值型、

6、货币型、逻辑型、日期型和日期时间型6种。2)内存变量 (1) 内存变量的赋值给内存变量赋值的命令有以下两种格式。格式1:= 格式2:STORE to 功能: 先计算表达式的值,然后把表达式的值赋给一个或几个内存变量。格式1只能给一个内存变量赋值。格式2可以同时给多个内存变量赋相同的值。 变量在使用之前并不需要特别声明(这点和其他程序设计语言有所不同),当用赋值命令给变量赋值时,如果变量不存在,那么系统会自动创建。 如果要改变内存变量的值和类型,可以通过为内存变量重新赋值来完成。13【实例2-2】 内存变量的赋值store 20+2 to x,y & 创建变量x和y,数据类型为数值型,变

7、量的值均为22name=张宁 & 创建变量name,数据类型为字符型,变量的值为张宁x=.T. & 变量x的数据类型为逻辑型,值为T(2) 内存变量的输出内量变量的输出有以下两种格式。格式1:? 格式2:? 功能:计算表达式的值,并把结果显示在屏幕上。格式1换行输出表达式的值,格式2的结果不换行输出。15【实例2-3】 输出变量的值store 15 to a,b & 创建变量a,b,数据类型为数值型,值为15? a, b+1? a,b-1 &不换行,在前面的结果后面直接输出? a,b3 3)数组变量)数组变量数组的定义格式如下。格式1:DIMENSION (,)

8、格式2:DECLARE (,)说明:两条命令的功能完全相同,用于定义一维或者二维数组。例如:DIMENSION x(3)定义了一个名为x的一维数组,数组元素有3个:x(1)、x(2)、x(3)。17例如:DECLARE Y(2,3)定义了一个名为Y的二维数组,数组元素有6个:y(1,1)、y(1,2)、y(1,3)、y(2,1)、y(2,2)和y(2,3)。由此可见,数组下标的下界值为数组下标的下界值为1 1,上界值由定义命令确定。2.2 VF2.2 VF中的常用函数中的常用函数函数的一般格式为:函数名(参数表)在书写函数时,一定不要写错函数名,括号不能丢掉,另外,不同的函数有不同的参数表。函

9、数运算后会有一个值,称为函数值。Visual FoxPro提供的函数有300多个,主要有数值函数、字符函数、日期函数、类型转换函数和测试函数等。通过查阅“帮助”中的“语言参考”,可以了解到函数的使用方法。下面我们选择一些较为常用的函数予以介绍。2.2.12.2.1数值函数数值函数函数格式函数格式功能简述功能简述示示 例例结结 果果ABS()求N的绝对值ABS(78)ABS(-67)7867INT()取N的整数部分INT(14.3)INT(-14.3)14-14SQRT()计算N的算术平方根,表达式的值必须大于等于0SQRT(9)3ROUND(,)按指定的小数位数N2对N1的值进行四舍五入处理。

10、如果小数位数小于0,表示要舍入的整数位数ROUND(234.567,2)ROUND(234.567,-2)234.57200MOD(,)计算两个表达式相除的余数,函数值的符号与N2的符号相同。MOD(23,5)320【实例2-8】将一个三位数反向输出X=123X1=int(x/100)X2=int(mod(X,100)/10)X3=mod(X/10)? X1+X2*10+X3*1002.2.2 2.2.2 字符函数字符函数函数名称函数名称函数格式函数格式功能简述功能简述示示 例例结结 果果取子串函数LEFT(,)从C串中左边第一个字符开始,截取N个字符left(“Study”,2)StRIGH

11、T(,)从C串中右边第一个字符开始,截取N个字符right(“Study”,2)dySUBSTR(, ,)从C串的第N1的字符开始,截取N2个字符substr(Visual,2,3)isu求字符串长度函数LEN()求得C串的字符数(长度) len(“China”)5删除字符串前后空格函数LTRIM()删除C串的前导空格字符ltrim(“abc”)abcRTRIM()删除C串尾部空格字符rtrim(“ abc”)abcALLTRIM()删除C串的前导和尾部空格alltrim(“abc”)abc产生空格函数SPACE ()返回一个包含N个空格的字符串 “A”+ space(3)+“B”AB函数名称

12、函数名称函数格式函数格式功能简述功能简述示例示例结果结果大小写字母转换函数LOWER ()将C串中的字母全部变成小写字母,其他字符不变lower(“aAbBcC2”)aabbcc2UPPER( )将C串中的字母全部变成大写字母,其他字符不变upper(“abBC2”)ABBC2求子串位置函数AT(,)若C1存在于C2中,则给出起始位置;若不存在,则函数值为0AT(“abc”,“vabcde”)2ATC(,)功能同AT函数,只是ATC函数在比较子串时不区分大小写AT(“aBc”,“vabcde”)2宏替换函数&.替换出字符型变量的值,即去掉定界符。详细介绍见“注意”内容X=1997? &

13、amp;X+52002计算字符串长度函数LEN()计算字符串C的长度,即字符个数LEN(安保法4-9)92.2.3 2.2.3 日期和时间函数日期和时间函数函数名称函数名称函数格式函数格式功能简述功能简述示示 例例结结 果果日期和时间函数DATE()返回当前系统日期,此日期由Windows系统设置,函数值为D型DATE()具体结果与系统设置有关TIME()返回当前系统时间,形式为hh:mm:ss,函数值为C型 time()具体结果与系统有关求年份、月份和天数函数YEAR(|)返回D或T型表达式所对应的年份值A=2014-7-8? Year(A)? MONTH(A)? DAY(A)201478M

14、ONTH(|)返回D或T型表达式所对应的月份值DAY(|)返回D或T型表达式所对应的天数求时、分、秒函数HOUR() 返回T所对应的小时部分(24小时制)A=2014-7-8,15:56:10? Hour(A)? Minute(A)? SEC(A)155610MINUTE()返回T所对应的分钟部分(24小时制)SEC()返回T所对应的秒数部分(24小时制)2.2.4 2.2.4 数据类型转换函数数据类型转换函数函数格式功能简述示 例结 果STR(,,)把N1转换成小数位为N3,总长度为N2的字符型数据,函数值为C型。省略N2、N3时表示不保留小数位长度 STR(4) STR(-3.14,5,2

15、)4-3.14VAL()将C串中的数字字符转换成对应数值,转换结果取两位小数。函数值为N型 VAL(“23.756a”)23.76CTOD()把C串转换成对应日期型数据。函数值为D型。C串应该符合SET DATE TO命令所设置的日期格式CTOD(“2002/10/12”)2002/10/12DTOC(,1)把日期型数据D转换成相应的字符串。函数值为C型。如果使用参数1,则字符串的格式固定为YYYYMMDDDTOC(2002-11-27)DTOC(2002-11-27,1)11/27/02200211272.2.5 2.2.5 测试函数测试函数函数名称函数名称函数格式函数格式功能简述功能简述测

16、试文件头函数BOF( )测试当前表文件中记录指针是否移到表起始处。如果记录指针到达的文件头,则函数返回真(.T.),否则返回假(.F.)。测试文件尾函数EOF( )测试记录指针是否移到表结束处。如果记录指针指向文件尾,则函数返回真(.T.),否则为假(.F.)。测试当前记录号函数RECNO( )返回当前记录指针指向的记录号。对于空表返回值为1。测试记录个数函数RECCOUNT ( )返回当前表中记录个数。如果工作区中没有打开表则返回0条件测试函数IIF(,)逻辑表达式lExp的值为真(.T.),返回表达式eExp1的值;否则返回表达式eExp2的值。eExp1和eExp2可以是任意数据类型的表

17、达式2.2.6 2.2.6 其他函数其他函数MessageBoxMessageBox()函数()函数格式:MessageBox(,)功能:以窗口形式显示信息,返回值为数字。组成部分值含 义1按钮数目与按钮形式0只显示“确定”按钮1显示“确定”和“取消”按钮2显示“终止”、“重试”和“忽略”按钮3显示“是”、“否”和“取消”按钮4显示“是”和“否”按钮5显示“重试”和“取消”按钮2图标样式16显示红色叉号错误图标32显示蓝色问号图标48显示黄色惊叹号图标64显示蓝色信息图标3默认按钮0第一个按钮是默认值256第二个按钮是默认值512第三个按钮是默认值选择按钮返 回 值确定1取消2终止3重试4忽略

18、5是6否72.3 2.3 运算符和表达式运算符和表达式 表达式是由常量、变量、函数及其他数据容器与运算符组成的有意义的运算式。此外,也可以将单个常量、变量或函数看成是一个表达式。每个表达式经过运算,都有一个确定的值,称为表达式的值。根据表达式值的类型,可将表达式分为算术表达式、字符表达式、关系表达式、逻辑表达式和日期时间表达式。2.3.1 2.3.1 算术表达式算术表达式用算术运算符将数值型数据连接起来的式子称为算术表达式。算术运算符及其优先级如表所示。优先级优先级运算符运算符说明说明1 1()()括号括号2 2* * *或或 相当于数学中的乘方,如相当于数学中的乘方,如2323表示表示2 2

19、2 22 2。而且若底数。而且若底数小于小于0 0,则指数必须为整数,如:,则指数必须为整数,如:-23-23是正确的,是正确的,- -23.123.1是错误的是错误的3 3* *( (乘乘) )/ /(除)(除)% %(求余数)(求余数)表达式中不能省略表达式中不能省略* *,如,如2x2x要写成要写成2 2* *x x;/ /为除法符号,如为除法符号,如11/211/2的结果为的结果为5.505.50% %为求余符号,如为求余符号,如11%311%3的结果为的结果为2 2,与函数,与函数mod(11,3)mod(11,3)的功能一致;的功能一致;4 4+ + - -加、减加、减 注意:注意

20、:需要注意运算符的优先级。2.3.2 2.3.2 字符表达式字符表达式字符表达式由字符型常量、变量、函数和运算符“+”、“-”组成。+:字符串完全连接运算。-:实现两个字符串的连接,但把”-”连接符号前字符串的空格移到整个连接后字符串的尾部例如:S1=ABC S2=DEF“则S1+S2的值是:”ABC DEF”,而S1-S2的值是:”ABCDEF ”说明:两个运算符优先级相同。运运 算算 符符含含 义义示示 例例结结 果果大于大于35.F.=大于或等于大于或等于12=12.T.小于小于“abc”“bcd”.T.=小于或等于小于或等于5+4=8.F.不等于不等于2!=4.T.=等于等于,串比较时

21、,串首相同得真串比较时,串首相同得真“ABC”=“AB”.T.=完全相等完全相等,串比较时,两串完全相同得真串比较时,两串完全相同得真“ABC”=“AB”.F.$子串包含测试:形如:子串包含测试:形如:$,如果如果C1在在C2中中,则为真,则为真“ab”$“abcdef”.T.2.3.3 2.3.3 关系表达式关系表达式关系表达式由关系运算符和字符表达式、算术表达式、时间日期表达式组成,返关系表达式由关系运算符和字符表达式、算术表达式、时间日期表达式组成,返回值为逻辑型常量回值为逻辑型常量( (即:即:.T.T.或或.F.).F.),也称为简单逻辑表达式。,也称为简单逻辑表达式。说说 明:明:

22、(1) 关系运算符两边的运算对象可以是字符表达式、数值表达式、日期表达式和日期时间表达式。运算对象的类型必须兼容。例如:“abc”12,这个表达式中字符型与数值型不可比,因此是错误的。2013-05-052014-5-6 12:34:56,这个表达式是正确的。(2) 比较规则: 日期型数据比较时,越早的日期越小。例如: 2007-08-01 .F. 32 字符型数据是通过自左向右逐个比较字符的排列顺序来决定其大小的,排列在前的为小,排列在后的为大。Visual FoxPro规定了三种字符排列顺序:Machine(机内码)、PinYin(拼音)、Stroke(笔画)。2.3.4 2.3.4 逻辑

23、表达式逻辑表达式 逻辑运算符有3个,按照优先级从高到低排列依次是(可以省略两边的圆点):.NOT. 或!(逻辑非)、.AND.(逻辑与)、.OR. (逻辑或)。逻辑运算的操作数是逻辑型数据,运算的结果也是逻辑型数据。逻辑运算的规则如下。(1)NOT或!:取反,如:NOT 34 的值为.T.。(2)AND:只有两边的逻辑值都为真,结果才为真,如:102 AND 35 的值为.F.。(3)OR:两边的逻辑值只要有一个为真,结果就为真,如:102 OR 35 的值为.T.。逻辑表达式经常用在判断条件的语句中,例如:查询物理系或者数学系年龄小于24岁的男学生党员的信息,条件语句如下:(单位=“物理系”

24、 OR 单位=“数学系”)AND年龄24 AND 性别=“男” AND 政治面貌=“党员”342.3.5 2.3.5 日期与日期时间表达式日期与日期时间表达式日期与日期时间型数据是比较特殊的数据类型,只能进行+和-运算。1. 加运算符(+) + 数值:结果为其后多少天的日期。 + 数值:结果为其后多少秒的时间。例如: 2004-6-7 +5 的结果为2004-6-12。2. 减运算符(-) - 数值:结果为其前多少天的日期。 - 数值:结果为其前多少秒的时间。 - :结果为两个日期相差的天数,为数值型。 - :结果为两个日期时间相差的秒数,为数值型。 例如:2004-6-7 10:34:35

25、am -5 的结果为:2004-6-2 10:34:30 am。2005-5-4-2005-5-1 的结果为3。特别注意:两个日期型或两个日期时间型的数特别注意:两个日期型或两个日期时间型的数据不能做加法运算!据不能做加法运算!362.3.6 2.3.6 运算符与优先级运算符与优先级不同类型的运算符也可能出现在一个表达式中,这时它们的运算优先次序为:算术运算符、字符串运算符、日期和日期时间运算符 、 关系运算符 、 逻辑运算符。还有如下规则。(1)圆括号优先级最高。(2)相同优先级的运算符按照从左到右的顺序进行运算。例如:表达式3*(21-4)9+15/5 AND “abck”=“abc” 的

26、计算步骤如下。先计算算术运算:5112 AND “abck”=“abc”再计算关系运算:.T. AND .T.最后计算逻辑运算,运算结果为:.T.2.4 2.4 命令格式与书写规则命令格式与书写规则2.4.1 2.4.1 命令格式命令格式Visual FoxPro命令的一般格式如下。 FOR 说明:为必选项,表示其中内容要以实际名称或参数代入。 :表示可选项,根据具体情况决定是否选用。|:表示两边的部分只能选用其中的一个。1. 命令动词每条命令都以命令动词开头,表示此命令要执行的某种操作。命令动词一般为一个英文动词或动词缩写。当一个命令的英文字母超过4个时,可只输入前4个字符,其后字母可省略,

27、比如,DISPLAY可以输入DISP。2. 命令短语命令短语表示需操作的对象及限制,一般包括记录范围、条件、字段、结果输出位置等内容。命令短语可以有多个,各短语由若干个空格隔开并允许按任意次序排放401) 范围用来规定该记录的操作记录范围,有4种范围可供选择。ALL:指定当前表的所有记录。NEXT :表示对当前记录开始的N条记录进行操作。RECORD:表示只对第N条记录进行操作。REST:表示从当前记录开始一直到表尾的全部记录。 2) 条件FOR :表示只对指定范围内满足条件的记录进行操作。2.4.2 2.4.2 书写规则书写规则书写Visual FoxPro命令时应遵循以下规则。(1) 每条

28、命令都以命令动词开头,必须严格符合Visual FoxPro的命令语法格式。(2) 命令行的总长度包括空格在内最大可达254个字符,如果命令语句太长,可分几行书写,但每行(最后一行除外)末尾要使用一个分行符“;”。 (3) 输入命令时,可以采用小写、大写和大小写混合等多种形式。(4) 为增强可读性,可以在适当位置添加注释语句,注释语句不具有任何功能实现的作用,仅仅是对程序进行说明。格式:NOTE|*|&说明:NOTE 和* 用来注释一行,且只能出现在一行的开始;&可出现在任何地方(一般用在一条语句行后进行注释)。例如:S=10 & 为变量S赋值10422.5 2.5 小型综合实例小型综合实例【实训内容】 根据一元二次方程ax2+bx+c=0的系数a、b、c,求解一元二次方程的两个根。【实训步骤】 (1) 在Visual FoxPro的命令窗口中依次输入命令,如图所示。2. 运行结果显示在主窗口。


文档来源:https://www.renrendoc.com/paper/212535926.html

文档标签:

下载地址