VisualFoxPro程序设计基础.ppt

上传人:小飞机 文档编号:6523130 上传时间:2023-11-08 格式:PPT 页数:79 大小:632KB
返回 下载 相关 举报
VisualFoxPro程序设计基础.ppt_第1页
第1页 / 共79页
VisualFoxPro程序设计基础.ppt_第2页
第2页 / 共79页
VisualFoxPro程序设计基础.ppt_第3页
第3页 / 共79页
VisualFoxPro程序设计基础.ppt_第4页
第4页 / 共79页
VisualFoxPro程序设计基础.ppt_第5页
第5页 / 共79页
点击查看更多>>
资源描述

《VisualFoxPro程序设计基础.ppt》由会员分享,可在线阅读,更多相关《VisualFoxPro程序设计基础.ppt(79页珍藏版)》请在三一办公上搜索。

1、全国计算机等级考试,Visual FoxPro 程序设计,数 据 库 应 用,主讲老师:段克奇,第2章 Visual FoxPro程序设计基础,在Visual FoxPro中,除了能够对数据表中的数据进行处理,也可以对诸如常量、内存变量等数据表之外的数据进行单独处理。简单的数据处理可以通过函数、表达式和单条命令完成,复杂的数据处理则可能需要编写程序来完成。本章介绍Visual FoxPro程序设计基础,内容包括常量、内存变量、表达式、常用函数、程序的基本结构以及多模块程序设计。,本章知识点在笔试考试中的分析明细表,2.1 常量与变量,1.常量 常量通常是指以文字串形式出现在代码中的数据,代表一

2、个具体的、不变的值。而变量用于存储数据,一个变量在不同的时刻可以存放不同的数据常量类型包括数值型、货币型、字符型、日期型、日期时间型和逻辑型。不同类型的常量有不同的书写格式。接下来分别介绍:,1)数值型常量数值型常量就是常数,用来表示一个数的大小,由数字09、小数点和正负号构成,在内存中占8个字节。2)货币型常量货币型常量用来表示货币值,在内存中占8个字节,在书写时要加上一个前置的美元符号($)。货币数据在存储和计算时,采用4位小数,多于4位小数,系统会自动将多余的小数位四舍五入。3)字符型常量字符型常量也称字符串,其表示方法是用定界符半角单引号、双引号或方括号把字符串括起来。如:”计算机”,

3、567,姓名,ABC”abc”。,4)日期型常量日期型常量在内存中占8个字节,定界符是一对花括号。日期型常量中默认的分隔符是斜杠(/),另外还包括“-”、“.”和空格等。日期型常量的格式有两种:(1)传统的日期格式。月、日各为2位数字,而年份可以是2位数字,也可以是4位数字。系统默认的日期型数据为美国日期格式“mm/dd/yy”(月/日/年)。(2)严格的日期格式。表示为yyyy-mm-dd,用这种格式书写的日期常量能表达一个确切的日期。书写时要注意:花括号内第一个字符必须是脱字符();年份必须用4位(如2010、2011等);年月日的次序不能颠倒、不能缺省。,影响日期格式的设置命令,(1)S

4、ET MARK TO set mark to命令功能:用于指定显示日期时所用的分隔符。如果SET MARK TO后面没有指定分隔符,表示恢复系统默认的斜杠分隔符。(2)SET DATE TO AMERICANANSI set date to命令功能:用于设置日期显示的格式。如果SET DATE TO后面没有指定日期显示的格式,表示恢复系统默认的mm/dd/yy(月/日/年)格式。(3)SET CENTURY ONOFF set century 命令功能:指定如何显示或解释一个日期数据的年份。ON显示世纪,即用4位数字表示年份。OFF不显示世纪,即用2位数字表示年分。它是系统默认的设置。,操作举

