第二章 Visual FoxPro程序设计基础.doc_第1页
第二章 Visual FoxPro程序设计基础.doc_第2页
第二章 Visual FoxPro程序设计基础.doc_第3页
第二章 Visual FoxPro程序设计基础.doc_第4页
第二章 Visual FoxPro程序设计基础.doc_第5页
已阅读5页,还剩47页未读 继续免费阅读

下载本文档

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

文档简介

第二章 Visual FoxPro 程序设计基础本章知识点非常零碎,是进行程序设计的必备的基础知识。“不积小流无以成江海,不积跬步无以至千里。”2.1 常量与变量VFP重要的作用就是对数据进行高效的处理。在VFP中从数据存储类型分为6种数据类型:字符型,数值型,货币型,日期型,日期时间型,逻辑型。从数据形式划分数据有常量、变量、函数、表达式等。数据类型:(在数据结构中)是一类值的集合以及在这个值集合上的一组操作。是数据的基本属性。为什么要有数据类型?如果不同的数据在计算机中的存储所需空间一样的话,将会导致计算机内存的浪费。为了不浪费计算机的内存空间而指定数据类型。2.1.1 常量常量:又称字面量,表示一个具体的不变的值。(就是在程序执行中其值不变的量) VFP中有6种类型的常量。变量:就是它的值可以改变的量(不确定的值)。实际上它是计算机内存中随机开辟的一块(能重复利用的)存储空间。可以把它理解成一个容器。变量可为两大类,一类为内存变量,另一类为字段变量(表的字段名)。为什么要有变量?如果没有变量(内存公共能重复利用的存储区域)那么每一个数据都要用专门的存储空间来存储,数据量大了就会用相当大的内存甚至导致计算机死机现象。1数值型常量(常数) N (numeric) 8个字节表示, 最大长度为20字节(1)整数由数字组成,如0,-2, 3。(2)实数 1)十进制表示形式,它由数字正负、小数点组成。如 0.23,-3.14等。2)用指数表示形式,它是数字小数点与E或e组成。如1.23x103 可表示为1.23E3,如-1.23x10-2可表示为-1.23e-2。E前要有数字,E后要有整数。2货币型常量 Y 系统固定8个字节 保留4位小数,四舍五入用$、数字、小数点组成。如$123.456789。?$123.456789结果为:123.4568 注意:货币型常量不能用科学记数法表示。说明:问号 ? 是VF中的命令显示符,用于在VF主窗口中显示用户在命令窗口中输入的数据结果。3字符型常量 C 长度范围是0-254个字符它是用半角的(英文状态)定界符:方括号、单引号、双引号”括起来的一系列的有效字符,也称为字符串。注意:定界符一定要成对匹配使用。VF中用到的所有的标点符号都是英文状态下的(半角),中英文之间切换用快捷键 CTR + 空格在存储时一个汉字占2个字节,一个字母、数字或标点符号占1个字节。(1)计算机在输出字符型常量时不显示定界符。如:?”中国” 输出结果:中国?abc 输出结果:abc?123 输出结果:123 (2)若字符串中含有定界符,那么外面的定界符一定要与字符中的定界符不一样。如:?”学生爱好计算机” 输出结果:学生爱好计算机(3)空串:不包含任何字符的字符串。?len(“”) 输出结果:0空格字符串:包含空格的字符串。?len(“ ”) 输出结果:1“a”认为是字符串a 认为是变量(4)只要加上“漂亮的外衣” ,数据所代表的意义就发生了变化。 ?“123” 输出结果:123?“123+456” 输出结果:123+456?123+456 输出结果:579(5)要输出多个数据项时中间用逗号隔开,输出的结果用空格隔开。?“计算机”,123,数据,ABX “abc” 输出结果:计算机 123 数据 ABX “abc”(6) ? 不换行输出(两个?之间不能有空格)姓名,地址,学号,电话号码都能定义成字符型变量。4日期型常量 D 长度固定8个字节 定界符:内分年月日三部分,中间可以用斜杠(/),连字符(-) ,句点(.),空格中的任何一个进行分割。取值范围:0001年1月1日-9999年12月31日两种输入书写格式:(1) 严格的日期格式 形式为 yyyy-mm-dd,如2011-04-22。 说明:第一个字符必须是脱字符(键盘上的6号键);年份必须是4位;年月日次序不能颠倒,不能省略。 这种格式任何情况下都能用。 错误格式:11/04/22 11/04/22(2) 传统的日期格式传统的日期格式只能在set strictdate to 0 状态下使用Set strictdate to 0?11/04/22 ? 11/04/22如果执行 set strictdate to 1或 set strictdate to 2再执行: ? 11/04/22则系统报错(3) 影响日期格式的设置命令1) Set mark to “用户分隔符” 注意:双引号必不可少。 功能:用于指定显示日期值 时所用的分隔符。如:set mark to “ , ”?2011/04/22 输出:04,22,11 或者?2011,04,22 输出:04,22,11 说明:当指定分隔符后,输入时可以使用也可以不使用,但是输出时一定是所设置的分隔符。 2) set mark to 功能:恢复系统默认的斜杠分隔符。 3)set date to MDY | DMY | YMD 功能:设置日期显示的格式为 月日年 | 日月年 | 年月日 Set date to dmy ? 2011-04-22 输出结果:22/04/11 4) Set century on 功能:用4位数字显示年份。 例如:set century on ?2011-04-20 输出结果:04/20/2011 Set century off 功能:用2位数字显示年份。系统默认的设置。 例如:set century off ?2011-04-20 输出结果:04/20/11 Set century to 世纪值 rollover 年份参照值 功能:决定如何解释一个用2位数字年份表示的日期所处的世纪。如果该日期的2位数字=“年份参照值”,则它所处的世纪即为“世纪值”;否则为“世纪值”+1。 例如:set date to YMD Set century on Set century to 19 rollover 10 Set mark to “.” ?CTOD(“49-10-01”) 输出结果:1949.10.01 例:set date to YMD Set century on Set century to 19 rollover 50 Set mark to “.” ?CTOD(“49-10-01”) 输出结果:2049.10.01 5)set strictdate to 0 不进行严格的日期格式检查。 Set strictdate to 1 进行严格的日期格式检查,系统默认设置。 Set strictdate to 2 进行严格的日期格式检查,并对CTOD()和CTOT()函数格式有效。5日期时间型常量 T长度固定8个字节日期时间型常量可以同时表示日期和时间。日期部分同日期型常量,时间部分hh:mm:ss AM | PM 代表时分秒 AM表示上午,PM表示下午。时分秒默认值12、0、0 不指定A或P 则默认为A形式为yyyy-mm-dd hh:mm:ss am | pm,如2011-04-22 2:30:33 pm 表示2011年4月22日下午2点30分33秒。例如:set mark to ?2011-04-22,11:30 p, 1999-01-01, 2000-10-1,3 输出结果:04/22/11 11:30:00 PM 01/01/99 12:00:00 AM 10/01/00 03:00:00 AM6逻辑型常量 L 长度固定1个字节它是由真与假组成,真可用.T.、.t.、.Y.、.y.表示,假可用.F.、.f.、.N.、.n.表示。注意:字符前后的两个句点不可省略,否则系统会认为是变量。?T 输出结果:系统找不到变量T? .T. 输出结果: .T.2.1.2 变量变量:就是它的值可以改变的量(不确定的值)。实际上它是计算机内存中随机开辟的一块(能重复利用的)存储空间。可以把它理解成一个容器。每一个变量都有一个变量名,变量名代表或指向内存空间地址。 a - 为什么要有变量?如果没有变量(内存公共能重复利用的存储区域)那么每一个数据都要用专门的存储空间来存储,数据量大了就会用相当大的内存甚至导致计算机死机现象。变量可为两大类,一类为内存变量,另一类为字段变量(表的字段名)。内存变量有N、C、Y、D、T、L六种类型。VFP规定内存变量的类型可以改变,即同一变量可以赋予不同的值。特别说明:当内存变量与字段变量重名时,在访问内存变量时,VFP规定在内存变量名前加M-或加M. ,否则系统默认是访问字段变量(表中的字段名)。例如:use 选课课程号=你好?课程号?m.课程号输出:001 你好 变量三要素:变量名 ,变量的值 , 变量的类型变量的命名规则:(1)由字母、数字、汉字、下划线组成。(2)不能以数字开头,只能以字母、汉字、下划线开头。(3)避免使用VFP保留字。合法的变量:XYZ, 年龄,A2不合法的变量:2X ,a-b 对变量操作的原则:破坏性的读入,非破坏性的读出。对变量的说明:在VF中,同一个变量可接收不同类型的数据。1简单内存变量VFP的简单变量的定义用赋值命令。(1)赋值命令格式1:变量=表达式格式2:STORE 表达式 TO 变量1,变量2,变量3,-功能:格式1将表达式的值赋给变量。格式2只能将一个表达式的值赋给变量表中的所有变量。例: x=2 Y=2Store 2 to x,y 写成 store 2,2 to x,y 是错误的。说明:1)等号一次只能给一个内存变量赋值。Store可把一个值赋给多个变量。2)给变量赋值时如果该变量不存在,则系统自动创建它。3)变量可重新赋值来改变其值和类型。4)表达式是运算符与操作对象连接起来的式子,表达式可为变量、常量、也可为表达式。5)变量列表中的各变量之间用逗号分隔。例 内存变量的应用。a=1b=.t.c=2011-11-04d=Ae=2011-11-04 12:30:28 amstore 10 to f, gh=$123.23?a, b, c, d, e, f, ga=中国b=临沂c=123?a, b?c=, c?a, b执行结果:1 .T. 11/04/11 A 11/04/11 12:30:28 AM 10 10中国 临沂c= 123中国 临沂2数组(一种特殊的变量)数组是内存中连续的一片存储区域,它由一系列元素组成,每个数组元素可以通过数组名及相应的下标来访问。数组是按一定顺序(按行)排列的数据集合。数组中的每一个数据称为一个元素,数组中每一个元素的序号称为一个下标。数组中的所有元素在内存中是连续存放的。为什么要用数组?主要是为了方便操作变量。数组的定义格式:DIMENSION数组名(下标上限1,下标上限2,) DECLARE 数组名 (下标上限1, 下标上限2,) 功能:定义一个或多个数组。例 一维数组的应用。dimension a(5), b(5)a=10a(5)=23b(1)=2*a(1)b(3)=中国b(4)=2005-10-6b(5)=$123.2?a(1), a(2), a(3), a(4), a(5)?b(1), b(2), b(3), b(4), b(5)执行结果:101010 10 2320 .F. 中国 10/06/05 123.2000说明:1)数组定义后,系统自动为每一个元素赋逻辑假.F.。2)数组有一个下标的称为一维数组,有二个下标的称为二维数组。3)数组的最小下标为1。4)数组的类型可以通过使用加以改变,同一数组的元素类型可以不同。5)当在赋值、输入语句中只用数组名时,表示将同一个值同时赋给该数组的全部数组元素。6)数组名不能与简单变量重名。(破坏掉原来的值)7)由于数组各元素在内存中是连续存放的,二维数组可作为一维数组来使用。8)数组与后面章节中的表可相互传递数据。9)数组中的每一个元素都是简单变量,因此简单变量所有的功能数组元素都具备,简单变量适用的场合数组元素都适用。例 二维数组当一维数组使用。dimension a(2, 2)a(1, 1)=2a(1, 2)=临沂a(2, 1)=6a(2, 2)=2005-10-20?a(1), a(2), a(3), a(4) 执行结果:2临沂6 10/20/05dimension aa(2,3)aa(1,1)=2aa(1,2)=3aa(2,1)=4aa(2,2)=5?aa(2,1) 结果:4?aa(1,3) 结果:.F.?aa(2,1)*aa(2,2) 结果:2.1.3内存变量常用命令(1)内存变量的赋值格式1:变量=表达式功能: 将表达式的值赋给变量格式2:STORE 表达式 TO 变量1,变量2,变量3,-功能: 只能将一个表达式的值赋给变量表中的所有变量。(2)表达式值的显示(输出命令)格式:? | ? 输出项目表功能:显示输出项目表中的各输出项的值。说明:1)输出项可为变量、常量、表达式。2)输出项目表中的各项是用逗号分隔的,命令执行时遇到逗号就空一格。3)单个?是表示在下一行输出各输出项,双?是表示在当前行当前列输出各输出项。(3)内存变量的显示格式1:LIST MEMORY LIKE TO PRINT | TO FILE 格式2:DISPLAY MEMORY LIKE TO PRINT | TO FILE 功能:显示内存变量的名、作用域、类型、值。说明:1)LIKE子句是显示与通配符相匹配的内存变量信息。通配符有?与*,?表示一个任意字符,*表示多个任意字符。2)TO PRINT子句是将显示内存变量的信息同时从打印机输出。3)TO FILE 子句是将显示内存变量的信息同时存入由文件名指定的文件中。4)LIST不管显示的信息有多少,都一次显示完。(自动滚屏)5)DISPLAY显示的信息多于一屏时,分屏显示。每显示一屏就暂停下来,待用户按任意键后继续显示。(4)内存变量的清除(释放)格式1:CLEAR MEMORY (注意区别CLEAR 只有CLEAR表示清屏)功能: 释放所有内存变量。格式2:RELEASE 内存变量表功能: 释放由内存变量表指定的内存变量。格式3:RELEASE ALL EXTENDED功能: 释放所有内存变量,无任何选项释放所有内存变量(同格式1),如果出现在程序中要选EXTENDED,否则不能释放公共变量。格式4:RELEASE ALL LIKE | EXCEPT 功能: 当选LIKE 时,释放与相匹配的内存变量;当选EXCEPT 时,释放与不相匹配的内存变量。例 内存变量的显示与应用。a=2abc=6b=中国a1=临沂dimension c(3)c(1)=2011-04-23c(2)=22display memory like a? to file qq1display memory like a* to file qq2release all like a*dispplay memory like a*release all执行结果:A Priv N 2 ( 2.00000000) A1 Priv C 临沂 A Priv N 2 ( 2.00000000) ABC Priv N 6 ( 6.00000000) A1 Priv C 临沂 (5) 表与数组之间的数据传递 在进行数据表记录的操作时,经常用数组当作一个”中间跳板”来实现数据的传递。1) 将表的当前记录复制到数组 ( 首先应打开表 )格式1: scatter fields 字段名1,字段名2. to 数组名功能: 将表的当前记录指定字段的内容依次复制到指定数组的各个数组元素中.例如: USE i:vfp数据库表学生.dbf scatter fields 学号,课程号 to aa?aa(1)?aa(2)输出:20090101001 001格式2:scatter fields字段名1,字段名2. MEMO to 数组名功能: 在复制字段内容的同时,复制备注型字段。格式3 scatter fields字段名1,字段名2. to 数组名 BLANK功能: 产生一个有字段名个数个数组元素的空数组。 例: Scatter fields 姓名,性别 to cc blank ?cc(1) ?cc(2)格式4:scatter to 数组名功能: 把表的除了备注型(M),通用型(G)以外的所有记录都复制到数组中。若执行Scatter to ee 则会把”学生”表的当前所有记录都放到数组元素中.USE i:vfp数据库表学生.dbfscatter to ee?ee(1)?ee(2)?ee(3)输出结果: 20090101001 张三 001 格式5:scatter fields like 通配符 to 数组名 功能: 用通配符指定要复制的字段。格式6:scatter fields except 通配符 to 数组名功能: 用通配符指定不需要复制的字段。说明: 1.要进行记录的复制,首先应该打开表。 2.如果指定的数组不存在,系统自动创建。 3.如果已有的数组元素的个数少于指定的字段数,系统自动添加其余数组元素。 4.如果已有的数组元素的个数多于指定的字段数,其余数组元素的值不变。2) 将数组数据复制到表的当前记录Gather语句的功能与scatter 语句的功能相反。格式1:gather from 数组名Use 学生dimension bb(3)bb(1)=张三bb(2)=李四bb(3)=王麻子gather from bbbrowse 输出结果:第一条记录的值依次被替换。 格式2:gather from 数组名 fields 字段名1,字段名2,. 功能:把数组中的元素值依次填入字段名1,字段名2.2.2 (运算符与)表达式 VFP的运算符主要有六种,它们是算术运算符、字符串运算符、关系运算符、逻辑运算符、日期与日期时间运算符、宏替换运算符。1 数值表达式(算术表达式)表达式是运算符与操作对象连接起来的式子,表达式可为变量、常量、也可为表达式。由算术运算符与操作数(常量,变量,函数等)连接的式子为算术表达式,算术表达式的运算结果为数值。算术运算符要求它的操作数必须为数值。算术运算表达式如表所示。表 算术运算符与表达式优先级运算符含义表达式结果1( )括号(2+3)*2102* 成方运算243*/%乘除取余3*210/210%36514+加2+35例 算术运算符及表达式的应用x=2y=3?(x+2)*y%6-x输出结果:-2特别说明求余运算:1.如果被除数与除数同号,结果就为余数。 2.如果被除数与除数异号,结果为余数+除数的值。?15%4 结果:3?-15%-4 结果:-3?15%-4 结果:-1?-15%4 结果:1%运算符和MOD()函数的功能一样。?mod(15,-4) 输出:-1?mod()2 字符表达式(字符串运算符) 由字符串运算符连接起来的式子为字符(串)表达式。字符串运算符与表达式如表所示。表 字符串运算符与表达式运算符含义表达式结果+将两个字符串首位相连接起来组成一个新字符串。(原样连接)“中国”+“北京”“中国北京”-将两个字符串连接成一个新串。若第一个字符串尾部有空格,就将此空格后移到新串的尾部“中国 ”-“北京”“中国北京 ”例 字符串运算符表达式的应用a=”中国 ”b=”山东 ”c=”临沂大学 ”? a+b+c, a-b-c输出结果:中国 山东 临沂大学 中国山东临沂大学注意:字符串运算符是用于两个字符串相连接的,即它的操作数都应该是字符串。若数据类型不一样不能进行运算。A=”临沂物流全国数第”B=3?A+B结果:操作数/操作类型不匹配例子:a=”Hello ” &尾部包含有一个空格 b=”everyone!” ?a+b,len(a+b),a-b,len(a-b) & len()函数是测试字符串长度的函数输出结果:Hello everyone! 15 Helloveryone! 153日期、日期时间运算符与表达式日期、日期时间运算符可以对操作对象进行加、减运算。用这种运算符连接起来的式子为日期、日期时间表达式。运算符与表达式如表所示.表 日期时间运算符与表达式运算符含义表达式结果+日期天数相加形成新的日期2011-10-2+1020+2011-11-012011-10-122011-11-21日期天数相减形成新的日期日期与日期相减得两个日期相差的天数2011-10-20-102011-10-20- 2011-10-102011-10-1010+日期时间与秒相加形成新的日期时间秒与日期时间相加形成新的日期时间2011-10-20 10:20:30 am+1010+2011-10-20 10:20:30am2011-10-20 10:20:40 am2011-11-20 10:20:40 am日期时间与秒数相减形成新的日期时间日期时间与日期时间相减得秒2011-10-20 10:20:30 am-102011-10-20 10:20:30 am-2011-10-20 10:20:30 am2011-10-20 10:20:20 am20注意:没有 日期+日期 这种运算例 日期,日期时间运算符及表达式的应用。a=2011-11-20b=10?a+b, b+a, 2011-12-20+10, a-10输出结果:11/30/11 11/30/11 12/30/11 11/10/11注意这里不能进行: 10-a 运算2.2.2 关系表达式(关系运算符与表达式) 1. 关系表达式:由关系运算符连接起来的式子为关系表达式。关系运算就是用于两个关系之间进行关系比较,它的操作数是同类型的。关系表达式的结果是一个逻辑值。若关系成立结果为真.T.否则为假.F.关系运算符与表达式如表所示。表 关系运算符与表达式运算符含义 表达式结果大于34.F.=大于 等于10=6“abc”=“123”.T.小于24.T.=小于等于36.T.=等于:拿右串去比较左串若相同得真“ABC”“AB”.T.= =(仅用于字符型)完全相等:串比较时两串完全相同得真。字符串精确比较“ABC”= =“ABC”.T.#!=不等于2!=3.T.$(仅用于字符型)子串包含测试“ab”“abcdef”.T.说明:(1) 数值型货币型数据比较 按数值大小比较 (2) 日期、日期时间型数据比较 越早的日期或时间越小,越晚的日期或时间越大。 ?2009-04-102009-04-9 结果:.T. (3) 逻辑型数据比较 逻辑真大于逻辑假 .T.F. (4) 子串包含测试 $ 只有左边的子串包含于右边的串时才返回逻辑真 注意串应是紧挨着连续的。比如:“ab” 包含于”abcdef” 但是”ac”就不是”abcdef”的子串。 例 关系运算符与表达式的应用x=2y=3?x+3=2, x!=y, x4.T.2AND与:AND两边操作对象全为真,结果才为真。102 AND 53.T.3OR或:or两边操作有一个为真,结果就为真。102 OR 310.T.例 逻辑表达式的应用a=中国山东b=临沂c=3?b$a and c3输出结果:.F.2.2.4运算符优先级在含用字符运算符、日期和日期时间运算符、宏替换表达式、算术运算符、关系运算符和逻辑运算符和混合表达式中、,前四者的优先级高与关系运算符,而关系运算符优先级高与逻辑运算符。算术运算关系运算逻辑运算补充: 算术表达式在计算机中的表示 b*b-4*a*c2.3 常用函数 函数:用程序来实现的一种数据运算或转换(能完成特定运算的功能模块) 圆括号()是函数最明显的标志。VFP用函数实现一种特定的功能。VFP中的函数从用户角度分为系统函数和用户自定义函数。VFP中的系统函数有400多个,这些函数增强VFP的功能,用户使用起来即简单又方便。本章节主要讲vfp在等级考试中5种函数:数值函数,字符处理函数,日期类函数,数据类型转换函数,测试函数。1系统函数的形式函数名( 形参表 )2 函数的返回值函数经过运算所得结果成为函数的返回值。一个函数只能有一个返回值。3 常用函数的分类通常将常用的函数分为数值函数、字符处理函数、日期类函数、数据类型转换函数、测试函数五种。下面分别对这五类常用函数的应用格式及功能做以介绍。4常用函数2.3.1数值函数1)绝对值函数格式:ABS( 数值表达式 )功能:返回指定的数值表达式的绝对值。例 ABS的应用x=2?abs(x), abs(10+x), abs(2+x), abs(2*x)执行结果: 2 8 0 42)符号函数格式:SIGN( 数值表达式 )功能:返回指定数值表达式的值的符号。当表达式的值为正、负、0时函数分别为1, 1, 0。例 SIGN的应用x=3?sign(x), sign(1), sign(x3)执行结果:1 1 0(2)求平方根函数格式:SQRT( 数值表达式 )功能::返回指定数值表达式的平方根,数值表达式的值不能为负。例 sqrt的应用x=4y=2.22?sqrt (abs( 4), sqrt (10+y)执行结果:2.003.50(3)圆周率函数格式:pi( ) 注意:这里的()里面没有参数功能:返回圆周率(数值型)。例 PI( )应用s=pi( )*10*10?“s=”, s执行结果:s=314.16(4)求整数函数( 取整函数 )格式:INT( 数值表达式 )功能:INT( )返回数值表达式的整数值注意:取整函数不进行四舍五入。例 求整数函数的应用x=3.9?int(x), int(x)执行结果:3 3格式:ceiling( 数值表达式 )功能:返回大于或等于指定数值表达式的最小整数。X=5.8?ceiling(x)执行结果:6格式:floor( 数值表达式 )功能:返回小于或等于指定数值表达式的最大整数。X=5.8?floor(x),floor(-x)执行结果:5 -6(5)四舍五入函数格式:ROUND( 数值表达式1, 数值表达式2 )功能: 对数值表达式1进行四舍五入,数值表达式2的值决定如何舍入。 若表达式2的值大于等于0则表示要保留的小数位数; 若表达式2的值小于0则表示整数部分的舍入位数.例 ROUND( )函数应用x=123.456?round(x, 2), round(x, 1), round(x, 0), round(x1)执行结果:123.46 123.5 123 120(6)求余函数格式:MOD( 数值表达式1, 数值表达式2 )功能:返回数值表达式1除以数值表达式2的余数,且余数的符号与除数相同。若数值表达式1与数值表达式2同号,函数值为两数的余数,若异号,函数值为两数的余数再加上除数的值例 MOD()应用x=10?mod(x, 4), mod(x, 4), mod(x, 4), mod(x, 4)执行结果:2 2 2 2(7)求最大值最小值函数(相当重要,务必记住!)格式:MAX 数值表达式1, 数值表达式2, 数值表达式3,)功能:求数值表达式1,数值表达式2,数值表达式3中的最大值。格式:MIN 数值表达式1, 数值表达式2, 数值表达式3,功能:求数值表达式1,数值表达式2,数值表达式3中的最小值。例 MAX( )应用x=10?max(2, 10, 2, 20, 9, x)执行结果:20注意:MAX,MIN函数的参数可以是字符型,数值型,货币型等。但是比较时要求数据类型要一致。? MAX(2,12,05),MIN(“汽车”,”飞机”,”轮船”)输出结果:2 飞机 2.3.2.字符函数1)求字符串长度函数格式:LEN( 字符表达式 )功能::返回字符表达式的长度。即字符在计算机内存中所占的字节数。例 len( )应用x=“中文Visual FoxPro6.0”?len(x)执行结果:202)大小写转换函数格式:LOWER( 字符表达式 )UPPER( 字符表达式 )功能:LOWER( )是将字符表达式中的大写字母转为小写字母。UPPER( )是将字符表达式中的小写字母转为大写字母。例 LOWER和UPPER应用x=“123stUdy harD”?lower( x ), upper(x)执行结果:123study hard123STUDY HARD3)空格字符串生成函数格式:SPACE( 数值表达式 )功能::返回数值表达式值指定数目的空格。例: space( )函数的应用x=“We”y=“are”z=“student”?x+space(2)+y+space(2)+z执行结果:We are students?len(space(3)-space(2)输出结果:54)删除前导尾部空格函数空格:TRIM( 字符表达式 )LTRIM( 字符表达式 )ALLTRIM( 字符表达式 )功能:TRIM()将字符表达式值的尾部(右边)空格去掉。LTRIM()将字符表达式值的前导(左边)空格去掉。ALLTRIM()将字符表达式值的首尾空格都去掉。例 TRIM(),LTRIM(),ALLTRIM()函数应用a=“ 中国”b=“首都 ”c=“ 北京 ”?LTRIM(a)+TRIM(b)+ALLTRIM(C)输出结果:中国首都北京x=visual foxpro6.0?len(space(5)+x+space(3)?len(trim(space(5)+x+space(3)?len(ltrim(space(5)+x+space(3)?len(alltrim(space(5)+x+space(3)输出结果:24 21 19 165)取子串函数 (相当重要,务必记住!)格式:LEFT( 字符表达式, N)RIGHT( 字符表达式, N)SUBSTR( 字符表达式, N1 , N2)功能:LEFT()从字符表达式的左端开始取N个字节字符。RIGHT()从字符表达式的右端开始取N个字节字符。SUBSTR()从字符表达式的第N1个位置开始取N2个字节字符。若N2省略,取到最后一个字符。例 LEFT( ),RIGNT( ),SUBSTR( )的应用x=“中国北京首都”?LEFT(x, 4), RIGHT(x, 4), SUBSTR(x, 5, 4)输出结果:中国 首都 北京Y=”你好abc”?substr(x,5)输出结果:abcStore “GOOD BYE!” to x?left(x,2),substr(x,6,2)+substr(x,6),right(x,3) 输出结果:GO BYBYE! YE!6) 计算子串出现次数函数 格式:OCCURS( 字符串1,字符串2) 功能:返回字符串1在字符串2中出现的次数,函数返回值为数值型。如果串1不是串2的子串则返回数值0. 例子:store abracadabra to s ?occurs(a,s),occurs(b,s),occurs(c,s),occurs(e,s),occurs(“ab”,s) 输出结果:5 2 1 0 27) 求子串位置函数格式:AT( 字符表达式1, 字符表达式2, 数值表达式3) 区分大小写格式:ATC( 字符表达式1, 字符表达式2, 数值表达式3) 不区分大小写功能:AT( )若字符表达式1为字符表达式2的子串时,则返回字符表达式1的首字符在字符表达式2的位置,否则返回0。数值表达式3是字符表达式1在字符表达式2中第几次出现,默认值为1。例 AT( )应用Store “This is Visual FoxPro” to x?AT(“fox”, x ), ATC (“fox”, x), AT(“is”, x,3),AT(“xo”,x)输出结果:0 16 10 08) 子串替换函数(相当重要,务必记住!)格式:stuff(串1, 起始位置, 长度, 串2)功能:用串2去替换串1中由起始位置处开始的长度个字符。特别说明:1. 如果长度为0,则相当于在串1中由起始位置指定的字符前插入串2. 2. 如果串2是空串,则相当于在串1中删去由起始位置和长度指明的子串.例子: store good bye! to s1 store morning to s2?stuff(s1,6,3,s2)?stuff(s1,1,4,s2)输出结果: good morning! morning bye!Y=”visual”?stuff(y,3,4,”)输出结果: viX=”visual foxpro6.0”?stuff(x,8,9,”c+”)?stuff(x,8,3,”c+”)输出结果: visual c+ visual c+pro6.09) 字符替换函数(相当重要的务必要记住!)格式: chrtran(字符串1,字符串2,字符串3)功能: 当第一个字符串中的一个或多个相同字符与第二个字符串的某个字符一样时,就用第三个字符串中的那个与第二个字符串中的有相同位置的字符去替换这些字符. (拿串2中的每一个字符逐一去和串1中的字符相比较,若发现相同的字符,就用串3中的那个和串2有相同位置的字符去替换串1中的字符. )例: x1=chrtran(“ABACAD”,”ACD”,”X12”) y1=chrtran(“

温馨提示

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

评论

0/150

提交评论