第二章 语言基础_第1页
第二章 语言基础_第2页
第二章 语言基础_第3页
第二章 语言基础_第4页
第二章 语言基础_第5页
已阅读5页,还剩45页未读 继续免费阅读

下载本文档

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

文档简介

第二章VisualFoxPro语言基础2.1数据类型2.2常量与变量2.3运算符与表达式2.4常用系统函数2.1数据类型任何一种数据都能归属到一种类型,数据类型一旦确定,也就确定了该数据的存储方式以及能进行的操作。

VisualFoxPro中提供了多种数据类型,其常见的数据类型:1.数值型(字母N表示)用于表示数的大小。例如:45,-123.4由数字0~9、小数点与正负号组成的整数或小数。在内存中占8个字节。2022-06-19由英文字母、汉字或数字等符号组成的一串字符,例如,"abc"。2.字符型(字母C表示)

注意:半角英文字符占一个字节,一个汉字或全角字符占两个字节。字符型数据取值为1~254个字符。3.货币型(字母Y表示)用来表示货币值,如,$100。

在内存占8个字节。2022-06-194.日期型(字母D表示)5.日期时间型(字母T表示)在内存中占8个字节,默认格式为mm/dd/yyyy,其中mm代表“月”,dd代表“日”,yyyy代表“年”。用于保存日期和时间在内存中占8个字节,其中前4个字节保存日期,后4个字节保存时间,分别是时、分、秒。例如:{05/23/2015}例如:{05/23/201509:30:50}6.逻辑型(字母L表示)用来表示逻辑判断的结果,如:条件成立与否。在内存中占1个字节。7.整型(字母I表示)用于存储无小数部分的数值,在内存占4个字节。例如:.T.例如:208.浮点型(字母F表示)与数值型等价,表示形式采用尾数、阶码及字母E组成。例如:0.1234E-39.双精度型(字母B表示)与数值型等价,但具有更高精度,在内存占8个字节。10.备注型(字母M表示)通常用来存储数据表中不定长字符型数据块,数据的实际大小取决于用户实际输入内容,而该类型字段存储的是一个4字节的引用。11.通用型(字母G表示)用于存储数据表中的OLE对象。OLE对象,可以是一个电子表格、字处理文档或图像、声音等,通常OLE对象由其他应用程序产生。注意:备注型数据与通用型数据均占4个字节,两种数据均存储在备注文件中。2022-06-192.2常量与变量Input"请输入一个圆的半径"torS=2*3.14*r?“圆的周长是:",S在程序执行过程中这些数据始终保持不变,称之为常量。这些数据在程序执行过程中可以发生变化,称之为变量。数值型常量538、-10.5字符型常量"abc"、[123]、'aw12'货币型常量$234逻辑型常量.t.、.T.、.f.、.F.日期型常量{^2015-04-23}。日期时间型{^2015-04-2312:00:00}2022-06-19变量的命名规则:1)由字母、汉字、数字和下划线组成,且不能以数字开头。2)变量名的长度为1~128个字符,每个汉字为2个字符。3)尽量避免使用VisualFoxPro的保留字,防止误解、混淆。4)在VisualFoxPro中变量的命名是不区分大、小写的。变量名是用来标识变量的符号,每一个变量都有一个名称。

例:判断下面哪些是合法的标识符:

wersalary94amountclear94salarysalary94$amountf3.5Num_of_Student

变量分为内存变量和字段变量两种。变量内存变量字段变量简单变量数组变量简单内存变量的两种赋值方式。(1)赋值运算符“=”(2)STORE语句a=3简单内存变量a赋值号值&&给变量a赋值3STORE"计算"TOx,y,z?x,y,z

1.简单内存变量指内存空间中的一个临时存储单元,用变量名来标识。&&计算计算计算按一定顺序排列的一组简单内存变量,在使用前必须先定义。

DECLARE|DIMENSION|PUBLIC|LOCAL<数组名>(行数[,列数])2.数组变量说明:1)DECLARE和DIMENSION声明的数组为私有数组,用PUBLIC声明的数组为全局数组,用LOCAL声明的数组为局部数组。2)行数和列数决定了数组的维数和数组元素的存储空间大小。3)每个数组元素通过数组名和下标来访问。例如:定义一个一维数组DECLAREdata1(6)data1123456Data1(3)例如:定义一个二维数组DECLAREdata2(2,2)1122Data2(2,2)数组的特点:1)定义数组后,各个数组元素的初始值均为.F.。2)同一数组的各个数组元素的数据类型可以不相同,它们的类型由其值来决定。3)在给数组变量赋值时,如果未指明下标,则对该数组中所有数组元素同时赋予同一个值。4)数组名出现在表达式中,表示引用数组的第一个数组元素。例2.4执行下列语句:DIMENSIONx(5) ?x(1) x=5 ?x(1) x(2)="奥运会"?x(2) DIMENSIONb(2,2) b(1,2)=x?b(1,2) .F.5奥运会5