5、例,5)日期时间型常量日期时间型常量包括日期和时间两部分内容,日期时间型数据用8个字节存储。其中用AP(或A)表示上午,用PM(或P)表示下午,默认值为AM。6)逻辑型常量逻辑型数据只有逻辑真和逻辑假两个值。逻辑型数据只占用一个字节。逻辑真的常量表示形式有:.T.、.T.、.Y.和.y.。逻辑假的常量表示形式有:.F.、.F.、.N.和.n.。,2.变量 变量的命名规则:变量的值是可以随时更改的,每个变量对应一个变量名,变量的命名以字母、汉字和下划线开头,后接字母、数字、汉字和下划线构成,开头不能用数字。分类:分为字段变量和内存变量两大类 内存变量的数据类型包括:字符型(C)、数值型(N)、货

6、币型(Y)、逻辑型(L)、日期型(D)和日期时间型(T),1)简单内存变量 在Visual FoxPro中,一个变量在使用前并不需要特别的声明或定义。当出现内存变量与字段变量同名时,若简单地用变量名访问,则系统默认为是字段变量。若要访问内在变量,则必须在变量名前加上前缀M.(或M-),例如M.姓名。2)数组 数组是内存中连续的一片存储区域,它由一系列元素组成,每个数组元素可通过数组名及相应的下标来访问。每个数组元素相当于一个简单变量,可以给各元素分别赋值,并且各元素的数据类型可以不同。数组大小由下标的上、下限决定,下限规定为1。,创建数组:格式:格式1:DIMENSION(,),格式2:DEC

7、LARE(,),例如:DIMENSION x(5),y(2,3)定义了两个数组。一维数组x含有5个数组元素:x(1),x(2),x(3),x(4),x(5)。二维数组y含有6个元素:y(1,1),y(1,2),y(1,3),y(2,1),y(2,2),y(2,3),二维数组可以转化为一维数组:二维数组与二维表存在对应关系。如:数组y(1,1)与二维表中的第一行第一列对应;y(2,3)与二维表中的第二行第三列对应。,3.内存变量常用命令1)内存变量的赋值Visual FoxPro中的内存变量赋值有两种格式:命令格式1:命令格式1:STORE To 功能:计算表达式并将表达式值赋给一个或多个内存变

8、量,等号一次只能给一个内存变量赋值;STORE可以同时给多个变量赋于相同的值,各变量名之间用逗号隔开。,2)表达式值的显示格式1:?格式2:?注意:不管有没有指定表达式,格式1都会输出一个回车换行符。如果指定了表达式,各表达式值将在下一行的起始处输出。格式2不会输出一个回车换行符,各表达式值在当前行的光标所在处直接输出。能:首先计算出表达式的值,再将该值赋给内存变量。,3)内存变量的显示命令格式:DISPLAYLIST MEMORY LIKETO PRINTERPROMPT/TO FILE 功能:显示当前内存中的内存变量名称、作用范围、数据类型和值。DISPLAY和LIST的区别在于:D1SP

9、LAY命令分屏显示,每显示一屏暂停,按任意键后继续显示;LIST命令连续显示,中间不停顿,直到显示完毕。通配符有?和*两种:?代表单个字符,*代表一个或多个字符。若缺省任选项LIKE,则显示当前内存中的所有内存变量;若选用该选项,则显示与相匹配的内存变量。,4)内存变量的清除 格式:格式1:CLEAR MEMORY格式2:RELEASE 格式3:RELEASE ALLEXTENDED格式4:RELEASE ALLLIKEEXCEPT说明:格式1用于清除所有内存变量。格式2用于清除指定的内存变量。格式3用于清除所有的内存变量。在人机会话状态,其作用与格式1相同。如果出现在程序中,则应该加上短语E

10、XTENDED,否则不能删除公共内存变量。格式4选用LIKE短语清除与通配符相匹配的内存变量,选用EXCEPT短语清除与通配符不相匹配的内存变量。,5)表中数据与数组数据之间的交换 将表的当前记录复制到数组。命令格式为:格式1:SCATTERFIELDSMEMOTOBLANK格式2:SCATTERFIELDS LIKEFIELDS EXCEPTMEMOTOBLANK,2.2 表达式,表达式是由常量、变量和函数通过特定的运算符连接起来的式子。表达式的形式包括:单一的运算对象,包括常量、变量或函数等;由运算符将运算对象连接起来形成的式子。表达式无论是简单还是复杂,都会有一个运算结果,即表达式的值,

