1、单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,本资料仅供参考,不能作为科学依据。谢谢。本资料仅供参考,不能作为科学依据。谢谢您,Visual Foxpro 6.0,程序设计基础,第1页,第二讲 程序设计初步(2),关键点:,掌握表示式、函数基本使用方法,第2页,编写程序基本元素,命令,常量,变量,表示式,函数,对象,表单,标签,文本框,命令按钮,第3页,表示式,第4页,运算符及表示式,运算符是在VFP中用来进行运算符号。,表示式是由数据、数据存放容器和运算符组成运算式。,第5页,在VFP系统中依据不一样运算符及表示式结果不一样,表示式能够分为以下五种:
2、1、算术表示式 2、字符表示式,3、日期表示式和日期时间表示式,4、关系表示式,5、逻辑表示式,第6页,1.常见表示式,(1)算术表示式,算术表示式运算结果是,数值型常数,。,第7页,算术运算符:,()分组括号 *或 乘方,%取模(除法余数),*、/,乘、除 +、-加、减,尤其注意,符号改变,仔细体会教科书P25【例2-3】,第8页,(2)字符表示式,字符表示式运算结果是,字符型常数或逻辑型常数,。,第9页,字符运算符:,$包含运算,+连接运算,-连接运算,字符型常数,逻辑型常数,第10页,串1$串2,“$”运算实质上是比较两个串包含关系,其作用是,比较、判断串1 是否为串2子串,假如串1是
3、串2子串,运算结果为“真”,不然为“假”。,所谓子串,假如串1中全部字符均包含在串2中、且与串1中排列方式与次序完全一致,则称串1为串2子串。,第11页,【,修改,例2-4】设计并运行如图所表示表单,体会运算结果。表单分别有1个标签、3个文本框、1个命令按钮,其caption属性如图所表示。,第12页,“计算”命令按钮“Click”事件代码,:,A=alltrim(thisform.text1.value)B=thisform.text2.value,thisform.text3.value=,A$B,文本框默认值为字符型,alltrim()是一个函数,功效是去掉文本框中前后空格,不删除串中间
4、空格,第13页,“+”与“-”都是字符连接运算符,都将两边字符串次序连接,但,“+”是直接连接,“-”则将,串1尾部,全部空格移到串2尾部后再连接,;,表示空格,“XXXX”,+,“YYYY”,“XXXXYYYY”,“XXXX”,-,“YYYY”,“XXXXYYYY”,第14页,【例2-5】设计并运行如图2-12所表示表单,体会运算结果。表单分别有4个标签、2个命令按钮,其caption属性如图2-12所表示;2个文本框,其value属性初值均为空串。,第15页,“连接(+)”命令按钮“Click”事件代码:,c1=ALLTRIM(Thisform.Text1.Value),c2=ALLTRI
5、M(Thisform.Text2.Value),thisform.label3.caption=c1+c2+c1,“连接(-)”命令按钮“Click”事件代码:,c1=ALLTRIM(Thisform.Text1.Value),c2=ALLTRIM(Thisform.Text2.Value),thisform.label4.caption=c1+-c2+c1,第16页,(3)日期表示式或日期时间表示式,日期和日期时间运算符分为,“+”和“-”,两种,其作用分别是,在日期数据上增加或降低天数,在日期时间数据上增加或降低秒数,。,注意:日期型不能和日期型数据相加,第17页,格式,结果及类型,+,日
6、期型。指定日期若干天后日期,+,日期型。指定日期若干天后日期,-,日期型。指定日期若干天前日期,-,数值型。两个指定日期相差天数,第18页,+,日期时间型。指定日期时间若干秒后日期时间,+,日期时间型。指定日期时间若干秒后日期时间,-,日期时间型。指定日期时间若干秒前日期时间,-,数值型。两个指定日期时间相差秒数,格式,结果及类型,第19页,【,修改,例2-6】设计并运行如图所表示表单,体会运算结果。3个文本框,text1、text2能够接收日期型值。表单form1load事件代码以下:,set century on&将日期年份值设置成4位显示,set date to ymd&日期显示为年月日
7、set mark to-&日期分隔符为“-”,第20页,双击“计算”命令按钮,编写该按钮“Click”事件代码。其对应事件代码为:,thisform.text3.value=abs(thisform.text1.value-thisform.text2.value),abs函数格式为:ABS()。其功效是求数值型表示式绝对值。,第21页,(4)关系表示式,关系表示式运算结果为,逻辑型常量,。,关系成立结果为(.,T,.);反之,结果为(.,F,.),。,第22页,关系运算符:,大于 =等于,=大于或等于,、!=、#不等于,=完全等于,(注:只适合用于字符型),第23页,各种类型数据比较规则以
8、下:,数值型和货币型数据依据其代数值大小进行比较。,日期型和日期时间型数据进行比较时,,越新日期或时间越大,。,逻辑型数据比较时,,.T.比.F.大,。,第24页,字符型数据(字符串)比较,P32温馨提醒,当字符串比较时,可用命令SET EXACT ON/OFF来设置“=”是否为准确比较。,在非准确比较(set exact off默认状态)时,在关系表示式格式中,只要,后一个表示式是前一个表示式前缀,,其结果便为真。,例:”ABCDE”=“A”,“ABCDE”=“AB”,“ABCDE”=“ABC”,“ABCDE”=“ABCD”,“ABCDE”=“ABCDE”,.T.,例:”A”=“ABCDE”
9、AB”=“ABCDE”,“ABC”=“ABCDE”,“ABCD”=“ABCDE”,.F.,第25页,【例2-7】设计并运行以下如图2-16所表示表单,体会运算结果。,第26页,(5)逻辑表示式,逻辑表示式运算结果仍是,逻辑型常量,。,第27页,逻辑运算符:,!、NOT、.NOT.逻辑非,OR、.OR.逻辑或,AND、.AND.逻辑与,该运算符只有一个操作对象,第28页,逻辑运算真值表,A,B,A.AND.B,A.OR.B,.NOT.A,.T.,.T.,.T.,.T.,.F.,.T.,.F.,.F.,.T.,.F.,.F.,.T.,.F.,.T.,.T.,.F.,.F.,.F.,.F.,.T
10、第29页,【例2-8】设计并运行以下如图2-18所表示表单,体会运算结果。,“计算”命令按钮“Click”事件代码为:,if,thisform.text1.value=60 and thisform.text2.value=60,thisform.label3.caption=该同学计算机等级考试成绩为:经过,else,thisform.label3.caption=该同学计算机等级考试成绩为:不经过,endif,表示式值为真表示经过,表示式值为假表示不经过,第30页,函 数,第31页,函数含有特定功效,分为,系统函数,和,自定义函数,两类。,函数含有,函数名、参数和函数值三个要素,,有函
11、数缺省参数。,函数调用普通形式为:,函数名(参数表),第32页,一、数值处理函数,1)取整函数,INT(),格式:,无条件去掉小数部分,不进行四舍五入,第33页,2)求余数函数,格式:,MOD(,),比如:,MOD(38,5),MOD(38,-5),MOD(-38,5),MOD(-38,-5),38%5,38%-5,-38%5,-38%-5,函数值与同号,38,-5,40,-8,-2,-38,5,-40,-8,2,-38,-5,-35,7,-3,3 -2 2 -3,3 -2 2 -3,第34页,【例】将一个3位整数X百位数字和个位数字取出来。,X百位数字:,X1=INT(X/100),X个位数
12、字:,X2=MOD(X,10),仔细体会教科书P35【例2-10】,第35页,【例2-10】设计一表单,要求能输入一个3位数,并逆序显示(如输入756,则显示657)。表单设计界面如图2-22所表示,运行结果如图2-23所表示。,设计如图2-22所表示表单,文本框text1value属性初值为0。,命令按钮“逆序显示”“click”事件代码以下:,x=thisform.text1.value,x1=,INT(x/100),x2=,INT(MOD(x,100)/10),x3=,x%10,y=x1+10*x2+100*x3,thisform.label2.caption=结果为:+STR(y,3)
13、第36页,3)四舍五入函数,格式:,ROUND(,),【例】ROUND()函数使用。,x=486.735,ROUND(x,4-2),ROUND(x,1),ROUND(x,0),ROUND(x,-1),ROUND(X,-2),4 8 6 .7 3 5,位置:-2 -1 0 1 2 3,对+1位四舍五入,486.74 486.7 487 490 500,第37页,5)随机函数,格式:,RAND(),6),函数,格式:,PI(),4)求平方根函数,格式:,SQRT(,),产生01之间随机数,圆面积S=PI()*R*R,比如:INT(RAND()*100),(0,100)整数,第38页,二、,字符串
14、处理函数,1)求字符串长度函数,LEN(),格式:,2)生成空格函数,SPACE(),格式:,【例】LEN(SPACE(8)-SPACE(3),11,第39页,3)删除字符串前后空格函数,RTRIM(),LTRIM(),ALLTRIM(),格式:,删除后面空格,删除前面空格,删除前后空格,第40页,4)求子串位置函数,格式:,AT(,),第41页,5)取子串函数,格式:,LEFT(,),RIGHT(,),SUBSTR(,),第42页,【例2-11】设计并运行如图2-24所表示表单,体会表单运行结果。表单分别有4个标签、1个命令按钮,其caption属性如图2-24所表示;3个文本框。其功效是能
15、在文本框text1中输入一字符串,依据文本框text2和text3中输入数值,取出子串,运行结果如图2-25所表示。,“取子串”命令按钮“Click”事件代码为:,C=alltrim(thisform.text1.value),N1=thisform.text2.value,N2=thisform.text3.value,thisform.label4.caption=,substr(c,n1,n2),第43页,6)宏替换函数,格式:,&,.,分界符,【,修改,例2-12】表单界面如图2-26所表示,体会运算结果。,第44页,命令按钮“计算”“click”事件代码以下:,x1=thisform
16、text1.value,x2=thisform.text3.value,fh=alltrim(thisform.text2.value),y=,x1&fh.x2,thisform.text4.value=y,第45页,三、,日期时间函数,1)系统日期和系统时间函数,格式:,DATE(),TIME(),DATETIME(),字符型,第46页,2)求年份、月份和天数函数,格式:,YEAR,(|),MONTH(|,),DAY(|),返回值4位,第47页,四、数据类型转换函数,1)字符串转换为数值函数,格式:,VAL(),【例】VAL()函数使用。,VAL(X12.8),VAL(-35.875),V
17、AL(3A.79),VAL(”32”+”18”),0.00 -35.88 3.00,3218.00,VAL(”32+18”),32.00,第48页,2)数值转换成字符串函数,格式:,STR(,),【例】STR()函数使用。,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,第49页,【例】修改【例1-1】设计如图表单,圆面积用标签输出。,【例】命令按钮“计算圆面积”“click”事件代码以下:,R=thisform.tex
18、t1.value,S=,pi(),*r*r,thisform.label3.caption=,alltrim(str(s,8,1),只接收字符类型,标签除了能够显示说明文本,还能够用来输出结果,第50页,3)字符与ASCII之间转换函数,格式:,ASC(),CHR(),【例2-15】如图2-32所表示为表单设计界面,运行该表单,在文本框Text1中输入一字符R,单击“转换”命令按钮后,标签label2位置将显示什么?“转换”命令按钮CLICK 事件代码:,x=thisform.text1.value,y=CHR(ASC(x)+1),thisform.label2.caption=y,第51页,
19、4)日期或日期时间与字符串转换函数,格式:,CTOD(),DTOC(|,1),第52页,五、测试函数,1)条件测试函数,格式:,IIF(,),thisform.label1.caption=,iif,(thisform.text1.value10,hello,你好),第53页,thisform.label1.caption=iif(,rand()0.5,YES,NO),【例】在标签label1中随机显示“YES”和“NO”。,第54页,2)数据类型测试函数,格式:,VARTYPE(),返回字母,数据类型,返回字母,数据类型,C,字符型或备注型,G,通用型,N,数值型、整型、浮点型或双精度型,D
20、日期型,Y,货币型,T,日期时间型,L,逻辑型,X,Null值,O,对象型,U,未定义,第55页,六、系统对话框函数,格式:,MESSAGEBOX(,),函数名不能省略,第56页,对话框类型及含义,按钮类型值,对话框按钮,图标,类型值,图标,默认按钮类型值,默认按钮,0,1,2,3,4,5,“确定”按钮,“确定”和“取消”按钮,“终止”、“重试”和“忽略”按钮,“是”、“否”和“取消”按钮,“是”和“否”按钮,“重试”和“取消”按钮,16,32,48,64,“终止”图标,“问号”图标,“感叹号”图标,“信息”图标,0,256,512,第1个按钮,第2个按钮,第3个按钮,第57页,返回值,按钮
21、1,确定,2,取消,3,终止,4,重试,5,忽略,6,是,7,否,函数返回值,第58页,【例2-16】修改【例2-10】中命令按钮“逆序显示”“click”事件代码,要求能输入一个数,并逆序显示(如输入756,则显示657),假如输入不是一个3位自然数,将弹出提醒框,如图2-34所表示。,第59页,命令按钮“逆序显示”“click”事件代码以下:,x=thisform.text1.value,if,x=100 and x1000 and x=int(x),x1=INT(x/100),x2=INT(MOD(x,100)/10),x3=MOD(x,10),y=x1+10*x2+100*x3,th
22、isform.label2.caption=结果为:+STR(y,3),else,messagebox(输入不是一个3位自然数,请重新输入!),endif,判断一个数是不是3位自然数条件,第60页,【例】用MESSAGEBOX()输出字符串对话框。,MESSAGEBOX(使用三个图标并带有终止图标,3+16+256,提醒信息对话框),显示结果如图所表示,对话框按钮,图标类型,默认按钮,第61页,【例】用MESSAGEBOX()输出字符串对话框。,MESSAGEBOX(,成绩表已经生成!,0+64,学生成绩情况,),显示结果以下左图,所表示。,yes=,MESSAGEBOX(,是否删除该统计?,4+32,学生基本情况,),显示结果以下右图,所表示。当选择“是”,yes返回6,选择“否”,yes返回7。,第62页,