数组的初始值为.F.

给数组名赋值

访问数组名,即引用数组的第一个元素数据表中的字段名。利用字段变量可获得数据表中指定属性列中的任何一个数据项,其值为当前记录中该字段的值。3.字段变量字段变量若有一字段变量和内存变量同名,对该变量进行访问,到底访问谁呢?例如:有数据表course,其中包含ccode字段,并且当前记录指针数据显示如下图。若在命令窗口执行下列语句:STORE“计算机”TOCcode?ccode &&显示当前记录该字段值1111280?m.Ccode&&显示内存变量值“计算机”2.3

运算符及表达式运算符:决定数据间进行何种运算的符号。根据运算符操作的数据类型可以分为:

算术运算符

字符运算符

日期运算符

关系运算符

逻辑运算符1.算术运算符运算符功能说明优先级算术表达式运算结果-负号1-5*2-10**或^乘方22^3或2**38*乘32*36/除8/24%求余47%31+加53+25-减6-24例:输出以下表达式的值:?8%3,-8%-3 ?8%-3,-8%3 2-2-11%运算规则是:若两个操作数为相同符号,则运算结果为第一个数除以第二个数的余数;若这两个操作数为不同符号时,其运算结果为第一个数除以第二个数的余数再加上第二个数。1.算术运算符2.字符串运算符运算符功能说明字符表达式运算结果+字符串连接运算,即将两个字符串连接在一起形成一个新的字符串。""+""""-""-""""$判断运算符左边的字符串是否包含在右边字符串中。"男"$"男女".T.注意:“+”运算符是直接将两字符串连接,而“-”运算符规则是在前一个字符串尾部有空格时,先将这些空格移至后一个字符串末尾,再连接两个字符串。3.日期运算符运算符功能说明日期(日期时间)表达式运算结果+日期或日期时间与整数相加,返回日期或日期时间{^2015-05-06}+2{^2015-05-08}{^2015-05-069:10:20}+200{^2015.05.069:13:40}-两个日期或日期时间相减,返回两个日期相距的天数或日期时间相差的秒数{^2015-05-06}-{^2015-05-04}2(天数){^2015-05-0610:10:20}-{^2015-05-069:10:20}3600(秒)日期或日期时间与整数相减,返回一个新的日期或日期时间{^2015-05-06}-2{^2015-05-04}{^2015-05-069:10:20}-200{^2015.05.069:07:00}4.关系运算符运算符功能说明关系表达式运算结果>

大于2>3.F.<

小于.T.<.F..F.<>、!=或#不等于'丁'<>'于'.T.==字符精确相等'Abc'=='Ab'.F.>=或=>大于或等于{^2007-10-2}>={^2007-10-1}.T.<=或=<小于或等于2<=3.T.=等于'章'='张'.F.关系运算规则:1)数值型数据按大小进行比较。例如,表达式4>5的运算结果是.F.。2)日期及日期时间型数据比较时,较后的日期(时间)大于较前的日期(时间)。3)若两个字符串比较时,则“从左向右”按其对应的字符排列顺序进行比较。如果第一个字符相同,则比较第二个字符,以此类推,直到出现不同的字符。注意:若两个字符串比较时,还要考虑是否精确匹配。4.关系运算符注意:默认状态下,将“=”右边字符串与左边字符串从左向右一一比较,直到最后一个字符。若左边包含右边字符串,结果为.T.,否则为.F.。例2.8输出以下表达式的值:?"ABCD"="AB" ?"AB"="ABCD" ?"AB"="AB" .T..F..F..F..T.精确匹配,要求两边必须完全一样。模糊匹配,系统默认状态。SETEXACTON?"ABCD"="AB" ?"AB"="AB" 4.关系运算符5.逻辑运算符逻辑运算符功能说明逻辑表达式运算结果NOT或!逻辑非(取相反的逻辑值)NOT4<5.F.AND逻辑与(两个条件同时为真,其结果为真)3>4AND5<6.F.OR逻辑或(只要一个条件为真,其结果为真)3>4OR5<6.T.逻辑运算的优先次序是:Not→And→Or