11、根据运算结果的不同,表达式可以分为数值表达式、字符表达式、日期时间表达式和逻辑表达式,各类表达式都有自己特定的运算符,且存在一定的运算顺序。,1.数值、字符与日期时间表达式 数值表达式又称为算术表达式,由算术运算符和数值型常量、变量和数值型函数等组成。数值运算是分先后次序的,数值运算的优先级见表所示。比如:键入以下命令,并回车运行:?5+(2/7+5/7)*2(3+5),字符表达式:字符串表达式由字符串运算符将字符型数据连起来形成,结果仍是字符型数据。字符运算符有以下两个,它们的优先级相同。+:前后两个字符串首尾相接形成一个新的字符串。-:连接前后两个字符串,并将前字符串尾部的空格移到合并后的

12、字符串尾部,日期时间表达式:运算符只有两个分别是加(+)和减(-)。书写时格式有一定限制,不能任意组合。例如不能用运算符“+”号将两个连接起来。合法的日期时间表达式格式如表所示。,2.关系表达式 1)关系表达式关系表达式通常也称为简单逻辑表达式,由关系运算符将两个运算对象连接起来形成。即;运算结果是逻辑型数据。,注意:运算符=和$仅适用于字符型数据。其他运算符适用于任何数据;在比较运算时,前后两个运算对象的类型必须相同,但日期和日期时间型数据可以比较。,2)设置字符的排序次序当比较两个字符串时,自左向右逐个比较,一但发现两个字符不同,就根据这两个字符的大小决定字符串的大小。字符的大小取决于字符

13、集中字符的排序次序,排在前面的小,排在后面的大。在中文Visual FoxPro中,默认的字符排序次序名为PinYin,但可以重新设置。排序次序名必须放在引号当中。设置字符排序次序的命令是:SET COLLATE TO“”,3)字符串精确比较与EXACT设置用双等号运算符(=)精确比较:只有当两个字符串完全相同(包括空格及位置),才会为逻辑真.T.。用单等号运算符(=)比较,运算结果与 set exact onoff 的设置有关。ON 先在较短的字符串尾加若干空格,使两个字符串的长度相等,再进行精确比较。如:“计算机世界”=“计算机”,在ON状态下结果为.F.。OFF 只要右边字符串与左边字符

14、串的前面部分内容相匹配,即为逻辑真.T.。如:“计算机世界”=“计算机”,OFF状态下结果为.T.。,3)字符串精确比较与EXACT设置举例:字符串比较与EXACT设置示例。Set exact off Store“会计”to s1Store“会计”to s2&注意“会计”后有一空格Store“会计电算化”to s3?s1=s3,s3=s1,s1=s2,s2=s1,s2=s1运行结果:.F.T.F.T.F.Set exact ON&将较短的字符串填充空格,等长比较?s1=s3,s3=s1,s1=s2,s2=s1,s2=s1运行结果:.F.F.T.T.F.,4)赋值与相等比较的区别内存变量的赋值命

15、令与相等比较运算都使用等号,必须注意两者之间的区别。赋值命令格式:=相等比较运算格式:=,3.逻辑表达式 逻辑表达式由逻辑运算符将逻辑型数据连接起来而形成,其运算结果仍然是逻辑型数据。逻辑运算符有3个:.NOT.或!(逻辑非)、.AND.(逻辑与)及.OR.(逻辑或)。也可以省略两端的点,写成NOT、AND、OR。其优先级顺序依次为NOT、AND、OR。逻辑非是单目运算(运算对象只有一个),其运算结果与操作数的值正好相反。逻辑与具有“并且”的含义,只有当两个操作数均为真时,运算结果才为真,否则为假。逻辑或具有“或者”的含义,两个操作数中,只要有一个为真,运算结果就为真。否则为假。,逻辑运算符的

