程序设计的基础数据类型:每一个数据都有一定的类型,数据类型决定了数据的存储方式和运算方式,大多数程序设计允许使用常量、变量和数组来存储数据;一、常量:有6种类型:(数值型、货币型、字符型、日期型、日期时间型、逻辑型)(1)数值型(N):由数字0-9、小数点、正负号构成。如:12、0.1、-1.23;还可以用科学记数法表示如:1.3E-12表示1.3*10-12(2)货币型(Y):在数值前导货币符号($),保留四位小数,能够自动四舍五入如:$123.45678存储为$123.4568(3)字符型(C):习惯称为字符串,由中、英、数字等字符组成。表示方法用单引号(’’)、双引号(””)、方括号([])三种定界符将字符串括起来。定界符必须成对出现,如“AB是不合法的、”计算机”是合法的。当定界符作为字符串内容时外层定界符要加以区分如:[”我们”]是合法的,””我们””是非法的。(4)日期型(D):分传统和严格日期格式两种;传统日期格式默认为美国日期格式:”mm/dd/yy”(月/日/年),年份可以是2位数字,也可以是4位数字,如:{^10/08/01}、{10-08-01}、{10/08/2001}严格式日期格式:{^年/月/日}书写规则是用花括号”{}”作为定界符,第一个字符为脱字符”^”年份为四位、按年月日顺序书写不能颠倒如:{^2008/08/08}影响日期格式命令:1、设置日期显示分隔符:SETMARKTO[分隔符]当SETMARKTO后没指定任何分隔符时,恢复系统默认的分隔符斜杠(/)。2、设置日期显示格式:SETDATETOYMD|DMY|MDYYMD设置为年月日格式;DMY:设置为日月年格式;MDY:设置为月日年格式;3、设置显示年份位数(2位或4位):SETCENTYURYOFF|ONOFF为2位ON为4位)(5)日期时间型(T):分传统和严格日期时间格式两种:严格日期时间格式:{(^年/月/日),[小时:分:秒]}书写规则与日期型相似(6)逻辑型(L):逻辑型数据用句点作为定界符,只有两个值逻辑真和逻辑假。逻辑真用:.T.,.Y.表示(大小写不区分)逻辑假用:.F.,.N.表示(大小写不区分)二、变量:值能够随时更改的量变量通过变量名来进行访问;变量名的命名规则:以字母、汉字、下划线开头(数字不能开头),后面接字母,汉字,数字和下划线构成。VF中变量分为:字段变量和内存变量两大类,内存变量又分:简单内存变量和数组(一维和二维数组)(1)、字段变量:就是我们所说的表中的字段,因为字段的取值是可变的,所以表中的字段名又叫字段变量,其值是当前记录指针所指的值(类型包含:字符型、数值型、货币型、日期型、日期时间型、逻辑型、整型、通用型和备注型)(2)、内存变量:是内存中的一个存储单元,变量的值就是存放在这个单元里的数据。(6种类型:字符型C、数值型N、货币型Y、日期型D、日期时间型T、逻辑型L)如果内容变量与数据表中的字段变量同名,用户在引用内存变量时,要在变量名字前加一个“M.”或“M-”,用来强调这个变量是内存变量。1、内存变量的赋值:格式1:内存变量名=表达式注:一次只能给一个内存变量赋值格式2:STORE表达式TO内存变量名1,内存变量名2,····注:同时给多个变量赋予相同的值功能说明:A:等号一次只能给一个内存变量赋值。STORE命令可以同时给多个变量赋予相同的值,各个内存变量名之间应用逗号分隔开。B:一个变量在使用之前并不需要特别声明。当用STORE命令给变量赋值时,如果该变量不存在,那么系统会自动建立它。C:如果要改变内存变量的内容和类型可以通过对内存变量重新赋值来完成。例:给内存变量赋值:NJ=[大学]给变量NJ赋字符值;STORE‘1234567890’TOXH给变量XH赋字符值;STORESQRT(3^2+4^2)TOna1,na2,na3赋予相同的数值;输出变量的值:?[表达式表];??表达式表;2、内存变量的显示:格式1:LISTMEMORYLIKE通配符格式2:DISPLAYMEMORY[LIKE通配符]功能:显示内存变量的当前信息,包括变量名、作用域、取值和类型。注:A;通配符包括*和?。*表示任意的多个字符;?表示任意的一个字符。(%表示多个字符;_表示一个字符)用在SQLselect语句中查询用的,通常与like。例:select面积,城市from仓库表where仓库号like”W%”B:内存变量名不能加定界符;区别:LISTMEMORY:一次显示与通配符的所有内存变量,如果内存变量多,一屏显示不下,则自动向上滚动。DISPLAYMEMORY分屏显示与通配符的所有内存变量,如果内存变量多,显示一屏后暂停,只要按任意键后就可以继续显示下一屏。选用LIKE短语只显示与通配符相匹配的内存变量,通配符包括*和?例:STORE“BOODBEY”TOX1STORE“HELLO”TOX2DISPLAYMEMORYLIKEA*显示所有以“A”开头的内存变量。3、清除内存变量:格式1:CLEARMEMORY格式2:RELEASE内存变量名表格式3:RELEASEALL[EXTENDED]格式4:RELEASEALL[LIKE通配符|EXCEPT通配符]功能说明:格式1:清除所有内存变量;格式2:清除指定的内存变量;格式3:清除所有内存变量,在人机会话状态其作用与格式1相同,如果出现在程序中,则应加上短语EXTENDED,否则不能删除公共内存变量。格式4:选用LIKE短语清除与通配符相匹配的内存变量,选用EXCEPT短语清除与通配符不相匹配的内存变量。例:RELEASEX1,X2释放内存变量X1,X2RELEASEALLLIKEA*释放所有以变量A开头不的内存变量。三、数组:是在内存中连续的一片存储区域,它由一系列元素组成,每元素相当于一个简单内存变量。1、创建数组格式:A:DIMENSION数组名(下标上限1[,下标上限2])[,……]B:DECLARE数组名(下标上限1[,下标上限2])[,……]注:1、两种格式的功能等价,数组创建后,系统自动给每个数组元素赋予初值逻辑假.F.2、各数组元素数据类型可以不相同3、数组的下限规定为1,访问时不能超限4、可以用一维数组形式去访问二维数组5、在赋值和输入语句中使用数组名时,表示将同一值同时赋值给该数组的全部元素6、定义(访问)数组时也可以用方括号,如DIMEBY[3]等价于DIMEMY(3)7、在一切可以使用简单内存变量的地方都可以使用数组元素。内存变量就像一个盒子,而变量的值就相当于放在盒子里边的物体。盒子是固定不变的,而放在盒子里的物体却能更换。即内存变量类型取决于变量值的类型,内存变量的(值和类型)随重新赋的值改变而改变,以后一次赋值为准。例如:DIMENSIONA(4),B(2,3)命令定义两个数组。一维数组A含4个元素:A(1),A(2),A(3),A(4)。二维数组B含6个元素:B(1,1),B(1,2),B(1,3),B(2,1),B(2,2),B(2,3)例:数组的定义赋值:DIMENSIONA(2),B(2,2)定义两个数组;A=100将A数组所有元素赋值为100B(1,1)=A(1)引用A数组的元素给B数组元素赋值;STORE.T.TOB(1,1)给B数组的一个元素重复赋逻辑值;B(1,2)=‘南京大学’给B数组的一个元素赋字符值“南京大学”B(2,1)={^2006/11/16}给B数组的一个元素赋日期值B(2,2)={^2006/11/1610:00:00A}给B数组的一个元素赋严格的日期时间值?A(1)+A(2),B(2,1)系统主窗口显示:2002006/11/16在使用数组和数组元素时,应注意以下问题:在一切可以使用简单内存变量的地方,均可以使用数组元素。在赋值和输入语句中使用数组名时,表示将同一个值同时赋给该数组的全部数组元素。在同一个运行环境下,数组名不能与简单变量名重复在赋值语句中的表达式位置不能出现数组名,可以出具体的数组元素名。可以用一维数组的形式访问二维数组;二、表与数组之间的数据传递1、将表的当前记录复制到数组:格式1:SCATTER[FIELDS字段名表][MEMO]TO数组名[BLANK]格式2:SCATTER[FIELDSLIKE通配符][FIEKDSEXCEPT通配符][MEMO]TO数组名[BLANK]2、将数组数据复制到表的当前记录将表的当前记录复制到数组命令:SCATTERTO数组名将数组数据复制到表的当前记录命令:GATHERFROM数组名例:上机操作(1)将表的当前记录复制到数组:scattertoDimensionaa(3)use仓库scattertoaa?aa(1),aa(2),aa(3)(2)将数组数据复制到表的当前记录:gatherfromDimensionab(1,3)Ab(1,1)=”WH1”Ab(1,2)=”芜湖”Ab(1,3)=600Use仓库AppendblankGatherfromab?仓库号,城市,面积三、表达式:是由常量、变量和函数通过特定运算符连接起来的式子。表达式最终总会有一个结果出来.表达式可分为数值表达式、字符表达式、日期时间表达式和逻辑表达式。大多数逻辑表达式是带比较运算符的关系表达式1.数值、字符与日期时间表达式(1)数值表达式:是由算术运算符将数值型数据连接起来形成的,运算结果仍然为数值型数据,数值型数据可以是数值型常量和变量。运算符:(),+,-,*,^(平方),/,%①算术运算符乘方:^(shift+6)等价于**②求余运算%和mod()函数相同(2)字符表达式:由字符串运算符与字符型数据连接起来形成,运算结果仍然是字符型数据,字符运算符有两个:“+”和“-”,它们的运算优先级相同。①+:前后两个字符串首尾连接形成一个新的字符串②-:连接前后两个字符串,并将前字符串的尾部空格移到合并后的新字符串尾部。(3)日期时间表达式:日期时间表达式中可以使用的运算符也有“+”和“-”两个,日期时间表达式的格式有一定限制,不能任意组合。对:日期-日期例子:{^2005-05-02}-{^2005-05-01}=-1结果为数值型日期+天数例子:{^2005-05-02}+5={^2005-05-07}结果为日期型日期-天数例子:{^2005-05-02}-5={^2005-04-27}结果为日期型日期时间-日期时间例子:{^2005-05-0217:05:28}-{^2005-05-0217:05:25}=-3结果为数值型日期时间+秒数例子:{^2005-05-0217:05:28}+10={^2005-05-0217:05:38}结果为日期时间型日期时间-秒数例子:{^2005-05-0217:05:28}-10={^2005-05-0217:05:18}结果为日期时间型错:日期+/-日期时间型,日期时间+/-日期,日期+日期,日期时间+日期时间注:日期和日期时间不可以相加减。2.关系表达式:关系表达式通常也称为简单逻辑表达式,它是由关系运算符将两个运算对象连接起来形成的,作用是比较两个表达式的大小或者前后,运算结果为逻辑型数据,它们的优先级相同。运算符小于154*6.T.大于‘A’‘1’.T.=等于2+3=6.F.、#、!=不等于5-10.T.关系运算符的优先级别相同。关系表达式运算时,就是比较同类型两数据对象的“大小”,对于不同类型的数据,其“大小”或者是值的大小,或者是先后顺序。日期或日期时间数据以日期或时间的先后顺序为序。在VisualFoxPro系统中,字符型数据的比较相对复杂,默认规则为:1)单个字符单个字符的比较是以字符ASCII码的大小,作为字符的“大小”,也就是先后顺序;2)汉字系统默认按汉字的拼音排列汉字的顺序,也就是以汉字的拼音顺序比较“大小”2)字符串两个字符串进行比较的基本原则是从左