chapvfp程序设计基础知识实用.pptx

上传人:莉*** 文档编号:87122532 上传时间:2023-04-16 格式:PPTX 页数:57 大小:261.79KB
返回 下载 相关 举报
chapvfp程序设计基础知识实用.pptx_第1页
第1页 / 共57页
chapvfp程序设计基础知识实用.pptx_第2页
第2页 / 共57页
点击查看更多>>
资源描述

《chapvfp程序设计基础知识实用.pptx》由会员分享,可在线阅读,更多相关《chapvfp程序设计基础知识实用.pptx(57页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、12.4 数据类型和字段类型数值型(N)表示数量由数字09、小数点、正负号组成内存变量18字节,字段变量120字节小数点和小数位数是字段总长度的一部分 浮点型(F)与数值型等价包含此类型是为了提供兼容性第1页/共57页22.4 数据类型和字段类型日期型(D)用于存储有关年月日的数据宽度为8字节日期型常量要放在花括号中,如:dDate=02/24/2010 dBlank=:空日期系统默认格式为mm/dd/yy,可通过SET DATE、SET MARK、SET CENTURY命令设置日期格式,或通过系统的“选项”对话框中的“区域”卡中设置第2页/共57页32.4 数据类型和字段类型日期时间型(T)

2、在保存日期、时间或二者兼有时使用宽度为8字节,第一个4字节保存日期,其余保存时间与日期型一样,要用“”将数据括起来可同时包含日期时间,也可只包含两者之一若缺省日期系统用1899年12月30日填入,若缺省时间,系统用午夜零点填入若要指定空日期时间值,要在花括号中加一个冒号,如::EXAMPLE第3页/共57页42.4 数据类型和字段类型逻辑型(L)只含有两个值:真(.T.)、假(.F.)宽度固定,为1字节是一种高效的存储方法双精度型(B)用于存储精度较高、位数固定的数值宽度为8字节小数点的位置由输入的数值决定第4页/共57页52.4 数据类型和字段类型整型(I)用于存储无小数的数值宽度为4字节备

3、注型(M)用于在表达式存储数据块宽度为4字节存储指向备注文件中具体内容的指针备注文件:.FPT第5页/共57页62.4 数据类型和字段类型通用型(G)用于存储OLE对象宽度为4字节表中存储的是指向OLE对象的引用链接OLE(Object Linking and Embedding)对象嵌入OLE对象浮点型、双精度型、整型、备注型、通用型、只能用于字段。第6页/共57页72.4 数据类型和字段类型2.常量与变量(1)名称命名规则名称中只能包含字母、汉字(中文版)、下划线名称中只能包含字母、汉字(中文版)、下划线“_ _”和数字符号;和数字符号;名称的开头只能是字母、汉字或下划线,不能是名称的开头

4、只能是字母、汉字或下划线,不能是数字;数字;除了自由表的字段名、表的索引标识名至多只能除了自由表的字段名、表的索引标识名至多只能1010个字符外,其余的名称的长度可以是在个字符外,其余的名称的长度可以是在1 1128128个字符;个字符;避免使用系统的保留字;避免使用系统的保留字;字母不分大小写。字母不分大小写。第7页/共57页82.2 存储数据容器(2)常量常量的值在操作过程中始终保持不变数值型常量 即常数,表示数量大小,由数字、小数点和正负号构成,占8字节 对于特大或特小可用浮点数表示 例:3.12E28货币型常量表示货币值,表示时需加上符号第8页/共57页9字符型常量 也称字符串,它是由

5、字符串“定界符”括起来的一串字符,这些字符可以是一切可以表示的字符定界符可以是单引号、双引号或方括号注意点:不能使用中主标点为的单引号或双引号作为字符串的定界符;定界符必须成对匹配;若某种定界符本身是字符串的内容,则需要用另一种定界符表示该字符串;不包含任何字符的字符串是空串,与包含空格的字符串不同;字符串的字母,其大小写不等价第9页/共57页10逻辑型常量取值有两个真或假表示形式:表示真.T.或.t.或.Y.或.y.;表示假有.F.或.f.或.N.或.n.日期型常量和日期时间型常量用花括号作定界符分隔符:年月日间用斜扛或连字符或点符号或空格;时分秒用冒号传统日期格和严格日期格式第10页/共5

6、7页11变量变量的创建内存中一个存储单元的位置(地址)变量名是存储位置的符号表示;变量分为内存变量和字段变量两种;用赋值号“=”或用STORE命令创建变量、赋值。cSchool=“Suzhou University”nSum=0STORE 0 TO A,B,C,D,E不特别说明的话,通常变量就是指内存变量。创建变量的同时给变量赋值。“Store”与“=”区别第11页/共57页12控制变量的访问LOCAL(声明局部变量)用LOCAL创建的变量只能在创建他们的程序中使用;不能被更高层或更低层的程序访问。PRIVATE(声明私有变量)将调用程序中定义的变量在当前程序中隐藏起来,用户可在当前程序中使用

7、同名变量而不影响变量的原始值;PUBLIC(声明全局变量)在当前工作期中任何程序都能使用和修改全局变量命令窗口中声明的变量是全局变量。第12页/共57页13访问变量在VFP中,若变量与字段同名,字段具有更高的优先权。要访问变量,可在变量前加上:m.或m-。示例:当前打开的表中有XS字段,且当前记录的Xh值为“001”,在命令窗口中下命令:Xh=222?Xh,m-Xh返回结果为:“001”222?:返回变量或表达式的值;?:返回的结果在同一行显示。第13页/共57页14内存变量的保存与恢复保存 内存变量是系统在内存中设置的临时存储单元,当退出VFP时,数据自动丢失,若要保存便于以后使用,可用命令

8、SAVE TO 格式如下:SAVE TO FileName ALL LIKE Skeleton|ALL EXCEPT Skeleton 说明:FileName为内存变量文件名。Skeleton为变量名通配符,用于指定哪些变量需要保存或哪些变量不需要保存例:SAVE TO mVar ALL LIKE?Yan*第14页/共57页15内存变量的保存与恢复恢复 将内存变量文件中所保存的内存变量恢复到内存,可以使用RESTORE FROM命令,格式如下:RESTORE FROM FileName ADDITIVE第15页/共57页16数 组数组也是变量;数组由一系列被称为元素的有序数据构成;两要素:数组

9、名和序号(下标);VFP中数组的最大维数为二维;数组在使用前必先声明DECLARE:声明私有数组DIMENSION:声明私有数组PUBLIC:声明全局数组LOCAL:声明局部数组数组在声明之后,元素的初值为.F.。第16页/共57页17数 组 数组是一种特殊的内存变量,它是存储在内存中的有序的数据值系列,其中的数据值被称为元素,并可通过数据序号引用。数组声明格式:DECLEAR|DIMENSION|PUBLIC|LOCAL 数组名(行数,列数)DECLEAR xx(4)DIMENSION XY(4),XZ(5,2)PUBLIC AB(20),CB(40)DECLEAR CC(4,10),DD(

10、10,4)第17页/共57页18给数组元素赋值DIMENSION AA6,3 AA1,2=2&数组的第二个元素被赋值2 AA=3&数组的全部元素被赋值3BB=AA&把数组第一个元素的值赋给 变量BB?AA&显示数组第一个元素的值 第18页/共57页19数据存储窗口的作用域容器作用域常量私有变量公共、私有或局部数组公共、私有或局字段永久存储,当保存此记录的表被 打开时可访问对象属性通过对象和对象容器层次被引用第19页/共57页203.函数 Vfp提供的函数称为”系统函数”,用户定义的函数称为“用户自定义函数”一般格式:函数名(参数1,参数2,.)数据类型类函数字符函数、数值函数、日期时间函数、数

11、据转换函数数据库类函数环境类函数输入输出类函数程序设计类函数第20页/共57页21ALLTRIM():首尾去空 ASC():取ASC码 AT()/ATC():检测子串在主串中的位置 LEFT()/RIGHT():取串左/右边子串LEN():串长 LOWER()/UPPER():转换为小/大写MAX()/MIN():取最大/小值SPACE():产生空格SUBSTR():取子串 第21页/共57页22常用函数ABS():取绝对值 INT():取整 MOD():取余 RAND():随机数(01)ROUND():四舍五入函数 CDOW():以字符返回星期几CMONTH():取月份(字符)DATE():

12、取系统日期 第22页/共57页23常用函数DAY():取系统日期中的“日”DOW():取星期几(17)HOUR():取小时 MINUTE():取分钟 MONTH():取月份 YEAR():取年份 CHR():根据所给数值给出字符 CTOD():字符型转日期型 DTOC():日期型转字符型 DATETIME():取系统日期时间 第23页/共57页24常用函数STR():数值转字符 VAL():字符转数值 BETWEEN():是否在中间 EMPTY():是否空 TYPE():类型 FCOUNT():取表的字段总数FIELD():取表的字段名USED():测试表是否打开RECCOUNT():返回记录

13、总数第24页/共57页25常用函数BOF():记录开始标记EOF():记录结束标记RECNO():当前记录号GETFILE():弹出“打开”对话框PUTFILE():弹出“另存为”对话框GETDIR():弹出“选择目录”对话框GETCOLOR():弹出“颜色”对话框RGB():返回一个颜色MESSAGEBOX():消息对话框IIF():条件成立返回第一结果,否则返回第二个结果第25页/共57页264.运算符数值运算符运算符操作()改变运算顺序*或 乘方运算*/乘除%取模+-加减第26页/共57页27字符操作符运算符 操作+连接两个字符串-连接两个字符串,且将第一个字符后的空格移至结果末尾;$测

14、试第一个字符串是否出现在第二个字符串中。第27页/共57页28日期和日期时间操作符 注:不可以对两个日期型数据或日期时间型数据进行相加运算 +:一个日期型的量与一个整数之间的运算;-:日期与整数、日期与日期的运算。逻辑操作符 NOT(!):取反运算,即:NOT.T.=.F.,NOT.F.=.T.第28页/共57页29逻辑与运算(AND)AL1L2串联系电路中,当灯泡L1与L2同时亮时,安培表中才有电流。ABA AND B.T.T.T.T.F.F.F.T.F.F.F.F.第29页/共57页30逻辑或运算(OR)AL1L2并联电路中,灯泡L1和L2中有一个亮,安培表中即有电流。ABA OR B.T

15、.T.T.T.F.T.F.T.T.F.F.F.第30页/共57页31关系运算符关系操作符:、=、=、=在比较过程中决定大小有三种不同的比较方式:Machine序列 按照机内码顺序 PinYin序列 按拼音顺序 Stroke序列 按笔画多少排序可以通过“选项”和“数据”选项卡设置 或通过命令SET COLLATE命令,格式 SET要COLLATE TO“Machine”?AB,aA,A 混合表达式中,运算符的优先级为:字符、日期和时间、算术运算符优先于关系运算符,关系运算符优先于逻辑运算符。第31页/共57页32设置精确比较 精确比较的结果受SET EXACT 命令所设置的系统环境影响 当使用S

16、ET EXACT OFF时,若“=”右边的字符串长度比左边的短,则左边的字符串取右边长度相同的子字符串参加比较 当使用SET EXACT ON 时,通过在字符串后面加空格的方法使两个字符串的长度相等,然后进行比较例:SET EXACT ON?“BCDE”=“BC”&.F.?“BC”=“BCDE”&.F.?“BC ”=“BC”&.T.?“BC”=“BC ”&.T.?“BCDE”=“BCDE”SET EXACT OFF?“BCDE”=“BC”&.T.?”BC”=“BCDE”&.F.?”BC ”=“BC”&.T.?“BC”=“BC ”&.F.?”BCDE”=”BCDE”&.T.第32页/共57页33

17、名称表达式名称表达式是由圆括号括起来的一个字符表达式,可以用来替换命令和函数中的名称(如:字段名、变量名、窗口名、菜单名、文件名和对象名等)。若要使用名称列表,须用逗号将各个名称分隔开。名称表达式不能出现在赋值语句的左边名称表达式的使用:名称表达式替换变量名例:nVar=100 var_name=“nVar”STORE 123.4 TO(var_name)?nVar&结果为123.4相当于nVar=123.4第33页/共57页34名称表达式替换命令中文件名dbf_name=“js”use(dbf_name)&use js名称表达式作函数参数 string1=“Visual FoxPro”str

18、_var=“string1”?substr(str_var),1,6)用字符表达式构成一个名称表达式Db_name=“jxsj”Dbf_name=“js”Use(db_name+”!”+dbf_name)第34页/共57页35宏替换宏替换与名称表达式具有相似的作用,可使用宏替换的方法用内存变量替换名称。使用宏替换时,将连字符()放在变量前。例:nVar=100 nVarb=100 var_name=“nVar”STORE 123.4 TO&var_name STORE 200 TO&var_name.b第35页/共57页36与名称表达式的区别:含有名称表达式的命令或函数的运行速度比含有宏替换的