16、上述运算规则可以用下表表示。,4.运算符的优先级每类运算符中包含的运算符都有自己的优先次序。同样在各类运算符之间也存在运算优先次序,具体次序如下:先运行算术运算符、字符串运算符和日期时间运算符;其次运行关系运算符;最后运行逻辑运算符。另外还包括以下规则:圆括号的优先级最高。相同优先级的运算符按从左到右的顺序进行运算。字符串连接运算符和加、减运算符优先级一样。需注意圆括号的作用:有时候,在表达式的适当地方插入圆括号不是为了改变其他运算符的运算次序,而是为了提高代码的可读性。,2.3 常用函数,函数是用程序来实现的一种数据运算或转换。函数可以用函数名加一对圆括号加以调用,自变量放在圆括号里,如AB

17、S(x)。在Visual FoxPro中,将函数分为数值函数、字符函数、日期和时间函数、数据类型转换函数和测试函数五类。函数的基本形式如下:函数名()说明:(1)函数名后面是一对圆括号,圆括号内可以有参数,也可以没有参数。(2)参数是函数的自变量,可以是常量,也可以是变量,但参数的数据类型是固定的。(3)函数运算后会返回一个值,称为函数值。,1.数值函数1)绝对值函数:ABS()2)符号函数:SIGN()3)平方根函数:SQRT()4)圆周率函数:PI()5)求整数函数:INT():返回指定数值表达式的整数部分 CEILING():返回不小于指定数值表达式的最小整数 FLOOR():返回不大于

18、指定表达式的最大整数,6)四舍五入函数:ROUND(,)功能:返回指定表达式在指定位置四舍五入后的结果;如果“表达式2”0,表示要保留的小数位数;如果“表达式2”0表示整数部分的舍入位数;如果“表达式2”=0表示保留整数,没有小数部分。例2.17 x=456.456?ROUND(x,2),ROUND(x,1),ROUND(x,0),ROUND(x,-1)456.46 456.5 456 460,7)求余数函数格式:MOD(,)功能:返回两个数值相除后的余数;是被除数,是除数;余数的正负号与除数相同;如果被除数与除数同号,那么函数值即为两数相除的余数;如果被除数与除数异号,则函数值为两数相除的余

19、数再加上除数的值。例?MOD(10,3),MOD(10,-3),MOD(-10,3),MOD(-10,-3)1-2 2-1,8)求最大值和最小值函数格式MAX(,)MIN(,)功能:MAX()计算各自变量表达式的值,并返回其中的最大值。MIN()计算各自变量表达式的值,并返回其中的最小值。比如:?MAX(5,9,2),MAX(3,23,13),MIN(自行车,汽车,火车)9 3 火车,2.字符函数:1)字符串长度函数:LEN()2)大小写转换函数:LOWER(),大写字母转换成小写字母,其他字符不变;UPPER(),小写字母转换成大写字母,其他字符不变。3)空格字符串生成函数:SPACE()4

20、)删除前后空格函数:TRIM()返回指定字符表达式值去掉尾部空格后形成的字符串;LTRIM()返回指定字符表达式值去掉前导空格后形成的字符串;ALLTRIM()返回指定字符表达式值去掉前导和尾部空格后形成的字符串。,2.3 常用函数,2.字符函数:5)取子串函数:LEFT()从指定表达式值的左端取一个指定长度的子串作为函数值;RIGHT()从指定表达式值的右端取一个指定长度的子串作为函数值;SUBSTR()从指定表达式值的指定起始位置取指定长度的子串作为函数值。SUBSTR()函数中,若缺省参数,则函数从指定位置一直取到最后一个字符。例2.24 Store“good bye!”to x?lef

21、t(x,2),substr(x,6,2)+substr(x,6),right(x,3)go bybye!Ye!,2.3 常用函数,2.字符函数:6)计算子串出现次数函数格式:OCCURS(,)功能:返回第一个字符串在第二个字符串中出现的次数,函数值为数值型。若第一个字符串不是第二个字符串的子串,函数值返回0。例2.25 Store abcracadabra to s?occurs(a,s),occurs(b,s),occurs(c,s),occurs(e,s)5 2 2 0,2.3 常用函数,2.字符函数:7)求子串位置函数:AT(,);ATC(,)。功能:AT()的函数值为数值型。如果是的子

