1 / 66

第三章 Visual Foxpro 的语言基础

第三章 Visual Foxpro 的语言基础. 教学目的 : 1 .掌握数据类型、变量、常量、表达式等基本概念。 2 .学会变量的建立和输出。 3 .掌握常用的几个函数 :Int , Sqrt , Mod , Max , Min , Left , Right , Substr , Len , Ltrim , Trim , Alltrim , Val , Str , Date , Time , Year , Ctod , Dtoc , Bof , Eof , Recno , RecCount , & 。 教学重点: 数据类型、变量、常量的基本概念 教学难点:

dannon
Download Presentation

第三章 Visual Foxpro 的语言基础

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 第三章 Visual Foxpro的语言基础

  2. 教学目的: 1.掌握数据类型、变量、常量、表达式等基本概念。 2.学会变量的建立和输出。 3.掌握常用的几个函数:Int,Sqrt,Mod,Max, Min,Left,Right,Substr,Len,Ltrim, Trim,Alltrim,Val,Str,Date,Time,Year, Ctod,Dtoc,Bof,Eof,Recno,RecCount, &。 教学重点: 数据类型、变量、常量的基本概念 教学难点: 几种表达式的概念、区别

  3. 要处理的数据是海量的,为了更好的管理这些数据,将数据按照其特点进行了分类,分成了多种不同的数据。要处理的数据是海量的,为了更好的管理这些数据,将数据按照其特点进行了分类,分成了多种不同的数据。 2.1 数据类型 数据类型是简单数据的基本属性,是一个重要的概念。数据类型一旦被定义,就确定了其存储方式和使用方式。 Visual FoxPro系统提供了十三种数据类型。

  4. 1、字符型 字符型数据由字母(汉字)、数字、空格等任意ASCII码字符组成。 字符数据的长度为0~254字节,每个ASCII码占一个字节,每个汉字占两个字节。 例如:姓名为字符型字段,存放的“李钢” ……就是字符型数据 ,长度为4个字节 <字母(汉字)> 学号为字符型字段,存放的“95001” ……就是字符型数据,长度为5 个字节 <数字>

  5. 2、数值型 它由数字0~9、符号(+或-,+号可省略)和小数点(.)组成。数值型数据的长度为1~20字节(数据中的每个数字、小数点和正负号都各占一个字节)。 例如:年龄为数值型字段,存放的20、19就是数值型数据 ,长度为2 语文为数值型字段,存放的95.5就是数值型数据,长度为4 3、 浮点型 与数值型数据完全等价,数据精度要比数值型数据高,数据范围比数值型要广(用科学记数法)。 例如:总成绩为数值型字段,存放的576.55为浮点型数据,长度为6 234567000表示成浮点数是2.34567E8

  6. 4、整型 不包含小数点部分(整数) 只用于字段类型的定义,占用4个字节。 5、双精度型 更高精度的数值型数据 只用于数据表中的字段类型的定义,占用8个字节。 6、日期型 表示日期的数据,长度固定为8个字节 包括年、月、日三个部分,由于各部分的排列顺序及分隔符不同,日期型数据的表现形式也很多。 例如:出生日期为日期型字段,02/13/1979

  7. 7、日期时间型 是描述日期和时间的数据,长度固定为8个字节 除了包括年、月、日外,还包括时、分、秒以及上午、下午等 默认格式为“mm/dd/yyyy hh:mm:ss[A/P]” 8、逻辑型 描述客观事物真假的数据 只有真和假两种值,长度固定为1个字节 例如:党员否字段就是逻辑型字段 .F. .T. ( .Y. .N.)

  8. 9、备注型 用于存放较长(大于254字节)的字符型数据 长度仅受磁盘空间的限制,它只用于数据表中的字段类型的定义,长度固定为4个字节 实际数据一般是大于4个字符的,他们实际上是被存放在与数据表文件同名的备注文件(FPT)中,4个字节存放的是指向该备注文件的指针。 例如:备注说明字段就是备注型字段 10、通用型 用于存储OLE对象的数据。通用型数据中的OLE对象可以是电子表格、文档、图片等。只用于数据表中的字段类型的定义。 通用型数据长度固定为4个字节,实际数据存放到了磁盘空间内,保存在与数据表文件同名的备注文件(FPT)中。 例如:相片字段就是通用型字段

  9. 11、 货币型 是一种特殊形式,在数据的第一个数字前冠一个货币符号($),小数位超过4个字符的数据,系统将会按四舍五入原则自动截取 占用8个字节例如:月花费为货币型字段,$500.0000为货币型数据若输入500.483880 系统将自动保存为 $500.4839

  10. 3.2 常量与变量 一、常量(数据) 常量:一旦存放到计算机中,它的值就不再发生变化,不管对它进行什么操作,值都不发生变化。 常量的类型:数值型、字符型、逻辑型、日期型和日期时间型 1、数值型常量 由数字(0-9)、小数点和正负号组成。 例如:以下是合法的数值型常量 -123.56 768 +32 567.67 -123e+12 -3645e-89 表示:-123*1012和-3645*10–89

  11. 2、字符型常量 用双引号“”、单引号‘’或方括号[ ]等定界符括起来的字符串(汉字和ASCII码) 例如:“武汉大学” [Foxpro] ‘123.456’ 3、逻辑型常量 逻辑型常量只有真和假两种值。要用定界符(.) 例如: .T.,.t.,.Y. 和.y.都表示真; .F.,.f.,.N.和.n.都表示假。

  12. 4、日期常量 常用的系统输入格式:{^yyyy/mm/dd} 常用的系统输出格式:mm/dd/yy (显示格式) 其中,mm代表月,dd代表日,yy或yyyy代表年。 例如:以下是合法的日期型常量 04/12/98 (显示格式) {^2002/03/01}

  13. 6、日期时间型常量 日期时间常量常用的系统输入格式:{^yyyy/mm/dd hh:mm:ss}日期时间常量常用的系统输出格式:mm/dd/yy hh:mm:ss 其中:mm代表月,dd代表日,yy或yyyy代表年,hh代表小时,后两个mm代表分钟,ss代表秒。、 例如:以下是合法的日期时间型常量 ?{^1997/06/23 09:16:36}

  14. 二、变量 在命令操作和程序运行过程中其值允许变化的量称为变量,变量包括系统变量、内存(数组)变量、和字段变量3种。 1、系统变量 系统自动定义生成的变量,变量名由系统定义并且是以”-“开头,有特殊用途。 display memory &&显示所有系统变量

  15. 2、内存变量 内存变量可用来存储数据,定义内存变量时需为它命名并赋初值,内存变量建立后存储于内存中。 由于内存变量是存放在内存当中的,所以除非将内存变量以文件的形式保存,否则,当退出visual foxpro系统后,内存变量的值也会与系统一起从内存中消除。 内存变量的类型有数值型、浮点型、字符型、逻辑型、日期型和日期时间型。 每个内存变量有一个唯一的名字。

  16. (1) 内存变量的命名规则 内存变量名最长不超过254个字节长度,可以字母(汉字)、下划线开头,由字母(汉字)、数字及下划线组成。 内存变量名的命名尽量要有意义,以便识别和具有可读性。 哪些是正确的变量名: ABC LIST 12K #1234 _ASD K&12 A_123

  17. (2 ) 内存变量赋值命令 ①可直接用 = 赋值 内存变量=<表达式> 例如: m=4 n=5 a=m-n ②可采用STORE 间接赋值 STORE <表达式> TO 内存变量 例如: STORE 1.2 TO a,c STORE “武汉大学”TO b STORE {^1995/05/30} TO d

  18. 说明: 内存变量在赋值时定义了它的值及类型,其类型与所赋的值的类型相同。 STORE命令的内存变量表可包括多个内存变量,但必须用逗号来分隔。该命令可将同一值赋给多个内存变量。 而“=”命令仅可为一个内存变量赋值。 (3)内存变量的显示 命令格式:?| ??<表达式> 功能:计算表达式的值,并将其显示在屏幕上。 说明: 命令格式中的符号| 表示或。

  19. ?表示从屏幕下一行的第一列起显示结果, 例如: STORE 1.2 TO a,c STORE “武汉大学”TO b ?a && VFP主窗口里显示 1.2 ?b &&换一行后显示武汉大学 ??表示从当前行的当前列起显示结果。 例如: ?a &&显示1.2 ??“武汉大学” &&紧接在上一命令显示结果1.2的后面显示武汉大学 ??? :将表达式的值输出到打印机进行打印

  20. 注: <表达式表>表示可用逗号来隔开多个表达式,命令执行时遇逗号就空一格。 写出执行以下命令后屏幕上输出的结果: A=12 B=5 ?"a=",a ??"b=",b ?"a+b=",a+b

  21. (4)内存变量的全面信息显示 Display Memo [Like<通配符>] [To Printer][To File<文件名>] 参数说明: ◆ 该命令可以显示所有内存变量的名称、作用域、类型、值等 信息。 ◆ 如果选择[Like<通配符>]选项,则仅显示有关内存变量的信 息。 ◆ 如果选择[To Printer] 选项,表示送打印机对于打印。 ◆ 如果选择[To File<文件名>]选项,表示把内存变量的有关信 息保存到一个文本文件。 例3-12 内存变量的信息显示示例。 Disp Memo &&显示所有的内存变量的信息 Disp Memo Like A* &&显示以A开头所有的内存变量的信息

  22. (4) 内存变量的删除 内存变量会占用一定的内存空间。在程序运行的过程中,如果某些内存变量使用后不再需要,为了节省内存空间,应进行删除。 Release <内存变量名表/All> [Like<通配符>] Clear Memory (该命令与Release All命令相同) 例:前面我们已经建立了A1,A2,A3,B1变量,现在来进行内存变量的释放。 Release A1,A2,A3 Dispay Memory &&A1,A2,A3变量被释放,只有B1变量存在

  23. 3、字段变量 一个数据库由若干相关的数据表组成,一个数据表又是由若干个具有相同属性的记录组成,而每一个记录又是由若干个字段组成的。 字段变量(字段名变量):用户在定义表结构时所定义的变量。 是一种多值变量,它随着数据表记录指针的移动而不同。 例如:

  24. 3.3 运算符和表达式 运算符:表示数据之间运算方式的符号 VFP运算符包括算术运算符、逻辑运算符、关系运算符和字符运算符 表达式:数据之间运算关系的表达形式,由常量、变量、函数及运算符组成, 单个数据是表达式的特例 表达式按参与运算的数据类型,可划分为算术表达式、逻辑表达式、关系表达式、日期表达式、字符表达式和五种。 注:表达式各个部分的数据类形必须一致

  25. 一、算术表达式 算术运算符:包括:();^或** ;* /; %;+-; 算术运算符及运算规则(按优先权列出) 算术表达式:对象必须是数值型数据(常量、内存变量等),运算结果仍然是数值型。

  26. 例: 算术表达式示例。 10+20/4+SQRT(16) &&正确的表达式,SQRT()为开方函数 A1=”24” 2+6/3+VAL(A1)\5+25%5 &&正确的表达式,VAL()为字符串转换为数值函数 5*(3-SQRT(4)+ABS(15-60)) &&正确的表达式 A=”123” B=123 2*A+3*B-5 &&错误的表达式

  27. 二、字符表达式 字符运算符:(对字符型数据进行各种操作的运算符) + 完全连接运算 - 将前串尾空格移至后串的尾部再连接 $ 测试前串是否包含在后串中 字符表达式:包含字符型数据(常量、内存变量、数组、字段),字符运算符。 + ① 完全连接格式为:“字符串1”+“字符串2”+... 例如: ?"中国 "+"辽宁 "+"大连"&&结果为: 中国 辽宁 大连 ?“234”+A1 &&错误的表达式

  28. - ② 不完全连接格式:“字符串1”-“字符串2”-。。。“字符串N” 例如: ?"中国 "-"辽宁 ","大连“ &&结果为:中国辽宁 大连 $ ③ 包含运算格式:“〈字符串1〉”$ “〈字符串2〉” 如果<字符串2>包含<字符串1>,则其运算结果为“.T.”,否则为“.F.” 例如: ?”计算机”$”计算机概论” &&结果为.T. ? “or” $ “girl” &&结果为? ? "good"$"FoxPro for windows is Good" &&结果为.F.

  29. 三、日期表达式 日期运算符: +: 日期与数值相加,结果为该日期之后几天的日期。 日期加日期,非法 -: 日期减数值时,其结果为该日期之前的某天的日期 日期减日期,其结果为两日期之间相差的天数。 数值减日期是不合法的。 日期表达式:包含日期型、数值型的常量、变量、函数、及日期型运算符,其运算结果为日期型数据或数值型数据

  30. 例如: ?DATE()+15 ?{^1998/10/10}+5 &&结果为10/15/98 ?{^1998/10/10}-20 &&结果为09/20/98 ?{^1998/10/15}-{^1998/10/10} &&结果为? ?20-{^1998/10/10} &&结果为? ?DATE()+{^1998/10/15} &&结果为?

  31. 四、日期时间表达式 日期时间运算符: +:在已给的日期上再加上秒数 -:在已给的日期上前去秒数 或 计算已给的两个日期相差的秒数 日期时间表达式:由日期运算符和日期时间型常量、变量和返回日期时间型数据的函数组成。 例如: ?{^1998/10/10 9:15:20}+200 &&结果为10/10/98 9:18:40 ?{^1998/10/10 9:18:40}-{^1998/10/10 9:15:20} &&结果为200 ?{^1998/10/10 9:15:20}-20 &&结果为?

  32. 五、关系表达式 关系运算符: <, >, = , <>(#、!=), <=,>=,= =(完全相等) 用于比较大小, 产生逻辑值。 它们的运算优先级是相同的,由先后次序和括号来确定先运算那一步。

  33. =:在系统默认的情况下,只要=右边的字符串与左边字=:在系统默认的情况下,只要=右边的字符串与左边字 符串的左端的部分相同,则系统判断为相同。 ==:要求两个字符串的长度相同且各对应的字符都相同 时,系统才判断为相同。 关系表达式:由字符表达式、日期表达式、或者算术表达式及关系运算符组成,其运算结果为逻辑值 运算规则: 非汉字字符串按ASCII码值大小进行比较。 汉字字符串按区位码大小进行比较。 日期型数据,前小后大。 逻辑数据.T.大于.F.

  34. 关系运算最基本也是最重要的是:关系运算符两边的数据类型必须一致,只有同一类型的数据才能相比较。关系运算最基本也是最重要的是:关系运算符两边的数据类型必须一致,只有同一类型的数据才能相比较。 例如: ?5+3*2>3*1.5+1 &&结果为.T. ? DATE()>{^1999/12/30} &&结果为.T. ? 2<>2 &&结果为.F. ?"a"<"AB" &&结果为.F. ?"计算机概论"="计算机" ?"计算机概论"$"计算机“ ?"计算机概论"=="计算机"

  35. 六、逻辑表达式 逻辑运算符: .not. 取反运算 .and. 与运算 仅当两个分量的值均为真时,其运算结果才为真。 .or . 或运算 当两个分量至少有一个为真时,其运算结果就为真。 运算优先顺序:not 最高,or 最低。 逻辑运算的真值表见P36表3-5 逻辑表达式: I.由逻辑运算符和逻辑型常量、变量、返回逻辑型数据的函数和关系表达式组成,其运算结果是逻辑值真“.T.”“.Y.”或假“.F.”“.N.”。 II.逻辑运算符的优先级按非(NOT)、与(AND)、或(OR)的次序执行。

  36. 例如: ?.not.‘d’<’a’ &&结果为.T. A=5 B=10 C=”ABCD” ? A>10 AND B>5 &&结果为.F. ? NOT A=5 &&结果为.F. ? A>10 OR B>5 &&结果为.T. ?.T. And C=”AB” &&结果为.T. ? A>C OR B>5 &&错误的表达式

  37. 七: 各种表达式之间的运算优先级 不同类型表达式的运算优先级别为: 圆括号>函数>算术运算符>字符运算符 > 关系运算符>逻辑运算符。 习题: 设a=[123],B=[234],表达式的值为假(.F.) 是 。 A).Not.A=B.Or."B" $ [Abc] B) .Not.A$[Abc].And.A<>B C).Not.A<>B D).Not.A>=B

  38. 3.4 函数 VFP定义的标准函数十分丰富,共有200余个。灵活运用这些函数,不仅可以简化许多运算,而且能够加强VFP的许多功能。 按函数功能可将函数划为:数值型函数、字符型函数、日期和时间函数、数据类型转换函数、字符处理函数、测试函数及宏替换函数。 <函数名>(参数)

  39. 一、数值型函数 1、Int(<数值表达式>) 返回数值表达式的整数部分,不四舍五入。 常用于奇、偶数的判断。 例:取整函数示例。 ? Int(5/2) &&结果为2 A=24 b=1 ? Int(A/2)=A/2 &&结果为? ? Int((A+B)/2)=(A+B)/2 &&结果为?

  40. 2.取模函数 Mod(<数值表达式1>,<数值表达式2>) 例: ?MOD(21,4) A=6 B=3 ? A+B%2 &&结果为7 ? Mod(A,2)=0 &&结果为.T. ? A+B%2=0 &&结果为.F.

  41. 3.伪随机数 Rand(<数值表达式>) 产生一个0.1到1之间的伪随机数。 例:产生一个小于100的伪随机数示例。 ?Int(Rand()*100) MAX()、MIN()、SQRT()、ABS()、EXP()、ROUND()、LOG()

  42. 二、字符型函数 1.字符串截取函数 Substr(<字符表达式>,<数值表达式1>[,<数值表达式2>]) 例:字符串截取函数示例。 ?Subs("东华理工学院",5,4) &&结果为理工 ?Subs(“2008年北京奥运会”,7) &&结果为北京奥运会 A=”VISUAL FOXPRO” ? Substr(A, 8,3) &&结果为:?

  43. 2.产生空格函数 Space(<数值表达式>) 按<数值表达式>的值,产生空格字符串赋给内存变量。 例:空格函数示例。 k=Space(3) ?Len(K) &&求K变量字符串的长度,结果为3 ?‘'Visual"+k+"Foxpro'’ &&结果为Visual Foxpro

  44. 3.左截子串函数 Left(<字符表达式>,<数值表达式>) 从字符表达式左边第一个字符开始截取<数值表达式>个字符,生成一个新的字符串。 例 左截子串函数、右截子串(Right )函数示例。 ? Left(“ABCDE",2) &&结果为AB ?Right(“ABCDE",2) &&结果为DE A=”FOXPRO 2.6 FOR WINDOWS” ?Left(A,10) &&结果为:FOXPRO 2.6

  45. 4.子串查找函数 At(<字符表达式1>,<字符表达式2>[,数值表达式]) 查找<字符表达式l>在<字符表达式2>中第<数值表达式>次出现的起始位置。 例:子串查找函数示例。 ?At(‘D’,’ADCDB',2) &&结果为4 5.求字符串长度函数 Len(<字符表达式>)求字符表达式的长度。 例: 求字符串长度函数示例。 ?Len(“Foxpro") &&结果为6 ?Len(“东华理工大学”) &&结果?

  46. 6.删除字符表达式前后的空格函数 AllTrim(<字符串表达式>) 返回删除<字符表达式>前置空格及尾部的空格的字符串。 例:删除字符表达式前后的空格函数示例。 A=” ABCDEF “ ? Len(A) &&结果为11 ? Alltrim(A) &&结果为ABCDEF B=Alltrim(A) ?Len(B) &&结果为6 其它函数: Ltrim()、trim()、replicate()

  47. 三、日期和时间函数 1.系统日期函数 Date() 返回系统当前日期。 例:系统日期函数示例。 ?Date() &&返回系统当日日期 2.系统时间函数 Time() 以时:分:秒的形式返回系统当前的时间。。 例:系统时间函数示例。 ?Time() &&结果为14:45:55

  48. 3.Year函数 Year(<日期表达式>) 返回<日期表达式>中的年份,它是一个四位数的数值型数据。 例: Year函数示例。 A={^1985/05/26} ? Year(date())-Year(A) &&结果为? Cdow() 、Dow ()、 Month()、 Cmonth()、 day()

  49. 四、数据类型转换函数 1.字符型的数据转换数值 函数VAL() Val<字符表达式> 将以纯数字表示的<字符表达式>或以数字开头的<字符表达式>中的开头数字字符串转换为数值型数据,精度为小数二位,会四舍五入。 如果不是以纯数字表示的或不是以数字开头的字符串,则转换为0.00。

More Related