a我考网

 找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 298|回复: 5

[Visual FoxPro] 2012年计算机等级考试二级VFP复习基础(4)

[复制链接]
发表于 2012-7-31 22:17:54 | 显示全部楼层 |阅读模式
7.函数
* }) q& z$ G  }! Z' U+ c, _  Visual FoxPro系统中,函数是一段程序代码,用来进行一些特定的运算或操作,支持和完善命令的功能,帮助用户完成各种操作与管理。Visual FoxPro系统有数百种不同函数。按函数提供方式,可分为系统函数和用户自定义函数;按函数运算、处理对象和结果的数据类型,可分为数值型函数、字符型函数、逻辑型函数、日期时间型函数、数据转换函数等,按函数的功能和特点,可分为数据处理函数、数据库操作函数、文件管理函数、键盘和鼠标处理函数、输出函数、窗口界面操作函数、程序设计函数、数据库环境函数、网络操作函数、系统信息函数和动态数据操作函数等。- _4 s( M, w  _9 Z
  Visual FoxPro的函数由函数名与自变量两部分组成。标准函数是Visual FoxPro系统提供的系统函数,其函数名是Visual FoxPro保留字,自定义函数是用户自已定义的函数,函数名用户指定;自变量必须用圆括号对括起来,如有多个自变量,各自变量以逗号分隔;有些函数可省略自变量,或不需自变量,但也必须保留括号;自变量数据类型由函数的定义确定,数据形式可以是常量、变量、函数或表达式等。
+ r% v' u; ~. i2 G  函数是一类数据项,除个别(如宏替换)函数外,函数都不能像命令一样单独使用,只能作为命令的一部分进行操作运算。
, |5 j7 Q/ J* N' Z0 i2 d/ b* E  (1)数值函数' w- S) v7 ~/ W+ c, V
  数值函数用于数值运算,其自变量与函数都是数值型数据。6 }" ~% n; B/ ^! t/ Z2 y) ^
  1)取绝对值函数ABS(): I; @  K$ c7 u6 B* t) F2 E2 w
  【格式】ABS()
# b  m( Q, i, j' N  K  【功能】计算数值表达式的值,并返回该值的绝对值。3 d* u4 ?. U& ~; v! I( c6 B
  【例】?ABS(-43.29)43.298 H& r' J' ^: N  T9 `: {
  2)指数函数EXP()
; ?) C. b- h) M5 {  B; T, u9 s  【格式】EXP()
, w. n" f" K+ ~  【功能】求以e为底、数值表达式值为指数的幂,即返回该数的指数值。
0 j0 U% O; W' e5 ^  3)取整函数INT()+ E9 Y& z* c& `) G0 R
  【格式】INT()/ O! Y; N$ Q/ s6 k3 V  A
  【功能】计算数值表达式的值,返回该值的整数部分。
& H! C- z5 u  |1 c, k  【例】?INT(-76.93) -76
, \0 i% n( }$ b9 \; Y8 e$ @. A- m: C  4)自然对数函数LOG()5 g* H" k, Z& x
  【格式】LOG()6 U5 C4 l, F5 ~* X
  【功能】求数值表达式的自然对数。数值表达式的值必须为正数。
  Q3 H! y$ d0 @5 o, b  5)平方根函数SQRT()