22、串,则返回的首字符在中的位置;若不是子串,则返回0。用于表明要在中搜索的第几次出现,其默认值是1。例 Store“This is Visual FoxPro6.0”to x?at(“fox”,x),atc(“fox”,x),at(“is”,x,3),at(“xo”,x)0 16 10 0,2.3 常用函数,2.字符函数:8)子串替换函数 格式:STUFF(,)功能:用值替换中由和指定的一个子串。替换和被替换的字符个数不一定相等。如果值是0,则插在由指定的字符前面。如果值是空串,那么中由和指定的子串被删去。例2.27 s1=good bye!“s2=morning“?stuff(s1,6,3,s

23、2),stuff(s1,1,4,s2)good morning!morning bye!,2.3 常用函数,2.字符函数:字符函数是指自变量一般是字符型数据的函数 9)字符替换函数 格式:CHRTRAN(,)功能:该函数的自变量是三个字符表达式。当中的一个或多个相同字符与中的某个字符相匹配时,就用中的对应字符(与中的字符具有相同的位置)替换这些字符。如果包含的字符个数少于包含的字符个数,导致没有对应的字符,那么中相匹配的各字符将被删除。如果中包含的字符个数多于中包含的字符个数,多余字符将被忽略。例2.28 a=chrtran(AFACAD,ACD,X56)b=chrtran(老师好!,老师,您

24、)?a,bXFX5X6 您好!,2.3 常用函数,2.字符函数:字符函数是指自变量一般是字符型数据的函数 10)字符串匹配函数格式:LIKE(,)功能:比较两个字符串对应位置上的字符,若所有对应字符都匹配,函数返回逻辑真(.T.),否则返回逻辑假(.F.)。中可以包含通配符“*”和“?”。“*”可以与任何数目的字符相匹配,“?”可以与任何单个字符相匹配。例2.29 x=“abc”y=“abcd”?like(“ab*”,x),like(x,”ab*”),like(“ab*”,y),like(x,y),like(“?b?”,x),like(“Abc”,x).T.F.T.F.T.F.,2.3 常用函

25、数,3.日期和时间函数1)系统日期和时间函数 DATE()返回当前系统日期,函数值为日期型。TIME()以24小时制的hh:mm:ss格式返回当前系统时间,函数值为字符型。DATETIME()返回当前系统日期时间,函数值为日期时间型2)年份、月份和天数函数 YEAR()MONTH()DAY()比如:Store2011-07-20 to d?year(d),month(d),day(d)2011 7 20,2.3 常用函数,3.日期和时间函数3)时分秒函数HOUR()MINUTE()SEC(),2.3 常用函数,4.数据类型转换函数1)数值转换成字符串格式:STR(,)功能:将的值转换成字符串。

26、转换要根据需要自动四舍五入。返回的字符串的理想长度L应该是的值的整数部分位数加上值。如果大于L,则字符串加前导空格以满足规定的长度;如果大于等于L,则优先满足整数部分而自动调小数位数;如果小于L的整数部分位数,则返回“*”号。的默认值为0,的默认值为10。例2.33 Store-345.456 TO n?str(n,9,2),str(n,6,2),str(n,3),str(n,6),str(n)-345.46-345.5*-345-345,2.3 常用函数,4.数据类型转换函数2)字符串转换成数值 格式:VAL()功能:将由数字符号组成的字符型数据转换成相应的数值型数据。例2.34 Store

27、-456 To xStore.78 to y&注意78前有个“.”Store A78 to z?val(x+y),val(x+z),val(z+y)-456.78-456.00 0.00,2.3 常用函数,4.数据类型转换函数3)字符串转换成日期或日期时间 格式:CTOD()CTOT()功能:CTOD()将值转换成日期型数据。CTOT()将值转换成日期时间型数据。例2.35 set date to ymd Set century onSet century to 19 rollover 30?ctod(04/28/11),ctot(04/28/11 11:00:00)04/28/2011 04

