VFP标准实验报告
实验一常量、变量、函数和表达式的使用 一、实验要求 1. 掌握各种类型常量的表示方法。 2, 掌握变量的赋值方法。 3. 掌握常用函数的功能、格式和使用方法。 4, 掌握各种类型表达式的构造方法。 二、实验内容 注意事项:1、“命令”窗口中的命令可以重新利用; 2、命令、函数中的系统关键字可仅输入前4个字符; 3、注释命令和命令中的注释部分不必输入。 1、常量的表示 1) 字符型常量 ? [V *F P]&&界定符为方括号,其中的其他形式的界定符均为字符串 的组成内容。 2) II期/H期时间型常量 ? {A2003/10/01}&&必须按照严格的日期输入格式输入 【结论】 •数值型常量的表示接近日常表示,不过应注意E后面的为指数,如2E3表示2 X103 = •字符型常量须用界定符或□界定。 •逻辑型常量只有两个,分别有两种表示方法,却都只有一种显示方法; • VFP6. 0以上版本的默认格式为严格的日期格式,故日期/日期时间型常量须按 严格的格式输入,当然,是否进行严格的II期/时间检查,可通过SET STRICTDATE TO 01112命令进行设置,其中。表示不进行严格的日期格式检 查;1表示进行严格的H期格式检查;2表示进行严格的II期格式检查,并且 对CTOD0和CTOT0函数也进行严格的H期格式检查。 • H期/时间的显示格式,可通过SET DATE TO LONGIAMERICANIANSI 等命令进行设置。 2、变量的赋值 (1) 简单变量 用等号“=”可以给单个变量赋值,用“STORE TO “命令可以给多个变量赋值 (2) 数组 • 名为array 1的数组中的所有元素都可看作名为array 1的内存变量,故下述命令 可用来显示arrayl数组中所有元素的值: DISPLAY MEMORY LIKE arrayl • 数组的引用:当要求显示数组变量,只给出数组名时,数组的值等于第1个元 素的值。EG: DEMENSION abc[3] ; ? abc • 数组的定义:对已存在的数组再次定义,原数组元素的值会被继承,即再次定 义的数组则是对原数组的扩展。同一数组的不同元素可以赋不同数据类型的 值。 • 数组的使用:二维数组可以作为一维数组使用,如对于一个2行3列的数组 arrayl,其数组元数arrayl[2,1]相当于数组元素arrayl[4]□ 3、常用函数 (1) 数值函数 【注意事项总结】 . SET DECIMALS TO 4 SET FIXED ON&&设置固定显示小数位为4位; • MOD ()函数一取模函数规律: MOD (a,b) = a-[INT (a/b) - IIF (a/b<0, 1, 0) ]*b • ROUND。函数返回圆整到指定小数位数的数值表达式,若指定小数位数 的参数(第二个参数)为负,则整数位也要被圆整,如:若第二个参数为-2, 则小数点左端的第一和第二个数字(个位和十位)均为零。 (2) 字符函数 【归类总结】 • 截除字符串空格的函数:ALLTRIM ()、TRIM () • 求字符串长度的函数:LEN () • 求子字符串首次出现的位置的函数:AT ()、ATC () • 取了字符串的函数:SUBSTR ()、LEFT ()、RIGHT () (3) 日期/时间函数 显示当前系统的时间、日期:DATE ()、TIME ()、DATETIME () 返回参数日期中的年/月/日:DAY ()、MONTH ()、YEAR () (4) 数据类型转换函数 • 字符 ~ ASCII 值:ASC ()、CHR () •数值 ~ 字符:VAL ()、STR () • 字符 ~ 日期:DTOC ()、CTOD ()、TTOC ()、CTOT () 【注意】 • 日期型(D)和日期时间型(T)使用场合没有区别,可以混用,故无需DTOT。 或TTOD()之类的函数。 • 转换函数的参数不仅受数据类型的限制。如:VAL()中的字符参数只允许 是数字的(E例外);CTOD()中的字符参数要类似yyyy/mm/dd表示,而不能是 任意阿拉伯数字的组合。 • STR()函数的参数较多,要特别注意其用法。如:若总宽度缺省,默认宽 度10;小数位数宽度缺省,默认为0。 (5) 其他常用函数 • BETWEEN0函数:判断一个值是否在某个范围内。该命令的参数若是字 符型,则返回值受SET COLLATE命令影响。 • TYPE。函数:显示值的类型,对于未定义的表达式类型,返回U(注意参 数要加引号,且与字符界定符有所区别)。如: ? TYPE( “12” ’) ? TYPE(,,12 ,) ? TYPE( !(3-2)‘ ) • IIF()函数:称为条件函数, &&显示C 出错 &&显示U 根据逻辑表达式的值返回两个值中的一个。 ?IIF(DOW(DATE())=1 OR DOW(DATE())=7,,今天休息 ,’今天上班 ) ?IIF(DAY(DATE())=1, 今天休息 , 今天上班 )) 4、表达式 【注意】 • 不同类型的数据,其运算符不同。即使所用的符号相同,其含义也不同, 如“+”,对数值型数据执行加运算,而对字符型数据则起着连接作用。 • 运算符及各种类型的常量表示要规范,不能与传统表示相混淆。如:已知 X、y、z为数值型变量,考察下列表达式: [(x-l)*y-5]/z&&“ 口” 非法,应改为“()” Ixl+lyl&&绝对值的表示非法,应该用ASCQ函数。 xWyANDy^z&& “V 运算错,应改为“〈=” • 表达式中数据类型要匹配。例如,若将数值型数据与字符型数据直接执行 “ + ”运算,系统将无法确定“ + ”的含义。如果有必要将不同类型的数 据在一个表达式中表示,可以利用数据类型转换函数。如: ?“字符串“+cstring+”的长度为:”+ALLRIM (STR (LEN (cstring))) • 名称表达式、宏替换: 名称表达式和宏替换可以用来替换命令和函数中的名称,从而为VFP 的命令和函数提供了灵活性。含有名称表达式的命令或函数的运行速度比 含有宏替换的运行速度要快,但宏替换的使用范围更广些,有些地方只能 使用宏替换而不能使用名称表达式。宏替换可以用以构成表达式,而名称 表达式不能做为其他表达式的组成部分,且在使用名称表达式时,名称表 达式不能出现在赋值语句的左边;在某些命令和函数中不能使用名称表达 式。例如: string 1=,?visual FoxPro,, cVar=,stringl, ?&cVar&&显示变量 string 1 的值:visual FoxPro ?(cVar)&&显示变量 cVar 的值:string 1 ?substr((cVar),l,6)&&显小:string ?substr(&cVar, 1,6)&&显示:visual (cVar)=,test2 &&出错,不能赋值