第二章 VFP语言基础
第二章 VFP语言基础
第二章VFP语言基础2.1 程序设计概述1. 程序设计方法简介2.数据类型VFP 包含下列数据类型:3. 数据容器VFP中用来存储数据的容器有:常量、变量、数组、记录和对象。
(1)常量(constants):一个在操作过程中保持不变的数值或字符串。
常用的常量类型(2)变量(variables):是内存中的一个存储单元的位置,其中的内容可以变化,但标识该存储位置的名称(即变量名)不变。
变量的命名习惯:类型变量代号如:cStud 、nCj 、dCsrq ——分别代表一个字符型、数值型、日期型的变量名变量的赋值方式:1)用STORE 命令如:STORE "王兰" TO cStud2)用赋值操作符= 如:cStud = "王兰"变量的作用域: 即变量起使用的有效范围。
变量的访问:当变量和字段同名时,字段有优先被访问权。
要在变量名前加m. 或m -> 以示区别,如m.cStud(3)数组(array):是存储在一个变量中由单个变量名引用的有序数据集合。
在VFP中,一个数组中的数据不必是同一种数据类型。
常用的有一维数组,二维数组。
数组元素的标识:通过一个数值下标来引用,如AA[2],AA[2,3]数组类型的声明:私有数组——用DECLARE 或DIMENSION定义全局数组——用PUBLIC命定义局部数组——用LOCAL定义数组元素的赋值:用赋值语句:如AA=45用SCATTER从当前记录中取特定字段的值赋给数组:如:scatter fields xh, xm, xb to aa(数组长度、类型自动与所给字段相同)用COPY TO ARRAY从当前记录中取所有字段的值赋给数组:如:copy to array aa(数组长度、类型自动与表中全部字段相同)把数组中的数据传给当前表中的当前记录:gather from 数组名[fields 字段名表]用数组向当前表添加记录:append from array 数组名[for 条件] [[fields 字段名表](用二维数组可以同时添加多条记录)数组处理的常用函数:排序SORT(),搜索ASCAN(),删除ADEL(),插入AINS()(4)记录:表中的一行,由字段组成。
VF第二章 VF的语言基础Y
输出结果:2009-08-01
SET CENTURY OFF SET MARK TO SET DATE TO AMERICAN ?{^2009-08-01} 输出结果:08/01/09 ?{09-08-01}
第2章 VF的语言基础
14
2.1 常量和数据类型 2.1.4 日期时间型常量
日期时间型常量也分为传统日期时间型常量和严格日期时间 型常量。
第2章 VF的语言基础
26
2.2 变量 变量的清除
【格式】 CLEAR MEMORY
• 清除所有内存变量。
【格式】 RELEASE <内存变量名表>
• 清除指定内存变量,各内存变量名之间用半角逗号分开。
【格式】 RELEASE ALL [LIKE <通配符>|EXCEPT<通配符>]
{mm/dd/yy}
{^yyyy-mm-dd}
【注意】 • mm/dd/yy为系统默认的传统日期格式。 • 在书写严格日期格式时一定要在前边加脱字符(^)。 【例】日期常量{10/08/01} 可以被解释为2001年10月8 日、2001年8月10日、2010年8月1日等。
第2章 VF的语言基础
2.2 变量
内存变量有6种数据类型,包括:
字符型(C)、数值型(N)、货币型(Y) 逻辑型(L)、日期型(D)和日期时间型(T) 【例】A=456,其中A是变量名,表示一个数值型变量,456是变量值;
B={^2007/8/1} C=″小沈阳″
?学号 ?M.学号 ?M->学号 学号=“123456789”
能在0的情况下可用。当1或2的情况下,用户使用传统日期格式,
系统就会报错。
第2章 VF的语言基础
VFP语言基础
第二章VISUAL FOXPRO 基础2.1 数据类型数据类型就是对数据的允许取值以及值的范围进行的说明。
使用场合:字段(表文件特有),内存变量,常量数据类型:(1)字符型(C)最多254个字符组成(2)数值型(N)由数字,小数点和正负号组成。
最多允许输入20位数字,其精度可精确到15位。
(3)日期型(D)表示一个日期,长度固定为8个字节(4)日期时间型(T)表示时间和日期,长度固定为8个字节。
(5)逻辑型(L)二值类型,用于描述只有两种可能的逻辑量,如是/否,失败/成功,合格/不合格,男/女等(6)货币型(Y)表示货币值,长度固定为8个字节。
前面加$,小数点后保留四位小数如:$123.0177(7)备注型(M)也称记事型。
用于把数据中较大的文本块以固定格式存放在此类型的字段中。
弥补字符型数据长度不能超过254个字符的限制。
(8)通用型(G)存放由其他应用程序传来的数据,其传媒为剪贴版。
可存放照片、声音等多媒体信息。
(9)整型(N)4个字节,不带小数(10)浮点型(F)等价于数值型(11)双精度型(N)存放精度较高,位数固定的数值。
(12)二进制字符型(13)二进制备注型2.2常量与变量1.常量(常数):一个具体的值.5种类型的常量:(注意:区别于表内数据的表示方法)(1)数值型常量:整数或实数例如:45,456.12等(2)字符型常量:由定界符括起来的由字符,汉字,空格或数字所组成的字符串。
定界符: 双引号或单引号或方括号注意:①定界符一定要在英文输入法或者中文输入法的英文标点符号、半角(默认)的状态下输入。
例:”ABCD”, …1234‟, [数据库]②定界符内的字符只是简单的字符标识例:?‟3+4‟③当某一种定界符本身是字符型常量的组成部分时,应选用另一种定界符来表示该字符串。
(3)逻辑型常量只有两个值,.T. 或.F. ,长度为1注意:两边一定要加点(只要不在表里,这两个逻辑值都要加点)(4)日期型常量:必须用花括号和^括起来,长度固定为8个字节例如:{^2004/07/08 } 或者{^2004-07-08 }(5)日期时间型常量:包括日期和时间的合成。
第2章 VFP 6.0 语言基础(1)
•数组变量:一组变量的集合,这些变量的数据类型可 以不同,每个数组元素都可以通过一个数值下标被引用, 相当于一个内存变量。 •一维数组:各个元素按线性排列;
•数组元素的数据类型是通过所赋值的数据类型来确定的。
二维数组:类似于一个数据表,第一维是行,第二维 数组下标的排列规则 是列。 数组从下标1开始排列
如:a, _123, aaa123, 学生123
aa-123 非法的变量名:235, 12aa, 学生 123,
2.2.2 变量
2. 字段变量 存在于数据表中。当定义好一 个数据表的结构,该表中的各个字段名就形成 了各个字段变量。 字段变量必须先定义然后才能使用。
(1)字段变量隶属于数据表文件。 (2)数据表是存在于计算机中的一个二维表格,数据表中的每一列称为一个字 段,是数据表进行数据处理的基本单位;数据表中的每一行内容称为一条记录, 由若干个相关联的字段组成。 (3)在数据表中,字段必须先定义后赋值,然后才可以使用。 (4)字段变量名由汉字、字母、数字和下划线组成,必须以字母或汉字开头。 (5)字段变量的数据类型有13种,与前面的数据类型相同。
说明:<数值表达式>为数组下标,对一维数组来说, 指的是数组元素的个数;对二维数组来说,指的是数组 的最大行号和最大列号。 数组的下标允许使用圆括号或方括号括起来。 在同一个数组中,不同的数组元素数据类型可以 不同。
数组一旦被定义之后,该数组的每个元素的初值 为逻辑假值,可以使用有关的命令给数组元素赋值。
2.2.1 常量
通过SET DATE,SET CENTURY等命令可以改 变默认的日期格式。
(2)SET CENTURY命令
格式: SET CENTURY ON|OFF
chap02 VFP语言基础
15
日期和日期时间型常量
空值表示为{}、{ }、{/}、{:}。
VFP6.0默认的日期格式为严格的日期格式(避免 千年虫问题),如果要采用传统的日期格式 {02/28/05},必须用set strictdate to命令进行设 置。
强调:当变量和字段同名时,字段变量优 先访问,要在变量名前加 m. 或 m -> 以示 区别;另外,不能用”=”给字段变量赋值。
19
2.2.2 内存变量
变量作用域:即变量起作用的有效范围
public:“命令”窗口创建的任何变量或数组 自动赋予全局属性;
private:VFP默认 ; Local:创建的变量或数组只能在创建他们的
2.3.2 字符运算符
+:字符串连接运算
比如说,x=“中华 ” Y=“民族”
? x+y
&&显示“中华 民族”
-:串连接运算,同时将前串尾空格移到整个串 尾。
比如说,x=“中华 ” Y=“民族”
? x-y
&&显示“中华民族 ”
$:串包含运算,判断左串是否包含于右串中
比如说,x=“中华” Y =“中华民族”
数组元素标识:通过一个数值下标来引用, 如 AA[2],AA[2,3]。所以,数组又被成为 下标变量。
注意:数组下标是从1开始。
23
2.2.3 数组
数组声明:
DECLARE 数组名[空间大小]
&&私有数组
DIMENSION 数组名[空间大小] &&私有数组
VFP_第2章语言基础
6
2.2 数据存储
常量
字符型常量
1、定界符不能是中文符号 2、定界符必须成对出现 3、字符串含定界符时,必须
组成:任意字符 采用另一种定界符
表示:用定界符将4字、符空串串括与起空格字符串不同
示例:’12’、“A5B、C字”、母[中大国小]、写[/“不] 同
注意:
6、字符串与其他类型常量的
2020年5月17日星期日
Visual FoxPro 6.0程序设计
11
2.2 数据存储
数组
数组的申明
DECLARE—私有数组 DIMENSION—私有数组 PUBLIC—全局数组 LOCAL—局部数组
命令格式:
命令动词 数组名(行数[,列数]) 默认值(.f.)
示例:DECLARE X[5]
2020年5月17日星期日
Visual FoxPro 6.0程序设计
9
2.2 数据存储
内存变量
内存变量的访问
使用内存变量名可以对内存变量进行访问,当字段变量与 内存变量同名时,在变量名前加“m.”即可
示例:
STORE 5 TO a,b C=a+b ?a ?b ?m.c
内存变量的显示:list ,display
第二章 VFP语言基础
2.1 数据类型 2.2 数据存储 2.3 运算符 2.4 函数 2.5 表达式 2.6 空值处理 2.7 程序设计基础
2020年5月17日星期日
Visual FoxPro 6.0程序设计
1
2.1 数据类型
数据类型
数据对象的取值集合,以及对之可施行的运算集合。 变量数据类型、字段数据类型
5
2.2 数据存储
常量
第2章vfp语言基础
(6)控制变量访问
目 录 上一页 下一页
变量的作用域: ①LOCAL(局部/本地变量)——只能在创建它的程序 中使用和修改。 不能带到上级或下级模块中使用。 定义变量后,系统默认变量取值.F.。
退 出
②PRIVATE(私有变量)——PRIVATE将上级程序中定义 的变量在当前程序中隐藏起来,以便在当前程序中使 上一页 用和上级程序同名的变量,不会使原有变量的值发生 下一页 变化。
【举例】 P28 {^2002-08-12}、{^2002-08-12 8:12 p},分别以严格的日期格式表示2002年8月 12日及该日下午8时12分这两个日期数据。
退 出
Visual FoxPro系统默认采用严格的日期格式, 并以此检测所有日期型和日期时间型数据的格式 是否规范、合法。为与早期版本兼容,用户通过 命令或菜单设置改变这一格式。
目 录 上一页 下一页 退 出
第2章 VFP语言基础
本章要点
目 录 上一页 下一页
退 出
2.1 2.2 2.3 2.4 2.5
数据类型 数据存储容器 运算符与表达式 空值处理 函数
2.1 数据类型
目 录 上一页 下一页 数据类型——数据对象的取值集合,以及对之可施行 的运算集合。 1.字符型(Character):用字母C表示 由字母、数字、空格、符号等组成。
退 出
目 录 上一页 下一页
数据库包含的表中字段变量名长度不能超过128 个字符(自由表中字段变量名长度不能超过10个字 符)。
退 出
2、内存变量
目 录 上一页 下一页
内存变量(简称变量)——用户定义的内存中的 一个(组)存储单元,由变量名进行标识,其值可 以由程序操作修改。
VFP语言基础知识
(1)由汉字、字母、数字、下划线组成,而且 必 须以汉字、字母或下划线开头。 (2)长度最多128个字符。(一个汉字占2个字节) (3)不能使用VFP的保留字。
例1:在下列字符串中,不符合VFP规定的、非法的 变量名是( )
A、GZINPUT2 B、A_SK97 C、4AK D、姓名
2.3.5逻辑表达式
5、逻辑表达式
经验: 与运算:全真为真; 或运算:全假为假; 非运算:真为假,假为真;
例1:
?3+5>6.and.4+7<10 ?3+5>6.and.4+7>10 ?3+5<6.and.4+7<10 ?3+5<6.and.4+7>10
2.3.5逻辑表达式
例2: ?3+5>6.or.4+7< 10 ?3+5>6.or.4+7> 10 ?3+5<6.or.4+7<
2.3.1 数值表达式
1、算术表达式 运算符号:+ - * / **或^ %(求余)
例:
? 2**3 ? 12+45 ? 12%5 ? (2*3-4)/2
2.3.2 字符表达式
2、字符表达式 (1)+:联接,联接两个字符型数据 例: ?“AB”+”CD” (2)-:将前边字符串尾部空格压缩到后边 字符串的尾部 例: ?“ab ” – “cd” ?len(“ab ” – “cd”)
性别 出生日期 系别 贷款否 补贴
女 1982-7-12 管理 TRUE 30
男 1983-11-20 法律 FALSE 30
vfpch2_vfp语言基础
秒数
27
注意:日期型不能和日期型数据相加
日期时间函数
1)系统日期和系统时间函数
格式: DATE()
TIME() DATETIME()
字符型
28
2)求年份、月份和天数函数
格式:
返回值4位
YEAR(<日期表达式>|<日期时间表达式>) MONTH(<日期表达式>|<日期时间表达式>) DAY(<日期表达式>|<日期时间表达式>)
3.1.2 常量
重点:各种类型常 量的书写形式。
1) 数值型常量
由数字0-9、小数点和正负号构成。用科学记数法形 式表示很大或很小的数值型常量.
例:4357.89 -89.12 653
1.34e+2 5.09E-3 0.98E+4 67.5e-4
3
2) 字符型常量 也称为字符串,表示方法:用单引号、双引号或
第2章Visual FoxPro6.0语言基础
1
3.1.1 数据类型
VFP常用数据类型: 字符型(Character,C)、数值型(Numeric, N)、 日期型 (date,D)、日期时间型(dateTime,T)、 逻辑型(Logic,L)。
2
VFP的数据表现形式有常量,变量,表达式和函数四种形式
结果 FOXFOX FOX
23
4)求子串位置函数
格式:
函数功能参看教材40页
AT(<字符串表达式1>,<字符串表达式 2> [,<数值表达式>])
【例】 AT() 函数的使用。 STORE "This is Visual FoxPro" TO x ? AT("FOX",x), AT("is",x,3),AT("xo",x) 结果 0 10 0
第2章-Visual FoxPro语言基础
运算符 +
* / % ** 或 ^
a=23 ? a+34
a=23 ?30-a
?7*5
?10/4
?10%3
?5**3 ?2^4
表达式举例
&&内存变量a定义 &&显示a+34的值
&&内存变量a &&显示a-10结果
&&7乘以5
&&10除以4
&&10整除3的余数
&&5的3次方 &&2的4次方
.T.
=
?’abcde’=‘bc’
.F.
?’abcd’==‘abcd’ .T.
==
?’abcd’==‘ab’
.F.
?’ab’$’abcd’
.T.
$
?’bc’$’abcd’
.T.
说明 字符串连接 ’连接字符串,前串尾部空 格移到连接后字符串尾部 右串是左串的前缀子串为.T.
右串和子串完全相等为.T.
左串是右串的子串为.T.
变量名的命名规则
➢ 只能是字母、汉字、数字和下划线 ➢ 不能以数字开头 ➢ 不可与保留字同名
变量分类
➢ 内存变量 ➢ 字段变量
注意:内存变量名和字段变量名如果重名的话,应在内存变量名前 加上”M.”或”M->”以示区分。
2.3 变量
1 内存变量
“先定义,后使用” 定义1个变量
内存变量定义格式
Vfp程序设计
第 2
Visual FoxPro语言基础
章
2.1
数据类型
2.2
常量
VFP第二章课件(语言基础)
表达式及运算符
2.字符表达式及运算符 字符表达式对字符型数据进行操作,其值为字符 串。字符运算符有两个: 字符串连接操作,将几个字符串连接成一个 新字符串。 例:”ABCD” + ”EFGH ” + ”1234” 连接结果为:”ABCDEFGH 1234” 串尾空格移位连接操作,将第一个字符串尾 部空格移到后面一个字符串末尾后,连接成一个新 字符串。 例:"山东 "-"经济学院"+"会计系" 连接结果为: “山东经济学院 会计系”
下面分别介绍常量、变量、表达式和函数。
§2.3.1
常量是不变的数据。 (1)字符型(C型)
常
量
字符型常量是由双引号、单引号、方括号括起来
的字符或字符串。例如,‘ ABCD’、“ 1234”、 [ 北 京]等。
(2)数值型(N型) 数值型常量是由数字 0—9 、小数点、正负号和 E (科学计数法中指数的底10)组成的数值。
常
量
(3)逻辑型(L型) 逻辑型常量只有逻辑“真”和逻辑“假”两个值,用.T. 或.Y.表示逻辑真值,.F.或.N.表示逻辑假值。
(4)货币型(Y型)
货币型常数是以“ $” 作为前缀的数值,如 $986.35 、
$1234.5678。
(5)日期型(D型) 日期常量是用大括号括起来的日期形式的常量。正确的 日期格式为{^yyyy-mm-dd}。
(13)备注型(二进制) 与字符型(二进制)一样,当代码页改 变时,其值不会随之改变。
§2.3
VFP的数据存储与运算方式
数据在系统中进行加工处理时,需要一个载体,
vfp2章 语言基础
对象变量: 是面向对象的语言, 对象变量:VFP是面向对象的语言,对象变量是 是面向对象的语言 一种组合变量
对象是数据存储器的一种。对象是类的实体, 对象是数据存储器的一种。对象是类的实体,是任何 具有属性和方法的信息的集合。 具有属性和方法的信息的集合。 对象的建立可以通过设计器和CREATE OBJECT()函数 对象的建立可以通过设计器和CREATE OBJECT()函数 实现。 FoxPro系统中 系统中, 实现。在Visual FoxPro系统中,引用对象是可视化 编程的重要手段。 编程的重要手段。
A
.f. .f. .f. .f. .f.
A(1) A(2) NSION B(3,4) &&定义二维数组B 例如: B(3,4) &&定义二维数组B 定义二维数组
B
.f. .f. .f.
.f. .f. .f.
.f. .f. .f.
.f. .f. .f.
FoxPro基础知识 第二章 Visual FoxPro基础知识
数据类型 数据存储 运算符与表达式 函数
vpfhappy09@ 密码:20092009
基本语法与规定
数据类型: 数据类型:共13种 种
字符型( ):最大宽度为 字符, 字符型(Character):最大宽度为 ):最大宽度为254字符,初值为 字符 空格串。允许的字符有:字母、数字、空格、汉字等。 空格串。允许的字符有:字母、数字、空格、汉字等。 数值型(Numeric):最大宽度为20字节,初值为0。 数值型( ):最大宽度为 字节,初值为 。 ):最大宽度为 字节 允许使用: 允许使用:0-9、正负号、小数点等。 、正负号、小数点等。 逻辑型( ):宽度由系统自动设置为 逻辑型(Logical):宽度由系统自动设置为 。其值 ):宽度由系统自动设置为1。 只能是:T、Y、F、N。 只能是: 、 、 、 。 日期型( 日期型(Date): 宽度由系统自动设置为 。形式为 ): 宽度由系统自动设置为8。 yy/mm/dd或mm/dd/yy。 或 。 备注型( 备注型(Memo): 宽度由系统自动设置为 ,用于 ): 宽度由系统自动设置为4, 存放一个指针存放地址,实际数据存放在由指针指向 存放一个指针存放地址, 的扩展名为.FPT的磁盘文件中。 的磁盘文件中。 的扩展名为 的磁盘文件中
第2章 VFP语言基础2
2)参数传递方式 两种方式:值传递方式和引用传递方式。 值传递方式是把作为参数的变量和数组元素的值直接 传递给过程或函数。形式参数的值改变时,实际参数 的值不发生变化。 引用传递方式也称为地址传递方式,是将作为参数的 变量和数组元素的地址传递给过程或函数。形式参数 的值改变时,实际参数的值也随着改变。 默认情况下,用DO命令调用过程或函数时是引用传递 方式,用函数方式调用时是值传递方式。
DO WHILE 对条件表达式求值 .T. 命令语句组 .F.
ENDDO
例3:计算1~100的偶数和与奇数和。
CLEAR even=0 odd=0 i=1 DO WHILE i<=100 IF i%2=0 even=even+i ELSE odd=odd+i ENDIF i=i+1 && 改变循环控制变量的值 ENDDO ? "偶数和=", even ? "奇数和=", odd
流程图
DO CASE
条件 1 .T. 命令组 1
.F.
条件 2 .T. 命令组 2
.F.
…
.F.
条件 n .T.
.F.
…
命令组 n
其他命令组
ENDCASE
例如,对学生成绩进行分类的程序段:
DO CASE CASE cj>=60 AND cj<70 ? "该门课程成绩及格" CASE cj>=70 AND cj<85 ? "该门课程成绩良好" CASE cj>=85 ? "该门课程成绩优秀" OTHERWISE ? "该门课程成绩不及格" ENDCASE
第2章使用FoxPro的基础知识
第2章 使用FOXPro的基础知识
4. 逻辑型常量 逻辑型常量只有两个, 用于表达真和假。 逻辑常量用圆 点符界定, 被界定的常量 可以是: T、 t、 Y、 y 、 F、 f、 N、 n之一。 其
中, .T.、 .t.、 .Y.、 .y.表示真值; .F.、 .f.、 .N.、 .n.表示假
据, E〈±整数〉相当于以10为底的整数次方,正或负的
〈整数〉决定了小数点在尾数〉中向左或向右移动的位数。 例如: 0.123456E4=1234.56 123456E-4=12.3456
第2章 使用FOXPro的基础知识
2. 字符型常量 字符型常量是由 ′ ′、″ ″或[ ]等符号界定起来的字符串。 当上述某一种或两种界定符出现在字符串中时, 应改用其它符 号作为字符串的界定符。例如, ′abc123′、 ″abc123″、 [abc123]是三个相同的字符型常量。 ′123.45′、″abc123″、[aa′aa]是正确的字符型常量。 ″123.45″、′abc123″、′aa′aa′是错误的字符型常量。 日期型常量 3.
第2章 使用FOXPro的基础知识
ቤተ መጻሕፍቲ ባይዱ
(2) LIKE 〈内存变量通配名〉表示可以用通配符号指定所 要显示的内存变量名。 通配符号有“?”和“*”, 如果变量名称中某一个字符的 位置上使用了通配符“?”,则该位置上不论是什么字符,都是 本命令中所指定的变量; 如果变量名称中使用了通配符“*”,
则该位置上不论是什么字符,也不论是几个字符, 都是本命 令中所指定的变量。
第2章 使用FOXPro的基础知识
专业=″数学″ ?专业 班级=″9501班″ ?班级 STORE ″张兰″ TO 姓名 ??姓名 STORE 2 TO a,b,c ?2*a, b+c
第2章 VFP语言基础
2、数值型(Numeric)
• VFP对这一类型的标记是N • 用来表示数量,由数字0~9、正负号及小数点组成。 • 数据长度为1~20,在内存中占用8个字节空间。
The School of Information Science
2.4.1 数据类型
3、货币型(Currency)
• VFP对这一类型的标记是Y
The School of Information Science
2.3 Visual Foxpro的项目管理及其操作
VFP系统提供了一种图形化的操作界面—项目管 理器,它是VFP中处理数据和对象的主要组织工具, 其管理信息以项目文件保存,项目文件的扩展名 为 .PJX, 项目备注文件的扩展名为: .PJT。
The School of Information Science
2.常量
定义:在整个操作过程中保持不变的量。
(1)字符型常量
也称为字符串,是用定界符括起来的一串字符。定界 符可以是:单引号、双引号、方括号,定界符必须配 对使用且为半角状态。 空字 符串 如:"990101",'A0001',[Visual Foxpro],"" 定界符本身不是字符型常量内容,它只是规定了字符 串的起始和终止边界,当字符串本身包含某种定界符 时,则需用另一种定界符将整个字符括起来。 如:['计算机'"ABC"]
可将已存在的不同类型的文件添加到不同的选项卡中
移去文件
“移去”命令按钮 “删除”命令按钮
其他操作
如重命名、编辑说明、排除/包含、设置主文件等
The School of Information Science
第二章VFP语言基础
2017/4/12 6
6、通用型
通用型(General)数据可以是电子表格、文档、 图片等。它只用于数据表中的字段类型的定义 。长 度固定为4位。
1. 数值表达式 2. 字符表达式 3. 日期表达式
4. 关系表达式 5. 逻辑表达式
2017/4/12 22
2.3.1 数值表达式
1、算术表达式
运算符号:+ * / **或^ %(求余)
例:
? 2**3 ? 12+45 ? 12%5 ? (2*3-4)/2
23
2017/4/12
2.3.2 字符表达式
6789.345
3、日期型
日期型(Date)数据是用于表示日期的,默认格 式为{^yyyy-mm-dd}来表示。长度固定为8位。 例:{^2005-8-26} 、{^1998-04-05 10:00:00 am}
2017/4/12 5
4、逻辑型
逻辑型数据 (Logic)是描述客观事物真假的 数据,用于表示逻辑判断结果的。它只有两类值: 真(.t.)和(.f.)假。 长度固定为1位。
< 小于 > 大于 =等于 <>或#或 <=小于等于 >=大于等于 ==精确比较 !=不等 ?5<8 ?4+6<=10 ?―ABC‖==―AB‖ ?ABC‖=―AB‖ ?[abc]$[this abc]
$查看一个字符串是否在另一个字符串中。
注意:关系表达式结果肯定为逻辑值。
2017/4/12 26
2.3.5逻辑表达式
2017/4/12 31
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第二章VFP语言基础一、选择题:1.下列四个函数或表达式中,返回值(或计算结果)的数据类型为字符型的是________A. DISKSPACE()B.BETWEEN()C.[^2014-3-20]-[^2000-3-20]D.DOW(DATE())2.人事档案数据库,内容较多的个人简历应用________字段较为合适A. 数值型B. 字符型C. 备注型D. 逻辑型3.以下关于NULL值说法错误的是________A.NULL值等价于没有任何值B. NULL值与0,空字符串("")及空格相同C.NULL值排序优先于其他数据D. 在计算过程中或大多数函数中都可以用到NULL值4.在Visual?FoxPro中,?对于字段值为空值(NULL)叙述正确的是________A. 空值等同于空字符串B. 空值表示字段还没有确定值C. 不支持字段值为空值D. 空值等同于数值05.逻辑表达式.NULL. OR .F.的计算结果为________A.NULLB. F.C.0D.产生错误6.在Visual FoxPro 系统中,下列命名中不能作为变量名的是________ 。
A. 2014 姓名B. 姓名C. 姓名2014D. _2014 学生7.以下名称命名不合法的是________A. 2xB. x_2C. nvar2D._aver_gz8.下列数据中,不是常量的是________?A. NAMEB."年龄"C. "91/01/02"D.T.9.在VFP中,下列字符型常量"thank you"表示法中,错误的是________?A. "thank you"B. 'thank you'C. (thank you)D. [thank you]10.在Visual FoxPro 中,根据变量的作用域来分,内存变量可分为________A. 字段变量、数组变量和局部变量B.字段变量、数组变量和私有变量C. 数组变量、局部变量和全局变量D.私有变量、局部变量和全局变量11.STROE 1 TO A,B,C,D的结果是________?A. 使A,B,C,D四个变量的值都为1B. 只使A值为1,其它变量的值为OC. 只使A的值为1,其它变量的值为FD. 只使A的值为.F.,其它变量的值为112.以下赋值语句正确的是________?A.STORE 10 TO X,YB.STORE 10,1 TO X,YC.X=10,Y=1D.X,Y=1013.关于内存变量的调用,下列说法错误的是________A. 在程序中直接使用而由系统自动隐含建立的变量都是私有变量B. 私有变量能被本层模块和下层模块程序调用C. 全局变量需要先定义才能使用,而局部变量可直接使用D. 局部变量能只能被本层程序调用14.如果内存变量和字段变量均有变量名“姓名”,那么引用内存变量的正确方法是________A. M.姓名B. M->姓名C. 姓名D. A和B都可以15.在Visual FoxPro 中,如果希望一个内存变量只限于在本过程中使用,说明这种内存变量的命令是________A. PUBLICB. P RIV A TEC. LOCALD. 在程序中直接使用的内存变量(不通过选项A)、选项B)、选项C)说明)16.设变量dd=253.141592,执行命令?ROUND(dd,3)的显示结果是________A. 253.142B. 253.141C. 253.140D. 253.141617.以下有关数组的叙述中,错误的是________A. 可以用一维数组的形式访问二维数组B. 在同一个环境下,数组名可以与简单变量名重复,两者没有影响C. 在可以使用简单内存变量的地方都可以使用数组元素D. 一个数组中各元素的数据类型可以相同,也可以不同18.使用DECLARE命令定义数组后,各数组元素在没有赋值之前的数据类型是________?A. 无类型B. 字符型C. 数值型D. 逻辑型19.用DIMENSION a(2,3)命令定义数组a后再对各元素赋值:a(1,2)=2,a(1,3)=3,a(2,1)=4,a(2,2)=5,a(2,3)=6,然后再执行命令?a(5),则显示结果是________A. F.B. 变量未定义C. 3D. 520."father" $ "grandfather"的运算结果为________A. T.B.F.C.6D. 021.2**2-15%4的运算结果为________A.1.00B. -1.00C. 3.00D. -3.0022.{^2008/05/10}>{^2008/06/10}的运算结果为________A.T.B. F.C. 0D. 123."AB"$"ABCD"的运算结果为________A.1B. T.C. F.D. 024.进行字符串比较时,使命令:?“我们大家”=“我们”,结果为逻辑假的设置是________A. SET EXACT ONB.SET EXACT OFFC. SET COLLATE TO"Machine"D. SET COLLATE TO "Stroke"25.执行命令SET COLLATE TO "Machine"之后,如下4个字符串"ABC","abcd","ABCDE"及"af"中的最大者为________A."ABC"B. "abcd"C. "ABCDE"D. "af"26.abs(30-10)的运算结果为________A.10B. 20C. 30D. F.27.store 40 to gnnumber1;store 2 to gnnumber2;abs(gnnumber2-gnnumber1)的运算结果为________A.38B. -38C. 42D.f28.MOD(24,-5)的计算结果是________A.5B. 0C. -1D. 129.round(1234.156, 2)的计算结果是________?A.1234B.1234.16C.1234D. 1234.1530.函数INT(12.25*2) 的返回值是________ 。
A.12B. 25C. 25.5D. 2631.函数MOD(23,-5) 的返回值是________ 。
A.-3B. 3C. -2D. 232.cvar=" vfp 6.0 ";trim(cvar)的运算结果为________A." vfp 6.0"B. "vfp 6.0"C. "vfp 6.0 "D. "vfp6.0"33.cvar="abcd";len(cvar+"123")的运算结果为________A.3B. 127C. 7D. 134.left('abcdef ', 4)的运算结果为________?A. "abcdef"B. "abcd"C. "cdef"D. 435.right('abcdef ', 4) 的运算结果为________?A. "abcdef"B. "abcd"C. "cdef"D. 436.atc("ab","ABC")的返回结果为的运算结果为________A.1B. 0C.f.D. 337.?like("ab*","abcde")的返回结果为________A.1B. T.C. F.D. 038.下列函数中,函数值是“奥运会”的是________A. SUBSTR("2008 奥运会",5,6)B. SUBSTR("2008 奥运会",6)C. RIGHT("2008 奥运会”,1,6)D. LEFT("2008 奥运会",6)39.STR(102.36,8,3)+SUBS(“12A1”,3,2)的结果是________A.102.362A1B. 102.36A1C. 102.360A1D. 102.3612A140.在下列4个函数中,返回值为字符型数据的是________A.TTOC()B.V AL()C. DOW()D. FILE()41.使用命令创建一个表或修改表结构时,字段的数据类型可以使用单个字符表示.例如,数据类型为“货币型”,应使用字符________表示。
A.YB. FC. BD. M42.STORE ({^2008-11-12 04:59:23 PM}) TO T;SEC(T)的返回结果为________A.4B. 16C. 59D. 2343.STORE {^2008-11-12} TO D;YEAR(D)的返回结果为________A.DB. 2008C. 11D. 1244.x=100;y=300;if(x>100,x-50,x+50)的结果为________A. 100B. 300C. 150D. .f.45.下列选项中不能返回逻辑值的是________A. EOF()B. BOF()C. RECNO()D. DELETEED()46.store .null. To x;x, isnull(x)的返回结果为________A. null. .t.B. t. .null.C. .null. .null.D. .t. .t.47.STORE "2.25E3" TO C;3*V AL(C)的结果为________A. 6.75B. 6750C. 6750.00D. 2.2548.type("1+1=3")的返回结果为A. DB. CC. ND. L49.?DTOC({^2006/08/01})+"是我的生日" 的返回结果是________A. "08/01/06是我的生日"B. "20060801是我的生日"C. "2006/08/01是我的生日"D. "06/08/01是我的生日"50.在下列函数中,函数的返回值为数值型的是?A. TYPE()B. EMPTY()C. DTOC()D. MESSAGEBOX()51.在Visual FoxPro系统中,下列返回值是字符型的函数是________.A. V AL()B. DA TETIME()C. CHR()D. MESSAGEBOX()52.设N=44,M=55,K=N+M,表达式1+&K的值是________A. 4456B. 100C. 1+M+ND. 数据类型不匹配53.在下面的表达式中,运算结果为逻辑真的是________A.LIKE("edit","edi?")B.EMPTY(.NULL.)C.AT("a","123abc")D.EMPTY(SPACE(200))54.在下列函数中,函数值为数值的是________A.BOF()B.CTOD('01/01/96')C.A T('人民’,‘中华人民共和国’)D.SUBSTR(DTOC(DATE()),7)55.以下不是VFP的合法表达式的是________A."学">"生"B. "学"+"生"C. "学"-"生"D. "学".or."生"56.在下面的Visual FoxPro表达式中,运算结果不为逻辑真的是________?A.EMPTY(SPACE(0))B.LIKE("xy*","xyz")C. AT("xy","abcxyz")D.ISNULL(.NULL.)57.以下表达式中不能返回字符串值“FoxPro”的是________?A.“Fox” + “Pro”B.TRIM(“Fox ” –“Pro”)C.ALLTRIM (“ Fox” + “Pro”)D.“Fox ” - “Pro ”58.在Visual FoxPro系统中,表达式LEN(DTOC(DA TE________,0))的值为________A.4B. 6C. 8D. 1059.设n=234,m=432, k="m+n",表达式1+&k的值是________A. 667B. 234433C. 234D. 43260在下面的Visual FoxPro表达式中,不正确的是________?A.{^2008-05-01 10:10:10 AM}-100B.{^2008-05-01}-DA TE()C.{^2008-05-01}+DA TE()D.{^2008-05-01}+10061.在下面的表达式中,运算结果为逻辑真的是________A.LIKE("AB*","ABCD")B.LIKE("ABC","AB")C.AT("A","BCDEF")D.EMPTY(.NULL.)62.执行以下命令的s2的结果为________s1="2008年奥运会祝贺中国成功举办"s2=substr(s1,13,8)+right(s1,4)+left(s1,12)+substr(s1,21,4)A. 祝贺2008年奥运会中国成功举办B. 祝贺2008年奥运会中国成功举办C. 祝贺中国举办2008年奥运会成功D. 祝贺中国2008年奥运会举办成功63.在下列表达式中,运算结果为数值的是________A. [8888]-[122]B.LEN(SPACE(5))-1C.CTOD("04/05/99")-30D. 800+200=100064.下列程序段的执行结果是________ DIME a(8) a(1)=1 a(2)=1 for i=3 to 8 a(i)=a(i-1)+a(i-2) next ?a(7)A. 5B. 8C. 13D. 2165.下面程序的运行结果是________ SET EXACT ON s="ni"+SPACE(2) IF s= ="ni" IF s="ni" "one" ELSE "two" ENDIF ELSE IF s="ni" "three" ELSE "four" ENDIF ENDIF RETURNA. One B . two C. three D. four66.下列程序段执行以后,内存变量y的值是________ x=76543 y=0 DO WHILE x>0 y=x%10+y*10 x=int(x/10) ENDDOA. 3456B. 34567C. 7654D. 7654367.下列程序段执行以后,内存变量y的值是________ x=12345 y=0 DO WHILE x>0 y=x%10+y*10 x=int(x/10) ENDDOA. 345B. 3456C. 54321D. 7654368.下面程序计算一个整数的各位数字之和,在下划线处应填写的语句是________ SET TALK OFF INPUT "x=" TO x s=0 DO WHILE x!=0 s=s+MOD(x,10) ________ ENDDO s SET TALK ONA. x=int(x/10)B. x=int(x%10)C. x=x-int(x/10)D. x=x-int(x%10)69.下列程序段执行以后,内存变量y的值是________ CLEAR x=1234 y=0 DO WHILE x>0 y=y+x%10 x=int(x/10) ENDDO yA. 54321B. 1234C. 51D. 1570.下列程序段执行时在屏幕上显示的结果是________ DIME a(6) a(1)=1 a(2)=1 FOR i=3 TO6 a(i)=a(i-1)+a(i-2) NEXT ?a(6)A. 5B. 6C. 7D. 871. 下列程序段执行时在屏幕上显示的结果是________ x1=20 x2=30 SET UDFPARMS TOV ALUE DO test WITH x1,x2 xl,x2 PROCEDURE test PARAMETERS a,b x=a a=b b=x ENDPROA.30 30B. 30 20C. 20 20D. 20 3072.下面关于过程调用的陈述中,哪个是正确的________A. 实参与形参的数量必须相等B. 当实参的数量多于形参的数量时,多余的实参被忽略C. 当形参的数量多于实参的数量时,多余的形参取逻辑假D. 当形参的数量多于实参的数量时,多余的形参取逻辑真73.下面程序的运行结果是________ SET TALK OFF n=1 proc1(n) ? n+2 PROCEDURE proc1 PARAMETERS n FOR k=2 TO 4 n=n+k ENDFOR RETURNA. 3B. 10C. 11D. 1274.下面程序的运行结果是________ SET TALK OFF n=1 DO proc1 WITH (n) ? n+2 PROCEDURE proc1 PARAMETERS n FOR k=2 TO 4 n=n+k ENDFOR RETURNA. 3B. 10C. 11D. 1275.如果一个过程不包含RETURN语句,或者RETURN语句中没有指定表达式,那么该过程________A. 没有返回值B. 返回0C. 返回.F.D. 返回.T.76.下列程序段执行以后,内存变量X和Y的值是________ CLEAR STORE 3 TO X STORE 5 TO Y SET UDFPARMS TO REFERENCE DO PLUS WITH (X),Y X,Y PROCEDURE PLUS PARAMETERS A1,A2 A1=A1+A2 A2=A1+A2 ENDPROCA. 5 8B. 8 13C. 5 13D. 3 1377.下列叙述中正确的是________A. 算法就是程序B. 设计算法时只需要考虑数据结构的设计C. 设计算法时只需要考虑结果的可靠性D. 以上三种说法都不对78.假设当前表、当前记录的“科目”字段值为“计算机”(字符型),在命令窗口输入如下命令将显示结果________ m=科目-"考试" mA. 计算机B. 考试C. 计算机考试D. 计算机考试79.下面关于过程和函数调用的陈述中,哪个是正确的________A. 过程调用参数默认传递方式是值传递B. 函数调用参数默认传递方式是值传递C. 过程调用参数传递时在实参前加“@”强制设为值传递D. 函数调用参数传递时在实参前两边加“()”强制设为值传递80.在DO WHILE…ENDDO 循环结构中LOOP 语句的作用是________A. 该语句在DO WHILE…ENDDO 循环结构中不起任何作用B. 转移到DO WHILE 语句行,开始下一次判断和循环C. 终止循环,将控制转移到本循环结构ENDDO 后面的第一条语句继续执行D. 退出循环,返回到程序开始处81.在SCAN…ENDS 循环结构中LOOP 语句的作用是________A. 该语句在循环结构中不起任何作用B. 转移到SCAN 语句行,开始下一次判断和循环C. 终止循环,将控制转移到本循环结构ENDS 后面的第一条语句继续执行D. 退出循环,返回到程序开始处82.不属于程序三种基本控制结构的是________A. 顺充结构B. 分支结构C. 循环结构D. 逻辑结构83.在程序中执行命令________ 将退出VFP返回到操作系统A. RETURNB. CANCELC. QUITD. EXIT84.内在变量按其在程序中的使用范围分类不可能是________A. 私有变量B. 全局变量C. 局部变量D. 循环变量85.下列语句中,可给内存变量赋值的语句是________A. REPLACEB. W AITC. QUITD. ACCEPT86.下列语句中,不是输出语句的是________A. ?B. W AITC. ??D. ACCEPT87.下列语句中,是VFP输出语句的是________A. REPLACEB. WAITC. QUITD. ACCEPT88.用W AIT命令给内在变量输入数据时,内存变量所获得的数据是________A. 任意长度的字符串B. 一个字符串和一个回车符C. 数值型数据D. 一个字符89.不能将LOOP作为有效命令使用的程序控制语句是________A. FOR ENDFORB. SCAN ENDSCANC. DO CASE ENDCASED. DO WHILE ENDDO 90在下面的DO循环中,一共要循环________次M=5 N=1 Do while n<=m N=n+1 EnddoA. 1B. 6C. 4D. 591.下列程序的运行结果为________ Set talk on Store 0 to x,y Do while X<10 X=x+1 If int(x/2)=x/2 LOOP Else Y=y+x Endif Enddo ?”y=”,y ReturnA. y=5B. y=15C. y=20D. y=2592.下列程序的运行结果为________ Set talk on Store 0 to x,y Do while X<10 X=x+1 If int(x/2)!=x/2 LOOP Else Y=y+x Endif Enddo ?”y=”,y ReturnA. y=5B. y=15C. y=20D. y=2593.下列程序的运行结果为________ Set talk on Store 0 to x,y Do while X<10 X=x+1 If int(x/2)!=x/2 LOOP Else Y=y+x Endif Enddo ?”y=”,y ReturnA. y=5B. y=15C. y=20D. y=2594.下列程序的运行结果为________ Store 0 to x,y Do while X<5 X=x+1 If int(x/2)!=x/2 LOOP Else Y=y+x Endif Enddo ?”y=”,y ReturnA. y=5B. y=6C. y=4D. y=395.下列程序运行后,屏幕上显示的数据为________ CLEAR STORE "ABCDEF" TO C CC=SPACE(0) FOR I=1 TO LEN(C) CC=SUBSTR(C,I,1)+CC ENDF ?CCA. ABCDEFB. FEDCBAC. ABCD. DEF96.下列程序运行后,屏幕上显示的数据为________ CLEAR STORE "12AB315" TO C CC=SPACE(0) FOR I=1 TO LEN(C) CC=SUBSTR(C,I,1)+CC ENDF ?CCA. 12B. AB315C. 513BA21D. BA2197.下列程序运行后,屏幕上显示的第3行数据为________ CLEAR For i=4 to 15 If i=int(i/4)*5 ?i Endif EndforA. 5B. 10C. 15D. 2098.下列程序运行后,屏幕上显示的数据为________ CLEAR M=”WUD”N=space(0) For i=1 to len(m) J=ASC(substr(m,I,1)) N=n+chr(j-2) Endf ?nA. ABCB. DEFC. USBD. WYZ99.下列程序运行后,进入死循环,要想退出死循环应按键盘上的________ 键DO WHILE .T. ?RAND________ ENDDOA. ENTERB. ESCC. F1D. CTRL100.下列程序运行后,屏幕上显示的数据为________ CLEAR S=0 FOR I=1 TO 10 STEP 2 IF MOD(I,3)=0 S=S+I ENDIF ENDFOR ?SA.12B. 14C. 16D. 18二、填空题:1. 备注型字段的符号表示为________2. 日期型字段的符号表示为________3. 货币型字段的符号表示为________4. 通用型字段的符号表示为________5. 备注型与通用型字段的宽度固定为________.6. 日期型字段的宽度固定为________.7.表达式{^2000/09/18}-{^2000/09/20}的值为________.8.运行下列程序后,显示结果为________.CLEARy=dtoc(date________,1)y=.null.?type("y")9.运行下列程序后,显示结果为________.CLEARy=.null.?type(""y"")10.运行下列程序后,显示结果为________.CLEARi=0n=0do while i<=6if mod(i,2)=0n=n+1endifi=i+1enddo?n11.运行下列程序后,显示结果为________.CLEARi=0y="22222222"for i=1 to len(y)x=left(y,i)?space(20-2*i)+x+"*"+x+"="+alltrim(str(val(x)*val(x))) endfor?12.执行下列程序,显示的结果是________.one="WORK"two=""a=LEN(one)i=ado while i>=1two=two+substr(one,i,1)i=i-1enddo?two13.两个日期型数据相减得到的数据类型为________型。