FoxPro+for+Windows程序设计第2章.ppt_第1页
FoxPro+for+Windows程序设计第2章.ppt_第2页
FoxPro+for+Windows程序设计第2章.ppt_第3页
FoxPro+for+Windows程序设计第2章.ppt_第4页
FoxPro+for+Windows程序设计第2章.ppt_第5页
已阅读5页,还剩41页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

2.1常量、变量、函数和表达式2.2FoxPro的命令结构及规则,第2章使用FoxPro的基础知识,返回主目录,第2章使用FoxPro的基础知识,2.1常量、变量、函数和表达式2.1.1常量在命令或程序语句中直接使用的数据叫做常量,程序中的常量在程序运行过程中,其值始终保持不变。为了使人和计算机能够区分常量的类型和宽度,有的常量需要加类型界定符。1.数值型常量数值型常量由数字、小数点和正负号组成,是能够进行算术运算的数据。数值型常量的整数部分和小数部分合起来最多能表示位有效数字。,1.数值型常量数值型常量由数字、小数点和正负号组成,是能够进行算术运算的数据。数值型常量的整数部分和小数部分合起来最多能表示位有效数字。数值型常量除了常规的表示方法外,还可以用“科学计数”法表示。科学计数法表示数值常量的一般格式是:尾数整数。其中,尾数是用常规方式表达的数值数据,整数相当于以为底的整数次方,正或负的整数决定了小数点在尾数中向左或向右移动的位数。例如:0.123456E4=1234.56123456E-4=12.3456,2.字符型常量字符型常量是由、或等符号界定起来的字符串。当上述某一种或两种界定符出现在字符串中时,应改用其它符号作为字符串的界定符。例如,abc123、abc123、abc123是三个相同的字符型常量。123.45、abc123、aaaa是正确的字符型常量。123.45、abc123、aaaa是错误的字符型常量。3.日期型常量日期型常量用花括号界定,年、月、日各用两位数字表示。其中的月、日应当是合理的位数,公元年号超过两位时只取末两位。空日期常量表示为/。,可以用日期格式设置命令改变日期格式。例如,在命令窗口打入并执行命令SETDATETOYMD之后,日期格式改变为年/月/日,这种格式符合我们的日期表达习惯。命令中的参数YMD还可以改写为MDY、DMY,它们分别对应月/日/年、日/月/年格式。在YMD格式下:99/01/01、99/1/1、1999/1/1是正确的日期常量。990101、99/13/35、99/01/01是错误的日期常量。目前销售的微机,其硬件系统已经用位数表示公元年号了,即硬件已经不存在“千年虫”问题了。早期推出的应用软件,例如FoxPro2.5bforWindows仍然沿用两位数字表示年号。但是,FoxPro2.5bforWindows提供了可以将公元年号设置为位表示的命令(即SETCENTURYON,将在第章介绍)。,4.逻辑型常量逻辑型常量只有两个,用于表达真和假。逻辑常量用圆点符界定,被界定的常量可以是:T、t、Y、y、F、f、N、n之一。其中,.T.、.t.、.Y.、.y.表示真值;.F.、.f.、.N.、.n.表示假值。,2.1.2变量为了识别和使用计算机中存储的数据,需要用标识符标记数据的存储区域,这样的标识符叫做变量名,简称变量。一个变量名既代表数据的存储区域,又代表该存储区域中存放的数据。由于存储区域中的数据是可以随时改变的,所以一个变量名所代表的数据也是可以变化的。向变量中存或从变量中取数据的原则是:从变量所代表的存储区域取数,不改变原来的存储内容;向变量所代表的存储区域存放数据,将取代原来存储的数据。FoxPro的变量可分为内存变量和字段变量。这里先介绍内存变量,下一章再介绍字段变量。内存变量不依赖于数据库文件,是独立存在于内存中的变量,使用时可临时定义。,内存变量不依赖于数据库文件,是独立存在于内存中的变量,使用时可临时定义。内存变量可用于存放常量、程序执行过程中的中间结果或最终结果,也可以作为控制变量控制程序的运行等。内存变量又分为用户内存变量和系统内存变量。系统内存变量是由系统定义并赋值的,用户内存变量是用户定义并赋值的。用字母打头的字母数字串作为用户内存变量的名称。如果构成内存变量名称的字符超过个半角字符,则只使用前个ASCII字符或前个汉字。因为系统内存变量的名称都是以下划线作为首字符的,所以用户命名的内存变量最好不以下划线为首字符。,内存变量有6种类型,分别为C型、N型、D型、L型、W型和S型。其中,W型内存变量是窗口型变量,待到介绍窗口技术(第章)时再作说明;S型内存变量是屏幕型变量,用于保存当前屏幕所显示的内容。不论在交互方式或程序方式下,经常要使用内存变量。为此,下面先介绍几个对内存变量进行操作的命令。1.内存变量的定义和存取内存变量数据的命令为内存变量指定名称和类型,叫做内存变量的定义。FoxPro的很多操作命令,都具有定义内存变量的功能。例如,下面就是两个定义内存变量并赋值的命令:,赋值命令:内存变量名=表达式存数命令:STORE表达式TO内存变量名表这两个命令的功能都是将表达式的值赋给内存变量。不同的是,赋值命令只能给一个变量赋值,而存数命令可以把一个表达式的值同时赋给多个变量。关于“表达式”的概念待后述,这里可以先把表达式理解为常量、内存变量或由常量和内存变量组成的式子。两条命令都给所使用的内存变量指定了名称,而内存变量的类型遵从表达式的数据类型。注意,赋值和数学中的等式是不同的概念,例如,是常见的一类赋值命令,但是如果把它理解成等式,那么不论取什么值,这个等式都是不能成立的。例如,在命令窗口依次打入下列命令,观察被赋值后的内存变量输出的内容。,专业=数学?专业班级=9501班?班级STORE张兰TO姓名?姓名STORE2TOa,b,c?2*a,b+c,说明:(1)?和?都是输出命令,其命令格式分别是:?输出项目表和?输出项目表其中?是换行输出命令,?是不换行输出命令。例如,在上例中,执行了换行输出命令:?专业回车和?班级回车之后,在屏幕上显示的输出内容“数学”和“9501班”各占一行;而执行了不换行输出命令?姓名回车之后,在前面已输出的“9501班”后面输出“张兰”。当表达式表中包含有多个表达式时,各表达式之间要用逗号分隔。(2)规定在算术运算中,用符号*表示乘号。,2.显示内存变量的命令显示内存变量的命令除了上面已经介绍过的?和?命令之外,还有两个能同时显示多个内存变量的命令,其命令格式分别是:LISTMEMOLIKE内存变量通配名TOPRINER/TOFILE文件名DISPLAYMEMOWBLIKE内存变量通配名TOPRINER|TOFILE文件名说明:(1)LISTMEMO是连续显示的,DISPLAYMEMO是分屏显示的。,(2)LIKE内存变量通配名表示可以用通配符号指定所要显示的内存变量名。通配符号有“?”和“*”,如果变量名称中某一个字符的位置上使用了通配符“?”,则该位置上不论是什么字符,都是本命令中所指定的变量;如果变量名称中使用了通配符“*”,则该位置上不论是什么字符,也不论是几个字符,都是本命令中所指定的变量。(3)TOPRINER|TOFILE文件名用于将显示的内存变量在打印机上打印出来或存入指定的磁盘文件。当选择TOFILE文件名时,则系统将会自动附加文件的扩展名.MEM。例如,下面的各条命令都是显示内存变量的命令:,例如,下面的各条命令都是显示内存变量的命令:STOR123TOa1,a2,a3,a4LISTMEMODISPLAYMEMOLISTMEMOLIKEa?DISPLAYMEMOLIKEa?LISTMEMOLIKEa*DISPLAYMEMOLIKEa*LISTMEMOTOFILEm1DISPLAYMEMOTOFILEm1上面最后一条命令将产生名为M1.MEM的磁盘文件。,3.将内存变量保存到磁盘文件的命令当退出FoxPro时,用户内存变量被清除。为了能“永久”保存内存变量,可以把需要保留的内存变量保存到磁盘的.MEM文件中。其保存命令是:SAVETO内存变量文件名ALLLIKE内存变量通配名例如:STORE123.0000TOa1,a2,a3,a4,a5(定义内存变量并赋值)SAVETOm1ALLLIKEa?(保存内存变量的命令)4.从.MEM文件中恢复内存变量的命令命令格式:RESTOREFROM内存变量文件名ADDI,选择ADDI,则保留当前用户内存变量,追加所恢复的内存变量。否则,当前用户内存变量被清除。例如,执行命令RESTOREFROMm1回车后,原来已经定义过(或者说使用过)的所有内存变量都被清除。5.删除指定的内存变量的命令命令格式一:RELEASE内存变量名1,命令格式二:RELEASEALLLIKE内存变量通配名例如:RELEASEa1,a2(删除内存变量a1、a2)RELEASEALLLIKEa?(删除首字符是a、第二个是任意字符的变量),6.有关屏幕型内存变量的命令(1)把当前屏幕显示内容存入型内存变量的命令:SAVESCREENTO内存变量名(2)用型内存变量恢复屏幕的命令:RESTORESCREENFROM内存变量名例如,启动FoxPro后,把启动屏幕存入内存变量S1,然后清除当前屏幕,再用内存变量S1恢复显示启动屏幕。为此,请依次打入命令:SAVESCREENTOS1CLEAR(这是一个清除当前屏幕显示内容的命令)RESTORESCREENFROMS1,2.1.3函数为方便用户,FoxPro提供了上百种标准函数(参见附录A)。这些函数为一些运算或检测系统状态提供了方便条件。函数的一般形式为:函数名(参数)函数名用于标明该函数的操作功能,参数相当于函数的自变量。每个函数都有一个返回值(即结果值),因此,函数也是一种具有一定类型的数据。使用函数时,函数的参数应当符合规定的类型,如果用户给定的参数类型不对,将会出现错误。FoxPro的标准函数按功能可分为:数值运算函数、字符串处理函数、日期和时间函数、数据类型转换函数、系统检测函数。一些函数的功能和用法将随时在有关命令中讲述,在第章还要集中介绍一部分常用函数。,这里仅列举几个函数应用的例子,读者参照下面一部分函数的应用举例,对附录A中其它函数的使用是会有所启发的。1.数值运算函数1)开平方函数SQRT(数值表达式)例如:?SQRT(16)(输出)2)取整函数INT(数值表达式)例如:?INT(15.98)(输出),2.字符串函数1)计算字符串长度的函数LEN(字符表达式)例如:?LEN(thisisabook.)(输出15)2)小写改大写的函数UPPER(字符表达式)例如:?UPPER(thisisabook.)(输出THISISABOOK.)3.日期和时间函数1)返回系统日期的函数DATE()例如:,?DATE()(输出计算机系统的日期)2)返回日期中公元年号的函数YEAR(日期表达式)例如:?YEAR(DATE()4.类型转换函数1)数值转换为字符串的函数STR(数值表达式,长度,小数位数)例如:?str(12.45,4,1)+公斤(输出12.5公斤)2)字符串转换为数值的函数VAL(字符表达式),?str(12.45,4,1)+公斤(输出12.5公斤)2)字符串转换为数值的函数VAL(字符表达式)例如:?VAL(12.5)+11.2(输出23.7)FoxPro还具有用户自定义函数的功能。自定义函数的定义和使用方法将在第章介绍。,2.1.4FoxPro表达式在FoxPro的命令中经常使用表达式,表达式是用运算符号把同一类型常量、变量或函数连接起来的有意义的式子。下面首先介绍表达式中所使用的运算符号。1.表达式中的运算符1)算术运算符算术运算符用于对数值型数据进行算术运算,其运算结果仍为数值型数据。下列符号为算术运算符:()分组优先运算符(一对圆括号),、正、负号*或乘方*、乘、除、求整除的余数、加、减当上述运算符同时出现在一个表达式中时,运算的优先顺序为。2)字符型数据运算符字符型数据运算符是把两个字符型数据连接成一个字符型数据的运算符,其操作对象和运算结果都是字符型数据。它包含以下两种运算符:(1)表示将两个字符型数据按原来的长度连接成一个字符串。,(1)表示将两个字符型数据按原来的长度连接成一个字符串。例如:?ABCD(注意第一个字符串的尾部有空格字符)屏幕显示:ABCD(连接后的字符串中保留了连接前的空格)(2)表示将前一个字符型数据的尾部空格先移到后一个字符型数据之后,再与后一个字符型数据连接。例如:?ABCD屏幕显示:ABCD(连接后的字符串为ABCD),屏幕显示:ABCD(连接后的字符串为ABCD)3)日期型数据运算符(1)表示两个日期型数据之间的减运算,其结果是两个日期型数据相差的天数。例如:?99/01/01-98/01/01屏幕显示:365?98/01/01-99/01/01屏幕显示:-365注意:两个日期型数据不能作加运算。,(2)、表示一个日期型数据和一个数值型数据的加、减运算,其结果是一个日期型数据。例如:?99/01/01+60屏幕显示:99-03-02?99/01/01-60屏幕显示:98-11-024)比较运算符比较运算符用于两个同类型表达式的比较运算,运算结果为逻辑型数据。比较运算符包括:大于=大于等于或不等于精确等于包含比较运算说明:(1)上述比较运算符中,、均适用于数值型数据、字符型数据及日期型数据的比较运算。对于字符型数据的比较运算是以字符的ASCII码值大小进行比较的,即被比较的两个字符串从左至右进行对位比较;对于日期型数据的比较运算是按日期的前后顺序进行比较的(早者日期小、晚者日期大)。,、两个运算符只能用于对字符型数据的比较运算。对于逻辑型数据只能使用、进行比较运算。(2)在对两个字符型数据作是否相等的比较运算时,系统提供了两种比较方式:精确比较与不精确比较。用于字符串的非精确比较。即只要“”右边的字符串与左边的字符的前若干个字符相同,则认为两个字符串相等。例如:?ABCDEAB屏幕显示:.T.?ABCDEBACDE屏幕显示:.F.,用于字符串的精确比较。即只有“”右边的字符串与左边的字符串完全相同,才认为两个字符串相等。例如:?abcde=ab屏幕显示:.F.(3)$是字符串的包含运算符。包含运算的书写格式为字符串$字符串。其功能是:字符串是否等于或被包含在字符串中。当等于或被包含时,结果值为.T.,否则为.F.。例如:?AB$DCABE,屏幕显示:.T.?GI$GHI屏幕显示:.F.比较运算符无优先次序,按比较运算符出现的先后顺序进行比较运算。5)逻辑运算符逻辑运算符用于对逻辑型数据的运算,运算结果仍为逻辑型数据,使用逻辑运算符可以把若干个比较运算表达式组合成复合条件表达式。逻辑运算符有如下三种:(1)NOT(逻辑非):用于对逻辑值进行否定运算。,例如:?NOT.T.屏幕显示:.F.?NOT.F.屏幕显示:.T.(2)AND(逻辑与):用于对两个逻辑值进行“与”运算。其运算规则为:只有二者都为真(.T.),运算结果值才为真(.T.)。例如:姓名李强班级95信息,?姓名李强.and.班级95信息屏幕显示:.T.?姓名李强.and.班级93信息屏幕显示:.F.?姓名张强.and.班级95信息屏幕显示:.F.(3)OR(逻辑或):用于对两个逻辑值进行“或”运算。其运算规则为:只要二者之中有一个为真(.T.),运算结果值即为真(.T.)。例如,接上例:?姓名李强.OR.班级93信息,屏幕显示:.T.?姓名张强.OR.班级95信息屏幕显示:.T.?姓名张强.OR.班级93信息屏幕显示:.F.逻辑运算符的优先顺序为:(1)(2)(3)。在同一个表达式中可以使用多种类型的运算符。当多种运算符出现在一个表达式中时,各类运算符之间的优先次序为:括号算术运算符或字符串连接运算符比较运算符逻辑运算符,2.FoxPro表达式的类型一个表达式经过运算总可以得出一个结果值,表达式的结果值是什么类型,则称该表达式是什么类型的表达式。FoxPro的表达式有种类型。1)数值表达式数值表达式常用于数值计算。例如,(60+75*2)/3。一个数值型常量、数值型变量或一个返回数值型数据的函数,是数值表达式的简单形式。数值表达式和数学中的代数式具有相同的计算功能,但是在用计算机进行计算时,必须把代数式改写为数值表达式。代数式改写成对应的表达式时,应当遵循下列规则:(1)表达式必须书写在一行之内,所以,对应代数式中的分式,在表达式中需要把分子和分母分别用圆括号括起来,用除法运算符号(/)代替分数线;用乘方运算符号(*或)表示底数和指数的运算关系;代数式中的根式改用乘方运算(其中开平方常使用函数SQRT(数值表达式))。(2)代数式中的函数名应采用FoxPro标准函数的对应名称,函数的参数要用圆括号括起来。(3)改写为表达式时,不能省略乘法运算符号,只能用*和/表达乘法和除法运算。例如,代数式(-b+b2-4ac)/2a对应的表达式为:(-b+sqrt(b2-4*a*c)/(2*a),2)字符表达式字符表达式常用于字符型数据的连接运算。例如,“陕西省”“西安市”的连接运算结果为“陕西省西安市”。一个字符型常量、字符型变量或一个返回字符型数据的函数,是字符表达式的简单形式。3)日期表达式日期表达式仅限于以下两种形式:(1)两个日期型常量、变量、函数相减。(2)一个日期型常量、变量、函数加或减一个数值表达式。一个日期型的常量、日期型变量、日期型函数,是日期表达式的简单形式。,4)逻辑表达式逻辑表达式常用于FoxPro命令的条件短语中。例如:英语=80ANDNOT高数60一个逻辑型常量、逻辑型变量、返回逻辑型数据的函数,是逻辑表达式的简单形式。,.FoxPro的命令结构及规则,2.2.1命令结构FoxPro的命令通常由“命令动词”和若干个“短语”或“参数”两部分组成。命令动词用于指定要执行的操作,短语或参数用于对操作对象作一些限定,例如限定操作对象的范围、条件等。现以下面显示数据库文件中记录内容的命令为例,说明命令的一般结构。LIST|DISPLAY范围FIELDS字段名表FOR条件WHILE条件;TO去向ONOFF,1.描述命令结构的语法符号及其含义(1)|表示用户可在“|”两边的动词、短语或参数中选择使用其中的一个。例如,LIST及DISPLAY均是命令动词,二者选一即可。它们的功能都是列表显示当前库文件的内容。但是,LIST是连续显示的,而DISPLAY是分页显示的。(2)表示命令中的可选项。选用时,则要输入方括号中的内容,但方括号不是命令中的字符,输入命令时不能输入;若省略可选项,则表示采用系统默认值。(3)表示用户可根据需要填写具体内容。输入命令时,尖括号不输入。,2.命令中常用的短语或参数(1)范围:用于限定命令操作的记录范围,即操作只对指定范围内的记

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论