第02章 Visual Foxpro数据及其运算符_第1页
第02章 Visual Foxpro数据及其运算符_第2页
第02章 Visual Foxpro数据及其运算符_第3页
第02章 Visual Foxpro数据及其运算符_第4页
第02章 Visual Foxpro数据及其运算符_第5页
已阅读5页,还剩69页未读 继续免费阅读

下载本文档

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

文档简介

第二章VisualFoxpro数据及其运算符本章主要学习VFP进行编程所用到的一些基本的数据的数据类型、运算符、表达式和函数。字符型(C)用定界符(单引号、双引号或方括号)括起来的字母,空格,数字,汉字及各种符号的组合.例如:"你好"

、"abc"、"127"

、"_=*$?!"、'你好'、[你好]特点:这种数据不具有算术运算功能注意:‘127’表示字符型常量127,而不是数值127,这个127不能参加算术运算.

2.1数据类型2.数值型是可以进行数学运算的数据,分为4种:(1)数值型(N):最多可存储20位(包括正负号小数点)如:123、0.2、3.07891、-119(2)浮点型(F):如1.58E-7(3)双精度(B):数量级为10-324—10308

(4)整型(I):长度固定为4个字节、只存储不带小数的数值型数据,范围-21亿——21亿(5)货币型(Y):如$8903.日期型(D)表示日期的数据。{}日期型数据的输入格式:严格日期格式:{^yyyy/mm/dd}系统默认下页通用日期格式:{mm/dd/yy}说明:输入日期型数据时分隔符也可用“-”{^1997/12/24}{^1997-12-24}{12/24/97}{12-24-97}日期型数据的输出格式:

mm/dd/yy输入时{}必须输但计算机显示输出日期数据不显示出{}(3)Setstrictto[0|1|2]1:进行严格日期格式检查(默认,只能用严格日期格式输入)0:不进行严格日期格式检查2:进行严格日期格式检查,应用于ctod(),ctod()几种日期格式设置命令P30(1)Setmarkto[日期分隔符]功能:设置显示输出日期型数据时使用的分隔符.(系统默认的是“/”mm/dd/yy)例:d={^1997-12-24}?dsetmarkto“.”?dSetmarkto即恢复系统默认分隔符(/)(2)Setdate[to]American|ansi|British|German|Italian|Japan|USA|mdy|dmy|ymd功能:用于设置日期型数据的输出格式(见表2-1)例:d={^1997-12-24}?dsetdatetoYMD?dsetdatetoAMERICAN?d(3)Setcenturyon|off功能:Setcenturyon显示出世纪Setcenturyoff不显示出世纪(系统默认)例:?date()setcenturyon?date()4.日期时间(T):用以表示日期和时间的数据(1)输入格式:{^yyyy/mm/ddhh:mm[:ss][am|pm]}(2)输出格式:mm/dd/yyhh:mm:ssAM|PM如:d={^2008-12-238:30}?d显示:12/23/0808:30:00AM

5.逻辑型(L)

"真":用.T.或用.Y.表示"假":用.F.或用.N.表示.注意:大小写字母不区别,.T.与.t.等效,但字母前后下角的圆点是必需的6.备注型(M)备注型用于存放不定长或大量的字符型数据。该数据类型仅用于字段类型定义。7.通用型(G)备注型用于存放图形、声音等多媒体信息。该数据类型仅用于字段类型定义。2.2常量常量:在数据处理过程中其值保持不变的数据.1.数值常量——15.6,-23,5002.字符型常量—"成都市",[de*%:],’hello’3.逻辑型常量—.T..n.4.浮点型常量—0.23E+9、-1.58E-75.日期型常量—{^2006/5/24}{12/24/08}6.日期时间型常量—{^2006/5/248:25:30a}3.3变量

变量:就是在命令操作或程序运行过程中其值可以改变的量.三种变量:字段变量、内存变量、系统内存变量.通常把内存变量就简称为变量2.3.1内存变量(变量)内存变量是用于存储在命令或程序运行过程中临时用到的输入、输出或中间变量.1.内存变量的命名规则命名规则:

由一字母、汉字、下划线(_)开头,字母、汉字、数字下划线(_)的组合。注:大小写字母等效;一般变量名不应与保留字或保留字和VFP命令的前四个字符相同.

如:n,m,i,j,GJ姓名学号课题_1(都是正确的)2百C:File(是不正确的)2.内存变量的赋值两种方法:使用“=”或store命令(1)使用赋值号“=”赋值格式:<内存变量>=<表达式>说明:给一个内存变量赋值如:WER="数据库"a=13b=.T.x=y=z=10(错,不能同时给几个变量赋值)(2)使用store命令赋值格式:store<表达式>to<内存变量表>如:store10tokstore5tox,y,zstore3*2-1tomstore“成都”to城市可见store命令可同时对多个变量赋值。内存变量的类型:由所赋的值的数据类型所确定.3.内存变量值的输出格式:?|??[<表达式>]作用:计算<表达式>的值并显示出来.