28、/28/2011 11:00:00 AM,2.3 常用函数,4.数据类型转换函数4)日期或日期时间转换成字符串 格式:DTOC(,1)TTOC(,1)功能:DTOC()将日期型数据或日期时间数据的日期部分转换成字符串。TTOC()将日期时间数据转换成字符串。例2.36 假设当前的系统日期时间为2011-03-26 11:55:00Set date to mdySet century offStore datetime()to t?t03/26/11 11:54:39 PM?dtoc(t),dtoc(t,1),ttoc(t),ttoc(t,1)03/26/11 20110326 03/26/11

29、 11:55:00 PM 20110326115500,2.3 常用函数,4.数据类型转换函数5)宏替换函数 格式:&.功能:替换出字符型变量的内容,即&的值是变量中的字符串。例2.37 Use 学生xm=“姓名”x=“5+6”?xm,&xm,x,&x姓名 张海 5+6 11,2.3 常用函数,5.测试函数1)值域测试函数格式:BETWEEN(,)功能:判断一个表达式的值是否介于另外两个表达式的值之间。在和之间时,函数值为真(.T.),否则为假(.F.);如果和,其中一个是NULL值,那么函数值也是NULL值。3个变量可以是数值型、日期型、货币型等,但3个变量的类型要保持一致。例2.38 St

30、ore.NULL.to xStore 100 to y?between(150,y,y+100),between(90,x,y),between(50,100,电脑).T.NULL.3个变量类型不一致,提示找不到变量,2.3 常用函数,5.测试函数2)空值(NULL值)测试函数 格式:ISNULL()功能:判断一个表达式的运算结果是否为NULL值,若是NULL值则返回逻辑真(.T.),否则返回逻辑假(.F.)。例2.39 Store.NULL.TO x?x,isnull(x).NULL.T.,2.3 常用函数,5.测试函数3)空值(NULL值)测试函数 格式:EMPTY()功能:根据指定表达式

31、的运算结果是否为“空”值,返回逻辑真(.T.)或逻辑假(.F.)。注意:空值(NULL)测试函数与“空”值EMPTY()测试函数是两个不同的概念。比如:?empty(123),empty(0),empty(ctod(),empty($0),empty(space(5).F.T.T.T.T.,2.3 常用函数,5.测试函数4)数据类型测试函数 格式:VARTYPE(,)功能:测试的类型,返回一个大写字母,函数值为字符型。比如:Store“大学”to MStore null to NStore$200 to Y?vartype(M),vartype(N),vartype(Y),vartype(66

32、),vartype(大学)C X Y N U,2.3 常用函数,5.测试函数5)条件测试函数 格式:IIF(,)功能:测试的值。若为逻辑真.T.,函数返回的值;若为逻辑假.F.,函数返回的值。和的类型不要求相同。例2.42?iif(100100,50,150),iif(300100,250,350)150 250?iif(len(space(5)5,1,-1)-1,2.3 常用函数,5.测试函数6)表文件首测试函数 格式:BOF()功能:测试当前表文件或指定文件中的记录指针是否指向了文件首,若是返回逻辑真(.T.),否则返回逻辑假(.F.),表文件首是指第一条记录前面的位置。若指定工作区上没有

33、打开表文件,函数返回逻辑假(.F.)。若表文件不包含任何记录,函数返回逻辑真(.T.)。,2.3 常用函数,5.测试函数7)表文件尾测试函数 格式:EOF()功能:测试指定表文件中的记录指针是否指向文件尾,若是则返回真(.T.),否则返回逻辑假(.F.),若缺少自变量,则测试当前表文件,若在指定工作区上没有打开表文件,函数返回逻辑假,若表文件中不包含任何记录,函数返回逻辑真。表文件尾是指最后一条记录的后面位置。,2.3 常用函数,5.测试函数8)记录号测试函数 格式:RECNO()功能:返回当前表或指定文件中当前记录的记录号。9)记录个数测试函数 格式:RECCOUNT()功能:返回当前表文件

34、或指定表文件中物理上存在的记录个数记录删除测试函数 格式:DELETED()功能:测试当前表文件或指定表文件中的当前记录是否有删除标记“*”。若有就返回逻辑真,否则返回逻辑假。,2.4 程序与程序文件,1.程序的概念1)基本概念程序是能够完成一定任务的命令的有序集合。这组命令被存放在称为程序文件或命令文件的文本文件中,程序文件的系统默认扩展名是.prg.2)书写要求程序中的每条命令都以回车结尾,一行只能写一条命令;若要分行书写,应在一行程序的结尾处输入分号(;)续行符。3)程序特点,2.4 程序与程序文件,2.程序文件的建立与运行1)创建程序通过项目管理器创建通过文件菜单创建通过命令创建2)保