' J+ |- q- I% _+ r& K  【格式】SQRT()
. d( ^) x: `4 \7 u1 ^  L# _, S  【功能】求非负数值表达式的平方根。$ E/ i, w$ d8 b6 M
  【例】?SQRT(5*5) 5.00
回复

使用道具 举报

 楼主| 发表于 2012-7-31 22:17:55 | 显示全部楼层

2012年计算机等级考试二级VFP复习基础(4)

6)最大值函数MAX()和最小值函数MIN()
; Z3 s# J/ _9 H  【格式】
4 J6 z( K7 U8 ?1 e! e  MAX(,[,...])
; @1 X0 e$ W) ?- g1 y$ H  MIN(,[,...])% d6 E& y- e, x; U$ G
  【功能】返回数值表达式中的最大值MAX()和最小值MIN()。: B/ |) u- f. K! I, m
  7)求余数函数MOD()8 ~, |" G/ ~7 b6 c/ O  i. o4 }
  【格式】MOD(,)* D) H' j/ s1 m  o2 f
  【功能】返回除以得到的余数值。" b* [* F; R& y+ J' M2 F4 p6 ?& V
  【说明】在求摸运算中应注意以下几点:
' z' S8 k$ h* }' ~0 w  (1)除数不能为0。
, M; @, C# z( q5 F- t1 `  A- R  (2)除数为正数,返回正数;如果为负数,返回负数。
2 x; P5 O- u0 w  (3)如果被除数与除数能够整除,结果为0。
4 c* t( p- R! A. p5 l  (4)如果被除数与除数不能整除,且被除数与除数同号,则结果为被除数除以除数而得到的余数。即:MOD(X1,X2)=X1-INT(X1/X2)*X2。
, c# {( b, V& Y2 S  (5)如果被除数与除数不能整除,且被除数与除数异号,则结果为被
9 N% _' o$ u  M& }$ P) N  除数除以除数而得到的余数再加上除数。
& X& o1 d% e6 _7 E5 T  即:MOD(X1,X2)=X1-INT(X1/X2)*X2+X2。
  R1 {6 E/ a8 L8 f% T  【例】?MOD(10,3) &&结果为:1
( n& T3 c/ Y3 W  ?MOD(-10,-3) &&结果为:-1; U% z% i1 [+ @& G- u" S; I; X7 Y
  ?MOD(-10,3) &&结果为:2
  F% h5 g1 J0 x5 M/ t2 u  ?MOD(10,-3) &&结果为:-2- V5 y' _& ~2 U* N! O
  8)四舍五入函数ROUND()
) B4 ?5 J- ^  `' ^3 U0 ~  【格式】ROUND(,)& P) \8 N- q$ V- t3 ]
  【功能】返回数值表达式1四舍五入的值,数值表达式2表示保留的小数位数。
5 {3 x1 U6 b7 X, f5 S  【例】?R0UND(3.14159£?4),ROUND(1234.9962,0),ROUND(1234.567,-1)9 w& R6 z3 E6 W  U# {% U7 ?
  3.1416 1235 1230
) B3 \1 W7 q$ N  E0 Z  E  9)π函数PI()
  i5 ?, N5 N: I/ f$ E' [2 ^  【格式】PI()
  Q) o- @9 _. m5 x* J1 {+ ?  【功能】返回常量π的近似值。
6 Z3 z2 x! _4 v3 V! |1 n  10)随机函数RAND()
- i6 _# H8 P. R: r4 n# U6 _  【格式】RAND()( @2 b$ U' ^( v7 D; [, V* I
  【功能】产生0-1之间的随机数。
+ \4 w1 y9 P# P/ W& y$ p# q  (2)字符函数  j0 U0 w- Y. k8 ~) X: H
  字符函数是处理字符型数据的函数,其自变量或函数值中至少有一个是字符型数据。函数中
9 _  H, j: Y8 q# R: `  涉及的字符型数据项,均以cExp表示。+ N! T' a# P+ B: m' g4 x
  1)子串位置函数% y' M9 C: H% i% n! P& z( i- U0 j5 Z) Q7 k
  【格式】AT(,)
8 K- {; R# d4 a0 U: I! M  【功能】返回串cExp1在串cExp2中的起始位置。函数值为整数。如果串cExp2不包含串cExp1,函数返回值为零。' ^5 L4 G: h( ~  S5 }& @+ J# ~
  【例】X=”Visual FoxPro 8.0”5 e9 A. ~* W5 K( D
  ?AT(”Fox”£?X)&&显示结果为8, j6 D/ f$ }2 U( I, \$ ?
  ?AT(”fox”£?X)&&显示结果为0
9 V! p% L9 I* R  ?AT(”o”£?X)&&显示结果为9# s# H9 i6 G, t/ G4 c
  ?AT(”o”£?X£?2)&&显示结果为13
* G- L9 h0 F' y3 U1 p6 J4 G- ?  2)取左子串函数LEFT()1 @; r5 g! _8 o* J/ a5 |" B* \
  【格式】LEFT(,)
回复 支持 反对

使用道具 举报

 楼主| 发表于 2012-7-31 22:17:56 | 显示全部楼层

2012年计算机等级考试二级VFP复习基础(4)

2)取左子串函数LEFT()
- q9 r: b6 L/ S/ ^1 y6 ?  【格式】LEFT(,)( Y  S+ I7 K) K
  【功能】返回从cExp串中第一个字符开始,截取nExp个字符的子串。5 R7 p$ X* G/ C) n0 |
  3)取右子串函数RIGHT(): X* m2 }" U- l/ }
  【格式】RIGHT(,)