说明:?从当前光标所在行的下一行的第一列显示结果(换行显示)??命令从当前光标所在位置开始显示结果.(紧接显示)当前光标的位置一般位于上一次显示的数据的后面

如:a=3?ab=4c=5?b,cd="hello"??d再如:??"请计算以下表达式的值"?"3*7=",3*74.内存变量的保存与恢复Saveto<内存变量文件名>[all[like<通配符>|except<通配符>]]功能:将当前内存变量保存到一个内存变量文件中,文件扩展名为.memRestorefrom<内存变量文件名>[additive]功能:将内存变量文件中的变量装入内存。可选项additive表示不清除当前系统中的所有内存变量5.内存变量的清除命令格式1:clearmemory功能:清除所有内存变量命令2:release[<内存变量表>][all[like|except<通配符>]]功能:从内存清除指定的内存变量.如:releasea,b&&清除内存变量a和breleasealllikea*&&清除所有以a开头的内存变量releaseall&&清除用户定义的所有内存变量

clearall&&关闭所有表和清除所有内存变量2.3.2数组变量(下标变量)

数组是内存变量的一种特殊形式,是按一定顺序排列的一组内存变量,数组中的各个变量称为数组元素.1.数组的定义P35Dimesion<数组名1>(<下标1>[,<下标2>])[,<数组名2>(<下标1>[,<下标2>])…]如:Dimea(10)Dimest(3,4),b(3)说明:(1)数组必须先定义后使用(2)数组的起始下标是1;对于二维数组,常将第一个下标称为行标,第二个下标称为列标。说明排列形式.a(1)a(2)……a(10)共10个st(1,1)st(1,2)……st(3,4)共12个2.数组的赋值用“=”或者store命令赋值。例2.7如下:

Dimensionabc(4),b(2,3)?abc(1),abc(2),abc(3),abc(4)?b(1,1),b(1,2),b(1,3),b(2,1),b(2,2),b(2,3)说明1:数组定义好后,各元素初值默认为.F.

abc(1)=30abc(2)="春暖花开"abc(3)=.F.abc(4)={^2008-03-06}说明2:同一数组的不同元素可以赋予不同类型的数据。Store10tob或b=10?b(1,1),b(1,2),b(1,3),b(2,1),b(2,2),b(2,3)说明3:数组元素可逐个赋值,也可统一赋以相同的值。?b(1),b(2),b(3),b(4),b(5),b(6)说明4:二维数组也可按一维数组来表示2.3.3字段变量(字段)表中的每一个字段就是一个字段变量。如:use学生

go3?姓名?入校总分

字段变量与内存变量的区别:

字段变量与表紧密相关(打开表,该表的字段变量产生;关闭表,该表的字段变量消失)。而内存变量独立于表文件存在。字段变量与内存变量同名时(尽量避免),系统会优先识别为字段变量,要想操作内存变量则应该用“m->内存变量名”或“m.内存变量名”的方式区分。P33例:USE学生?姓名&&刘小芸姓名=“张丽”&&内存变量赋值replac

?姓名&&刘小芸

?M->姓名&&张丽系统变量

由VFP自动生成和维护的变量,其变量名都以下划线“_”开头,如:_diarydate:存储当前日期DisplayMemory内存变量的显示(了解)命令格式:List|DisplayMemory[Like<通配符>]

说明:list滚动显示,display分屏显示。不带Like子句表示显示全部变量(含系统变量)。如:displaymemolike*2.4运算符与表达式1.算术运算符与算术表达式用算术运算符连接数值型的常量、变量、函数等形成的式子叫算术表达式。①算术运算符:

^|**(乘方)*,/%(取余)+,-例:?3+2?16%3?20%-3,-20%3,3^2

说明:%,数符参与运算,余数的符号与除数符号一致②优先级③注意以下三点:

VFP表达式中的所有括号只能用圆括号()

所有的运算量必须写在水平方向上,不能写成上下结构或上下标形式。省略的乘号要补上。如:(2*(x^3-y^3)+5)/(x-1)2.字符运算符与字符表达式用字符运算符连接字符型的量形成的式子叫字符表达式。三种字符运算符:+:将两个字符串首尾直接相连-:连接字符串,但要将前一个字符串尾部的空格移到结果字符串的尾部如表2-3:?"程序"+"设计"?"程序"+"设计"?"程序"-"设计"?"

