1 / 125

第三章  Visual FoxPro 语言基础

第三章  Visual FoxPro 语言基础. 本章,我们学习 Visual FoxPro 的主要语法规则、常用命令和函数。. 3.1  数据类型、常量和变量. 数据有 “ 类型 ” 和 “ 值 ” 两个属性, “ 类型 ” 是数据的分类, “ 值 ” 是数据的具体表示。 3.1.1  数据类型   在程序设计中, Visual FoxPro 的数据类型有 字符型 、 数值型 、 逻辑型 、 日期型 、 日期时间型 和 货币型 。. 1 、字符型 : 是由字符串定界括起来的一串字符。

snana
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语言基础 • 本章,我们学习Visual FoxPro的主要语法规则、常用命令和函数。

  2. 3.1 数据类型、常量和变量 • 数据有“类型”和“值”两个属性,“类型”是数据的分类,“值”是数据的具体表示。 • 3.1.1 数据类型 •   在程序设计中,Visual FoxPro的数据类型有字符型、数值型、逻辑型、日期型、日期时间型和货币型。

  3. 1、字符型:是由字符串定界括起来的一串字符。1、字符型:是由字符串定界括起来的一串字符。 • 字符型数据由英文字符、数字字符、中文字符、空格和其他专用符号组成。例如"I am a student"、'2004/10/10'、[123.456]等都是字符型数据。 • 2、数值型 • 数值型数据由数字、小数点和正负号组成,如123.456、-2都是数值型数据。 • 3、逻辑型 • 逻辑型数据长度为1个字节,它只能为真或假。“真”(True,Yes)用.T.或.Y.表示,“假”(False,No)用.F.或.N.表示, • 注意:逻辑值旁边有两个点,这是逻辑型数据的定界符。

  4. 4、日期型 • 日期型数据占8个字节,范围从01/01/1000(1000年1月1日)到12/31/9999,表示方法是{^yyyy-mm-dd},定界符是一对花括号。其中,yyyy表示年份,mm表示月份,dd表示日期。例如,{^2005-01-01}就是一个日期型数据。 • 5、日期时间型 • 日期时间型数据也占8个字节,年份范围从01/01/1000(1000年1月1日)到12/31/9999,时间范围从00:00:00a~11:59:59p(凌晨0点0分0秒到午夜11点59分59秒).书写格式为{^yyyy-mm-dd [hh[:mm[:ss]] [a|am|p|pm]]},定界符也是一对花括号。年月日的约定和日期型数据相同,hh表示小时,mm表示分钟,ss表示秒数,a或am表示上午,p或pm表示下午,大小写均可。 • 例如,下面都是合法的日期时间型数据。

  5. 6、货币型 •   货币型数据的范围是-922337203685477.5808~922337203685477.5807,可精确到小数点后四位。所以,给货币型变量赋的值如果小数位数超过4位,Visual FoxPro会在对数据进行处理前自动四舍五入。为了区分货币型数据和数值型数据,货币型数据前要加美元符号“$”,这是货币型数据的定界符,如$123.456、$-123.45678等,但$-123.45678在进行处理前会自动四舍五入,变为$-123.4568。

  6. 综上所述,在程序设计中,Visual FoxPro的数据类型如表3.2所示

  7. 3.1.2 常量 • 常量(Constant)是一个不变的值.按数据类型区分,可分为字符型、数值型、逻辑型、日期型、日期时间型和货币型。 • 1、字符型常量 •   字符型常量也称为字符串,需要注意的是:

  8. 字符串中的字母,大小写并不等价,如"ABC"并不等价于"abc"。字符串中的字母,大小写并不等价,如"ABC"并不等价于"abc"。 • 不包含任何字符的字符串""称为空串,它的长度为0,与包含空格的字符串" "不同。 • 定界符必须成对匹配,不能出现一头为单引号而另一头为双引号等情况。 • 如果某种定界符本身也是字符串的内容,则需要用另一种定界符表示该字符串。

  9. 表3.3列出了一些字符串的表示方法

  10. 2、数值型常量 • 数值型常量也称为常数,由数字、小数点和正负号组成。注意,在程序中,数值型常量的值可以很大,要存储范围更广的数值,需要将字段定义为其他类型。 • 3、逻辑型常量 • 逻辑型常量只有.T.、.Y.、.F.、.N.,实际上只有两个值:.T.和.F.。 • 4、日期型常量 • 日期型常量的表示方法是{^yyyy-mm-dd}。空日期用{}表示。

  11. 5、日期时间型常量 • 日期时间型常量的表示方式是{^yyyy-mm-dd [hh[:mm[:ss]] [a|am|p|pm]]}。 • 需要注意的是,Visual FoxPro传统的日期和日期时间格式不带“^”,在日期型或日期时间型常量前加“^”是Visual FoxPro 6.0以后规定的严格日期格式,并且是默认设置。 • 6、货币型常量 • 货币型常量前要加美元符号“$”,不再赘述。

  12. 3.1.3 变量 • 变量是程序的基本单元。在Visual FoxPro中,变量分为内存变量、数组变量、系统变量、字段变量和对象变量5种。本章介绍前三种变量。 • 1、内存变量 •   在很多情况下,内存变量可简称变量,它是由用户或程序员定义的内存中的一个或一组存储单元,由变量名进行标识,并通过变量名来读写。

  13. 例如,在“命令”窗口中可以输入以下两条命令:例如,在“命令”窗口中可以输入以下两条命令: • STORE "张莉" TO sname • age = 20 • 在输入时注意,命令要逐个输入,并且以回车结束。 •   赋值运算符在一条命令中只能为一个变量赋值,而STORE命令可以在一条命令中给多个变量赋值,例如: • STORE "张莉" TO sname1, sname2 •   怎样输出内存变量呢? •   要输出内存变量,可以使用“?”或“??”命令,语法格式为: • ?|?? <表达式1> [AT <显示列位置>]其中,“?”命令表示输出结果后回车换行,“??”命令表示输出结果后不回车换行,“AT <显示列位置>”指定从第几列开始显示。

  14. 图3.2 “?”和“??”命令的使用 例如,如果我们要显示上面已经定义了的sname和age变量,一些例子如图3.2所示。 • Visual FoxPro默认数值型数据的整数部分占10列。屏幕左边的第一列的列号是第0列,默认是从第0列开始显示;当用一条“?”命令显示多个变量值时,各值以逗号分隔。

  15. 2、数组变量 •   数组是一组对象的集合。Visual FoxPro允许定义一维和二维数组,创建数组的命令格式为: • DIMENSION 数组名1(行数1 [, 列数1])[, 数组名2(行数2 [, n列数2])] ... • 或者: • DECLARE 数组名1(行数1 [, 列数1])[, 数组名2(行数2 [, n列数2])] ... • 可以看出,DIMENSION命令和DECLARE命令的格式完全相同,它们的功能也一样。在两条命令中,如果省略数组的列数,则数组为一维数组。

  16. 图3.3 数组的使用 数组的定义和使用的例子如图3.3所示。

  17. 注意:Visual FoxPro中的数组的下标从1开始,例如,在定义了数组B(2,3)之后,下面的语句是错误的: • B(0,1) = 10 &&行下标应该从1开始 • B(1,0) = 10 &&列下标也应该从1开始

  18. 3、系统变量 • Visual FoxPro提供了很多事先定义好的变量,称为系统变量。 • 例如,Visual FoxPro用系统变量“_DIARYDATE”存储当前日期,我们可以显示并修改它。假设当前日期是2003年8月12日,如图3.4所示,可以将_DIARYDATE修改为2005年10月1日。

  19. 3.4 使用_DIARYDATE系统变量

  20. 然后,在“命令”窗口执行下面的    ACTIVATE WINDOW calendar &&激活“日历/日记”窗口 • 执行后,Visual FoxPro将激活“日历/日记”窗口,显示的日期是2005年10月1日,如图3.5所示。

  21. 激活“日历/日记”窗口 输入并回车 图3.5 激活“日历/日记”窗口

  22. 图3.6 将_DIARYDATE的值改回当前日期 • 修改_DIARYDATE系统变量影响范围有限,只影响Visual FoxPro内部的“日历/日记”窗口的显示,而不会影响Windows的日期设置。例如,如果在“日历/日记”窗口中单击“今天”按钮,则_DIARYDATE变量又被设置回2003年8月12日,如图3.6所示。

  23. 4、内存变量的显示 • 显示内存变量,可以使用“DISPLAY MEMORY”或“LIST MEMORY”命令。 • “DISPLAY MEMORY”命令的格式为: • DISPLAY MEMORY • [LIKE FileSkeleton][TO PRINTER [PROMPT] |; TO FILE FileName][NOCONSOLE] • 该命令显示内存变量和数组的名称、类型、内容和状态,也显示有关系统变量、菜单、菜单栏、菜单标题和窗口的信息。各参数的意义如下:

  24. “LIKE FileSkeleton”:只显示匹配FileSkeleton的变量和数组的内容,FileSkeleton支持文件名通配符。 • “TO PRINTER [PROMPT]”:将显示的结果输出到打印机。“PROMPT”是在打印前显示一个对话框,可以调整打印机的设置。“PROMPT”必须放在“TO PRINTER”之后。 • “TO FILE FileName”:将显示的结果输出到文件。如果文件已存在,并且“SET SAFETY”设置为“ON”(见本章),系统就会问您是否覆盖文件。 • “NOCONSOLE”:不向Visual FoxPro主窗口或活动的用户自定义窗口输出。

  25. 图3.7 执行“DISPLAY MEMORY”命令时的首屏显示 • 例如,当执行了不带任何参数的: • DISPLAY MEMORY • 执行后,Visual FoxPro主窗口如图3.7所示。

  26. 如果尚未定义内存变量,执行下面的语句: • STORE "Hello" TO a1 • STORE "World" TO a2 • STORE "Fox" TO b2 • CLEAR • DISPLAY MEMORY LIKE a* &&显示所有以字母A开头的变量信息 • DISPLAY MEMORY LIKE ?2 &&显示所有以2结尾的名称为两个字符的变量信息 • 后,显示的信息如图3.8所示。

  27. 图3.8 定义并显示内存变量信息

  28. 5、内存变量的清除 •  可以用四种命令清除内存变量: •   (1)CLEAR MEMORY •   (2)RELEASE 内存变量名表 •   (3)RELEASE ALL [EXTENDED] •   (4)RELEASE ALL [LIKE 通配符| EXCEPT 通配符]  命令命令(4)选用“LIKE”短语清除与通配符相匹配的内存变量,选用“EXCEPT”短语清除与通配符不相匹配的内存变量。 •   例如: • RELEASE a1, a2 &&清除内存变量a1和a2 • RELEASE ALL &&清除所有内存变量 • RELEASE ALL LIKE ?2 &&清除所有名称包含两个字符且以2结尾的内存变量 • CLEAR MEMORY &&清除所有内存变量 • 注意,系统变量不会被清除。

  29. 3.1.4Visual FoxPro的名称命名规则 • 常量、变量以及我们今后将要学习的自定义函数、过程、数据容器等都需要一个名称,建立这些名称时,必须遵循以下规则: • l名称中只能包含字母、下划线“_”、数字和汉字。 • l名称的开头只能是字母、汉字或下划线“_”,不能是数字,但表的字段名不能以下划线开头。 •   例如,下面的名称是合法的: • abc、a2b3、_sum_of_number、张三 •   下面的名称是不合法的: • 3abc、a-to-z、number$one、 •   诸如“CLEAR = 1”、“QUIT = 2”之类的语句虽然没有错误,但应该避免使用系统关键字作为变量名。

  30. 3.2 运算符和表达式 • 3.2.1 运算符 • 运算符是对变量操作的符号用于操作同类型数据 。 • 1、算术运算符 • 算术运算符也称为数值运算符,用于操作数值型数据。运算符有优先级高低之分,例如,乘除运算的优先级高于加减运算。

  31. 按优先级高低排列,算术运算符如表3.4所示。

  32. 2、字符运算符 •   对字符串的操作有+、-和$等几种,用语连接和比较字符串。

  33. 按优先级的顺序排列,字符运算符如表3.5所示。按优先级的顺序排列,字符运算符如表3.5所示。

  34. 3、日期和日期时间运算符 • 对日期和日期时间型数据,可以使用的运算符只有“+”和“-”两个。日期和日期时间型数据只能和数值型数据相加,对日期型数据来说,数值型数据代表增加的天数,对日期时间型数据来说,数值型数据代表增加的秒数,只取数值型数据的整数部参加运算。例如: • ? {^2005-7-1} + 10 &&结果为“07/11/05”,日期型 • ?{^2005-7-1 1:0:10} + 10 &&结果为“07/01/05 01:00:20 AM”,日期时间型 •   对于减法来说,减数可以是数值型,表示减去的天数或秒数。例如: • ? {^2005-7-1} – 10 &&结果为“06/21/05”,日期型 • ?{^2005-7-1 1:0:10} - 10 &&结果为“07/01/05 01:00:00 AM”,日期时间型 •   减数也可以是同类型数据,结果为数值型数据,表示天数或秒数。例如: • ? {^2005-7-1} - {^2004-7-1} &&结果为“365”,数值型,表示天数 • ?{^2005-7-1 1:0:10} - {^2005-6-1 1:0:10} &&结果为“2592000”,数值型,表示秒数

  35. 4、关系运算符  关系运算符可用于任意数据类型的数据比较,但要求运算符两边的操作数的类型相同。运算结果为逻辑值。4、关系运算符  关系运算符可用于任意数据类型的数据比较,但要求运算符两边的操作数的类型相同。运算结果为逻辑值。

  36. 关系运算符如表3.6所示。

  37. 5、逻辑运算符 •   逻辑运算符用于操作逻辑型数据,并返回一个逻辑值。逻辑运算符有逻辑与(AND)、逻辑或(OR)、逻辑非(NOT或!),

  38. 它们的基本运算规则如表3.7~表3.9所示。

  39. 表3.8OR运算的规则

  40. 表3.9NOT或 ! 运算的规则

  41. 在三个逻辑运算符中,NOT的优先级最高,再次是AND,而OR的优先级最低。但括号的优先级比它们都高。在三个逻辑运算符中,NOT的优先级最高,再次是AND,而OR的优先级最低。但括号的优先级比它们都高。 • 例如: • ? .T. AND .F. &&结果为.F. • ? !.F. AND .F. &&结果为.F.,先运算! • ? NOT .F.=.T. &&结果为.T.,先运算NOT • ? (.F. OR .T.) AND NOT .F. &&结果为.T.

  42. 3.2.2 表达式 • 所谓表达式,就是变量、常量、运算符等组合在一起,得到的一个有意义的序列,用来说明一个计算过程。表达式可以更复杂,包含多种运算。 • 例如: • a = 30*2 -5 <100 OR "abc"=="ABC“ • 如果非要用复杂的表达式,最好在表达式中多用括号,这样可增加可读性,减少出错的机会。例如,上述表达式可改写为: • a = ((30*2 -5) <100) OR ("abc"=="ABC")

  43. 3.2.3 对“命令”窗口的进一步操作 • 在本节最后,我们学习一下怎样在“命令”窗口中执行多行程序。 •   首先,在“命令”窗口中选中已经书写的多行命令。选中命令的方法可以用鼠标的方式,如图3.10所示,选中区域后松开鼠标。然后按回车键,Visual FoxPro就会一次执行所选中的多条命令了。

  44. 按住鼠标左键不放 拖动鼠标选中多条命令 图3.10 选中“命令”窗口中的多条命令

  45. 在选中的内容上右击鼠标。 图3.11 “命令”窗口的快捷菜单 • 执行命令还可以利用快捷菜单。当我们在选中的多条命令上单击鼠标右键时,系统弹出的快捷菜单如图3.11所示,然后,执行快捷菜单上的“运行所选区域”命令即可。

  46. 从快捷菜单中可以看出,我们可以剪切、复制、粘贴文本。“命令”窗口是一个编辑窗口,所以在编辑命令时可以使用Visual FoxPro提供的编辑工具。 •  此外,在菜单和对话框中所作的选择,可以马上转换为“命令”窗口中的命令。例如,单击“文件”菜单下的“新建”选项,就会打开如图3.12左边所示的“新建”对话框。在此对话框中,选中单选按钮“程序”,然后单击“新建文件”按钮,就会打开一个标题以“程序”开头的窗口,同时,在“命令”窗口中出现了一条命令“MODIFY COMMAND”,如图3.12右边所示。 “MODIFY COMMAND”是创建和打开程序文件的命令。

  47. 图3.12 利用菜单命令新建程序文件

  48. 3.3 常用的设置命令 • 在程序设计时,一般通过“设置命令”来改变设置。例如,改变系统默认目录的命令是: • SET DEFAULT TO [路径说明] •   其中,“路径说明”是可选项,它可以是一个驱动器标识,也可以是带驱动器标识的目录名,也可以是子目录。一些例子如下:

  49. SET DEFAULT TO &&不改变默认路径 • SET DEFAULT TO C: &&设置C盘为默认驱动器 • SET DEFAULT TO C:\ &&设置C盘的根目录为默认目录 • SET DEFAULT TO .. &&设置当前目录的上一级目录为默认目录 • SET DEFAULT TO \bookstore\prg &&设置当前驱动器下的\bookstore\prg子目录为默认目录 • SET DEFAULT TO D:\bookstore\prg &&设置D盘下的\bookstore\prg子目录为默认目录

More Related