6 B5 m/ e2 e7 b; B  r9 ~) u4 G  【功能】返回从cExp串中右边第一个字符开始,截取nExp个字符的子串。3 U9 W$ ]7 x- v0 A5 @, M
  4)取子串函数SUBSTR()- `& u2 ?; U) ]5 L3 q
  【格式】SUBSTR(,[,])
: u( ~+ Z  b" q. u  【功能】返回从串cExp中第nExp1个字符开始,截取nExp2个字符的子串。9 ?0 [6 ^1 |7 E5 x' f8 S/ R& Z
  【例】CN=”ABCDEFG”? SUBSTR(CN,4,2),SUBS(CN,1,4),SUBS(CN,6,3)DEABCD FG若省略〈长度〉,或者〈长度〉超过从〈起始位置〉到末尾的长度,则截取的子字符串为从〈起始位置〉到〈字符串表达式〉末尾的所有字符。例如:?SUBSTR(”计算机程序设计教程”,11)设计教程5)字符串长度函数LEN(): E: T9 T3 E3 U) |0 K0 X( |: z
  【格式】LEN()
7 O$ R  `. {) p* b( f5 U4 N  F  【功能】返回cExp串的字符数(长度)。函数值为N型。
7 B0 q: l3 r: y" f5 `  【例】?LEN(”Visual FoxPro8.0”)16
- J$ @2 q3 y# B: i! u7 r: u  6)删除字符串前导空格函数LTRIM()( c- S$ h2 k3 C: b$ {
  【格式】LTRIM()
! J3 ^7 _3 t! N/ O$ B9 I  【功能】删除cExp串的前导空格字符。
0 u) z. Z; p+ l  C- ?. Z' @  7)删除字符串尾部空格函数RTRIM()|TRIM(). n: ?8 c  C! K; P: ?# S
  【格式】RTRIM|TRIM()& E+ r& S7 t- S* W$ U' O
  【功能】删除cExp串尾部空格字符。
: [/ k5 t* W/ |; n  8)空格函数SPACE()* y8 m8 g1 b' |* \. Z* o
  【格式】SPACE()+ @) H+ s0 S5 ?5 l
  【功能】返回一个包含nExp个空格的字符串。7 F  Q) G  O$ ?- T. b
  【例】X=SPACE(2)+”学生情况”+SPACE(4)?LEN(X),LEN(TRIM(X)),LEN(LTRIM))14 10 12
* V4 a* D- d& s9 y  9)字符串替换函数STUFF()1 C2 M0 h  c, d2 H) u
  【格式】STUFF(,,,)
) T  |5 \' [5 z0 s0 j. t  {  【功能】从nExp1指定位置开始,用cExp2串替换cExp1串中nExp2个字符。9 _  `, m' D1 t" A8 d, F7 [
  【例】X1="ABCDEFG"$ \+ x1 ]  Y- E! b' v
  X2="abcd"?STUFF(X1,4,3,X2),STUFF(X1,1,4,X2)
% {! @* ~. `2 o9 i& C  ABCabcdG abcdEFG
回复 支持 反对

使用道具 举报

 楼主| 发表于 2012-7-31 22:17:57 | 显示全部楼层

2012年计算机等级考试二级VFP复习基础(4)

10)大小写转换函数LOWER()和UPPER()   【格式】LOWER()& B. b, `4 v& h# n
  UPPER(): @2 j: _+ ^/ ?" F/ m) l2 B
  【功能】LOWER()将cExp串中字母全部变成小写字母,UPPER()将cExp串中字母全部变成大写字母,其它字符不变。
0 z( g' R* ]4 }0 j- |6 P. A  11)字符匹配函数LINK()
/ K  N9 ]0 c5 t( Y# r0 P, d1 |6 b  【格式】LIKE(,). W& s5 V+ {6 K6 k& E+ }
  【功能】比较两个字符串对应位置上的字符,若所有对应字符都相匹配,函数返回逻辑真(.T.),否则返回逻辑假(.F.)$ P6 ~) q1 m% Z7 w, c4 h+ ]2 M
  【说明】中可以使用通配符*和?。*可以与任何数目的字符相匹配,?可以与任何单个字符相匹配。) f: L1 h- B" s1 J0 \* j. y5 ]8 D
  【例】X=“abc” Y=“abcd”