pro"$"

foxpro"大小写,字母顺序必须完全相同?"信息"

"技术"?"123"+"456""信息技术""123456“说明:实际运行结果不会显示出双引号""3.关系运算符与关系表达式用关系运算符连接算术表达式、字符表达式等形成式子叫关系表达式。关系运算符:<、<=、>、>=、=、==、<>,#或!=、$说明:(1)注意书写(2)比较规则如下:数值比大小字母比Ascii码大小(字母表顺序)汉字比拼音(字母表顺序)空格字符最小.32a97A65048例:?7>5&&.T.?"大专">="大学"&&.T.?"ABC">"BC"&&.F.?"HELLO"<"HELLO".T.?15!=20.T.

?{^2010-01-23}>{^1999-11-10}&&.T.

=相等:字符串比较时等式右边的字符串与左边字符串的串首(或全部)相同,结果就为真(当setexactoff时,系统默认)==完全相等:

两串全同结果才为真

?"abc"="abc"&&.T.

?"abc"="ab"

&&.T.?"abc"=="ab"&&.F.?"abc"!="ABC"&&.T.

setexacton

?"abc"="ab"

&&.F.4.日期时间运算符与日期时间表达式日期或日期时间运算符:+、-日期-日期:得两日期相差天数日期±整数:得新的日期(加减的量以D或T中出现的最小量为标准)如:setstrictdateto1表2-7P395.逻辑运算符与逻辑表达式(1)逻辑运算符:非:.not.或!(取对立面)与:.and.(两条件同时为真时,结果为真)或:.or.(两条件只要其中一个真,结果为真)运算规则:表2-9、?not7>3&&.F.?5*9>27and3>2逻辑运算符的优先级最低?3+2>9or3>2&&.T.说明:逻辑运算符两侧的点可以不写(2)优先级(高—>低):not—and—or!(7>5)and3>5or78>70说明:关系表达式用来描述一个条件,逻辑表达式可用于描述多个的条件.如:数学上的60≤x≤70应写成:x>=60andx<=106.几种运算符的优先级:

算术运算符>字符运算符>关系运算符>逻辑运算符例:2-8P39写函数的一般形式:函数名(参数)2.5.1数值运算函数绝对值函数abs(x)表示数学上的Ix|指数函数exp(x)表示数学上的ex

如:?abs(-4)&&4?abs(3.5)&&3.5?exp(5)&&148.412.5常用函数3.取整函数int(x)取x的整数部分ceiling(x)取大于等于x的最小整数floor(x)取小于等于x的最大整数?int(8.6)&&8?ceiling(8.6)&&9?floor(8.6)&&8?ceiling(-8.6)&&-84.求自然对数函数log(x)表示lnx5.求最大值函数p41max(x1,x2,x3……,xn)6.求最小值函数p42min(x1,x2,x3……,xn)例:?log(2.718)&&1.000?max(4,7,8,12,50)?min(4,7,8,12,50)?max(5*9,80/2)平方根函数sqrt(x)表示数学上的

?sqrt(4)&&2.00x=100y=44?sqrt(x+y)&&12.00p428.round(x,n)p42功能:对x四舍五入,保留n位小数如:round(3.1415,3)&&3.142round(3.1415,0)&&3说明:若n为负,则对小数点左侧第n位四舍五入如:?round(1476.237,-2)&&15009.求余函数p43mod(m,n)功能:求m除以n的余数.?Mod(8,3)&&2?Mod(20,-3)&&-1

