1、2018/11/20,江苏大学工商管理学院信息管理系,计算机等级考试辅导(VFP) VFP基础部分,2018/11/20,一、Vfp的基本数据元素,数据类型 常量 变量 表达式 主要文件类型,2018/11/20,二、函数,字符处理函数 数值计算函数 日期时间函数 数据类型转换函数 测试函数。,2018/11/20,一、vfp的基本数据元素,考点1:vfp的数据类型: 备注型和通用型字段会产生一个.fpt的文件,2018/11/20,数据类型,2018/11/20,数据类型习题,表的备注型字段和通用型字段的字段宽度是固定值,它们分别为 (2002秋) 关于表的备注型字段与通用型字段,以下叙述中
2、错误的是_(2003秋) A 字段宽度都不能由用户设定 B 都能存储文字和图象数据 C 字段宽度都是4 D 存储的内容都保存在与表文件名相同的 .FTP 文件中,2018/11/20,VFP 6.0常用的文件扩展名及其关联的文件类型,2018/11/20,考点2: VFP的命名规则,只能使用字母、下划线和数字。 使用字母或下划线作为名称的开头。 名称可以是 1 至 128 个字符,但自由表的字段名和索引标识最多只能有 10 个字符。避免使用 Visual FoxPro 的保留字。,2018/11/20,在程序运行过程中保持不变的量称为常量。 vfp中,共有5种类型的常量:数值型常量,字符型常量
3、,逻辑型常量,日期型常量和日期时间型常量。(有时加上货币型常量),不同数据类型的常量采用不同的定界符表示 1.N型:可以是整数或实数, 占8个字节 。 2.C:定界符可以是单引号、双引号和方括号。,考点3:常量,2018/11/20,3.L型:逻辑型常量只有2个值:“真”与“假”.用.T.,.t.,.Y.,.y.表示“真”,用.F.,.f.,.N.,.n.表示“假”. 4.D型:日期型常量必须用花括号括起来 5.T型:日期时间型常量也必须用花括号括起来.,考点3:常量,2018/11/20,VFP支持的日期/日期时间型常量的格式有两种:传统的和严格的 传统的日期格式受到命令SET DATE、S
4、ET CENTURY影响,默认美国格式 严格的日期格式使用命令set strictdate to 0/1/2 0表示不进行严格的日期格式检查 1表示进行严格的日期格式检查 2表示进行严格的日期格式检查,并且对CTOD()、DTOC()函数也作同样检查,考点3:常量,2018/11/20,考点4:Vfp中的内存变量,创建方法:使用赋值运算符“=”与store命令 变量的作用域:Local、Private 和Public 与字段重名的内存变量的访问:m.例: ? X,Y, X+Y? X+Y?姓名 & 字段变量? M.姓名 内存变量的保存恢复清除:Save To 、Restore From、Rele
5、ase,2018/11/20,考点4:Vfp中的内存变量,数值运算符:+,-,*,/,*,,% 字符运算符:字符运算符用于把两个字符量连接起来,+符号是连接,-符号也是连接,是把左边的字符量的尾部的所有空格都移到结果字符串的末尾,$的作用是查看左边的字符串是否包含在右边的字符串中 日期和日期时间运算:该类运算符只有”+”,”-”,日期与日期时间型数据不可以在一起运算,2018/11/20,考点5:数组的定义与赋值,使用数组前必须先定义,且只能为一维与二维数组Declare,Dimension,public,Local数组定义后,在未赋值前,所有的数组元素的值系统都默认为逻辑值假。每个数组元素都
6、可以有不同的数据类型,不同的数据值,值和类型都由所赋的值决定。,2018/11/20,考点6:运算符,2018/11/20,关系运算符:, # !=,=,= 字符的大小比较:分为:Machine:空格,大写字母,小写字母,一级汉字,二级汉字 PinYin(默认,通过Set Collate设定):西文:按Ascii排列,由小到大:空格,小写,大写,中文:按拼音顺序 Stroke:西文:按Ascii排列,由小到大:空格,小写,大写 中文:书写笔画多少 字符串的精确比较:Set Exact off,Set Exact On 逻辑运算符的优先级: (),Not或!,And ,Or,考点6:运算符,20
7、18/11/20,考点7:表达式,把符合Visual FoxPro规定的、用运算符号和括号将常量、内存变量、字段变量、函数等连接起来的式子称为Visual FoxPro表达式。最简单的表达式可以是一个常量、内存变量、字段变量或函数。如果表达式含有不同类型的数据,则先要用有关转换函数将它们转换为同一类型后再运算。表达式运算的结果,称为表达式的值。,2018/11/20,表达式的类型,一、数值型表达式,二、字符型表达式,三、关系型表达式,四、逻辑表达式,五、日期型表达式,2018/11/20,一、数值型表达式,数值型表达式由括号、数值型运算符(也称算术运算符)、数值型常量、内存变量、字段变量和函数
8、组成,运算的结果为数值型。如:25*4+(33-11)*4 结果 188再如: 相应的表达式该怎么写?,2018/11/20,举例,1. A+B/C*D*Y2 2. (A+B)/C*D*Y2 3. (A+B)/(C*D)*Y2 4. (A+B)*Y2/C*D 5. (A+B)/C/D*Y2 6. (A+B)*Y2/C/D 7. (A+B)/(C/D)*Y2,2018/11/20,书写表达式的规则,1.所有字符都必须写在同一行上;如:X3Y要写成:X3*Y。 2. 所有运算符都不能省略。如:2Y;2*Y,WX;W*X。 3. 所有括号都用小括号(),括号必须配对。 4.一律用半角符号。,2018
9、/11/20,二、字符型表达式,字符型表达式由字符型运算符、字符型常量、内存变量、字段变量和函数组成。字符型表达式只能对字符型数据进行操作,其运算结果为字符型数据。字符型运算符为:+ 字符串连接运算符- 串尾空格移位运算符如:“Visual “+“FoxPro 3.0“ 运算结果为:“Visual FoxPro 3.0“再如:“Visual “-“FoxPro 3.0“ 运算结果为:“VisualFoxPro 3.0 “,2018/11/20,三、关系型表达式,关系型表达式由关系运算符、数值表达式、字符表达式、日期表达式组成。关系运算符用于对两个相同数据类型表达式值的大小进行比较。被比较的数据
10、应该是数值型数据、字符型数据、日期型数据,但不能是逻辑数据。关系运算的结果为逻辑型数据,只能是真.T.或假.F.。,2018/11/20,关系运算符, 大于 = 大于或等于 或#或!= 不等于 = 字符串精确比较关系运算的优先级相同,但所有关系运算符的优先级低于字符运算符或算术运算符。如:3+5=45/5,2018/11/20,数据类型的比较方法,1.数值型数据按其大小比较; 2.日期型数据将日期看成“yyyymmdd”6位整数,按数值大小比较; 3.汉字字符是按区位码比较的; 4.对字符型数据,符号按ASCII码值比较。 5.符号数字0-9英文字母按字母顺序由小到大排列aAbBcCdD 如:
11、“张三”“王五” “abcd”yxtgf”1997/02/211996/12/30,.F.,.T.,.T.,2018/11/20,四、逻辑表达式,逻辑表达式由关系表达式、逻辑运算符、逻辑常量、内存变量、字段变量和函数组成。运算结果为.T.或.F.。逻辑运算符为:( ) NOT 或 ! 或 .NOT. AND 或 .AND. OR 或 .OR.,2018/11/20,逻辑运算真值表,逻辑运算符的优先级为:( )、.NOT.、.AND.、.OR.。,2018/11/20,举例,例1:求下列表达式的值。 53.AND.10+211 运算结果为.T. “ABC”9.AND.16*345 运算结果为.F
12、.,例2:根据所给条件,列出逻辑表达式。 (1)一元二次方程 有实根的条件是A0,并且B2-4AC=0。,逻辑表达式为:A0.AND.B2-4*A*C=0,2018/11/20,举例,例3 写出满足下列条件的关系表达式:设A、B代表主课成绩,C代表副课成绩。 三门课成绩之和大于270,或一门主课100, 另两门在80以上。,A+B+C270 OR A=100 AND B80 AND C80 OR B=100 AND A80 AND C80,A+B+C270 OR (A=100 AND B80 OR B=100 AND A80) AND C80,2018/11/20,五、日期型表达式,日期表达式
13、由算术运算符(加+或减-)、算术表达式、日期型常量、内存变量、字段变量和函数组成。日期型数据是一种特殊的数值型数据,它们之间只能进行加、减运算。有以下三种情况:?2000/12/18-2000/11/30 ?1999/8/8+10 ?1999/8/18-10,2018/11/20,表达式运算的优先级,数值型表达式和字符型表达式关系型表达式逻辑型表达式在每一种表达式中按各自的运算符的优先级进行。如果是同一级别,则按照从左到右的规则进行。,2018/11/20,名称表达式,由圆括号括起来的一个字符表达式,用来替换命令或函数中的名称。 例: DBF_NAME=“学生成绩登记表“ USE (DBF_N
14、AME) 宏替换:用宏替换符号 & 表示,它与名称表达式具有相似的作用。 例: 已知 A=“1“, B=“2“, C12=“GOOD“ 则 C&A&B=“GOOD“,2018/11/20,考点8:常用的函数,数值函数:ABS(),Max(),Min(),Int(),Mod(),Round(),Sqrt(),Rand(), 字符函数:Alltrim(),Trim(),Len(),At(),SubStr(),Right(),Left(),Space(), 日期/时间函数:Date(),DateTime(),Dow(),Day(),Month(),Year(),Time() 数据类型转换函数:Asc
15、(),Chr(),Val(),DTOC(),CTOD(),Str(),IIF(),2018/11/20,考点8:常用的函数,数值函数:ABS(),Max(),Min(),Int(),Mod(),Round(),Sqrt(),Rand(), 字符函数:Alltrim(),Trim(),Len(),At(),SubStr(),Right(),Left(),Space(), 日期/时间函数:Date(),DateTime(),Dow(),Day(),Month(),Year(),Time() 数据类型转换函数:Asc(),Chr(),Val(),DToc(),CTod(),Str(),Iif(),2
16、018/11/20,考点8:常用的函数,测试函数及其他函数: BETWEEN()、BOF()、CreateOBJECT()、DBGETPROP()、DBSETPROP()、DBUSED()、 DeleteD()、EMPTY()、EOF()、FCOUNT()、FILE()、GETFILE()、IIF()、 INKEY() ORDER()、RECCOUNT()、RECNO()、SEEK()、 TAG()、TIME()、TRIM()、TYPE()、 USED()、CreateOBJECT()、GETOBJECT(),2018/11/20,几个常用函数,2018/11/20,2018/11/20,20
17、18/11/20,总结,LTRIM(x) ALLTRIM(X) RTRIM(X)/TRIM(X) LEFT(X,n) SUBSTR(X,s,n) RIGHT(X,n) YEAR(X) MONTH(X) DAY(X) DOW(X) DTOC(X) CTOD(X) CTOT(X) TTOC(X) STR(X) VAL(X) CHR(X) ASC(X) IIF(l,rt,rf) getfile() type() inkey(),2018/11/20,练习题,.执行下列程序段后,屏幕上显示的结果是:_(2002年秋) SET TALK OFF CLEAR X=“18” Y=“2E3” Z=“ABC”
18、?VAL(X)+VAL(Y)+VAL(Z) A. 2018.00B. 18.00C. 20.00D. 错误信息 假设系统当前日期为“2002年10月12日”,则表达式DTOC(DATE(),1)的值为 _ (2002秋),2018/11/20,练习题,已知学生表(XS.DBF)第一条记录内容如下:XH字段值为“990101”,XM的字段值为“李林”,XB字段值为“男”,CSRQ字段值为08/23/82,XIMING字段值为“信息管理系”。设系统日期为2002年10月12日,则下列命令执行后,M、N、MN的值分别为 _ 、 _ 、 _ 。(2002年秋) USE XS M=ALLTRIM(XM)
19、+SPACE(LEN(XB)+ALLTRIM(XIMING) N=YEAR(DATE()-YEAR(CSRQ) NJ=SUBSTRTR(XH,1,2) NN=YEAR(DATE()-1900-VAL(NJ) MN=IIF(MONTH(DATE()=9,STR(NN+1,2)+“年级”,STR(NN,2)+“年级”),2018/11/20,练习题,下面程序段的功能是根据数值型变量X的取值范围不同,给变量Y赋不同的值。该程序段中的多条命令可以简化为一条命令,这条命令是:Y=IIF(X0,1, _ )。 IF X0 Y=1 ELSEIF X= 0Y=OELSEY=-1ENDIF ENDIF,2018
20、/11/20,练习题,以下表达式中不能返回字符串值“FoxPro”的是_(2003秋) A “Fox” + “Pro” B TRIM(“Fox ” “Pro”) C ALLTRIM (“Fox” + “Pro”) D “Fox ” - “Pro ” 在系统 Visual FoxPro 中,以下函数返回值不是数值型的是_(2003秋) A. LEN(“Visual FoxPro”) B. AT(“This”, “ThisForm”) C. YEAR(DATE() D. LEFT (“ThisForm”, 4),2018/11/20,练习题,下列程序的功能是统计字符串中包含多少个中文字符,多少个英
21、文字符(设字符串中的所有字符均为GB2312字符集中的字符或ASC II码字符)。从语法和语义上看,下列程序中存在_行错误语句(2003秋) cString=“在下列 Visual FoxPro 的基类中,无 Caption属性的基类是哪几个?”,STORE 0 TO nCh ,nEn DO WHILE (cString) # 0 c=LEFT(cString ,1) IF ASC(c)127 nEn=nEn+1 cString=SUBSTR(cString , 2) ELSE nCh=nCh+1 cString=SUBSTR(cString ,3) ENDIF ENDDO WAIT WIND
22、OWS“中西文字符个数分别为”+nCh+nEn,A . 1 B . 3 C . 2 D. 4,2018/11/20,练习题,函数MOD(-42,-3)的返回值为_ (2003年秋)0 设n=234,m=432,k=”m+n”,表达式1+&k的值是_ 667Visual FoxPro 系统通过表间级,记录级,_三级完整性约束,有效实现数据的完整与一致性。(2003秋) 字段级,2018/11/20,练习题,设JS表(教师表)的结构及JS 表所包含的记录如下: 运行下列程序段后,显示的两行结果分别为:_(12)_,_(13)_。 USE js m1=xm m2=LEN(xb) ? m1+SPACE
23、(2)+IIF(hf,”已婚”,”未婚”) m3=0 SCAN m3=m3+jbgz SKIP ENDSCAN ? m3 m4=STR(RECCOUNT(),2018/11/20,练习题,完善下列程序。使其实现计算数列 1!/2!,2!/3!,3!/4!,的前20项之和的功能。(2003年秋) 【程序清单】 nSum=0 FOR n=1 TO 20 NSum=_ ENDFOR FUNCTION jc PARAMETER x S=1 FOR m=1 _ s=s*m ENDFOR RETURN s,2018/11/20,考点9:宏替换,宏替换:&Varname,可用内存变量来代替名称 考点10:空
24、值 空值:没有任何值,以null或.null.来表示 在字段中用Ctro+0输入空值 三个常用的函数:Empty(),IsBlank(),IsNull() 表达式中的null的行为,2018/11/20,考点9:宏替换,?32+2=MOD(12,7)+LEN(“FoxPro“) 函数是程序设计语言中重要的语言成分在下列 VFP 系统函数中,其返回值不为字符型数据的是(26) (2006春) TYPE DOW () CHR () TTOC (),2018/11/20,考点9:宏替换,阅读下列程序,并填写运行结果。(2004春) CLEAR x=”OK” STORE “学习” TO y ok=努力 ?&x+(y) 运行以上程序后,屏幕显示的结果时()。,2018/11/20,谢谢!,