35、存程序通过菜单保存直接关闭没有保存的程序,则会弹出相应对话框,提示保存或放弃按CTRL+W组合键保存,3)修改程序通过项目管理器的“修改”选项打开程序并修改通过文件菜单中“打开”选项打开程序并修改通过命令MODIFY COMMAND打开程序并修改4)运行程序通过项目管理器的“运行”按钮运行程序通过程序菜单中“运行”选项运行程序通过命令DO运行程序,2.4 程序与程序文件,3.简单的输入/输出命令1.INPUTTO 2.ACCEPT TO 3.WAITTO WINDOWAT,NOWAIT CLEAR|NOCLEARTIMEOUT,2.5 程序的基本结构,1.顺序结构顺序结构是最简单的程序结构,它

36、按命令在程序中出现的先后次序依次运行。例2.47 CLEAR&清除主窗口显示的全部信息r=3&设置圆的半径*依次计算周长和面积p=2*pi()*r&函数PI()返回圆周率s=pi()*r2*输出计算结果?”周长=”,p?”面积=”,s主窗口中显示:周长=18.85 面积=28.2743,2.5 程序的基本结构,2.选择结构1)简单的条件语句IF ENDIF2)一般形式的条件语句IF ELSE ENDIF,2.5 程序的基本结构,2.选择结构3)多分支语句 语句格式:DO CASE CASE CASE CASE OTHERWISE ENDCASE,2.5 程序的基本结构,3.循环结构循环结构也称

37、为重复结构,是指程序在运行过程中,其中的某段代码被重复运行若干次。被重复运行的代码段通常称为循环体。Visual FoxPro支持的循环结构语句包括:DO WHILE-ENDDO、FOR-ENDFORSCAN-ENDSCAN语句。,2.5 程序的基本结构,3.循环结构1)DO WHILE ENDDO这是一个功能全面使用频率较高的循环语句。语句格式:DO WHILE LOOP EXIT ENDDO运行该语句时,先判断是否为真,如果是真则运行DO WHILE与ENDDO间的循环体,当运行到ENDDO时,再返回DO WHILE 重新判断循环条件是否为真,确定是否再次运行循环体。若条件为假则结束循环语

38、句运行ENDDO后的语句。,2.5 程序的基本结构,3.循环结构1)DO WHILE ENDDO例如CLEARX=12345Y=0DO WHILE X0Y=Y+X%10X=INT(X/10)ENDDO?Y主窗口中显示:15,2.5 程序的基本结构,3.循环结构2)FOR-ENDFOR 语句该语句通常用于已知循环次数情况下的循环操作。语句格式:FOR=TO STEP LOOP EXIT ENDFOR|NEXT先将初值赋给循环变量,然后判断循环条件是否成立,若成立,则运行循环体,然后循环变量增加一个步长值,并在次判断循环条件确定下一次的循环操作。如果条件不成立则结束循环运行ENDFOR后的语句。,

39、2.5 程序的基本结构,3.循环结构2)FOR-ENDFOR 语句比如:计算1+2+3+5的值。CLEARs=0FOR i=1 TO 10 s=s+IENDFOR?s=,sRETURN主窗口中显示:15,2.5 程序的基本结构,3.循环结构3)SCAN-ENDSCAN 语句 该循环语句也称为扫描循环语句,功能相当于LOCATE、CONTINUE和DO WHILE-ENDDO语句功能的合并。一般只是用于处理表中记录,语句可指明需处理记录的范围及应满足的条件。语句格式:SCAN FOR WHILE LOOP EXIT ENDSCAN运行该语句时,记录指针自动、依次地在当前表的指定范围内满足条件的记

