1、2022-8-51第第 2 章章Visual FoxPro 编程基础编程基础 2022-8-52 数据描述和数据类型数据描述和数据类型 函数函数 运算符和表达式运算符和表达式 Visual FoxPro命令的一般格式命令的一般格式 程序的基本结构程序的基本结构 【教学主要内容教学主要内容】2022-8-53 【教学要求教学要求】了解:了解:数据描述的基本方法数据描述的基本方法 掌握:掌握:数据类型的定义数据类型的定义 函数的定义和使用函数的定义和使用 运算符和表达式运算符和表达式 Visual FoxPro命令的一般格式命令的一般格式 结构化程序设计结构化程序设计 2022-8-542.1 数
2、据描述和数据类型数据描述和数据类型 Visual FoxPro 8.0 Visual FoxPro 8.0可以对数据进行分类,分别存可以对数据进行分类,分别存储每一类型的数据,同时也可以将不同数据之间的联储每一类型的数据,同时也可以将不同数据之间的联系存储进来,以获得综合性数据信息。系存储进来,以获得综合性数据信息。Visual FoxProVisual FoxPro中常量、变量、函数及表达式的常中常量、变量、函数及表达式的常用数据类型有字符型、数值型、逻辑型、日期型、日用数据类型有字符型、数值型、逻辑型、日期型、日期时间型、货币型和变体型等。期时间型、货币型和变体型等。操作过程中一般只对相同
3、类型的数据进行运算,操作过程中一般只对相同类型的数据进行运算,在操作过程中必须时刻注意操作对象的类型。在操作过程中必须时刻注意操作对象的类型。2022-8-552.1 数据描述和数据类型数据描述和数据类型 2.1.1 2.1.1 常量常量 在在Visual FoxProVisual FoxPro程序中,操作过程中其值不发生变化的数据项称为常程序中,操作过程中其值不发生变化的数据项称为常量,由常量名和常量值组成。量,由常量名和常量值组成。常量有以下几种数据类型:常量有以下几种数据类型:1.1.字符型字符型 (Character)Character)字符型数据通常用来表示文本类型的信息,每个字符占
4、用一个字节,字符型数据通常用来表示文本类型的信息,每个字符占用一个字节,最多可有最多可有254254个字符。由中个字符。由中/英文字符、数字、空格和各种专用符号组成。英文字符、数字、空格和各种专用符号组成。2.2.数值型数值型 (Numeric)Numeric)数值型数据是用来进行数学运算的整数或分数,由数字、小数点和正数值型数据是用来进行数学运算的整数或分数,由数字、小数点和正负号等组成,在内存中占负号等组成,在内存中占8 8个字节。例如个字节。例如135135、10.4710.47、-101-101、和、和2.17E62.17E6等。等。3.3.逻辑型逻辑型 (Logic)Logic)逻辑
5、型数据只有逻辑型数据只有“真真”和和“假假”两个值,分别用两个值,分别用.T.T.、.t.t.、.Y.Y.、.y.y.(逻辑值真)和(逻辑值真)和.F.F.、.f.f.、.N.N.、.n.n.(逻辑值假),表示逻辑运算的结果。(逻辑值假),表示逻辑运算的结果。2022-8-562.1 数据描述和数据类型数据描述和数据类型 4.4.日期型日期型(Date)(Date)和日期时间型和日期时间型 (DateTimeDateTime)日期型数据常用大括号作为定界符。通常以日期型数据常用大括号作为定界符。通常以“月月/日日/年年”的形的形式来表示,如式来表示,如02/01/0602/01/06,占,占8
6、 8个字节。个字节。系统默认的系统默认的“严格日期型格式严格日期型格式”以以yyyy-mm-ddyyyy-mm-dd 的形式来表示,格的形式来表示,格式中的符号式中的符号 指该日期是严格的,表达一个确切的日期,它不受日期设置指该日期是严格的,表达一个确切的日期,它不受日期设置命令命令SET DATE TOSET DATE TO和和SET CENTURY ON/OFFSET CENTURY ON/OFF的影响。格式中的的影响。格式中的“-”-”可用可用“/”/”来代替。来代替。5.5.货币型货币型 (Currency)Currency)数字前加前置符号数字前加前置符号$表示货币型数据。如表示货币
7、型数据。如$121.67$121.67。货币型数据不用。货币型数据不用科学记数法表示,最多有四位小数,超过科学记数法表示,最多有四位小数,超过4 4位则位则Visual FoxProVisual FoxPro自动调整自动调整为为4 4位。货币型数据在内存中占位。货币型数据在内存中占8 8个字节。个字节。2022-8-572.1 数据描述和数据类型数据描述和数据类型 2.1.2 2.1.2 变量变量 在命令操作和程序运行中其值可以发生变化的数据是变量。在在命令操作和程序运行中其值可以发生变化的数据是变量。在Visual Visual FoxProFoxPro中,变量不需要严格的定义,它通过赋给变
8、量的值来识别变量的类中,变量不需要严格的定义,它通过赋给变量的值来识别变量的类型。型。Visual FoxProVisual FoxPro中有两类变量:一是字段变量,另一类是内存变量。中有两类变量:一是字段变量,另一类是内存变量。1.1.字段变量字段变量 字段变量是指数据库表文件中定义好的每一字段,在数据表中的记录字段变量是指数据库表文件中定义好的每一字段,在数据表中的记录都是字段变量相应的值。都是字段变量相应的值。(1 1)备注型(备注型(MemoMemo)在表中使用,大小为)在表中使用,大小为4 4字节。字节。(2 2)浮点型()浮点型(FloatFloat)与数值型一样,数据为整数或小数
9、,在内存中占)与数值型一样,数据为整数或小数,在内存中占8 8个字节,在表中占个字节,在表中占2020个字节。个字节。(3 3)双精度型()双精度型(DoubleDouble)双精度浮点数大小占)双精度浮点数大小占8 8个字节。个字节。(4 4)通用型()通用型(GeneralGeneral)通用型数据用于存储)通用型数据用于存储OLE OLE 对象的数据,在表中对象的数据,在表中占占 4 4 个字节。个字节。2022-8-582.1 数据描述和数据类型数据描述和数据类型 (5 5)整型(自动增长)()整型(自动增长)(IntegerInteger(AutoIncrementingAutoIn
10、crementing)可以为数)可以为数据库容器表据库容器表 (DBC)(DBC)或自由表指定自动增长字段值,在表中占个字节。或自由表指定自动增长字段值,在表中占个字节。字段值的自动增长量由字段值的自动增长量由Next ValueNext Value和和StepStep的值控制。当打开一个字段的值控制。当打开一个字段的自动增量时,的自动增量时,初始的增量值、初始的增量值、Next Value Next Value 和和 StepStep是保存在表头中的特是保存在表头中的特定字段的字段子记录的未使用的保留部分。定字段的字段子记录的未使用的保留部分。(6 6)整型()整型(IntegerInteg
11、er)整数字段类型在表中以二进制存储,且只占用)整数字段类型在表中以二进制存储,且只占用 4 4 个字节的空间,所以,整数字段类型比其他任意类型所需的内存都少,而个字节的空间,所以,整数字段类型比其他任意类型所需的内存都少,而且二进制值不需要作且二进制值不需要作 ASCII ASCII 转换。转换。(7 7)字符型)字符型 (二进制二进制)(CharacterBinaryCharacterBinary)(8 8)备注型)备注型 (二进制二进制)(MemoBinaryMemoBinary)(9 9)变体型()变体型(VariantVariant)变体型可以包含除固定长度串以外的任意变体型可以包含
12、除固定长度串以外的任意 Visual FoxPro Visual FoxPro 数据类型,也可是特殊值数据类型,也可是特殊值 EmptyEmpty,Error Error 和和 NULLNULL。一旦一。一旦一个值保存在变体中,变体型的数据类型就是它所包含的值的数据类型,大个值保存在变体中,变体型的数据类型就是它所包含的值的数据类型,大小与相应的类型一致。小与相应的类型一致。2022-8-592.1 数据描述和数据类型数据描述和数据类型 2.2.内存变量内存变量 内存变量是内存中的一个存储单元,独立于数据表文件。内存变量是内存变量是内存中的一个存储单元,独立于数据表文件。内存变量是独立于数据表
13、文件而存在的变量,用来存储数据处理过程中所需要的常数、独立于数据表文件而存在的变量,用来存储数据处理过程中所需要的常数、中间结果和最终结果。中间结果和最终结果。(1)(1)内存变量的赋值内存变量的赋值 内存变量是由赋值语句定义的,给内存变量赋值内存变量是由赋值语句定义的,给内存变量赋值的常用命令有的常用命令有“=”=”、STORESTORE、INPUTINPUT、WAITWAIT、ACCEPTACCEPT等。内存变量的数据类等。内存变量的数据类型取决于赋值数据的类型,共分为六种类型:即字符型型取决于赋值数据的类型,共分为六种类型:即字符型(C)(C)、数值型、数值型(N)(N)、逻辑型逻辑型(
14、L)(L)、日期型、日期型(D)(D)、日期时间型、日期时间型(T)(T)和货币型和货币型(Y)Y)。格式格式1 1:=功能:定义单个内存变量功能:定义单个内存变量 示例:在命令窗口输入以下命令:示例:在命令窗口输入以下命令:a=”a=”你好你好”b=12.34 b=12.34 格式格式2 2:STORE STORE TO TO 功能:将表达式的值赋给多个内存变量功能:将表达式的值赋给多个内存变量 示例:示例:store 5store 5*6 to a,b,c 6 to a,b,c 2022-8-5102.1 数据描述和数据类型数据描述和数据类型 (2)(2)内存变量的显示内存变量的显示 可以
15、通过命令来显示目前已定义过的内存变量。可以通过命令来显示目前已定义过的内存变量。格式格式1 1:LIST/DISPLAY MEMORYLIKELIST/DISPLAY MEMORYLIKE TO PRINTERPROMPT/TO FILE TO PRINTERPROMPT/TO FILE 功能:功能:LISTLIST命令在屏幕上一次显示所有变量;命令在屏幕上一次显示所有变量;DISPLAYDISPLAY命令则分屏显示命令则分屏显示数据,按任一键显示下一屏;如果语句中包含数据,按任一键显示下一屏;如果语句中包含TO PRINTTO PRINT选项,则将结果输出选项,则将结果输出到打印机上。到打印
16、机上。(3)(3)内存变量的清除内存变量的清除 可用可用RELEASERELEASE命令清除内存变量数据,语法格式如命令清除内存变量数据,语法格式如下:下:格式:格式:RELEASEALL LIKE/EXCEPTRELEASEALL LIKE/EXCEPT 功能:如果语句中包含功能:如果语句中包含 ,则仅清除清单中指定的内存变量;,则仅清除清单中指定的内存变量;如果语句中包含如果语句中包含ALL LIKE|EXCEPTALL LIKE|EXCEPT,则按如下条件清除内存变量:,则按如下条件清除内存变量:ALL LIKE ALL LIKE:表示把符合结构中所指定条件的所有内存变量清除。:表示把符
17、合结构中所指定条件的所有内存变量清除。ALL EXCEPTALL EXCEPT:表示把符合结构中所指定条件以外的所有内存变:表示把符合结构中所指定条件以外的所有内存变量清除。量清除。2022-8-5112.1 数据描述和数据类型数据描述和数据类型 3.3.数组变量数组变量 数组是由一系列被称为元素的有序数据值构成,可以用序号引用这些数组是由一系列被称为元素的有序数据值构成,可以用序号引用这些元素,具有相同名称而下标不同。元素,具有相同名称而下标不同。(1)(1)数组的定义数组的定义 格式:格式:DECLARE/DIMENSION/PUBLICDECLARE/DIMENSION/PUBLIC1(
18、,下标下标22)2(,2)功能:定义一维或二维数组。数组的下标从功能:定义一维或二维数组。数组的下标从1 1开始。开始。(2 2)数组的使用)数组的使用 数组定义后,数组中每个元素就可以像内存变量一样使用。系统设定数组定义后,数组中每个元素就可以像内存变量一样使用。系统设定各数组元素的初始值为各数组元素的初始值为.F.F.,在执行赋值命令时,系统可以为各元素设定相,在执行赋值命令时,系统可以为各元素设定相应的类型,同一数组的不同元素,数据类型可以不一致。应的类型,同一数组的不同元素,数据类型可以不一致。2022-8-5122.1 数据描述和数据类型数据描述和数据类型 数组元素的赋值方法与内存变
19、量的赋值方法一样,常用数组元素的赋值方法与内存变量的赋值方法一样,常用STORESTORE命令命令赋初值。赋初值。格式:格式:STORE STORE TO TO =功能:给数组中每个元素赋以相同的值。功能:给数组中每个元素赋以相同的值。用用SCATTERSCATTER把字段变量的值赋给数组,把字段变量的值赋给数组,格式:格式:SCATTERFIELDSSCATTERFIELDSTOTO 功能:将当前数据库表文件的当前记录特定字段变量的值赋给一组变功能:将当前数据库表文件的当前记录特定字段变量的值赋给一组变量或数组中。数组变量的类型与字段的类型一致。量或数组中。数组变量的类型与字段的类型一致。2
20、022-8-5132.1 数据描述和数据类型数据描述和数据类型 用用COPY TO ARRAYCOPY TO ARRAY将当前选定表中的数据赋给数组。将当前选定表中的数据赋给数组。格式:格式:COPY TO ARRAY COPY TO ARRAY 功能:指定数组名,将当前选定表中的数据复制到该数组中。功能:指定数组名,将当前选定表中的数据复制到该数组中。用用GATHERGATHER命令来替换字段变量命令来替换字段变量 格式:格式:GATHER FROMGATHER FROMFIELDSFIELDS LIKE|EXCEPT LIKE|EXCEPTMEMOMEMO 说明:用数组元素的值顺序替换当前
21、数据库表文件的当前记录各字段说明:用数组元素的值顺序替换当前数据库表文件的当前记录各字段的值。的值。2022-8-5142.1 数据描述和数据类型数据描述和数据类型 4.4.系统变量系统变量 系统变量是由系统变量是由Visual FoxProVisual FoxPro系统内部提供的。该系统提供的系统变系统内部提供的。该系统提供的系统变量很多,部分变量如表量很多,部分变量如表2.12.1所示:所示:表表 2.1 2.1 系统变量的类型及应用说明系统变量的类型及应用说明系系 统统 变变 量量 变变 量量 说说 明明_SCREEN _SCREEN 指定指定 Visual FoxPro Windows
22、 Visual FoxPro Windows 主窗口的属性主窗口的属性_VFP _VFP 指向当前运行的指向当前运行的 Visual FoxPro Visual FoxPro 应用程序对象应用程序对象_PAGETOTAL _PAGETOTAL 在报表中设置在报表中设置 共共 Y Y 页第页第 X X 页页 页数页数_TEXT _TEXT 可以把文本合并命令的结果输出到低级文件中可以把文本合并命令的结果输出到低级文件中_DIARYDATE _DIARYDATE 默认存储当前日期默认存储当前日期_SHELL Visual FoxPro _SHELL Visual FoxPro 在执行程序时在执行程
23、序时 ,阻止访问命令窗口,阻止访问命令窗口2022-8-5152.1 数据描述和数据类型数据描述和数据类型2.1.3 2.1.3 变量作用域变量作用域 变量只有在运行应用程序时才会存在。所谓变量的作用域即某个变量变量只有在运行应用程序时才会存在。所谓变量的作用域即某个变量在应用程序中的有效作用区间。在应用程序中的有效作用区间。1.1.局部变量局部变量 格式:格式:LOCALLOCAL 功能:建立局部变量。功能:建立局部变量。2.2.私有变量私有变量 格式:格式:PRIVATE PRIVATE 功能:功能:PRIVATE PRIVATE 并不创建变量,它只在当前程序中隐藏变量,这些变并不创建变量
24、,它只在当前程序中隐藏变量,这些变量是在高层程序中声明的。量是在高层程序中声明的。3.3.全局变量全局变量 格式:格式:PUBLICPUBLIC 功能:指定一个或多个要初始化为或指定为全局变量的内存变量。功能:指定一个或多个要初始化为或指定为全局变量的内存变量。2022-8-5162.2 函函 数数 函数是预先编制的程序模块,可以实现某项功能或完成某种运算。函数是预先编制的程序模块,可以实现某项功能或完成某种运算。Visual FoxProVisual FoxPro的函数有两种:一种是系统的函数,一种是自定义函数。的函数有两种:一种是系统的函数,一种是自定义函数。函数调用的语法格式为:函数调用
25、的语法格式为:函数名(函数名(参数列表参数列表)2.2.12.2.1常用函数的使用常用函数的使用 1.1.字符函数字符函数 (1 1)求子串函数)求子串函数SUBSTRSUBSTR()、()、LEFTLEFT()、()、RIGHTRIGHT()()(2 2)宏代换函数)宏代换函数 (3 3)删除字符串前导空格函数)删除字符串前导空格函数LTRIM()LTRIM()(4 4)删除字符串尾部空格函数)删除字符串尾部空格函数RTRIM()/TRIM()RTRIM()/TRIM()(5 5)删除字符串前后空格函数)删除字符串前后空格函数ALLTRIM()ALLTRIM()(6 6)子串位置检索函数)子
26、串位置检索函数ATAT()()(7 7)字符串替换函数)字符串替换函数STUFF()STUFF()(8 8)产生重复字符函数)产生重复字符函数REPLICATE()REPLICATE()(9 9)求字符出现次数函数)求字符出现次数函数OCCURS()OCCURS()2022-8-5172.2 函函 数数 2.2.日期时间函数日期时间函数 (1 1)时间函数时间函数TIMETIME()()(2 2)日期函数)日期函数DATE()DATE()(3 3)年份函数)年份函数YEARYEAR()()(4 4)月份函数)月份函数MONTH()MONTH()(5 5)日期函数)日期函数DAY()DAY()3
27、.3.数值运算函数数值运算函数 (1 1)取整函数取整函数INTINT()、()、CEILINGCEILING()、()、FLOORFLOOR()()(2 2)取绝对值函数)取绝对值函数ABS()ABS()(3 3)四舍五入函数四舍五入函数ROUND()ROUND()(4 4)求余数函数求余数函数MODMOD()()(5 5)求最大值函数)求最大值函数MAXMAX()()(6 6)求平方根函数)求平方根函数SQRTSQRT()()(7 7)求指数函数)求指数函数EXPEXP()()(8 8)求对数函数)求对数函数LOGLOG()()2022-8-5182.2 函函 数数 4.4.逻辑函数逻辑函
28、数 逻辑函数主要用于对表达式进行测试判断,如果表达式为真时,则输逻辑函数主要用于对表达式进行测试判断,如果表达式为真时,则输出结果为出结果为.T.T.为假时,输出结果为为假时,输出结果为.F.F.。(1 1)判断表达式是否在上下限之间)判断表达式是否在上下限之间BETWEENBETWEEN()()(2 2)判断表达式是否为空)判断表达式是否为空EMPTY()EMPTY()(3 3)测试表达式类型)测试表达式类型TYPETYPE()()(4 4)快速表达式判断)快速表达式判断IIF()IIF()(5 5)判断表达式是否匹配)判断表达式是否匹配INLISTINLIST()()5.5.类型转换函数类
29、型转换函数 (1 1)大小写转换函数)大小写转换函数 (2 2)数值型转换成字符型函数)数值型转换成字符型函数 (3 3)字符型转换成数值函数)字符型转换成数值函数 (4 4)字符转换成日期型函数)字符转换成日期型函数 (5 5)日期型转换成字符型函数)日期型转换成字符型函数2022-8-5192.2 函函 数数 2.2.2 2.2.2 用户自定义函数用户自定义函数 用户自定义函数是由用户建立、可返回值的代码,包括过程和函数等。用户自定义函数是由用户建立、可返回值的代码,包括过程和函数等。1.1.用户自定义过程用户自定义过程 Visual FoxProVisual FoxPro中,过程的语法格
30、式是:中,过程的语法格式是:PROCEDUREPROCEDURE LPARAMETERS LPARAMETERS变量变量11,变量,变量22,.COMMAND COMMAND RETURN RETURN 表达式表达式 ENDPROC ENDPROC 2.2.用户自定义函数用户自定义函数 函数的基本语法格式如下:函数的基本语法格式如下:FUNCTION FUNCTION LPARAMETERS LPARAMETERS变量变量11,变量,变量22,.COMMAND COMMAND RETURN RETURN 表达式表达式 ENDFUNC ENDFUNC2022-8-5202.3 运算符和表达式运算
31、符和表达式 2.3.1 2.3.1 算术运算符和表达式算术运算符和表达式 1.1.算术运算符算术运算符 算术运算符对表达式进行算术运算,产生数值型、货币型等结果。它算术运算符对表达式进行算术运算,产生数值型、货币型等结果。它包括以下六种运算符:包括以下六种运算符:+加法运算加法运算 -减法运算减法运算 *乘法运算乘法运算 /除法运算除法运算 *或或 乘方运算乘方运算 ()优先运算符()优先运算符 2.2.运算规则运算规则 表达式的主要运算规则如下:表达式的主要运算规则如下:各运算符运算的优先顺序与一般的算术规则相同。各运算符运算的优先顺序与一般的算术规则相同。先乘除,后加减,乘方优先于乘除,函
32、数优先于乘方,圆括号的先乘除,后加减,乘方优先于乘除,函数优先于乘方,圆括号的优先级别最高。优先级别最高。同级运算时,从左至右依次运算。同级运算时,从左至右依次运算。3.3.书写规则书写规则 表达式的主要书写规则如下:表达式的主要书写规则如下:表达式的字符须写在同一水平线上,每个字符占一格;表达式的字符须写在同一水平线上,每个字符占一格;表达式中涉及的常量表示、变量命名以及引用的函数要符合表达式中涉及的常量表示、变量命名以及引用的函数要符合Visual Visual FoxProFoxPro的规定,以利于程序的识别;的规定,以利于程序的识别;合理应用各运算符,保证运算顺序的正确性。合理应用各运
33、算符,保证运算顺序的正确性。2022-8-5212.3 运算符和表达式运算符和表达式 2.3.2 2.3.2 字符串运算符和表达式字符串运算符和表达式 字符运算符用来对两个字符型数据进行包含及连接运算。字符运算符用来对两个字符型数据进行包含及连接运算。(1 1)$包含运算符。用于表示两个字符串之间的包含与被包含的关包含运算符。用于表示两个字符串之间的包含与被包含的关系。参与运算的数据只能是字符型的,结果是逻辑值。系。参与运算的数据只能是字符型的,结果是逻辑值。格式:格式:$2 功能:如果功能:如果 1被包含在被包含在 2中时其结果为真(中时其结果为真(.T.T.),),否则为假否则为假(.(.
34、F.)F.)。(2 2)+字符串连接运算符。该运算符是完全连接运算符,用于字符串连接运算符。该运算符是完全连接运算符,用于把把两个或两个以两个或两个以上字符串连接成一个新的字符串。上字符串连接成一个新的字符串。(3 3)压缩空格运算符。该运算符是不完全连接运算符,先去掉)压缩空格运算符。该运算符是不完全连接运算符,先去掉第一个字符串后部的空格,再连接两个字符表达式,第一个字符串后部的空格,再连接两个字符表达式,并把字符串并把字符串1 1末尾的空末尾的空格放到新生成字符串的尾部。格放到新生成字符串的尾部。2022-8-5222.3 运算符和表达式运算符和表达式 2.3.3 2.3.3 日期和时间
35、运算符及表达式日期和时间运算符及表达式 日期和时间表达式是指含有日期型或日期时间型数据的表达式,返回日期和时间表达式是指含有日期型或日期时间型数据的表达式,返回日期时间型常量。其运算符只有日期时间型常量。其运算符只有“+”+”和和“-”-”两种,共两种,共6 6种语法格式。格式种语法格式。格式如下:如下:格式格式1 1:+功能:结果是将来的某个日期。功能:结果是将来的某个日期。格式格式2 2:-功能:结果是过去的某个日期。功能:结果是过去的某个日期。格式格式3 3:-2 功能:结果是两个日期之间相差的天数。功能:结果是两个日期之间相差的天数。格式格式4 4:+功能:结果是若干秒后的某个日期时间
36、。功能:结果是若干秒后的某个日期时间。格式格式5 5:-功能:结果是若干秒前的某个日期时间。功能:结果是若干秒前的某个日期时间。格式格式6 6:-2 功能:结果是两个日期之间相差的秒数。功能:结果是两个日期之间相差的秒数。2022-8-5232.3 运算符和表达式运算符和表达式 2.3.4 2.3.4 逻辑运算符和表达式逻辑运算符和表达式 逻辑运算符对一个或两个逻辑型表达式进行逻辑运算,返回逻辑逻辑运算符对一个或两个逻辑型表达式进行逻辑运算,返回逻辑型常量。它包括四种运算符:型常量。它包括四种运算符:.AND.AND.逻辑与逻辑与 .OR.OR.逻辑或()逻辑或()括号括号 .NOT.NOT.
37、逻辑非逻辑非 !逻辑非!逻辑非 运算规则:运算规则:括号最优先,其次逻辑非优于逻辑与,逻辑与优于逻辑或;括号最优先,其次逻辑非优于逻辑与,逻辑与优于逻辑或;逻辑运算符和算术运算符一样都可以使用括号来改变操作运算的逻辑运算符和算术运算符一样都可以使用括号来改变操作运算的先后顺序先后顺序 逻辑表达式实际上是一种判断条件,条件成立则表达式值逻辑表达式实际上是一种判断条件,条件成立则表达式值为为 .T.T.;条件不成立则表达式值为;条件不成立则表达式值为 .F.F.。.NOT.NOT.对运算的逻辑表达式取相反值;对运算的逻辑表达式取相反值;.OR.OR.连接的两个逻辑表达式的值只要有一个为连接的两个逻
38、辑表达式的值只要有一个为.,结果就为,结果就为.,只有两个值都为,只有两个值都为.F.F.,结果才为,结果才为.;.AND.AND.则要两个逻辑值同时正时结果才为则要两个逻辑值同时正时结果才为.T.T.,否则为,否则为.F.F.。2022-8-5242.4 VFP命令的一般格式2.4.1 2.4.1 命令的一般格式命令的一般格式 命令通常由两部分组成:第一部分是命令动词,表示应该执行的操作;命令通常由两部分组成:第一部分是命令动词,表示应该执行的操作;第二部分是若干短语,对操作提供某些限制性的说明。下面列出第二部分是若干短语,对操作提供某些限制性的说明。下面列出Visual Visual Fo
39、xProFoxPro操作命令的一般语法格式:操作命令的一般语法格式:命令动词命令动词FORFORWHILEWHILETO FILETO FILE/T O P R I N T E R/T O A R R A Y /T O P R I N T E R/T O A R R A Y /T O /T O ALLLIKE/EXCEPTALLLIKE/EXCEPTININ 命令动词是个英文动词,表示这个命令所要完成的操作。命令动词是个英文动词,表示这个命令所要完成的操作。表示对数据库表文件进行操作的记录范围表示对数据库表文件进行操作的记录范围 表达式可以是一个或多个由逗号分隔开的表达式,用来表示命令所表达式
40、可以是一个或多个由逗号分隔开的表达式,用来表示命令所进行操作的结果参数进行操作的结果参数 FORFOR 和和WHILEWHILE 在在FORFOR短语和短语和WHILEWHILE短语中短语中 是一个逻是一个逻辑表达,它的值必须为真辑表达,它的值必须为真(.T.)(.T.)或假或假(.(.F.)F.)2022-8-5252.4 VFP命令的一般格式2.4.2 2.4.2 命令的书写规则命令的书写规则 (1 1)任何一条命令必须以命令动词开头。后面的多个短语通常与顺序任何一条命令必须以命令动词开头。后面的多个短语通常与顺序无关,但是必须符合命令格式的规定。一行只能写一条命令,以回车表示无关,但是必
41、须符合命令格式的规定。一行只能写一条命令,以回车表示结束。结束。(2 2)用空格来分隔每条命令中的各个短语,如果两个短语之间有其它)用空格来分隔每条命令中的各个短语,如果两个短语之间有其它分界符,则空格可以省略。分界符,则空格可以省略。(3 3)一条命令的最大长度是一条命令的最大长度是254254个字符。一行写不下时。用续行符个字符。一行写不下时。用续行符“;”;”在行末进行分行,并在下行连续书写。在行末进行分行,并在下行连续书写。(4 4)命令中的英文字母大小写可以混合使用。)命令中的英文字母大小写可以混合使用。(5 5)命令动词和子句中的短语可以用其前四个字母缩写表示。命令动词和子句中的短
42、语可以用其前四个字母缩写表示。(6 6)Microsoft Visual FoxPro 8.0 Microsoft Visual FoxPro 8.0 中的保留字包括函数,系统内存中的保留字包括函数,系统内存变量,属性,事件,方法,命令,菜单常数和子句。变量,属性,事件,方法,命令,菜单常数和子句。用户在选择变量名、字段名和文件名时,应尽可能不使用系统中的命用户在选择变量名、字段名和文件名时,应尽可能不使用系统中的命令动词和命令字,以免程序在运行中产生语法错误。不能用操作系统所规令动词和命令字,以免程序在运行中产生语法错误。不能用操作系统所规定的输出设备名作为文件名,也不能用定的输出设备名作为
43、文件名,也不能用A A到到J J之间的单个字母作表名,以免之间的单个字母作表名,以免与工作区名称冲突。与工作区名称冲突。2022-8-5262.4 VFP命令的一般格式2.4.3 2.4.3 命令的运行方式命令的运行方式 Visual FoxProVisual FoxPro有两种运行方式:命令方式和程序方式。有两种运行方式:命令方式和程序方式。1.1.命令方式命令方式 命令方式即在命令方式即在Visual FoxProVisual FoxPro的命令窗口中键入命令行,按回车键立即的命令窗口中键入命令行,按回车键立即执行,系统的主窗口区马上会显示执行的结果。执行,系统的主窗口区马上会显示执行的结
44、果。命令方式一般都在命令方式一般都在VFPVFP的命令窗口中进行的。的命令窗口中进行的。2.2.程序方式程序方式 程序方式先要通过命令程序方式先要通过命令MODIFY COMMAND MODIFY COMMAND 建立特定的命令建立特定的命令文件。建立时逐行键入命令行,然后存人磁盘,由用户指定命令文件名,文件。建立时逐行键入命令行,然后存人磁盘,由用户指定命令文件名,系统默认的扩展名是系统默认的扩展名是PRGPRG,然后由,然后由DODO命令执行。命令执行。格式:格式:DO DO 功能:这种方式调用程序文件,系统将自动执行这一文件,将用户繁功能:这种方式调用程序文件,系统将自动执行这一文件,将
45、用户繁琐的介入减到最少。程序执行方式运行效率高,可以重复执行。琐的介入减到最少。程序执行方式运行效率高,可以重复执行。2022-8-5272.4 VFP命令的一般格式2.4.4 2.4.4 赋值命令赋值命令STORESTORE 在在程序中如果要使用变量,则必须在使用之前为变量设定一个初始值程序中如果要使用变量,则必须在使用之前为变量设定一个初始值或改变它的现行值。赋值语句可以将指定的值赋给内存变量或对象的某个或改变它的现行值。赋值语句可以将指定的值赋给内存变量或对象的某个属性。属性。格式:格式:STORE STORE TOTO/功能:功能:赋值命令赋值命令STORESTORE的主要是给内存变量
46、赋值,多个变量名之间通的主要是给内存变量赋值,多个变量名之间通过逗号隔开。具体功能如下:过逗号隔开。具体功能如下:建立建立内存内存变量,并给内存变量变量,并给内存变量/数组赋初值。数组赋初值。为已建立的内存变量为已建立的内存变量/数组重新赋值。数组重新赋值。STORESTORE会用新值替换旧值。会用新值替换旧值。给一个变量或数组赋值时,可以用给一个变量或数组赋值时,可以用“=”=”可以代替可以代替STORESTORE命令,简写命令,简写为:为:/对日期型内存变量赋值时,如果对日期型内存变量赋值时,如果 是日期型常量,则必须用是日期型常量,则必须用花括号花括号“”括起来并在前面加上一个符号括起来
47、并在前面加上一个符号()(),如果,如果 是字符串,是字符串,则必须用转换函数将其换为日期型。则必须用转换函数将其换为日期型。示例示例:today=2005/12/06today=2005/12/06 today=CTOD(“12/06/2005”)today=CTOD(“12/06/2005”)2022-8-5282.4 VFP命令的一般格式2.4.5 2.4.5 显示命令显示命令 格式:格式:?FUNCTION FUNCTION 参数参数FONTFONT字体名字体名,字体大,字体大小小 功能:在屏幕上显示表达式的内容。功能:在屏幕上显示表达式的内容。参数说明:参数说明:?表达式:用于对表达
48、式进行计算,然后新起一行显示计算结果,表达式:用于对表达式进行计算,然后新起一行显示计算结果,计算结果显示在计算结果显示在 Visual FoxPro Visual FoxPro 主窗口或者活动的用户自定义窗口的下一主窗口或者活动的用户自定义窗口的下一行;行;?表达式:结果显示在表达式:结果显示在 Visual FoxPro Visual FoxPro 主窗口、活动的用户定义窗主窗口、活动的用户定义窗口或者打印机当前行的当前位置上。不换行而接着当前行直接输出。计算口或者打印机当前行的当前位置上。不换行而接着当前行直接输出。计算并显示变量、表达式和常量的值并显示变量、表达式和常量的值 当?命令后
49、面没有任何表达式时,输出一个空行;当?命令后面没有任何表达式时,输出一个空行;该该命令命令后可以跟多行参数,有后可以跟多行参数,有PICTUREPICTURE参数、参数、V V参数、参数、ATAT参数、参数、FONTFONT参参数、数、STYLESTYLE参数参数等。等。2022-8-5292.5 程序的结构化设计程序的结构化设计 2.5.12.5.1命令文件的建立和运行命令文件的建立和运行 1.1.利用命令语句建立程序利用命令语句建立程序 Visual FoxPro 8.0Visual FoxPro 8.0程序是包含一系列命令语句的文件,在程序是包含一系列命令语句的文件,在Visual Vi
50、sual FoxPro 8.0FoxPro 8.0中通过命令窗口建立程序的格式如下:中通过命令窗口建立程序的格式如下:格式:格式:MODIFY COMMAND MODIFY COMMAND 2.2.运行程序运行程序 Visual FoxPro 8.0Visual FoxPro 8.0中运行程序可以采用命令方式。中运行程序可以采用命令方式。格式:格式:DO DO 功能:系统将执行扩展名为功能:系统将执行扩展名为.FXP.FXP或或.PRG.PRG的程序。的程序。3.3.打开程序打开程序 当程序已经建立好后,有时还需要打开程序对某些功能进行调试和修当程序已经建立好后,有时还需要打开程序对某些功能进