您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 质量控制/管理 > 第2章VF程序设计基础
Vf程序设计基础(数据类型:数据有不同类型,不同地方用的数据类型是不一样,C,N,D(8),L(1),I(4),,M(4)……注意有些字段的宽度是系统规定的)2.1常量与变量P481、常量(P48)值不变字符型(C):1、三种定界符,单引号、双引号、中括号(英文的标点符号)‘’,“”,[]必须成对出现,两边一致2、空串与包含空格的字符串不同‘’与‘’3、定界符本身也是字符串内容时,需用另外一种定界符为该字符串定界数值型(N):1、注意科学记数法5.878E12等于5.878*10^12整型I宽度系统定义4个字节(不含小数)日期型(D):{}称定界符,^称脱字符,分隔符有3种(/,-,.)用8个字节表示(宽度)1、严格的日期格式:{^2006/09/01}2、日期格式的设置命令SETCENTURYON|OFF年份用4位|2位(2010年9月11)SETMARKTO用什么分隔符’\’,’-‘,’.’如:SETMARKTO‘-‘SETDATETOYMD按‘年月日’的格式Y:年M:月D:日(默认显示是“月/日/年”)逻辑型(L):1、用一个字节表示2、真、假值(.T.和.F.或.Y.和.N.)3、.T..F.为真2、变量(P52)值可以随时更改,变量有内存变量(及数组变量)和字段变量1命名规则:名字组成可以是字符(包括汉字)、下划线、数字要点:但不能以数字开头,只能以字符(英文、中文)或下划线开头。合法:A12,AB,_AB非法:1A,2B2变量赋值“=“:单个变量赋值(“=”也可以是关系(比较)运算符)STORETO:多个变量赋相同值A=56STORE80TOD,B,C内存变量的数据类型由其值决定A=12B=‘ABC’3、输出变量的值:?,??A=12?A4、内存变量其他命令显示(DISPMEMO或LISTMEMO)LIKE模糊匹配,*、?表示任意一串或一个(通配符)清除CLEARMEMO例:LISTMEMOLIKEA*显示以字母A开头的内存变量数组:一般先定义,后使用P52二维数组F(A,B)F:数组名,A、B是下标,A、B的最小值是1,共有A*B个元素,每个元素初值都为.F.1、创建或定义数组DIMEF(2,3)或DECLAREF(2,3)定义一维数组DIMEF(9)定义二维数组DIMEF(2,3)2.2表达式P55常量、变量、函数通过特定的运算符连接起来P56特别注意:数据类型匹配数字表达式:同数学的算术表达式,运算符,()、*、+……结果:数值注意:()运算字符表达式:+(完全连接),-(不完全连接)?‘ABC’-‘ABC’结果:字符日期表达式:日期-日期,日期+N,日期-N结果:日期或数值要点:日期+日期是非法关系表达式:运算符号P58结果:逻辑型数值、货币、日期数据比较(先比较“年”,再比较“月”,最后比较“天”)字串包含测试:A、B是字符型变量,A$B,A是B的子串,则为真,否则为假。字符排序:工具——选项——数据——排序序列中设置ASCII码:?MAX(‘2’,’12’,’05’),MAX(2,12,05)拼音:?MIN(‘章’,’柳’,’陈’),字符串精确比较与EXACT设置P59==:精确比较(绝对等于)SETEXACTON|OFF:是|否严格OFF是默认设置1、“==”:2、“=”:(1)SETEXACOFF(2)SETEXACON逻辑表达式:.T..F.为真结果:逻辑型优先级(高——低):非(NOT),与(AND),或(OR)与:且,两边必须都为真结果才是.T.,其他都是.F.。或:或者,两边的表达式结果都为.F.时才是.F.,其他都是.T.运算符优先级:算术—字符—日期—关系—逻辑’2.3函数P61数值函数P61-621、绝对值函数和符号函数ABS(数值表达式)SIGN(数值表达式)2、平方根函数SQRT(数值表达式)4、取整函数INT(数值表达式)5、四舍五入函数ROUND(数值表达式1,数值表达式2)6、余数函数MOD(数值表达式1,数值表达式2)字符函数P62-631、字符串长度函数LEN(字符表达式)?len(space(10)-space(10))2、大小写转换函数upper()、lower()3、空格字符生成函数SAPCE(数值表达式)4、删除前后空格函数ALLTRIM(字符表达式)A=’abcdefg‘?len(a)?len(allt(a))5、取子串函数SUBSTR、LEFT、RIGHTA=’计算机科学技术’?SUBSTR(A,7,4)----科学?LEFT(A,6)------计算机?RIGHT(A,4)------技术6、计算字串出现次数函数OCCURS(字符表达式1,字符表达式2)?OCCU(‘计’,’计算机是计算的机器’)**7、求子串位置函数AT()结果:数值型?AT(‘is’,’thisisbook’,1)----3?AT(‘is’,’thisisbook’,2)-----6?AT(‘人民’,’中华人民共和国’)-----58、子串替换函数STUFF()?STUFF(‘GOODBYE’,6,3,’MORNING’)9、字符替换函数CHRTRAN()?CHRTRAN(‘ABACAD’,’ACD’,’X12’)11、日期时间函数P65年份、月份、天函数?year({^2005/06/28})A={^2008/06/28}?year(a),MONTH(A),DAY(A)--------数值型数据数据类型转换函数P6612、数值转换字符STR(〈数值表达式〉,……)数字——字符A=-123.456?STR(A,9,2),STR(A,6,2),STR(A)字符转换数值VAL(〈字符表达式〉)字符——数值A=’-3212B12’?VAL(A)13、字符转换成日期CTOD()*日期转换成字符DTOC()A=DATE()?DTOC(A)&&转换后输出的格式MM/DD/YYYY?DTOC(A,1)&&带参数1,则转换后输出的格式是YYYYMMDD,没有分隔符?LEFT(DTOC(A,1),4)------201014、宏替换函数&,替换出字符型变量的内容P67A=’10+90’?a?&a,&a+500X=50Y=100Z=”x+y”?50+&z*15、测试函数P68-701)值域测试函数BETWEEN?BETWEEN(50,50,200)2)空值测试函数ISNULL.null.相当于不确定3)“空值”测试函数EMPTY()示例操作4)数据类型测试函数VARTYPE()?VARTYPE(123)-------n&&返回数据类型是数值?vartype(.null.)--------X&&“空值”的返回值是X*16、表文件头BOF()、尾EOF()、记录号RECNO()、记录个数RECCOUNT()测试函数例:数据表ABC有20条记录USEABC?BOF()-----.F.SKIP-1?BOF()-----.T.?RECNO()-----当前记录号的值是1GOBOTTOM?EOF()------.F.Skip?eof()------.T.?recno()-------注意,当前记录号的值是2117、条件测试函数?IIF(LEN(SPACE(5))5,1,-1)------?2.4程序与程序文件P711、注释&&续行(分号);2、程序文件的建立与修改命令P72MODICOMM文件名建立以.prg为扩展名的命令文件运行:DO文件名3、简单的输入、输出命令命令输入是否保存数据类型否回车其他INPUT保存N,C,L,DC是字符型数据加定界符ACCE保存C是字符型数据不加定界符WAIT否保存C否字符型数据不加定界符例:input‘请输入一个数’tox2.5程序的基本结构P75结构化程序三种基本结构:顺序结构、选择结构、循环(重复)结构(笔试要点)一、顺序结构:依次运行程序中的语句二、选择结构:IF-ENDIF语句和DOCASE-ENDCASE语句SETTALKOFFSETTALKOFFCLEARCLEARINPU'输入一个正整数'toxINPU'输入一个正整数'toxIFX=300docase?'A'casex=300ELSE?‘A’IFX=200CASEX=200?'B'?‘B’ELSECASEX=100IFX=100?‘C’?'C'OTHERWISEELSE?‘D’?'D'ENDCASEENDIFENDIFENDIF改成DOCASE语句怎么实现?三、循环结构1、条件循环DOWHILE—ENDDO语句,注意循环体中的LOOP和EXITi=1DOWHILEi=5?ii=i-1ENDDO循环语句DOWHILENOTEOF()USEBMKDOWHILENOTEOF()DISP&&显示当前记录SKIP&&指针下移ENDDO2、FOR---ENDFOR语句(记数循环),注意循环体中的LOOP和EXIT3、SCAN—ENDSCAN语句(扫描循环)P81格式:SCANFOR条件循环体ENDSCAN执行该语句时,记录指针自动、依次在指定范围内满足条件的记录上移动,对每一条记录执行循环体内的命令2.6多模块程序设计P82为什么要用到模块设计:将大的应用程序划分为一个个功能单一的模块程序,便于开发、阅读和维护模块:可以是命令文件、过程过程有什么作用?&&主程序settalkoffinpu请输入一个自然数:toa?JSJC(a)SETTALKON&&下面是过程procJSJCparans=1forx=1tons=s*xendforreturns&&过程返回S的值过程作用:重复调用,精简主程序,便于开发、阅读和维护过程的定义:PROC过程名命令序列ENDPROC过程可以放在主程序的后面主程序过程过程调用格式格式1DO过程名格式2过程名()参数传递P84下面程序ABC.PRG:&&主程序开始CLEARSTORE100TOX1,X2P4(X1,X2)?“调用过程后X1,X2的值是:”,X1,X2&&主程序结束&&过程开始PROCP4PARAA,BSTOREA+1TOASTOREB+1TOBENDPROC&&过程结束1、过程调用有两种格式:①、DO过程名WITH实参1,实参2……②、过程名(实参1,实参2……)(SETUDFPTOvalue)(SETUDFPTOREFE)2、认识形参(形式参数),实参(实际参数),形参数目不能少于实参3、参数传递有:按值传递:SETUDFPTOvalue形参变量值的改变不影响实参,即过程可以修改形参的值,但主程序中实参的原值保持不变。X1——AX2——B按引用传递:SETUDFPTOREFE形参变量值改变时,实参值也随之改变,即过程可以修改形参的值,所作修改也随之反映到主程序中的实参变量上。X1——A——X1X2——B——X24、注意①、使用格式1调用过程,无论SETUDFP如何设置,参数都将按引用传递。②、用一对圆括号将一个变量括起来使其变成一般形式的表达式,所以不管什么情况,总是按值传递③当实参是数组名时,若传递方式是按值传递,则传递数组的第一个元素值给形参,若传递方式是按引用传递,则传递整个数组。例1Settalkoffclearstore100tox1,x2setudfptovaluedop4withx1,(x2)?第一次,x1,x2store100tox1,x2p4(x1,(x2))?第二次,x1,x2setudfptorefedop4withx1,(x2)?第三次,x1,x2store100tox1,x2p4(x1,(x2))?第四次,x1,x2procp4parax1,x2storex1+1tox1storex2+1tox2endproc例2传递整个数组实例settalkoffcleardimes(10)fori=1to10s(i)=iendfordop5withs?s(1),s(2),s(3),s(4),s(5)?s(6),s(7),s(8)
本文标题:第2章VF程序设计基础
链接地址:https://www.777doc.com/doc-2246760 .html