整理VisualFoxPro的语言基础.docx
- 文档编号:27530313
- 上传时间:2023-07-02
- 格式:DOCX
- 页数:29
- 大小:35.56KB
整理VisualFoxPro的语言基础.docx
《整理VisualFoxPro的语言基础.docx》由会员分享,可在线阅读,更多相关《整理VisualFoxPro的语言基础.docx(29页珍藏版)》请在冰豆网上搜索。
整理VisualFoxPro的语言基础
VisualFoxPro的语言基础
利用VisualFoxPro6.0进行数据库管理,不仅需要学会利用菜单和工具进行操作,而且还应掌握VisualFoxPro语言,学会命令操作和程序操作。
与其他计算机高级语言一样,VisualFoxPro语言基础也涉及了诸如数据类型、常量、变量、数组、运算符、表达式和函数等基本概念。
3.1 数据类型、常量、变量与数组
“数据”是信息的表现形式,是VisualFoxPro中处理的最基本对象。
数据是有类型的。
另外,数据在计算机系统中进行加工处理时,往往需要一个载体,以便暂时存储在内存中,这些载体就是常量、变量和数组。
3.1.1 数据类型
无论是VisualFoxPro表中的数据,还是命令或程序中的数据都是有型和值之分的。
型是数据的分类,而值则是数据的具体表示。
实际工作中所采集到的原始数据,通常需要进行加工处理,转换为对用户有用的信息,因此数据处理的第一步则是要对采集到的数据进行归类,选择恰当的类型来表示。
为了满足存储和处理数据的需要,VisualFoxPro提供了多种数据类型,其中最常用的有如下11种。
1. 字符型(Character)
字符型数据由字母、数字、字符、空格、符号和汉字构成,通常表示用于显示或打印的信息,如学生的姓名,家庭地址等。
字符型字段或变量的长度不能超过254个字节,每个英文字符占用一个字节,每个汉字占用两个字节。
2. 数值型(Numeric)
数值型数据由数字0~9以及小数点、正负号和E组成。
数值型的长度不超过20个字节,其中负号和小数点各占一位。
数值型数值可以进行加、减、乘、除和乘方等算术运算。
数值型数据在表中存储时占用1~20个字节,在内存中存储时占用8个字节。
3. 整型(Integer)
整型用于对整数的表示,仅适用于字段的定义。
整型数据存储时占用4个字节,且以二进制形式存储。
4. 浮点型(Float)
浮点型与数值型是完全等价的,主要是为了和不同版本的FoxPro兼容所设。
5. 双精度型(Double)
与一般的数值类型相比,双精度型提供了更高的数值精度,用于对数值精度要求较高的场合,存储位数固定(16位有效数字),但只用于字段的定义,双精度型数据存储时占用8个字节。
6.货币型(Currency)
货币型用于表示货币金额,小数位固定为4位,若超过4位,系统会自动对其进行舍入处理。
系统默认的货币符号为“$”。
可以通过“SetCurrency”命令设置货币符号。
货币型数据存储时占用8个字节。
7.逻辑型(Logical)
逻辑型数据只有两个数据值:
逻辑真(.T.)和逻辑假(.F.),多用于表示逻辑判断结果,逻辑型数据存储时占用1个字节。
8.日期型(Date)
日期类型用于存储日期数据,其存储格式为“YYYYMMDD”,占8个字节。
显示格式有多种,常用的为“MM/DD/YY”,受“SetDate”、“SetMark”和“SetCentury”等设置命令所作设定的影响。
日期型数据的有效范围从公元1年1月1日到公元9999年12月31日。
9.日期时间型(DateTime)
日期时间型表示既包含日期又包含时间的数据,由年、月、日、时、分、秒组成,存储时占用8个字节。
日期时间型数据的有效范围从公元1年1月1日0时0分0秒到公元9999年12月31日23时59分59秒。
10.备注型(Memo)
备注型只适用于表中的字段,存储时备注字段数据宽度固定为4个字节,用来表示一个指向存储备注文件(.FPT)内容的指针,而实际的备注内容存放在.FPT文件中。
一般来说,表中的备注型字段多用来存放简历、注释等不定长的内容。
11.通用型(General)
通用型用于存储OLE对象,仅适用于表中的字段,固定宽度为4个字节。
通用型字段中,包含了对OLE对象的引用,而一个OLE对象的内容则可以是一个电子表格、声音、图片等。
这些OLE对象由相应的应用软件建立。
数据类型是VisualFoxPro中一个非常重要的概念,它决定了表中字段或程序中内存变量、数组变量取值的类型、取值范围、能参与的运算以及存储时所占用的空间等。
另外,有些数据类型既可用在表中,也可用在程序或命令中,但有些类型只能用在表中。
3.1.2常量
常量是指命令操作或程序执行过程中,其值和类型保持不变的量。
VisualFoxPro6.0中支持六种类型的常量:
数值型(N)、字符型(C)、逻辑型(L)、日期型(D)、日期时间型(T)和货币型(Y)。
注意:
在命令或程序中,不同类型的常量有不同的书写格式。
1. 数值型常量
由整数、小数或科学记数法表示的数都是数值型常量。
例如100、-88、3.14159、1.23E6、2.34E-4等都是数值型常量。
应当注意的是,日常用到的百分比数(如10%)、含千分位数(如10,000)、分数(如1/2)等都不是数值型常量。
2. 字符型常量
字符型常量是用定界符括起来的字符串或空字符串。
定界符可以是一对单引号(')或一对双引号(")或一对中括号([]),定界符必须是西文半角字符,定界符括起来的字符串中不能再包括相同的定界符。
若定界符本身是字符串中的字符,则必须采用另外一种定界符界定字符串常量。
例如,”FoxPro”、’数据库’、[青岛大学]等都是合法的字符型常量。
’I’mwrong’是非法的字符型常量。
空字符串是指一对定界符之间无任何字符的常量,如’’、””、[]等。
3. 逻辑型常量
逻辑型常量只有两个值:
真和假。
其中,表示真的有.T.、.t.、.Y.、.y.四种表示方法,表示假的有.F.、.f.、.N.、.n.四种表示方法。
应当注意的是,逻辑型常量两边的句点是西文半角字符,并且不能缺少。
4. 日期型常量
日期型常量表示日期,默认格式是:
{^yyyy-mm-dd}或{^yyyy/mm/dd},其中{}、^、-(或/)为西文半角字符。
表示确定日期时,{}、^、-(或/)不能缺省,yyyy表示年份,必须4位,mm表示月份,可1位也可2位,dd表示日,可1位也可2位。
例如,{^2003-2-26}和{^2003/2/26}是日期型常量,都表示2003年2月26日,而{2003-2-26}则不是日期型常量。
表示空日期的常量有:
{}、{}、{/}。
5. 日期时间型常量
日期时间型常量表示既有日期又有时间的日期时间类型数据,默认格式是为{^yyyy-mm-dd[,][hh[:
mm[:
ss]][a|p|am|pm]]}或{^yyyy/mm/dd[,][hh[:
mm[:
ss]][a|p|am|pm]]}。
其中,{}、^、-(或/)等均为西文半角字符,方括号“[]”表示所括起来的内容可有可无,竖线“|”表示用其分隔的项只能从中选择一个,如果日期和时间之间没有逗号,它们之间必须用空格分开,a或am表示上午,p或pm表示下午,有a或p或am或pm时,hh只能从0到12,否则从0到24。
表示空日期时间的常量是{/:
}。
例如,{^2003-2-26,10:
5:
10}表示2003年2月26日上午10点5分10秒,{^2003-2-2610:
5p}表示2003年2月26日晚上10点5分。
6. 货币型常量
货币型常量以$开头,后面是整数或小数,但不能是用科学计数法表示的数,小数部分如果超过4位,则四舍五入取4位小数。
例如,$123,$12345.6,$12345.6789都是合法的货币型常量。
3.1.3 变量
与其他的计算机语言一样,VisualFoxPro中也有变量,用变量来保存命令操作或程序执行过程中其值改变的数据。
VisualFoxPro中,变量分为内存变量、字段变量、数组变量、系统变量和对象变量5种。
计算机中变量的概念与数学中变量的含义并不完全相同。
数学中的变量隐含了“未知”的因素,而计算机中的变量是指该量在程序执行的整个过程中其值是可以改变的,但在每一瞬时、每一具体运算过程中,其值则是确定的。
1. 内存变量
VisualFoxPro内存变量经常出现在程序或命令中,用于保存程序执行过程中的中间结果与最终结果,或用于保存对数据库进行某种分析处理后的结果。
内存变量也有类型和值的概念。
类型取决于当前所存放的数据的类型,不必像其他计算机语言那样需说明其类型,而变量的值则是指所存放数据的值。
(1)内存变量名
程序或命令中往往会用到多个内存变量,为了区分不同的变量,因此需要给每一个变量起一个固定名称。
实际上,计算机中的每一个变量系统都为其在内存中分配了相应的存储单元,用于保存变量中的数据。
通过内存变量的名称来标记和引用相应的存储单元。
无论是给变量赋值还是使用变量中的数据,从根本上是对变量所对应的内存单元中的数据进行操作。
内存变量的变量名称(变量名)往往需要用户自己指定,而且在VisualFoxPro中变量的命名需要遵循一定的规则,其规则如下:
①由字母、汉字或下划线开头,后跟字母、汉字、数字或下划线等。
②长度不能超过128个字符。
③变量名中不区分字母的大小写。
例如,x1、姓名、Page_Head等都是合法的变量名,而2a、m%n等则是非法的变量名。
建议在给内存变量命名时变量的第一个字符标记该变量的数据类型,一般采用小写的类型标记字母,例如“nVal1”;变量的其余标记字母标记该变量的含义,尽可能做到“见名知义”,例如“cName”。
(2)建立内存变量
程序或命令中若使用内存变量,则首先需要给内存变量赋值,否则会出现提示信息“内存变量没有找到!
”。
VisualFoxPro6.0中,当用户在程序或命令窗口中第一次给一个内存变量赋值时,也就定义了该变量,变量的类型就是被赋值数据的类型。
给已定义的变量可以再赋值,值的类型可以与原来相同,也可以不同,变量的类型就是其保存值的类型。
VisualFoxPro提供了多种命令或语句定义内存变量和给内存变量赋值,常用的赋值命令有如下两种格式:
【格式1】 <变量名>= <表达式>
【功能】首先计算出表达式的值,然后将结果放到“=”左边的内存变量中
【例】 nSum=12*3 &&将36赋给变量nSum,nSum为数值型变量
cNumber=”编号” &&将”编号”赋给变量cNumber
注意:
上述两条命令定义了两个变量,其中&&后面的内容是注释。
注释对命令的执行不产生影响,可有可无。
赋值语句中的“=”要理解为赋值号,而不应理解为数学中的等号。
例如A=A+1,如果按数学中的等号来理解是不能成立的,而应理解为将变量A的值加上1,然后再放到变量A中。
【格式2】 STORE <表达式> TO <内存变量名表>
【功能】将表达式的值赋给内存变量名表中每个变量。
【例】STORE 3*6 TO A1,A2 &&把18分别赋给变量A1,A2
两种赋值格式的差别在于:
格式1一次只能给一个变量赋值,而格式2则一次能向多个变量中赋值,但只能赋相同的值。
注意:
变量名表中若包含了多个变量名,则不同变量名之间用“,”号分隔。
(3)引用内存变量
变量的引用是指变量的使用。
变量是通过变量名来引用的,变量必须定义后才能引用,否则就出错。
【例】 nSum=5 &&将5赋给变量nSum
nSum=nSum+1 &&将nSum中原有的值5加上1再存入nSum中
(3)输出内存变量
若需要在程序或命令中输出已定义变量的内容,可按如下的命令格式进行:
【格式】 ?
<变量名表>
【功能】依次在系统工作区窗口中输出变量名表中各个变量当前的值。
【例】STORE 3*6 TO A1,A2 &&把18分别赋给变量A1,A2
cName=”汪圆”
?
cName,A1,A2
2. 系统变量
系统变量是VisualFoxPro自动定义生成和维护的变量。
变量的名称是系统已经定义好的,以“_”(下划线)开头,因此在给普通内存变量命名时,最好不要以“_”字符开头,以避免重名。
3. 字段变量
字段变量是数据库管理系统中的一个重要概念。
关系数据库中,一个数据库往往由若干个相关的数据表组成,而一个数据表由若干条记录组成,每条记录又是由若干个字段组成的。
字段变量是指数据表中已定义的任意一个字段。
可以这样理解:
在一个数据表中,同一个字段名下有若干个数据项,而数据项的值取决于该数据项所在记录行的变化,所以称之为字段变量。
字段变量随着所在数据表的打开自动产生,并随着数据表的关闭而消失。
字段变量的数据类型由建立数据表时指定,与该字段定义的类型一致,因此其类型可为数值型、字符型、逻辑型、日期型、日期时间型、浮点型、整型、双精度型、备注型和通用型等。
若要使用字段变量,则首先打开字段变量所在的数据表,而数据表的建立则是在系统提供的表设计器中进行的,建立数据表时首先定义的是字段变量的属性,如字段名、类型和宽度等。
如果内存变量名与字段变量同名,在引用时,系统优先使用字段变量,若要特指内存变量,可加上前缀“M.”或“M->”。
【例】假定当前内存变量和字段变量名都为stuname,则:
?
stuname &&显示字段变量的值
?
M.stuname &&显示内存变量的值
?
M->stuname &&显示内存变量的值
3.1.4 数组
数组是指一组按照一定顺序排列的内存变量,其中的每个内存变量称为数组元素。
数组元素由数组名及其用于在数组中表示排列位置的下标来表示。
例如,含有3个元素的数组a,其3个数组元素是a
(1)、a
(2)、a(3)。
数组下标的个数(而非数组元素的个数)称为数组的维数,VisualFoxPro6.0只支持一维和二维数组。
1. 数组的定义
数组必须先定义后使用,定义数组的命令格式是:
【格式1】DECLARE<数组名1>(下标1[,下标2])[,<数组名2>(下标1[,下标2])……]
【格式2】DIMENSION<数组名1>(下标1[,下标2])[,<数组名2>(下标1[,下标2])……]
【功能】定义一个或多个一维或二维数组。
【说明】
①数组名的命名规则与简单内存变量一样,但应注意不要与已经存在的简单内存变量重名。
②下标为数值表达式,用来确定数组中元素的数目。
引用数组元素时,数组的下标从1开始。
③数组名后面的括号既可以用圆括号“()”,也可以用方括号“[]”
【例】 DECLARE A(10),B[20] &&定义了两个一维数组
DIMENSION C(3,4) &&定义了一个二维数组
2. 数组的赋值
数组被定义了以后,系统为每一个数组元素赋了一个初值.F.。
若要改变数组元素的值,可以使用赋值命令。
给数组赋值的赋值命令与简单变量类似。
【格式1】 STORE <表达式> TO 数组名
【功能】给整个数组赋同一个表达式的值。
【例】 DECLARE A(5)
STORE 5 TO A &&将5赋给数组A中的每个元素
【格式2】 数组名(下标1[,下标2])=表达式
【功能】给指定数组元素赋值。
【说明】在VisualFoxPro6.0中,一个数组中的数据不必是同一种数据类型。
【例】 DECLARE B
(2)
B
(1)=201 &&B
(1)的类型为数值型
B
(2)=”张三” &&B
(2)的类型为字符型
3.2 运算符与表达式
表达式是VisualFoxPro中进行数据处理常用的手段,而表达式中的运算符则指定了参加运算的各种类型的数据完成哪种运算。
3.2.1 运算符
运算是对数据进行加工处理的过程,标记各种不同加工处理的符号称为运算符,参加运算的数据称为操作数。
根据操作数类型的不同,运算符可分为算术运算符、字符运算符、日期时间运算符、关系运算符、逻辑运算符等。
1. 算术运算符
算术运算符用于处理数值型数据,运算结果仍为数值型。
表3-1给出了算术运算符及其优先级。
若计算中包含有多个算术运算符时,运算规则是:
先乘方,后乘除,再加减;同一级别从左到右依次运算;如果有括号“()”,先计算括号内,后计算括号外。
例如,包含多种算术运算符的式子(13+5)/3^2*4,运算结果为8。
2. 字符运算符
字符运算符用于对字符型数据进行处理,运算结果为字符型或逻辑型。
字符运算符只有3个:
“+”、“-”和“$”,如表3-2所示。
3. 日期时间运算符
日期时间运算符对日期和日期时间型数据进行处理,日期(或日期时间)型数据加减一个整数,结果仍为日期(或日期时间)型,两个日期(或日期时间)型数据相减,结果为整数,如表3-3所示。
4. 关系运算符
关系运算符主要用来对两个同类型数据进行比较运算,运算结果为逻辑型,如表3-4所示。
关系运算符的有关注意事项如下:
①关系运算符左右两端的数据必须是相同类型的数据,否则将导致语法错误。
②数值型数据按其数值大小进行比较。
③字符型数据的大小由字符比较方式(详见2.4.3节)决定。
④日期、日期时间型数据的大小是:
日期早的其值小,日期晚的其值大。
5. 逻辑运算符
逻辑运算符用于进行逻辑型数据的处理,运算结果仍为逻辑型,表3-5给出了逻辑运算符及优先级。
表3-6给出了各种逻辑运算的规则。
3.2.2 表达式
所谓的表达式是指用VisualFoxPro运算符将若干运算量(常量、变量、数组元素、函数、字段名等)连接起来的“合法”的式子。
无论是在程序中还是在命令中,表达式具有运算功能,合法的表达式通过系统的计算会得到一个计算结果。
根据表达式所处理数据的类型,表达式分为数值表达式、字符表达式、日期表达式、日期时间表达式、逻辑表达式。
注意:
单个的常量、变量、数组元素和函数本身是最简单的表达式。
利用VisualFoxPro表达式进行数据处理时应注意以下几点:
(1)若在一个表达式中含有多种运算符,书写表达式时需要注意它们的优先顺序。
VisualFoxPro6.0运算符的优先顺序下所示:
算术运算符→字符运算符→比较运算符→逻辑运算符
(2)若同类型的多个运算符同时出现在表达式中,则遵循各自的优先规则;若优先规则相同,则按照其在表达式中出现的先后顺序从左到右依次进行。
(3)若需要改变表达式中运算符的优先顺序,则需要使用括号“()”。
括号内的运算总是优先于括号外的运算,括号之内的运算符优先顺序不变。
3.3 常用内部函数
为了满足用户对数据处理上的要求,VisualFoxpro提供了一系列的内部函数,极大地增强了系统的功能。
VisualFoxPro中的内部函数实际上是把数据处理过程中经常用到的一系列操作预先编制好的程序代码,随系统提供,供VisualFoxPro程序、表达式、命令中调用,极大地增强了系统的功能。
函数的一般形式如下所示:
函数名([<参数名1>][,<参数名2>]…[,<参数名n>])
每个函数必须有一个函数名,且函数名后面必须跟一对圆括号,括号中可以有0~n个参数。
函数根据用户所给定的参数,经过计算返回(得到)一个惟一的值,称为返回值。
VisualFoxPro6.0提供了大量的内部函数。
按功能可分为数值处理函数、字符处理函数、日期时间函数、类型转换函数和测试函数等类型。
3.3.1 数值处理函数
数值处理函数主要完成数值型数据的处理与计算,数值处理函数的返回值一般为数值型。
常用的数值函数有:
1.平方根函数SQRT()
【格式】SQRT(<数值表达式>)
【功能】首先计算数值表达式的值,然后求平方根并将其作为函数的返回值。
【说明】表达式的值必须为正数。
【例】?
SQRT(24-8)&&显示结果为:
4.00
2.取对值函数ABS()
【格式】ABS(<数值表达式>)
【功能】计算数值表达式的值并返回数值表达式的绝对值。
【例】A=10
B=30
?
ABS(2*A-B)&&显示结果为:
10
3.取整函数INT
【格式】INT(<数值表达式>)
【功能】计算数值表达式并返回数值表达式值的整数部分。
【例】?
INT(28.48*2)&&显示结果为:
56
?
INT(-56.98)&&显示结果为:
-56
4.四舍五入函数ROUND()
【格式】ROUND(<数值表达式>,<小数位数>)
【功能】按指定的小数位数对<数值表达式>的值进行四舍五入处理。
【说明】返回指定的<数值表达式>在指定位置四舍五入后的结果。
<小数位数>指定四舍五入的位置。
若<小数位数>大于等于0,那么它表示的是要保留的小数位数;若<小数位数>小于0,那么它表示的是整数部分的舍入位数。
【例】?
ROUND(1234.8654,2)&&显示结果为:
1234.87
?
ROUND(1234.8654,0)&&显示结果为:
1235
?
ROUND(1234.8654,-2)&&显示结果为:
1200
5. 取余函数MOD()
【格式】MOD(<数值表达式1>,<数值表达式2>)
【功能】返回两个数相除后的余数。
【说明】<数值表达式1>是被除数,<数值表达式2>是除数。
余数的正负号与除数相同。
若被除数与除数同号,则函数值即为两个数相除的余数;若被除数与除数异号,则函数值即为两个数相除的余数再加上除数的值。
【例】?
MOD(3*4,7)&&显示结果为:
5
?
MOD(7,-2)&&显示结果为:
-1
6. 圆周率函数PI()
【格式】PI()
【功能】返回圆周率π的值(数值型)。
【例】计算半径为2的圆面积:
?
2**2*PI()&&显示结果为:
12.5664
?
2^2*3.14&&显示结果为:
12.56
7.最大值函数MAX()
【格式】MAX(表达式1,表达式2,…,表达式n)
【功能】计算各表达式的值,并返回其中的最大值。
【说明】表达式1、表达式2、…类型可以是数值型(N)、日期型(D)或字符型(C),但所有表达式的类型必须相同。
【例】?
MAX(12,45,76,3)&&显示结果为:
76
?
MAX({^1999/12/01},{^1998/12/01})&&显示结果为:
12/01/99
?
MAX(“1”,“9”,”a”,“z”)&&显示结果为:
z
8.最小值函数MIN()
【格式】MIN(表达式1,表达式2,…,表达式N)
【功能】计算各表达式的值,并且返回表达式中的最小值。
【说明】表达式1、表达式2、…类型可以是数值型(N)、日期型(D)或字符型(C),但所有表达式的类型必须相同。
【例】?
MIN(12,45,76,3)&&显示结果为:
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 整理 VisualFoxPro 语言 基础