2 w8 c- ^& W1 w$ _: M, s5 F+ q) I  ?LIKE(X,Y),LIKE(“ab*”,X),LIKE(“a*”,Y),LIKE(“?b”,X)
$ p7 Q! B. S  I3 u$ d& [* n  U: p( I  .F..T..T..F.(3)日期时间函数(p73)
; f" z# X9 K: Y% L+ C  日期时间函数是处理日期型或日期时间型数据的函数。其自变量为日期型表达式dExp或日期时间型表达式tExp。* ]) h9 A( p. z$ b
  1)系统日期函数DATE()" W, T+ @6 t" r
  【格式】DATE()$ L$ Y. T5 N: O) E& j, z" U% m% ?7 z
  【功能】返回当前系统日期,此日期由系统设置。函数值为D型。. m, p0 @7 {3 v# V6 J
  2)系统时间函数TIME()* w0 Z# z. \  m0 u" n) q- h
  【格式】TIME([])
* F1 {  e4 ^' |3 l/ m. {3 e* Q  【功能】返回当前系统时间,时间显示格式为hh:mm:ss。是以24小时指制表示的。函数值为C型。
5 o& ~+ h  j& k- B  p% x, _" B  3)日期函数DAY()
, W! U4 s  B- w( D# ]! A8 r  【格式】DAY()* |% [6 [8 l1 u: [. s8 D
  【功能】返回指定的dExp式中的天数。函数值为N型
7 ]' o  X: e) ]6 h  4)星期函数DOW()、CDOW()4 [0 p7 z' n: g8 K" A+ W/ q1 h
  【格式】DOW()4 H4 n% `, U1 V3 n: n1 @7 m! i
  CDOW()1 A' m* m, G' D2 O' g7 \
  【功能】DOW()函数返回dExp式中星期的数值,用1~7表示星期日~星期六。函数值为N型。CDOW()函数返回dExp式中星期的英文名称。函数值为C型。
+ j/ N7 {1 c# W7 @  5)月份函数MONTH()、CMONTH()
+ p$ m" |: b' f: r" P1 S- S' a  【格式】MONTH()9 U6 U( `# U4 |0 b$ E
  CMONTH()
6 P3 k0 X$ ?  I% z+ [, p  【功能】MONTH()函数返回dExp式中月份数。函数值为N型。CMONTH()函数则返回月份的英文名。函数值为C型。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2012-7-31 22:17:58 | 显示全部楼层

2012年计算机等级考试二级VFP复习基础(4)

6)年份函数YEAR()   【格式】YEAR()- w% y2 x  I/ ~
  【功能】函数返回dExp式中年份值。函数值为N型。(4)转换函数8 I# U' F, F) J  _* V& @7 J; y4 k
  在数据库应用的过程中,经常要将不同数据类型的数据进行相应转换,满足实际应用的需要。Visual FoxPro系统提供了若干个转换函数,较好地解决了数据类型转换的问题。
  T& c! u9 o) r6 a7 V0 S1 M  1)ASCII码函数ASC()
% l+ z; X1 f. S3 {. P" @% l# D, G  【格式】ASC()
% i! Q; N+ Q: C* z  【功能】返回cExp串首字符的ASCII码值。函数值为N型。
8 x1 w2 Y7 f. _& i5 G. f  R  【例】?ASC(“abc”)&&结果为:97
, n/ |1 b! \( {! i9 M  2)ASCII字符函数CHR(); f2 x3 X/ O1 m$ e) ?
  【格式】CHR()
; b& X) E! [2 m/ Y  【功能】返回以nExp值为ASCII码的ASCII字符。函数值为C型。
" {- X) t) ^- ^  m2 p  【例】?CHR(99)&&结果为:c$ g! ]9 ]+ N! e. N6 V! a* N; u
  3)字符日期型转换函数CTOD()9 ^6 k/ Q8 v+ P' |# C+ Y
  【格式】CTOD()