19、要快 宏替换可以替换整个命令,而名称表达式不行 宏替换可以用以构成表达式,而名称表达式不能作为其他表达式的组成部分 field_name=“js.xm”locate for&field_name=“程东萍”&能定位locate for(field_name)=“程东萍”&不能定位在某些命令和函数中不能使用名称表达式 Var_name=“cVar3”&var_name=“test2”(var_name)=“test2”&不能正确赋值Store“test1”to(var_name)?&var_name?(var_name)第36页/共57页37练习下面程序运行的结果为_:I=“1”J=“2”X12

20、=“Good”?X&I&J下面程序运行的结果为_:x=1y=2c=x+y?&cGood12第37页/共57页382.6 空值处理Null特点:等价于没有任何值与0、空字符串(“”)及空格不同排序优先于其他数据在计算过程中或大多数函数都可以用到NULLNull值会影响命令、函数、逻辑表达式和参数的行为。操作:字段中【Ctrl】+【0】来赋NULL值 Isnull函数测试字段、变量或一个表达式的值是否为NULL第38页/共57页39命令和函数解释空值的方式:NULL值作参数传递时,遵循的规则:给命令传递NULL值将产生错误将NULL作为有效值的函数,将向结果传递NULL值向应该接收数值型 参数和函

21、数传递NULL值,将产生错误数据类型说 明逻辑型大多数等于NULL的逻辑表达式返回NULL或产生一个错误信息,EMPTY(),ISBLANK(),ISNULL()函数除外数值型值为空值 的数值表达式结果为NULL。当为函数传递的参数为空值时,数值函数的结果为NULL日期型 含有空值的日期表达式将返回NULL第39页/共57页40向下列函数传递NULL值将返回假:ISBLANK(),ISDIGIT(),ISLOWER()ISUPPER(),ISALPHA(),EMPTY()INSERT-SQL、UPDATE-SQL、SELECT-SQL命令通过ISNULL和IS NOT NULL子句处理NULL

