1 / 140

第二章 Visual FoxPro 程序设计基础

教学目标:. 第二章 Visual FoxPro 程序设计基础. 掌握 Visual FoxPro 的数据类型. 掌握 Visual FoxPro 的常量和变量的概念、类 型及特点. 掌握 Visual FoxPro 中表达式的概念、类型. 掌握 Visual FoxPro 中函数的概念和一些常用函数的使用. 本章主要内容. 2.1 常量与变量 2.2 表达式 2.3 常用函数 2.4 程序与程序文件 2.5 程序的基本结构

delila
Télécharger la présentation

第二章 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的数据类型 • 掌握Visual FoxPro的常量和变量的概念、类 型及特点 • 掌握Visual FoxPro中表达式的概念、类型 • 掌握Visual FoxPro中函数的概念和一些常用函数的使用

  2. 本章主要内容 2.1 常量与变量 2.2 表达式 2.3 常用函数 2.4 程序与程序文件 2.5 程序的基本结构 2.6 多模块程序设计

  3. 本章重点及难点: • 常量的类型及使用 • 变量的类型及使用 • 表达式的类型及使用 • 一些常用函数的特点及应用

  4. VisualFoxPro的数据类型 字符型 C 数值型 N 货币型 Y 日期型 D 数据类型 日期时间型 T 逻辑型 L 备注型 M 通用型 G

  5. 2.1 常量与变量 2.1.1 常量 • 定义: 常量是指在所有的操作过程中保持不变的数。 • 分类: 字符型常量 C 数值型常量 N 货币型常量 Y 常量类型 日期型常量 D 日期时间型常量 T 逻辑型常量 L

  6. 字符型常量 • 字符型常量也称字符串,其表示方法是用半角单引号′′、双引号〞〞或方括号[ ]把字符括起来,这里的单引号′′、双引号〞〞或方括号[ ]称为“定界符”,其作用是确定字符串的起始和终止界限,它本身不作为字符串的一部分。 • 定界符虽然不作为常量本身的内容,但它规定了常量的类型以及常量的起始和终止界限。 例如:“金苹果” , ‘金苹果’,[金苹果]

  7. 例1、下列关于字符型常量的表示中,错误的是——。例1、下列关于字符型常量的表示中,错误的是——。 A)’计算机世界’ B)[“电脑报”] C)[[中国]] D)’[12345]’ 答案:C

  8. 数值型常量 • 数值型常量也就是常数,用来表示数量的大小。 • 数值型常量由数字0~9、小数点和正负号构 成,在内存中占8个字节,取值范围是 -0.999 999 999 9E+19-0.999 999 999 9E+20。 • 例如:65、8.45、﹣43等。 • 再如:13亿 普通表示为:1300000000 指数表示法为:1.3e9 0.000000089 指数表示法为:8.9e-8

  9. 例2、下列关于数值型常量的表示中,正确的是——。例2、下列关于数值型常量的表示中,正确的是——。 A)$152.365 B)”125.34” C)-1.6E+12 D)1.5+15 答案:C

  10. 货币型常量 • 货币型常量用来表示货币值,其书写格式与数值型常量类似,但在表示货币型常量时,需要在数字前加上货币符号($)。 • 货币数据在存储和计算时,采用4位小数,占据8字节存储空间。货币型数据用字母Y表示。 • 如果一个货币型常量多于4位小数,则系统会自动将多余的小数四舍五入。 例如:常量9.8756789存储为9.8757。

  11. 日期型常量 • 日期型常量是用一对花括号{ }括起来包括日期的数据。花括号内包括年、月、日3部分内容,各部分内容之间用分隔符分隔。 • 常用的日期分隔符有斜杠(/)、连字号(﹣)、句点(.)和空格。 • 日期型常量格式: • 传统的日期格式: “mm/dd/yy” • 严格的日期格式 :{^yyyy-mm-dd} • 日期型数据用8个字节表示,取值范围是:0001年1月1日~9999年12月31日

  12. 影响日期格式的设置命令 • 设置日期格式: • SET DATE[TO ] AMERICAN|ANSI|BRITISH|GERMAN • 功能: 设置日期显示的格式,系统默认是:AMERICAN • 例: SET DATE TO ANSI • 设置日期分隔符: • SET MARK TO [<日期分隔符>] • 功能: 设置日期型数据时使用的分隔符,系统默认是:/ • 例:SET MARK TO . 说明:“[ ]”表示该内容可以省略,“|”表示任选其一, “< >” 表示为该内容为必选。

  13. 设置年份数: • SET CENTURY ON|OFF|TO[<世纪值>][ROLLOVER<年份参照值>] • 功能: 设置日期型数据时是否显示世纪,系统默认是:2位数字显示年份 • 说明:ON显示世纪,表示用四份数显示年份 • OFF不显示世纪,表示用2位数表示年份 • TO表示如何解释一个用2位数表示年份的日期所处 • 的世纪 • 设置日期格式检查: • SET STRICTDATE TO [0|1|2] • 功能: 设置是否对日期格式进行检查 • 说明:0表示不进行严格的日期格式检查 • 1表示进行严格的日期格式检查 • 2 表示进行严格的日期格式检查,对于CTOD()和 • CTOT()函数格式也有效。

  14. 日期时间型常量 • 日期时间型常量包括日期和时间两部分:{<日期>,<时间>}。 • <日期>部分与日期型常量相似,也有传统和严格的格式。 • <日期>部分的格式为:[hh[:mm[:ss]a | p]]。其中hh、mm和ss分别代表时、分和秒。 • 日期时间型数据用8个字节存储,第一个4字节保存日期,其余的4字节保存时间。

  15. 例3、下列符号中,不能作为日期型常量分隔符的是——。例3、下列符号中,不能作为日期型常量分隔符的是——。 A)斜杠(/) B)连字符(-) C)句点(.) D)脱字符(^) 答案:D

  16. 逻辑型常量 • 逻辑型数据只有逻辑真和逻辑假两个值。 • 逻辑真的常量形式有:.T.、.t.、.Y.和.y.,逻辑假的常量表示形式有:.F.、.f.、.N.和.n.。 • 前后两个黑点作为逻辑型常量的定界符是必不可少的,否则会被误认为变量名。 • 逻辑型数据只占用1个字符。

  17. 例4、下列关于逻辑型常量的表示中,正确的是——。例4、下列关于逻辑型常量的表示中,正确的是——。 A).T..、.F.. B)T、F C).T.、.F. D)..T..、..F.. 答案:C

  18. 2.1.2 变量 • 定义: • 变量是指在所有的操作过程中值是能够随时改变的。 • 命名规则: • 由字母、汉字、下划线和数字组成。 • 以字母、汉字、下划线开头,不能以数字开头。 • 不能使用系统保留字(系统中的命令)。 • 除了自由表的字段名、表的索引标识名至多只能有10个字符外,其余名称的长度可以是1~128个字符。 • 字母不区分大小写。

  19. 例5、下列的变量名中,属于Visual FoxPro合法变量名的是——。 A) VisualFoxPro B)Visual.FoxPro C) Visual FoxPro D)_Visual.FoxPro 答案:A

  20. 例6、下列选项中,不能作为Visual FoxPro中变量名的是____ A) _abc  B) abc123 C) 123abc D) abc_123 答案:C

  21. 分类: 字段变量就是表中的字段,因为字 段变量的取值是可变的,所以表中 的字段又叫字段变量。 字段变量 Visual Foxpro 中的变量 简单内存变量:按命名规则定义 的单一内存变量 内存变量 数组:数组是一组具有相同名称, 以下标相互区分的有序内存变量, 在内存中占一有片连续的存储区 域 注意: 由于内存变量存放在独立于数据库文件的临时存储单元,所以,内存变量可以和字段变量重名。但是,在这种情况下,字段变量具有更高的优先级。如果用户想访问内存变量,需要在内存变量名前加M.或M->作为前缀。

  22. 内存变量数据类型 字符型常量 C 数值型常量 N 内存变量 数据类型 货币型常量 Y 日期型常量 D 日期时间型常量 T 逻辑型常量 L 简单内存变量 每一个内存变量都有一个名字,可以通过变量名访问变量。 例:定义变量:X ,Y,Z

  23. 内存变量常用命令 • 内存变量的赋值 • 格式1:STORE <表达式> TO <内存变量名表> • 格式2: <内存变量名>=<表达式> • 功能:等号一次只能给一个变量赋值。STORE命令可以同时给若干个变量赋予相同的值,各内存变量名间用半角逗号分开。 • 表达式值的显示 • 格式1:?<表达式> • 格式2:??<内存变量名> • 功能:计算表达式中的各表达式并输出各表达式的值

  24. (1)赋值号“=”与数学中的等号不同; 如赋值语句:S=S+X N=N+1 (2)变量的类型取决于值的类型; (3)该语句不能给字段变量赋值。 以下赋值语句正确的是。 A) STORE 8 TO x,y B) STORE 8,9 TO x,y C) x=8,y=9 D) x,y=8

  25. 例:A=1234 B=‘1234’ C=DATE() D=5>6 E=$1234 AA=5678 ABC=AA-A STORE 0 TO A1,A2,A3 ? a,b,c ?? d,e

  26. 内存变量常用命令 • 内存变量的显示 • 格式1:LIST MEMORY [LIKE<通配符>][TO PRINTER| TOFILE <文件名> ] • 格式2:DISPLAY MEMORY [LIKE<通配符>][TO PRINTER| TOFILE <文件名> ] • 功能:显示内存变量的当前信息,包括变量名、作用域、取值和类型。 • 格式1不暂停,直到显示结束。 • 格式2每显示一屏暂停,等待用户按任意键继续显示

  27. 内存变量的显示: DISP MEMO [LIKE <通配符>] DISP MEMO 变量名 变量的值 变量的类型 变量的属性

  28. DISP MEMO LIKE A* && 仅显示以A开头的变量。 例:语句LIST MEMORY LIKE a*能够显示的变量不包括____。 A) a B) a1 C) ab2 D) ba3

  29. 数组 数组由数组名和数组序号组成,序号被称作下标,是数值型数据。用户通过数组名及对应的下标实现对数组元素的访问。 例:数组: X(1) , Y(2,3) 数组的定义格式: [格式]: DIMENSION <数组名> (<下标上限1>[,下标上限3][,<……>]) DCLARE <数组名> <下标上限1>[,下标上限3][,<……>] 例 :DIMENSION X(3),Y(2,3)

  30. 关于数组的说明 • 在一切可以使用简单内存变量的地方都可以使用数组元数。 • 在同一运行环境下,数组名不能与简单变量名重复。 • 定义数组时也可以用方括号, 例如DIMENSION X(3)和DIMENSION X[3]是一样的。 • 当完成对数组定义后,初值为逻辑假自动为每一个元素定义为.F. • 在赋值和输入语句中使用数组名时,表示将同一个值同时赋予数组的全部数组元素。 • 可以用一维数组的形式访问二维数组

  31. 仅定义数组时,每个元 素的初值均为逻辑假。

  32. 例:X=0 && X数组所有元素均为数值0。 Y(1,1)=123 && Y数组第一个元素值为数值123 Y(2,1)=“123” && Y数组第二行一列元素值为字符串“123” Y(5)={^2004-9-6}-12 && Y数组第5元素(Y(2,2))值为日期值 Y(2,3)=Y(1,1)-12 && Y数组第二行三列元素为数值111

  33. 例7、下列关于变量的叙述不正确的一项是——。例7、下列关于变量的叙述不正确的一项是——。 A)变量值可以随时改变 B)Visual FoxPro中的变量分类字段变量和内存 变量 C)变量的类型决定变量值的类型 D)在Visual FoxPro中可以将不同类型的数据赋 给同一个变量 答案:C

  34. 内存变量常用命令 • 变量的清除 • 格式1:CLEAR MEMORY • 格式2:RELEASE <内存变量名表> • 格式3:RELEASE ALL <EXTENDED> • 格式4:RELEASE ALL [LIKE<通配符> |EXCEPT<通配符>] • 功能:清除指定的或所有内存变量 • 格式1清除所有内存变量 • 格式2清除指定内存变量 • 格式3清除所有内存变量,在程序中应加上EXTENED • 格式4选用LIKE短语清除与通配符相匹配的内存变量,选用EXCEPT短语清除与通配符不匹配的内存变量。

  35. 内存变量常用命令 • 表中数据与数组数据之间的交换 • 1)将表的当前记录复制到数组 • 格式1:SCATTER [FIELDS <字段名表>] [MEMO] TO <数组名>[BLANK] • 格式2:SCATTER [FIELDS LIKE <通配符>|FIEDLS EXCEPT <通配符>] [MEMO] TO <数组名>[BLANK] • 功能: • 格式1是将表的当前记录从指定字段表中的第一个字段内容开始,依次复制到从第一个元素开始的内存变量中。 • 格式2 是用通配符指定包括或排除的字段。

  36. 内存变量常用命令 • 表中数据与数组数据之间的交换 • 2)将数组中的数据复制到表的当前记录 • 格式1:GATHER FROM<数组名>[FIELDS <字段名表>] [MEMO] • 格式2:GATHER FROM <数组名>[FIELDS LIKE <通配符>|FIELDS EXCEPT <通配符>] [MEMO] • 功能: • 格式1从第一个数组元素开始依次向表中指定的字段填写数据。 • 格式2是用通配符指定包括或排除的字段。

  37. Scatter和gather应用举例 用SCATTER从当前记录中取特定字段的值赋给数组: 如: scatter fields xh, xm, xb to aa (数组长度、类型自动与所给字段相同) 把数组中的数据传给当前表中的当前记录: 如:gather from 数组名 [fields 字段名表]

  38. 2.2 表达式

  39. 定义: • 用来表示某个求值规则,由常量、变量、函数连接起来的特定式子。 数据表达式 字符表达式 • 分类: 日期时间表达式 逻辑表达式 • 形式: • 单一的运算对象(如常量、变量或函数) • 由运算符将运算对象连接起来形成的式子

  40. 2.2.1数值表达式 • 定义: • 数值表达式又叫做算术表达式,由算术运算符将数值型常量、变量及数值型函数连接起来的式子,其运算结果仍然是数值型数据。 • 算术运算优先级:

  41. 求余运算 求余运算%和取余函数Mod( )的作用相同。余数的正负号与除数一致。当表达式中出现乘*、除 /、和求余运算%时,它们具有相同的优先级。 例: ?33%3 && 0 ? 5%3 && 2

  42. 2.2.2 字符表达式 • 定义: • 字符表达式由字符串运算符将字符型数据连接起来的形成,其运算结果仍然是字符型数据。 • 字符串运算符: • ﹢:前后两个字符串首尾连接形成一个新的字符串。 • ﹣:连接前后两个字符串,并将前字符串的尾部空格移到合并后的新字符串尾部。它们的优先级相同。 注意:参加运算的量只能是字符型,表达式的值也是字符型。

  43. 例1: 执行以下命令序列(□表示空格) 的执行结果是: s1=‘计算机□□□□’ s2=‘二级等级考试□□□□’ ?s1+s2 ?s1-s2 ?len(s1+s2) ?len(s1-s2) 例2:设Q1=“ABC□”,Q2=“EFG□”,则表达式Q2-Q2+Q1的值为: A) ABC□ B) ABC C) EFGEFG□□ABC□     D) EFGEFG□ABC

  44. 2.2.3 日期时间表达式 • 运算符: • 日期时间表达式中可以使用的运算符也有﹢和﹣。 • 例如:D-D=N D±N=D • 日期时间表达式的格式:

  45. 例:下列表达式中,运算结果为数值型的正确表达式是:_______例:下列表达式中,运算结果为数值型的正确表达式是:_______ A) DATE()+TIME() B) DATE()+30 C) DATE()-CTOD(“01/01/98”) D) DATE()-DTOC(DATE())

  46. 2.2.4 关系表达式 • 定义: • 关系表达式也叫逻辑表达式,由关系运算符将两个运算对象连接起来形成的式子。关系表达式的运算结果为逻辑型数据。 • 关系运算符:

  47. 注意: 参加运算的量可以是数值型、字符型及日期型,表达式的值是逻辑型。数值型数据以其值的大小进行比较, 键盘字符以其ASCII码值的大小进行比较,汉字是以其(拼音、内码、笔画)进行比较。 (= =、$ 这两种运算,参加运算的量只能是字符型表达式)

  48. 七位ASCII编码表 b7b6b5 000 001 010 011 100 101 110 111 b4b3b2b1 空格!“#$%&‘()*+,-/ 、abcdefghijklm no 0000000100100011010001010110011110001001101010111100110111101111 NULSOHSTXETXEOTENQACKBELBSHTLFVTFFCRSOSI DLEDC1DC2DC3DC4NAKSYNETBCANEMSUBESCFSGSRSUS 0123456789:;<=>? @ABCDEFGHIJKLMNO PQRSTUVWXYZ[\]  pqrstuvwxyz{|}-DEL

  49. 设定排序次序: • 当比较两个字符串时,系统对两个字符串的字符自左向右逐个比较;一旦发现两个对应字符不同,就根据这两个字符的排序序列决定两个字符串的大小。 • 命令格式: • SET COLLATE TO ”<排序次序名>” • 说明:排序次序名可以是:“Machine”,”PinYin”或“Stroke”

More Related