40、录上移动,对每一条记录运行循环体内的命令。,2.6 多模块程序设计,模块是一个相对独立的程序段,它可以被其他模块所调用,也可以去调用其他的模块。通常把被其他模块调用的模块称为子程序,把调用其他模块而没有被其他模块调用的模块称为主程序。1.模块的定义和调用 1)模块及其定义2)模块的调用,2.6 多模块程序设计,1)模块及其定义在Visual FoxPro中,模块可以是命令文件,也可以是过程。过程定义的语法格式如下:PROCEDUDEFUNCTION RETURNENDPROCENDFUNC一般情况下,过程保存在称为过程文件的单独文件里。一个过程文件包含的过程数量不限。过程序文件的建立与程序文件

41、一样也可以用MODIFY COMMAND建立,文件扩展名也是.prg。,2.6 多模块程序设计,2)模块的调用模块的调用格式有两种:格式1:DO|格式2:|()要调用过程文件中的过程,首先要打开过程文件,打开过程文件的的命令是:SET PROCEDURE TO,ADDITIVE当一个过程文件中的过程不再需要被调用时,应及时关闭,关闭过程文件的命令如下:格式1:SET PROCEDURE TO。功能是关闭所有打开的过程文件。格式2:RELEASE PROCEDURE,。功能是关闭指定的过程文件。,2.6 多模块程序设计,3.参数传递模块程序可以接收调用程序传递过来的参数,并能根据接收到的参数控制

42、程序流程或对接收到的参数进行处理,以提高程序设计的灵活性。接收参数的命令:PARAMETERS,是声明程序中建立的私有变量;LPARAMETERS,是声明程序中建立的局部变量。都必须是模块中的第一条可运行命令。调用模块程序的格式为:格式1:DO|WITH,格式2:|(,),2.6 多模块程序设计,3.参数传递实参可以是常量、变量或一般形式的表达式。调用模块时,系统会自动把实参传递给形参。形参数目不能少于实参数目。如有多余形参取初始值逻辑假(.F.)。命令的格式如下:SET UDFPARMS TO VALUEREFERENCETO VALUE:按值传递。形参变量值的改变不会影响实参变量的取值。T

43、O REFERENCE:按引用传递。形参变量值改变时,实参变量值也随之改变。需要注意:如果一个变量用一对括号括起来,会使其变为一般形式的表达式,所以不管什么情况,总是按值传递。,2.6 多模块程序设计,4.变量的作用域(1)内存变量的作用域 变量除了类型和取值外还有一个重要的属性是它的作用域,指其在什么范围内有效。Visual FoxPro中可分为全局变量、私有变量和局部变量三类。如下表所示。,2.6 多模块程序设计,4.变量的作用域 2.PRIVATE和LOCAL命令 PRIVATE命令的功能。使用PRIVATE命令可以隐藏上层模块中可能存在的变量,使得这些变量在子程序中暂时无效,当返回上层

44、模块时原变量自动恢复有效,并取原值。命令格式:PRIVATE PRIVATE ALL LIKE|EXCEPT LOCAL命令的功能。LOCAL命令在建立局部变量时,同时也可以隐藏在上层模块中建立的同名变量,与PRIVATE命令不同,LOCAL命令只在它所在的模块内隐藏同名变量,一旦进入下层模块同名变量就会重新出现。,2.6 多模块程序设计,4.变量的作用域 例2.54 PRIVATE和LOCAL命令的比较示例。PUBLIC x,yx=10y=15do p8?x,y&显示10 bbbPROCEDURE p8PRIVATE x&隐藏上层模块中的变量xx=50&建立私有变量x,并赋值50LOCAL y&隐藏同名变量,建立局部变量yDO p9?x,y&显示aaa.F.PROCEDURE p9x=“aaa”&x是在p8中建立的私有变量y=“bbb”&y是在主程序中的全局变量RETURN,本章总结,本章的知识点很多,重要的知识点是表达式和函数,这是经常考的内容,在笔试考试中所占分值较高,大家在理解的基础上还要多做练习题才能很好的掌握。对于程序这部分也是每次都要考的内容,但题型不是很难,这部分内容,大家做到能理解简单的程序即可,并通过一些练习题加以巩固。,

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号