22、值如果参与计算的所有值都为NULL,则VFP合计函数产生NULL,否则任何NULL值均将被忽略第40页/共57页41逻辑表达式中NULL的行为逻辑表达式表达式的结果X=.T.X=.F.X=.null.X and.null.null.F.null.X or.null.t.null.null.Not X.f.T.null.第41页/共57页42练习.null.AND.F.、.null.OR.F.、.null.=.null.三个表达式的值分别为_。A.null.、.null.、.null.B.F.、.null.、.null.C.F.、.null.、.T.D.F.、.F.、.null.正确答案为:B第

23、42页/共57页43几个函数的比较X=.null.“”0/EMPTY(X).F.T.T.T.ISBLANK(X).F.T.F.T.ISNULL(X).T.F.F.F.第43页/共57页442.7 程序设计简介2.7.1 创建与运行程序创建程序“文件/新建”菜单命令常用工具栏“新建”按钮MODIFY COMMANDFileName|?运行程序工具栏上的“!”按钮在项目管理器窗口中选择程序文件,然后单击“运行”命令按钮在命令窗口中使用DO命令:DO:ProgramNameWITH ParameterList第44页/共57页452.7.2 程序结构顺序结构 按顺序执行程序中的命令 store 4.

24、12 to p s=p*p*3.14?“圆面积为:”,s分支结构If.elseendif语句,格式为 if lExpression then command1 else command2 endifDo caseendcase语句 格式:do case case lExpression1 Command1 case lExpression2 Command2 case lExpressionN CommandN otherwise commands endcase第45页/共57页46控制语句条件分支:(根据逻辑表达式的值决定程序的流程)IF-ENDIF,IF-ELSE-ENDIFDO CAS