用运算符将常量、变量、函数等数据连接起来的式子。表达式可以分为以下五种:1.算术表达式2.字符表达式3.时间日期表达式4.关系表达式5.逻辑表达式表达式2022-06-191)表达式从左向右在同一基准并排书写,不能出现上下标。例如,数学中的x3应该写成x^3或者x*x*x。2)在数学书写中能省略运算符,但在VisualFoxPro中不能省略。例如:3x必须转换为3*x的形式。3)各种运算符有优先级别,为保持运算顺序,在书写表达式时需要适当添加圆括号,改变优先级或使表达式更清晰。思考下面表达式的书写:1.表达式的书写规则在同一个表达式中,各运算符的优先级为:算术运算或日期运算或字符运算->关系运算->逻辑运算。如果表达式中带括号的,先计算括号内的值,再计算括号外的值。例2.9执行下列语句

结果.F.M=5N='ABC'?!(M-2)*2>5OR'D'+N=='ABC'ANDM>32.表达式的运算规则2.4常用系统函数函数就是针对一些常见问题预先编好的一系列子程序,当应用时遇到此类问题就可以调用相应的函数,也就是执行相应的函数子程序。调用形式是:函数名(自变量表)

其中函数名是系统规定的,自变量表可以是一个变量或多个自变量,也可以为空,即:函数名(),此时函数名后面的一对圆括号不能省略。1.数值函数函数名功能举例结

果ABS(<N1>)求N1的绝对值MIN(<N1>,<N2>[,<N3>…])返回各表达式中的最小值MAX(<N1>,<N2>[,<N3>…])返回各表达式中的最大值INT(<N1>)返回N1的整数部分CEILING(<N1>)返回大于或等于N1的最小整数FLOOR(<N1>)返回小于或等于N1的最大整数ROUND(<N1>,<N2>)将N1四舍五入,保留N2位小数MOD(<N1>,<N2>)求N1除以N2的余数SQRT(<N1>)求N1的平方根RAND([N1])产生随机数ABS(-3.5)3.5MIN(4,5)4MAX(4,5)5INT(3.5)3FLOOR(2.8)2CEILING(2.8)3MOD(4,3)1ROUND(3.1419,3)3.142RAND()0~1SQRT(4)21.数值函数1)MOD()运算规则与“%”运算规则相同。2)在ROUND(<N1>,<N2>)函数中,当N2为正整数时,表示小数部分被四舍五入的位数;当N2为负整数时,表示整数部分被四舍五入的位数。说明:例如:ROUND(125.4,-1)的值为130。1.数值函数3)产生随机数在VFP中可利用INT()函数和RAND()函数配合使用生成指定范围的整数,如生成[M,N]区间随机整数的表达式为INT(RAND()*(N-M+1))+M。例如,生成一个两位正整数的表达式为INT(RAND()*90)+10,即[10,99]区间的随机数。2.字符函数函数名功能举例结

果UPPER(<C1>)将小写字母转换成大写字母LOWER(<C1>)将大写字母转换成小写字母LEN(<C1>)求字符串C1的长度AT(<C1>,<C2>[,<N1>])在字符串C2中查找字符串C1,如果存在,返回第N1次出现的起始位置;如果不存在,则返回0。ATC函数同AT函数,但不区分大小写,N1默认为1。ATC(<C1>,<C2>[,<N1>])SUBSTR(<C1>,<N1>[,<N2>])从C1字符串中第N1个字符起取N2个字符;若N2缺省,则从C1字符串中取第N1个字符开始的所有字符UPPER("abc")"ABC"LOWER("ABC")"abc"LEN("abc")3AT("b","abcb",2)

4ATC("B","abcb")2AT("b","aBcb")4SUBSTR("abcd",2,2)"bc"SUBSTR("abcd",2)"bcd"2.字符函数函数名功能举例结

果RIGHT(S,N)从C1字符串的右边取N1个字符LEFT(<C1>,<N1>)从C1字符串的左边取N1个字符SPACE(<N1>)生成N1个空格TRIM(<C1>)消除字符串尾部空格ALLTRIM(<C1>)消除字符串首尾空格STUFF(<C1>,<N1>,<N2>,<C2>)用字符串C2替换C1中第N1位置开始的N2个字符LIKE(<C1>,<C2>)如果字符串C1和字符串C2匹配,则返回值为.T.,否则为.F.RIGHT("计算机",2)"机"LEFT("abc",2)"ab""a"+SPACE(2)+"b""ab"TRIM("abc")+"d""abcd"STUFF("Visual",2,5,"FP")"VFP"ALLTRIM("bc")+"d""bcd"LIKE("Visual","Vis").F.3.日期和日期时间函数函数名功能举例结