说明:数符一起参与运算,余数符号与除数符号一致见例2-8?MOD(-20,3)&&1?abs(exp(2*x)+log(x+y)-sqrt(x+2))2.5.2字符串处理函数1.宏替换&P43格式:&<字符型内存变量>[.]功能:将字符型内存变量的值代换出来。例2-19ER="10^2+15-5"?&ER&&110.00例:hh=5nn="hh"?&nn&&5注:若被宏替换的变量名后有其它符号,则需用小圆点“.”或空格表示替换变量名的结束.例2-20P44A=5B=4C="*"?A&C.B&&202.求字符串长度函数P41格式:Len(<字符串表达式>)功能:求字符串的长度,即所包含字符的个数。注意:空格也要算1个字符,一个汉字占2个字符?len("Good")&&4?Len("He123")&&6?len("你们ok!")&&83.求子串位置函数P44AT(<字符串表达式1>,<字符串表达式2>,[,<数值表达式>])AT(字符串1,字符串2[,n])功能:求<字符串1>在<字符串2>中第<n>次出现的位置.说明:若省略n表示第1次出现的位置。例2-22?at("IS","THISISABOOK")&&3?at("IS","THISISABOOK",2)&&6?at("is","THISISABOOK")&&04.空格生成函数Space(n)表示产生由n个空格组成的字符串例:?"你"+space(2)+"好"5.取子串函数(有3个取中取左取右)P45①substr(字符串,m[,n]):从<字符串>的m位起,取n个字符。若省略n,则表示从m位起取完。②left(字符串,n):取<字符串>左边的n个字符③right(字符串,n):取<字符串>右边的n个字符如:?substr("Thankyou",3,2)&&"an"?substr("Thankyou",3)&&"ankyou"?substr("Thankyou",3,5)&&"anky"?left("visualfoxpro程序设计",4)&&"visu"?right(“visualfoxpro程序设计”,4)&&"程序"注意:汉字占2字节,其它(大小写字母,标点符号,空格等)占1个字节8.删除空格函数P45Ltrim(<字符串>):返回删除字符串前导空格后的字符串Rtrim(<字符串>):返回删除字符串末尾空格后的字符串AllTrim(<字符串>):返回删除字符串前导和末尾空格后的字符串;Trim()等同于Rtrim()?Ltrim("FoxPro")&&"FoxPro"?Rtrim("FoxPro")&&"FoxPro"?Alltrim("FoxPro")&&"FoxPro"9.occurs(字符串1,字符串2)功能:求<字符串1>在<字符串2>中出现的次数.?occurs("a","abcab")&&210.字符替换函数chrtran(字符串1,字符串2,字符串3)功能:<字符串2>中指明<字符串1>中要想被替换的字符列表,并用<字符串2>和<字符串3>共同说明用哪个字符替换哪个字符(对应位置换)。?chrtran("ABCDABCD","A","Y")?chrtran(“会计学123”,“会计”,“金融”)&&"金融学123"?chrtran("会计学123","会计学","金融")&&"金融123"11.大小写字母转换函数P46格式:Lower(字符串)Upper(字符串)功能:将字符串中的所有大写(小写)字母转换为小写(大写)字母;例:?Lower("Hello123?")&&"hello123?"?Upper("Hello123?")&&"HELLO123?"2.5.3转换函数3.数值与字符串之间的转换(1)数值转换为字符串函数P48str(<数值表达式>[,<转换长度>[,<小数位数>]])功能:将<数值表达式>转换为数字字符串.

说明:

①<转换长度中>,小数点要占一位?str(3.14,4,2)&&"3.14"?str(3.14,5,2)&&"3.14"左补空格?str(3.15,6,1)&&"3.2"(四舍五入原则)②若<转换长度>缺省,默认为10若<小数位数>缺省,默认为0?str(9876.5432)&&"9877"例:n=87?"你的数学分析成绩为:"+str(n,3)显示为(2)字符串转换为数值函数格式:val(<字符串表达式>)说明:①val()按照从左到右转换字符串表达式中的数字,直到遇到第一个非数字或非小数点的字符为止.(即停止转换)如:?val("123")+100&&223.00?val("234.45AB56")&&234.45补(了解):系统默认显示数值型数值带2小数位,可用setdecimalton确定显示n位小数②

如果字符串表达式以非数字字符开头(空格、加减号、e除外),则函数值为0.如:?val("xy69.34")&&0.00

?val("+12")&&12.00

?val("123e3")&&123000.00

1.字符串与日期之间的转换(1)CTOD():格式:CTOD(<字符表达式>)功能:字符型日期型CTOT(<字符表达式>)功能:字符型日期时间型例:?CTOD("01/24/98")&&01/24/98setdatetoymdsetcenturyon?CTOT("2008/03/06"+""+"16:13")&&2008/03/0604:13:00PM(2)DTOC():日期型字符串

格式:DTOC(<日期表达式>)[,<1>]说明:若选参数<1>,则将日期表达式转换为yyyymmdd格式的字符串如:setstrictdateto0

DTOC({10/02/99})&&"10/01/99"

DTOC({10/02/99})+"issunday"

&&以上表达式值为"10/02/99isSunday"

?DTOC({10/02/99},1)

显示字符型结果:199910025.字符与ASCII码之间的转换(1)字符转换为ASCII码函数ASC(<字符表达式>)功能:返回字符串首字符的ascii码?Asc(“A")&&65?Asc(“Fox"+"pro")&&70(2)ASCII码转换成字符函数CHR(<数值表达式>)功能:将数值作为ascii码转换为相应的字符?chr(65)&&"A"?chr(65+32)2.5.4日期函数(1)time()功能:以hh:mm:ss的格式返回系统当前时间例:?time()(2)date()功能:返回系统当前日期.例:?date()注:这两个函数是无参数的函数.year(<日期表达式>)mon

温馨提示

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

评论

0/150

提交评论