25、E-ENDCASE(多分支)循环:(使一组语句组重复执行若干次)SCAN-ENDSCAN(只适用于对表记录的操作)FOR-ENDFOR/NEXTDO WHILE-ENDDOLOOP:无条件循环EXIT:无条件结束循环第46页/共57页47累加示例计算S=1+3+5+99S=0 FOR I=1 TO 99 STEP 2S=S+IENDFOR计算N=1*1+2*2+3*3+10*10N=0 FOR J=I TO 10N=N+J*JENDFOR第47页/共57页48累乘示例计算P=3*5*7*25P=1 FOR K=3 TO 25 STEP 2P=P*KENDFOR计算10!F=1FOR I=1 T

26、O 10F=F*IENDFOR第48页/共57页49随机数示例随机产生10个1050的随机整数DIME A(10)FOR I=1 TO 10 A(I)=INT(50-10+1)*RAND()+10 ENDFOR随机生成一个4行8列的矩阵DIME B(4,8)FOR I=1 TO 4 FOR J=1 TO 8 B(I,J)=INT(10*RAND()NEXT JNEXT I第49页/共57页50闰年问题一个年份满足以下条件之一即为闰年:能被4整除且不能被100整除能被400整除输入一个年份值给变量nYearIF MOD(nYear,4)=0 AND MOD(nYear,100)0 OR MOD(

27、nYear,400)=0?”是闰年“ELSE?”不是闰年”ENDIF第50页/共57页51子程序结构化程序设计的主要特点。一个应用程序的许多功能可以编写成一个个独立的子程序、过程或用户自定义函数。用DO命令调用其他的程序。一个主程序可以调用任意多个子程序。允许嵌套的DO调用层数为128层。第51页/共57页52自定义函数(UDF)自定义函数或过程可存放在独立的程序文件(.PRG)中或数据库文件(存储过程)中。自定义过程:PROCEDURE myproc 代码区ENDPROC自定义函数:FUNCTION myfunc 代码区ENDFUNC第52页/共57页53调用自定义函数不带参数调用DO my

28、proc=myfunc()?myfunc()带参数调用DO myproc WITH 参数列表=myfunc(参数列表)?myfunc(参数列表)如果自定义过程(函数)存放在独立文件中则先用命令SET PROCEDURE TO 过程文件名 来打开文件。第53页/共57页54参数传递接受参数的过程或函数的第一句必须是PARAMETERS 参数列表传递的参数一般与接收参数数目相等,许少不许多。参数之间用逗号分隔,最多27个。传递参数有两种方式:按引用方式:SET UDFPARMS TO REFERENCE按值方式:SET UDFPARMS TO VALUE强制传递方式:用括号括起变量,表示按值传递在

29、变量前加上,表示按引用传递第54页/共57页55NULL值处理特点:等价于没有任何值 与0、空字符串(“”)或空格不同 排序优先于其他数据 在计算过程中或大多数函数中都可以用到null值 Null值会影响命令、函数、逻辑表达式和参数的行为 给字段或变量赋.NULL.值时,该字段或变量的数据类型不变,只是值变为.NULL.第55页/共57页56练习请完善下面计算生肖的自定义函数sx()FUNCTION sxPARAMETERS nYearLOCAL n,csxcsx=“猴鸡狗猪鼠牛虎兔龙蛇马羊”IF PARAMETERS()=0nYear=YEAR(DATE()_n=MOD(nYear,12)_SUBSTR(csx,2*n+1,2)ENDFUNCENDIFRETURN第56页/共57页57感谢您的欣赏!第57页/共57页

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 应用文书 > PPT文档

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