果DATE()返回系统当前日期DATETIME()返回系统当前日期和时间TIME()返回系统当前时间YEAR(<D1>|<T1>)返回D1或T1的年份MONTH(<D1>|<T1>)返回D1或T1的月份DAY(<D1>|<T1>)返回D1或T1所对应月份中的第几号DOW(<D1>|<T1>)返回D1或T1的日期是一周内的第几天DATE(){2015/05/01}DATETIME()2015/05/0115:29:27PMTIME()15:29:27YEAR({^2014/11/2})2014DAY({^2014/11/2})2MONTH({^2014/11/2})11DOW({^2014/11/2})14.数据类型转换函数函数名功能举例结

果STR(<N1>[,<N2>][,<N3>])将数值N1转换成长度为N2的字符串,N3指定结果中小数的位数(多余位四舍五入),N2缺省为10,N3缺省为0VAL(<C1>)将数字字符串转换为数值ASC(<C1>)取C中第一个字符的ASCII码值CHR(<N1>)将ASCII码值转换成字符DTOC(<D1>[,1])将D1转换为mm/dd/yy的字符串;若有参数1,则转换为yyyymmdd的格式CTOD(<C1>)将日期格式的字符串C1转换为日期STR(15.26)"15"STR(15.26,4,1)"15.3"ASC("Abc")65CHR(65)"A"DTOC({^2014/11/2},1)"20141102"DTOC({^2014/11/2})"11/02/14"CTOD("2014/11/2"){2014/11/2}VAL("15")15.001)STR(<N1>[,<N2>][,<N3>])函数--若无N2,则转换后的字符串长度为10,若实际数值超出10位,采用科学计数法,否则用空格补全10位。--转换后的字符串长度LL=N1的整数位数+小数位数+1位小数点,若为负数还要再加1位负号。--若N2=0,则结果为空串;若N2>L,则在转换后的字符串前补上空格;说明:--若N2>=N1的整数部分位数(负数包括负号)但又N2<L,则优先满足整数部分而自动调整小数位数;若N2<N1的整数部分位数(负数包括负号),则返回含有N2个“*”号的字符串。说明:例如:?STR(.45)?STR(12345.45) ?STR(123.45,5,1)?STR(123.45,0?STR(123.45,3,1?STR(12345.4,3,1) "1.234E+10""12345""123.5""""123""***"2)VAL(<C1>)函数将字符串C1从左向右依次处理,直到遇到非数字字符或不能作为一个数处理的字符为止;若首字符不是数字字符,则返回0,转换结果默认取两位小数。例如,下列表达式的值为:?VAL("123ABC") ?VAL("12E2")?VAL("ABC123") 123.001200.000.005.数据库和表测试函数函数名功能RECNO()测试当前记录指针所在的位置BOF()测试记录开始标志,当记录指针指向开始标志时,函数值为.T.EOF()测试记录结束标志,当记录指针指向结束标志时,函数值为.T.RECCOUNT()测试当前表的记录个数FOUND()测试查找是否成功。如果CONTINUE、LOCATE或SEEK命令成功,函数返回值为.T.SELECT()测试工作区号,一般格式为:SELECT(0|<表的别名>)USED()测试一张表的别名是否被使用,或在指定的工作区中是否有表打开,一般格式为:USED(<工作区号>|<表的别名>)。DBC()返回当前打开的数据库的完整文件名DELETED()测试当前表的当前记录是否带有删除标记宏替换的语法格式:6.宏替换函数&<字符型内存变量>[.]功能:用字符型内存变量的值替换整个宏替换函数所在的位置。利用宏替换函数可以构造表达式,用于替换常量、变量、表达式以及命令等。1)替换常量

X="VFP程序设计"?"学习&X"

学习VFP程序设计2)替换变量

XH1="202"N="1"?XH&N

2023)替换表达式

X="2"?1+&X*3 Y="3/"?&Y.&X Z="M"?&Z

761.504)替换文件名

BM="teacher"Use&BM

&&打开teacher数据表5)替换一条命令

X="?INT(3.4)"&X &&等同于执行命令:?INT(3.4)7.其他函数1)IIF函数格式:

IIF(<L1>,<E1>,<E2>)功能:根据L1表达式的真假,分别返回E1和E2的值。例如:执行语句?IIF(5>4,"A","B")"A"2)BETWEEN函数格式:BETWEEN(<E1>,<E2>,<E3

温馨提示

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

评论

0/150

提交评论