1、Visual Foxpro 6.0,程序设计基础,重庆工商大学计算机学院计算机基础教研室,运算符及表达式,运算符是在VFP中用来进行运算的符号。表达式是由常量、变量、函数和运算符组成的运算式。,在VFP系统中根据不同的运算符及表达式结果的不同,表达式可以分为以下五种:1、算术表达式 2、字符表达式3、日期表达式和日期时间表达式4、关系表达式5、逻辑表达式,1.常见的表达式(1)算术表达式算术表达式的运算结果是数值型常数。,算术运算符: ( ) 分组括号 *或 乘方 % 取模(除法的余数)*、/ 乘、除 +、 - 加、减,特别注意一些 符号的变化,【例】写出数学式 所对应的算术表达式,该数学式子
2、对应的VFP算术表达式为:g*m1*m2/(2+r*2) 或 g*m1*m2/(2+r2)或 g*m1*m2/(2+r*r),(2)字符表达式字符表达式运算的结果是字符型常数或逻辑型常数。,字符运算符:+ 连接运算- 连接运算$ 包含运算,字符型常数,逻辑型常数,【例】 字符连接运算示例。,?“计算机“+“世界“,计算机世界,?“Ihavea“+“Book“,IhaveaBook,?“计算机“-“世界“,计算机世界,?“Ihavea“-“Book“,IhaveaBook,【例】 字符串包含运算示例。,?“计算机“$“计算机世界“,.T.,?“book“ $ “I have a Book“,.F
3、.,(3)日期表达式或日期时间表达式日期和日期时间运算符分为“+”和“-”两种,其作用分别是在日期数据上增加或减少天数,在日期时间数据上增加或减少秒数。,注意:日期型不能和日期型数据相加,【例】日期和日期时间表达式运算示例。 d1= 2008-09-01+2 d2= 2008-09-01-2 ? d1-d2,4,(4)关系表达式关系表达式的运算结果为逻辑型常量。关系成立结果为(.T.);反之,结果为(.F .)。,关系运算符:大于 =等于 = 大于或等于、!= 、# 不等于 = 完全等于,(注:只适用于字符型),各种类型数据的比较规则如下:,数值型和货币型数据根据其代数值的大小进行比较。,日期
4、型和日期时间型数据进行比较时,越新的日期或时间越大。,逻辑型数据比较时,.T.比.F.大。,字符型数据(字符串)比较时,对于西文字符,按其ASCII码值的大小进行排列;对于汉字字符,在默认状态下,根据它们的拼音顺序比较大小。,当运算对象为字符型时,可用命令SET EXACT ON/OFF来设置“=”是否为精确比较。在非精确比较时,在关系表达式的格式中,只要后一个表达式是前一个表达式的前缀,其结果便为真。,【例】关系运算示例。 SET EXACT OFF ?1244.3322 ?“A“B“ ?“助教“教授“ ?“ABV“ABT“.f. zc=“教授“ ? zc=“教授“, “教授“=zc, zc
5、=“教授“ ?321 ,.T.,.F.,.T.,.T.,.T. .F. .F.,操作符/操作数类型不匹配,(5)逻辑表达式逻辑表达式的运算结果仍是逻辑型常量。,逻辑运算符: !、NOT、. NOT. 逻辑非OR、. OR. 逻辑或AND、. AND. 逻辑与,该运算符只有一个操作对象,逻辑运算真值表,【例】逻辑运算示例。 x=8 y=15 ? x5, y5 OR y5 AND y10, NOT y10,.T. .F. .T. .F. .T.,2. 表达式的输出命令格式:,?|? AT数字表达式,函 数,函数具有特定的功能,分为系统函数和自定义函数两类。,函数具有函数名、参数和函数值三个要素,有
6、的函数缺省参数。,函数调用的一般形式为:函数名(参数表),一、数值处理函数,1)取整函数,INT(),格式:,【例】INT() 函数的使用。x=-26.72?INT(x),INT(-x),-26,26,2)求余数函数,格式:,MOD(,),例如: 函数MOD(27,4)的值为 MOD(27,-4)的值为 MOD(-27,4)的值为 MOD(-27,-4)的值为,3,-1,1,-3,函数值与同号,【例】MOD()函数和INT()函数的使用。 X=123 X1=INT(X/100)X2=INT(MOD(X,100)/10)X3=MOD(X,10)?X1+10*X2+100*X3,& x的十位数字,
7、结果:321,& x的个位数字,& x的百位数字,3)四舍五入函数,格式: ,ROUND(,),【例】ROUND()函数的使用。 x=486.735 ?ROUND(x,4-2), ROUND(x,1), ROUND(x,0), ROUND(x,-1),ROUND(X,-2),486.74 486.7 487 490 500,6)随机函数,格式: ,RAND(),7)函数,格式: ,PI(),4)求平方根函数,格式: ,SQRT( ),5)求指数函数,格式: ,EXP( ),注意:自然底数e=2.71828183,二、 字符串处理函数,1)求字符串长度函数,LEN(),格式:,2)删除字符串前后
8、空格函数 ,RTRIM() LIRIM() ALLTRIM(),格式:,【例】RTRIM()、LTRIM()、ALLTRIM()函数的使用。 STORE SPACE(1)+“FOX“+SPACE(3) TO SS ? RTRIM(SS)+LTRIM(SS)+ALLTRIM(SS),FOXFOXFOX,7 4 6 3,? LEN(SS),LEN(RTRIM(SS), LEN(LTRIM(SS),LEN(ALLTRIM(SS),4)求子串位置函数,格式:,AT(, ,),3)生成空格函数,SPACE(),格式:,【例】?LEN(SPACE(8)-SPACE(3),11,【例】 AT() 函数的使用
9、。 STORE “This is Visual FoxPro“ TO x ? AT(“FOX“,x), AT(“is“,x,3),AT(“xo“,x),主窗口显示:0 10 0,5)取子串函数 ,格式:,LEFT(,) RIGHT(,) SUBSTR(, ,),【例】取子串函数的使用。 STORE “GOOD BYE!“ TO X ? LEFT(X,2),SUBSTR(X,6,2)+SUBSTR(X,6) ?RIGHT(X,3),主窗口显示:GO BYBYE! YE!,6)宏替换函数,格式:,& .,【例】宏替换函数的使用。 m=“32*SQRT(4)“ ? INT(34.15+&m) i=1
10、 j=2 x12=“ make in china “ Good=“Good“ ? x&i.&j, &x12 ,主窗口显示: 98,主窗口显示:make in china Good ,【例】宏替换函数的使用。 a1=5 a2=6 B=“+“ ?a1&b.a2 x=“ XSDA“ Use &x.dbf y= “ list memory “ &y like a* A= “ 457 “ ? “ abc&a.457 “, “ abc&abc “ ,& 打开数据表XSDA.dbf,主窗口显示: A开头的内存变量,主窗口显示: abc457457 abc&abc,主窗口显示: 11,三、 日期时间函数,1)
11、系统日期和系统时间函数,格式:,DATE() TIME() DATETIME() ,字符型,2)求年份、月份和天数函数,格式:,YEAR(|) MONTH(|) DAY(|),【例】YEAR()、MONTH()、DAY()函数的使用。 STORE 2009-03-16 TO d? YEAR(d),MONTH(d),DAY(d),主窗口显示:2009 3 16,返回值4位,四、数据类型转换函数,1)字符串转换为数值函数,格式:,VAL(),【例】VAL()函数的使用。 ?VAL(“X12.8“),VAL(“-35.875“),VAL(“3A.79“),主窗口显示:0.00 -35.88 3.00
12、,2)数值转换成字符串函数,格式:,STR(,),【例】STR()函数的使用。 STORE -348.387 TO P ?“P=“+STR(P,8,3) P=-348.387 ?STR(P,9,2),STR(P,6,2),STR(P,3),STR(P,6),STR(P), STR(P,10,4),主窗口显示:-348.39 -348.4 * -348 -348 -348.3870,3)字符与ASCII之间的转换函数,格式:,ASC() CHR(),【例】 字符与ASCII码之间的转换函数的使用。 ch1=“Y“ ch2=CHR(ASC(ch1)+ASC(“d“)-ASC(“D“) ? ch2
13、,主窗口显示:y,4)日期或日期时间与字符串转换函数,格式:,CTOD() DTOC(| ,1),五、测试函数,1)条件测试函数,格式:,IIF(,),【例】 条件测试函数的使用。 X=200 Y=500 ? IIF(X200,X-10,X+10),IIF(Y200,Y-10,Y+10) ,主窗口显示:210 490,STORE DATE() TO d STORE DTOC(d) TO s ? s,IIF(LEN(s)=8, “年份是:“ + STR(YEAR(d),4),s),主窗口显示:09/21/09 年份是:2009,2)数据类型测试函数,格式:,VARTYPE(),作业,Visual FoxPro 程序设计实验与习题指导P93-97 2.3.4 自主练习,下周实验内容,1、实验2 任务4、5 2、编写程序:输入三角形的三条边,求三角形的面积。三角形面积公式:AREA=SQRT(L*(L-A)*(L-B)*(L-C) 其中:L=(A+B+C)/2,预习,教材:P134-143 (9.1-9.3),