1 X. v1 |4 {, |6 m* Y" j  【功能】把“××/××/××”格式的cExp串转换成对应日期值。函数值为D型。
5 F. K$ l! C: o2 e8 S  【例】DA=”12/12/99”
; k. c: g* R) C4 H- w  ?CTOD(DA)
/ y$ `; d. w/ M/ w, i5 G  12/12/99$ B  |: v+ k" X1 G
  4)日期字符型转换函数DTOC()  J0 i; T9 M, H" A$ U9 L6 k5 g5 I% z( {
  【格式】DTOC([,1])4 E0 t! s( L3 \+ |+ _9 [3 A- \5 \
  【功能】把日期dExp转换成相应的字符串。函数值为C型。. }* }8 G7 u$ d# I2 ~: T8 P6 B
  【例】D={^2004/11/24}; F' n+ f2 R) A. V: M
  DT=DTOC(D)
' g- j( y' W# r2 s7 _7 h: h  ?DT
, A4 N6 \1 }$ D- e  ??LEN(DT): n  F+ h3 E: ?: z& d
  11/24/04 85)数值转换成字符串函数STR()
, H0 X9 U' ^" [  【格式】STR([,][,])+ d( I# ~/ N: {1 v- `
  【功能】将nExp1的数值转换成字符串形式。函数值为C型。
9 q: e% @" N# ~  【例】?STR(1324.46,6,1)1324.5
3 P. i& M) F; f$ o" Y8 Z4 a6 o  ?STR(1324.46,8,3),STR(1324.46,3,1)1324.460***  y( }8 ?  T; x
  注:如果长度小于的位数则返回一串*号。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2012-7-31 22:17:59 | 显示全部楼层

2012年计算机等级考试二级VFP复习基础(4)

6)字符串转换成数值函数VAL()   【格式】VAL(), ~. v0 K( q3 c* N: `
  【功能】将cExp串中数字转换成对应数值,转换结果取两位小数。函
8 L0 ]: T7 q2 N( s8 j& l- P& G* h" Q1 c  数值为N型。【例】?VAL(”32”+”18”)3218.00
' c! d" m# C- k8 t  ?VAL(”112GH”),VAL(”AB204”),VAL(”ASD”)112.00 0.00 0.00
3 W$ N" h& E) |  7)宏代换函数&- |$ }6 Z. U1 u6 D8 u' ?) U
  【格式】&/ o- i: x- ]4 t, u' r) S, @3 `; _
  【功能】取“字符型内存变量”的值。5 Q+ B8 z# x  h+ M
  【说明】
# Z, q  j/ p+ @3 a" G$ v/ E  s- _  (1)宏代换是一种间接取值的操作,在&符号后面必须紧跟(无空格)一个己被赋过值的字符型内存变量的名字。
/ `# L/ B# n0 }9 |7 G3 `& l, j  (2)若&与后面的字符之间无空格分界时,应加上“.”符号作为分界符。. l1 F7 Y  v! E: @
  (3)宏代换的使用可以嵌套另一个宏代换,但不能嵌套自己。例如,X=“&X”的写法是错误的。& B) N5 `! z9 C. ~' S( z
  (4)对于数字字符串,可以通过&函数使其与其他数字进行计算。
2 Y3 d7 ^; B6 V8 \# N) e% H  【例】求宏代换。
2 _- J. g. n6 ]  CH=”X”: D" S) S$ \, M8 }3 d
  X=9
; X! c0 f3 b; I  ?&CH&&结果为:9" p+ K6 ?, X7 X* r4 s% {" s  t
  TT=”学生”2 T( E( A6 U  P; {
  USE&TT&&结果为:打开了“学生.dbf”表文件。
3 h) a  o0 a; Y# j+ G! j5 z* v  X=”2004”! @# {1 I7 K" l% v3 I* ]
  M=”+”( j5 |" ^, k' ]8 |+ h+ g; ~
  Y=”&X.&M.1”/ N" A9 K3 j/ Y# [
  ?Y&&结果为:2004+1
' c7 X5 L0 F' h% R. q1 h5 v  ?&Y&&结果为:2005(5)测试函数1 q" @; z( b: E" ?% }0 M
  在数据库应用的操作过程中,用户需要了解数据对象的类型、状态等属性,Visual FoxPro提供了相关的测试函数,使用户能够准确地获取操作对象的相关属性。
$ D! ^) d) A$ U) q7 _! o. `  E  1)数据类型函数VARTYPE()
' B/ E. V9 G) B8 O; S0 A8 e% O5 \  【格式】VARTYPE()  ^7 L' H- a* k. s
  【功能】返回表示的数据对象的数据类型,返回值是一个表示数据类型的大写字母。C:字符型,D:日期型,N:数值型,L:逻辑型,M:备注型,G:通用型,U:未定义
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|Woexam.Com ( 湘ICP备18023104号 )

GMT+8, 2024-5-6 21:02 , Processed in 0.380119 second(s), 31 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表