二章VFP程序设计基础.ppt
第二章 VFP程序设计基础,本章要点:1数据和数据类型 2常量与变量 3运算符与表达式 4函数 5VFP的操作和界面 6VFP的工作方式,一.数据类型 数据:是一组用来描述事物情况的物理符号序列,通常用类型和值来表示。一般地,只有相同类型的数据才能够进行运算。1.字符型(Character)用字母C表示。字符型数据包括中文字符、英文字符、数字字符和其他ASCII字符,其长度(即字符个数)范围是0254个字符。2.数值型(Numeric)数据由数字、小数点、正负号和字母E组成,用字母N表示。数值型数据的取值范围是:-0.9999999999E+190.9999999999E+20,包括正负号、小数点和字母E在内,其长度(数据位数)最大20位。通常用于表示实数。如23,-103.45,1.3E-5(即1.310-5)等。,2.1.1 数据与数据类型,3.浮点型(Float)数据是数值型数据的一种,用字母F表示。它与数值型数据完全等价,只是在存储形式上采用浮点格式,主要是为了得到较高的计算精度。(数据表中使用)4.双精度型(Double)数据是具有更高精度的一种数值型数据,用字母B表示。它采用固定长度浮点格式存储,占用8个字节,其取值范围是:+/-4.94065645841247E-324+/-8.9884656743115E307。(数据表中使用)5.整型(Integer)数据是不包含小数部分的数值型数据,用字母I表示。整型数据只用来表示整数,以二进制形式存储,占用4个字节。其取值范围是:-21474836472147483647(数据表中使用),6.日期型(Date)数据是表示日期的数据,用字母D表示。日期的默认格式是yyyy/mm/dd,其中mm表示月份,dd表示日期,yyyy表示年度,固定长度8位。7.日期时间型(Date Times)数据是表示日期和时间的数据,用字母T表示。日期时间的默认格式是yyyy/mm/dd hh:mm:ss,其中mm、dd、yyyy的意义与日期型相同,而hh表示小时,mm表示分钟,ss表示秒数。日期时间型数据也是采用固定长度8位。8.逻辑型(Logic)表示逻辑判断的结果,用字母L表示。逻辑型数据只有真和假两种,固定长度1位。通常用小圆点括起来的.T.、.t.、.Y.、.y.表示真,.F.、.f.、.N.、.n.表示假,9.备注型(Memo)数据是表示、存放较多字符的数据类型。用字母M表示。字段长度固定为4位,实际数据存放在与表文件同名的备注文件(.FPT)中,长度根据数据的内容而定。(数据表中使用)10.通用型(General)数据是对象的数据类型,用字母G表示。存放电子表格、文档、图形图片等。长度固定为4位。(数据表中使用)11.货币型(Currency)数据是为存储美元金额而使用的一种称为货币(Currency)的数据类型,其取值范围是:-922337203685477.5808 922337203685477.5807,默认保留4位小数,占据8字节存储空间。货币型数据用字母Y表示。12.二进制字符型和二进制备注型 这两类数据是以二进制格式存储的数据类型,只能用在表中字段数据的定义。(数据表中使用)其中双精度型、浮点型、通用型、整型、备注型、二进制字符型和二进制备注型只能应用于字段,其余则可以用于变量、数组和字段。,2.1.2 常量与变量,一.常量 在数据处理过程中其值不发生变化的量叫常量。Visual FoxPro常量分为5种类型:数值型常量、字符型常量、逻辑型常量、日期型常量、日期时间型常量。1)数值型常量:由数字、小数点和正负号组成,表示整数或实数值。如;100,-21,15.31,-21092.5041等分别是数值型常量中的整数和实数。2)字符型常量:由ASCII字符、汉字组成的字符型数据,字符型常量又称为字符串。用一对双引号或单引号或方括号作为定界符。如“I am a student.”,中华人民共和国,Visual FoxPro 6.0系统都是字符串。3)逻辑型常量:是表示逻辑判断结果“真”或“假”的逻辑值。逻辑常量只有真和假两种值,通常用小圆点括起来的.T.、.t.、.Y.、.y.表示真,.F.、.f.、.N.、.n.表示假。,4)日期型常量 是表示日期值的数据,其默认格式是yyyy/mm/dd。如10/01/02和10/01/2002均表示2002年10月1日这一日期常量值。5)日期时间型常量 表示日期和时间值的日期时间型常量,其默认格式是:yyyy/mm/dd,hh:mm:ssa|p 其中a和p分别表示AM(上午)和PM(下午)如:l999-04-24 10:00am 6)货币型常量$123,$321.1234二.变量 在命令操作、程序运行过程中其值可以变化的量。在Visual FoxPro系统中变量分为字段变量、内存变量、数组变量和系统变量4类。(变量也可以分为字段变量和内存变量两大类。)一个变量,有变量名、数据类型和变量值。,1.内存变量 是计算机内存中一个命名的存储单元。分为用户、系统、数组内存变量。2.字段变量 就是字段,也是变量。与其他变量不同的是,字段变量是表中的变量,它的值随表的记录变化,又是永久性多值变量。字段名就是变量名;变量的数据类型为VFP中任意数据类型,字段值就是变量值。3.变量 在VFP中的命名:1)使用字母、下划线、数字和汉字构成变量名。2)数字不能打头,自由表中字段名最多只能10个字符,最长 可使用1128个字符。3)不能使用 Visual FoxPro的保留字。,三内存变量的操作 1)内存变量的数据类型:内存变量的数据类型包括:数值型、字符型、逻辑型、日期型和日期时间型;2)内存变量的建立:建立内存变量就是给内存变量赋值。内存变量赋值既可定义一个新的内存变量,也可改变已有内存变量的值或数据类型。赋值命令格式1:STORE TO 功能:计算的值并赋值给各个内存变量。赋值命令格式2:=功能:计算的值并赋值给指定内存变量。,3)内存变量的显示输出 显示输出指定的内存变量值。命令格式:?|?功能:计算表达式表中各表达式的值,并在屏幕上指定位置显示输出各式的值。?:先回车换行,再计算并输出表达式的值;?:在屏幕上当前位置,计算并直接输出表达式的值;显示输出系统内存变量的值。命令格式:DISPLAY|LIST MEMORY LIKE 功能:显示指定变量的信息。内存变量的操作 例2-1 教材P24,2.1.3 运算符与表达式,在VFP中,表达式是由常量、()、变量、函数、对象和运算符组成的运算式子。表达式分为算术表达式、字符表达式、日期时间表达式、逻辑表达式和关系表达式五类。运算符分为算术、字符、日期时间、逻辑和关系运算符五类。各类运算的优先顺序如下:圆括号-算术和日期运算-字符运算-关系运算-逻辑运算 算术运算符:()-*或-*和/-%-+和-逻辑运算:not-and-or,1.算术表达式 又称数值表达式,是由算术运算符和数值组成。其值为数值型数据。(教材P25)表达式的书写规则 1)每个符号占1格,所有符号都必须一个一个并排写在同一横线上,不能在右上角或右下角写方次或下标。例如:23要写成23,X1+X2要写成X1+X2。2)原来在数学表达式中省略的内容必须重新写上。例如:2x要写成2*x。3)所有括号都用小括号(),括号必须配对。4)要把数学表达式中的有些符号,改成VISUAL FOXPRO中可以表示的符号。例如:要把2r改为 2*pi()*r。(pi()为函数),2.字符表达式 由字符运算符将字符型数据连接起来的式子。“+”:完全连接运算符。“-”:不完全连接运算符。,3.日期表达式 日期运算符分为“+”和“-”两种,其作用分别是在日期数据上增加或减少一个天数,在日期时间数据上增加或减少一个秒数。两个运算的优先级别相同。两个日期可相减不能相加。例如:1999/12/19-1999/11/16&结果为数值型数据331999/11/16+33&结果为日期型数据:1999/12/191999/12/19-33&结果为日期型数据:1999/11/16,4.关系表达式 由关系运算符连接两个同类数据进行关系比较的运算式称为关系表达式。表达式的值为逻辑值,关系表达式成立则其值为“真”,否则为“假”。关系运算符,5.逻辑表达式 由逻辑运算符将逻辑型数据连接而成的式子称为逻辑表达式。逻辑表达式由逻辑运算符、逻辑常量、变量和函数组成。VFP提供的逻辑运算符如表2.4所示。一个逻辑表达式可包含多个逻辑运算符。对于较复杂的条件判断必须采用逻辑表达式才能完成。参加逻辑运算的对象为逻辑对象,其表达式的值也是一个逻辑值。对于逻辑运算,其逻辑运算真 表如右:,课堂练习 设X=6,Y=9时,求?.not.(XY).or.3+X=Y.and.X*YX+Y+8 的值,并说明各个运算符的运算顺序。,2.2 常用函数,在程序设计过程中,经常将一段常用的程序保存计算机中,这段程序称为子程序。子程序可以被其它程序调用。调用子程序的程序称为上级程序。被调用的程序称为调用程序的下级程序。VFP为了程序设计方便将一些最常用的子程序设计好了。并保存在DBMS中。这些特殊的子程序称为函数。函数又分为系统函数和自定义函数。VFP函数由函数名和参数组成。有380多个。,2.2.1数值函数(返回值和参数都是数值),1取绝对值函数 ABS()见教材P29 例2-2【格式】ABS()【功能】计算nExp的值,并返回该值的绝对值。2指数函数 EXP()【格式】EXP()【功能】求以e为底、nExp值为指数的幂,即返回ex的值。3取整函数 INT()见教材P29 例2-5【格式】INT()【功能】计算nExp的值,返回该值的整数部分。4自然对数函数 LOG()【格式】LOG()【功能】求nExp的自然对数。nExp的值必须为正数。5常用对数函数 LOG10()【格式】LOG10()【功能】求nExp的常用对数。nExp的值必须为正数。,6平方根函数 SQRT()见教材P29 例2-3【格式】SQRT()【功能】返回nExp的平方根 7最大值函数 MAX()和最小值函数MIN()【格式】MAX(,.)MIN(,.)【功能】返回 最大值MAX()和最小值MIN()。8四舍五入函数 ROUND()见教材P29 例2-6【格式】ROUND(,)9求余数函数 MOD()见教材P30 例2-7【格式】MOD(,)【功能】返回两个数值相除后的余数。是被除数 10函数 PI()【格式】PI(),2.2.2 字符函数,字符函数是处理字符型数据的函数,其参数或函数值中至少有一个是字符型数据。1子串位置函数 AT()【格式】AT(,)【功能】返回串cExp1在串cExp2中的起始位置。2取左子串函数 LEFT()【格式】LEFT(,)【功能】从cExp左边第一个字符开始,截取nExp个字符的子串。3取右子串函数 RIGHT()【格式】RIGHT(,)【功能】从cExp右边第一个字符开始,截取nExp个字符的子串。4取子串函数 SUBSTR()【格式】SUBSTR(,)【功能】从串c1第n1个字符开始,截取n2个字符的子串。,5字符串长度函数 LEN()【格式】LEN()【功能】返回指定字符表达式值的长度,即所包含的字符个数。6删除字符串前导空格函数 LTRIM()【格式】LTRIM()7删除字符串尾部空格函数 RTRIM()|TRIM()【格式】RTRIM|TRIM()8删除字符串前未置空格函数 ALLTRIM()【格式】ALLTRIM()【功能】返回指定字符表达式值去掉前尾部空格后形成的字符串。9空格函数 SPACE()【格式】SPACE(),10字符串替换函数 STUFF()【格式】STUFF(,)11字符串匹配函数 LIKE()【格式】LIKE(cExp1,cExp2)【功能】比较两个字符串对应位置上的字符,若所有对应字 符都相匹配,函数返回逻辑真(.T.),否则返回逻辑假(F)。字符表达式1中可以包含通配符“*”和“?”。“*”可与任 何数目的字符相匹配,?可以与任何单个字符相匹配。12宏替换函数&【格式】&【功能】替换出字符型变量cVar中字符。例1:x=“bc”,abc=“abcd”,abcd=“dcba”求:?&a&x的值。例2:设:n=“886.6”求:?23+&n的值。,2.2.3 日期时间函数,日期时间函数是处理日期型或日期时间型数据的函数。其自变量为日期型表达式或日期时间型表达式。1系统日期函数 DATE()【格式】DATE()【功能】返回当前系统日期,此日期由Windows系统设置。函数值为D型。2系统时间函数 TIME()【格式】TIME()【功能】返回当前系统时间,时间显示格式为hh:mm:ss。若选择了nExp,则不管为何值,返回的系统时间还包括秒的小数部分,精确至小数点后两位。函数值为C型。,3日期函数 DAY()【格式】DAY()【功能】返回dExp式中的天数。函数值为N型4星期函数 DOW()、CDOW()【格式】DOW()【功能】DOW()函数返回dExp式中星期的数值,用17表示星期日星期六。CMONTH()函数则返回星期的英文名。函数值为N型。5月份函数 MONTH()、CMONTH()【格式】MONTH()|CMONTH()【功能】MONTH()函数返回dExp式中月份数。函数值为N型。CMONTH()函数则返回月份的英文名。函数值为C型。6年份函数 YEAR()【格式】YEAR()【功能】函数返回dExp式中年份值。函数值为N型。,2.2.4 转换函数,在数据库应用的过程中,经常要将不同数据类型的数据进行相应转换,满足实际应用的需要。VFP系统提供了若干个转换函数,较好地解决了数据类型转换的问题。1ASCII码函数 ASC()【格式】ASC()【功能】返回首字符的ASCII码值。函数值为N型。2ASCII字符函数 CHR()【格式】CHR()【功能】返回以nExp值为ASCII码的ASCII字符。函数值为C型。,3字符日期型转换函数 CTOD()【格式】CTOD()【功能】把“/”格式的cExp串转换成对应日期值。4日期字符型转换函数 DTOC()【格式】DTOC()【功能】把日期dExp转换成相应的字符串。函数值为C型。5数值字符型转换函数 STR()【格式】STR(,)【功能】将nExp1的数值转换成字符串形式。函数值为C型。6字符数值型转换函数 VAL()【格式】VAL()【功能】将由数字符号(包括正负号、小数点)组成的字符型数据转换成相应的数值型数据。从第一个字符开始转换,遇到不符合数值书写规则的字符立即停止转换,若第一个字符不是数字符号,则返回数值0。函数值为N型。,2.2.5 测试函数,在数据库应用的操作过程中,用户需要了解数据的类型等属性,Visual FoxPro提供了相关的测试函数。尤其是在运行应用程序时,常常需要根据测试结果 来决定下一步的处理方法或程序走向。1数据类型函数 VARTYPE()TYPE()【格式】VARTYPE()【功能】返回cExp 串表示的数据对象的数据类型,返回值是一个表示数据类型的大写字母。注:U为未定义。2表结束标志测试函数 EOF()【功能】测试记录指针是否移到表结束处。如果记录指针指向表中尾记录之后,函数返回真,否则为假。3.表起始标识测试函数 BOF()【功能】测试记录指针是否移到表起始处。如果记录指针指向表中首记录前面,函数返回真,否则为假。,1.VFP界面及各个部分作用,2.3 VFP的操作和界面,2.VFP的工作方式命令工作方式菜单工作方式程序工作方式,