VisualFoxPro90程序设计基础第5章程序设计基础_第1页
VisualFoxPro90程序设计基础第5章程序设计基础_第2页
VisualFoxPro90程序设计基础第5章程序设计基础_第3页
VisualFoxPro90程序设计基础第5章程序设计基础_第4页
VisualFoxPro90程序设计基础第5章程序设计基础_第5页
已阅读5页,还剩77页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、 NANJING UNIVERSITY OF INFORMATION SICENCE & TECHNOLOGY数数据据库库技技术术及及应应用用l南京信息工程大学 计算机与软件学院主讲:刘主讲:刘 生生 NANJING UNIVERSITY OF INFORMATION SICENCE & TECHNOLOGY第五章第五章 VFP程序设计基础程序设计基础数据库技术及应用南京信息工程大学 计算机与软件学院 主讲:刘生 教学目的和要求教学目的和要求 l了解程序设计的一些基本概念;l熟悉程序设计的基本方法和步骤;l掌握Visual Foxpro中三种基本控制结构的实现方法和使用方法;l

2、掌握自定义函数和过程的使用。2021-12-25 第五章第五章 VFP程序设计基础程序设计基础3主讲:主讲: 南京信息工程大学计算机与软件学院南京信息工程大学计算机与软件学院 刘生刘生 教学重点教学重点 l结构化程序设计中的三种控制结构;l自定义函数和过程的使用;l参数传递的不同类型。2021-12-25 第五章第五章 VFP程序设计基础程序设计基础4主讲:主讲: 南京信息工程大学计算机与软件学院南京信息工程大学计算机与软件学院 刘生刘生 章节内容章节内容l5.1 Visual Foxpro程序设计基础l 5.1.1 基本概念l 5.1.2 程序设计方法与步骤l 5.1.3 顺序程序设计l 5

3、.1.4 选择结构程序设计l 5.1.5 循环结构程序设计2021-12-25 第五章第五章 VFP程序设计基础程序设计基础5主讲:主讲: 南京信息工程大学计算机与软件学院南京信息工程大学计算机与软件学院 刘生刘生 章节内容章节内容l5.1.6 子程序、过程与自定义函数l 5.1.7 过程文件l 5.1.8 自定义函数l5.2 程序设计综合应用举例2021-12-25 第五章第五章 VFP程序设计基础程序设计基础6主讲:主讲: 南京信息工程大学计算机与软件学院南京信息工程大学计算机与软件学院 刘生刘生 5.1.1 基本概念基本概念程序程序是使计算机完成某种功能的指令序列。程序可分为源语言程序和

4、可执行程序。 程序设计程序设计是指设计、编制、调试程序的方法和过程。程序设计方法主要有结构化程序设计与面向对象设计之分。 2021-12-25 第五章第五章 VFP程序设计基础程序设计基础7主讲:主讲: 南京信息工程大学计算机与软件学院南京信息工程大学计算机与软件学院 刘生刘生 5.1.1 基本概念基本概念执行程序执行程序就是依次执行其中的每一条命令,直至全部命令执行完毕。程序通常以文件形式存放在磁盘上,在Visual FoxPro中,程序文件程序文件也称为命令文件命令文件,其扩展名为 .prg。程序文件一旦建立,可以多次重复执行。 2021-12-25 第五章第五章 VFP程序设计基础程序设

5、计基础8主讲:主讲: 南京信息工程大学计算机与软件学院南京信息工程大学计算机与软件学院 刘生刘生 5.1.2 程序设计方法与步骤程序设计方法与步骤l程序设计一般包含以下几个步骤:p(1)分析问题,确定需求,对能够建立数学模型的问题,根据需求建立数学模型。2021-12-25 第五章第五章 VFP程序设计基础程序设计基础9主讲:主讲: 南京信息工程大学计算机与软件学院南京信息工程大学计算机与软件学院 刘生刘生 5.1.2 程序设计方法与步骤程序设计方法与步骤l程序设计一般包含以下几个步骤:p(2)确定数据结构和算法。u 算法由三种基本控制结构描述,主要描述程序的控制流程和工作过程,数据结构是对程

6、序中数据的描述。在高级程序设计语言中,数据结构通过数据类型体现,而算法可用任何形式的工具来描述,通常有流程图、N-S图和伪代码等。其中流程图是最早提出的用图形表示算法的工具,它具有直观性强、便于阅读等特点,是采用较多的算法描述工具。 2021-12-25 第五章第五章 VFP程序设计基础程序设计基础10主讲:主讲: 南京信息工程大学计算机与软件学院南京信息工程大学计算机与软件学院 刘生刘生 5.1.2 程序设计方法与步骤程序设计方法与步骤u流程图的基本图形元素起止框处理框判断框输入输出框连接点流程线2021-12-25 第五章第五章 VFP程序设计基础程序设计基础11主讲:主讲: 南京信息工程

7、大学计算机与软件学院南京信息工程大学计算机与软件学院 刘生刘生 5.1.2 程序设计方法与步骤程序设计方法与步骤l程序设计一般包含以下几个步骤:p(2)确定数据结构和算法。计算机能够实现的基本功能操作包括以下四种类型:l逻辑运算:逻辑与、逻辑或、逻辑非; l算术运算:加、减、乘、除;l数据比较:大于、小于、等于、不等于、大于等于、小于等于;l数据传送:输入、输出、赋值。 2021-12-25 第五章第五章 VFP程序设计基础程序设计基础12主讲:主讲: 南京信息工程大学计算机与软件学院南京信息工程大学计算机与软件学院 刘生刘生 5.1.2 程序设计方法与步骤程序设计方法与步骤l(3)编制程序。

8、 l(4)调试程序。2021-12-25 第五章第五章 VFP程序设计基础程序设计基础13主讲:主讲: 南京信息工程大学计算机与软件学院南京信息工程大学计算机与软件学院 刘生刘生 5.1.3 顺序程序设计顺序程序设计l顺序结构是程序设计中最简单、最常用的基本结构,同时也是程序设计中最基本的控制结构。l该结构中,指令按照出现的先后顺序依次执行。l它是任何程序的主体,即使在选择结构或循环结构内部中,也大多为顺序结构程序段。2021-12-25 第五章第五章 VFP程序设计基础程序设计基础14主讲:主讲: 南京信息工程大学计算机与软件学院南京信息工程大学计算机与软件学院 刘生刘生 l1.数据输出命令

9、l格式:?/?l功能:计算并输出表达式的值。l说明:l 命令中的表达式可以包含字段变量和内存变量,表达式之间以逗号分隔。l 两个命令的区别在于:? 命令先换行,再开始输出;? 命令不换行即开始输出。l ? 后面若没有表达式表,则只进行换行操作。5.1.3 顺序程序设计顺序程序设计2021-12-25 第五章第五章 VFP程序设计基础程序设计基础15主讲:主讲: 南京信息工程大学计算机与软件学院南京信息工程大学计算机与软件学院 刘生刘生 l2. 语句的续行语句的续行l当一条语句或一个命令很长时,在代码编辑窗口或命令窗口阅读时将不便查看,使用滚动条又比较麻烦。这时,就可以使用续行功能,用分号“;”

10、将较长的语句分为两行或多行。作为续行符的分号只能出现在行尾。 5.1.3 顺序程序设计顺序程序设计2021-12-25 第五章第五章 VFP程序设计基础程序设计基础16主讲:主讲: 南京信息工程大学计算机与软件学院南京信息工程大学计算机与软件学院 刘生刘生 l3注释命令l为增加程序的可读性,常常要在程序中加入一些注释,对程序中使用的变量、算法进行说明。注释仅起说明作用,不参与程序运行。Visual FoxPro提供了2种注释的方法l其一:在程序行开头加“*” 表示本行为注释行l其二:命令行中字符“&”后面的部分为注释 5.1.3 顺序程序设计顺序程序设计2021-12-25 第五章第五

11、章 VFP程序设计基础程序设计基础17主讲:主讲: 南京信息工程大学计算机与软件学院南京信息工程大学计算机与软件学院 刘生刘生 l试编写一个程序完成两个变量内容的交换。l分析:分析:要完成两个变量内容的交换,需引入第三个变量作为临时变量,需要三个步骤来完成交换,设变量a、b分别保存不同的值,引入第三个变量c,则需下述步骤:l()将变量a赋值给c;l()将变量b赋值给a;l()将变量c赋值给b;5.1.3 顺序程序设计顺序程序设计2021-12-25 第五章第五章 VFP程序设计基础程序设计基础18主讲:主讲: 南京信息工程大学计算机与软件学院南京信息工程大学计算机与软件学院 刘生刘生 l代码如

12、下:ab2?a,bcaabbc?a,b5.1.3 顺序程序设计顺序程序设计2021-12-25 第五章第五章 VFP程序设计基础程序设计基础19主讲:主讲: 南京信息工程大学计算机与软件学院南京信息工程大学计算机与软件学院 刘生刘生 l顺序结构 p按程序中的语句顺序依次执行。 例 STORE 4 TO r S=3.14*r*r ?S5.1.3 顺序程序设计顺序程序设计2021-12-25 第五章第五章 VFP程序设计基础程序设计基础20主讲:主讲: 南京信息工程大学计算机与软件学院南京信息工程大学计算机与软件学院 刘生刘生 5.1.4 选择结构程序设计选择结构程序设计l选择结构根据给定的条件是

13、否为真(即条件成立)决定可以执行的分支语句。l在VFP中,实现分支结构的语句p分支语句IFELSE ENDIFp多分支语句DOCASEENDCASE2021-12-25 第五章第五章 VFP程序设计基础程序设计基础21主讲:主讲: 南京信息工程大学计算机与软件学院南京信息工程大学计算机与软件学院 刘生刘生 5.1.4 选择结构程序设计选择结构程序设计l1IFELSE ENDIF结构2021-12-25 第五章第五章 VFP程序设计基础程序设计基础22主讲:主讲: 南京信息工程大学计算机与软件学院南京信息工程大学计算机与软件学院 刘生刘生 5.1.4 选择结构程序设计选择结构程序设计pIF结构示

14、例之一 STORE 70 TO CJ IF CJ=60 ?”及格” ENDIFcj=70CJ60?输出输出“及格及格”.T.F.2021-12-25 第五章第五章 VFP程序设计基础程序设计基础23主讲:主讲: 南京信息工程大学计算机与软件学院南京信息工程大学计算机与软件学院 刘生刘生 5.1.4 选择结构程序设计选择结构程序设计pIF结构示例之二 STORE 70 TO CJ IF CJ=60 ?”及格” ELSE ?”不及格” ENDIFcj=70CJ60?输出输出“及格及格”输出输出“不及格不及格”.T.F.2021-12-25 第五章第五章 VFP程序设计基础程序设计基础24主讲:主讲

15、: 南京信息工程大学计算机与软件学院南京信息工程大学计算机与软件学院 刘生刘生 闰年问题闰年问题l一个年份满足以下条件之一即为闰年:p能被4整除且不能被100整除p能被400整除nYear=2005IF MOD(nYear,4)=0 AND MOD(nYear,100)0 OR MOD(nYear,400)=0?”是闰年“ELSE?”不是闰年”ENDIF2021-12-25 第五章第五章 VFP程序设计基础程序设计基础25主讲:主讲: 南京信息工程大学计算机与软件学院南京信息工程大学计算机与软件学院 刘生刘生 l判断某一年是否是闰年。Y=2005IF y/4=INT(y/4) AND y/10

16、0INT(y/100) OR y/400=INT(y/400)? STR(y)+是闰年ELSE? STR(y)+不是闰年ENDIF5.1.4 选择结构程序设计选择结构程序设计2021-12-25 第五章第五章 VFP程序设计基础程序设计基础26主讲:主讲: 南京信息工程大学计算机与软件学院南京信息工程大学计算机与软件学院 刘生刘生 l3多分支选择结构5.1.4 选择结构程序设计选择结构程序设计2021-12-25 第五章第五章 VFP程序设计基础程序设计基础27主讲:主讲: 南京信息工程大学计算机与软件学院南京信息工程大学计算机与软件学院 刘生刘生 l说明:p Do Case和第一个Case子

17、句之间不能插入任何命令。p Do Case 和 Endcase必须配对使用,且Do Case、Case、Otherwise 和 Endcase各子句必须各占一行。p 中可含有任何Visual FoxPro命令,包括可嵌套Do Case命令。5.1.4 选择结构程序设计选择结构程序设计2021-12-25 第五章第五章 VFP程序设计基础程序设计基础28主讲:主讲: 南京信息工程大学计算机与软件学院南京信息工程大学计算机与软件学院 刘生刘生 多重判断的问题?选择的嵌套多重判断的问题?选择的嵌套l例:cj在80分以上为优秀,60-80为及格,60分以下不及格?2021-12-25 第五章第五章 V

18、FP程序设计基础程序设计基础29主讲:主讲: 南京信息工程大学计算机与软件学院南京信息工程大学计算机与软件学院 刘生刘生 pDO CASE结构示例 cj=70 DO CASECASE cj=80 ?”优良”CASE cj=60 ?”及格”OTHERWISE ?”不及格”ENDCASE2021-12-25 第五章第五章 VFP程序设计基础程序设计基础30主讲:主讲: 南京信息工程大学计算机与软件学院南京信息工程大学计算机与软件学院 刘生刘生 l已知分支函数,编写程序。X=5,b=10,c=1DO CASE CASE x0 fx=(a*x+b)/( a*x-b) CASE x=0 fx=1 OTH

19、ERWISE fx=(a*x-b)/( a*x+b)ENDCASE? 函数F(X)的值为:+STR(fx,6,1)5.1.4 选择结构程序设计选择结构程序设计)0()0()0(*1*)(xxxbxabxabxabxaxF2021-12-25 第五章第五章 VFP程序设计基础程序设计基础31主讲:主讲: 南京信息工程大学计算机与软件学院南京信息工程大学计算机与软件学院 刘生刘生 5.1.5循环结构程序设计循环结构程序设计l循环结构也称为重复结构,是指程序执行过程中,其中的某段代码被重复执行若干次。被重复执行的代码段,通常称之为循环体。lVisual FoxPro支持循环结构的命令包括:For-E

20、ndfor Do While-EnddoScan-Endscan2021-12-25 第五章第五章 VFP程序设计基础程序设计基础32主讲:主讲: 南京信息工程大学计算机与软件学院南京信息工程大学计算机与软件学院 刘生刘生 l1Do While命令格式:Do While 条件 命令序列 Loop 命令序列 Exit 命令序列 Enddol功能:首先判断条件表达式的值,若为.T.,就执行Do While与Enddo之间的命令序列(称为循环体),然后再判断条件表达式的值,重复刚才的过程。一旦条件取值为.F.,就跳出循环体转而执行Enddo后的下一条命令。5.1.5循环结构程序设计循环结构程序设计2

21、021-12-25 第五章第五章 VFP程序设计基础程序设计基础33主讲:主讲: 南京信息工程大学计算机与软件学院南京信息工程大学计算机与软件学院 刘生刘生 2021-12-25 第五章第五章 VFP程序设计基础程序设计基础34主讲:主讲: 南京信息工程大学计算机与软件学院南京信息工程大学计算机与软件学院 刘生刘生 l根据职工的职称修改职工的工资。若职称为“高级工程师”,则工资增加200,若职称为“工程师”,则则工资增加150,若职称为“助理工程师”,则工资增加100。5.1.5循环结构程序设计循环结构程序设计2021-12-25 第五章第五章 VFP程序设计基础程序设计基础35主讲:主讲:

22、南京信息工程大学计算机与软件学院南京信息工程大学计算机与软件学院 刘生刘生 CLEARUSE 职工DO WHILE .NOT. EOF() DO CASE CASE 职称=“高级工程师” REPLACE 工资 WITH 工资+200 CASE 职称=“工程师” REPLACE 工资 WITH 工资+150 CASE 职称=“助理工程师” REPLACE工资 WITH 工资+100 ENDCASE SKIP ENDDO USE 5.1.5循环结构程序设计循环结构程序设计2021-12-25 第五章第五章 VFP程序设计基础程序设计基础36主讲:主讲: 南京信息工程大学计算机与软件学院南京信息工程

23、大学计算机与软件学院 刘生刘生 l求1100以内的所有奇数和与偶数和Odd=0 &存放奇数和Evev=0 &存放偶数和i=1 &循环变量Do while i=100 if i%2=1 odd=odd+1 else even=even+1 endif i=i+1Endfor?odd,even2021-12-25 第五章第五章 VFP程序设计基础程序设计基础37主讲:主讲: 南京信息工程大学计算机与软件学院南京信息工程大学计算机与软件学院 刘生刘生 l2For-Next循环命令格式:For 内存变量=表达式l To 表达式2 Step 表达式3 命令序列 Exit Loop

24、 Endfor | Nextl功能:本命令中的内存变量(又称循环变量)的作用类似于计数器。它的取值范围由表达式1(初值)与表达式2(终值)确定。通过判断内存变量的取值是否在指定范围中来确定循环体是否重复执行 5.1.5循环结构程序设计循环结构程序设计2021-12-25 第五章第五章 VFP程序设计基础程序设计基础38主讲:主讲: 南京信息工程大学计算机与软件学院南京信息工程大学计算机与软件学院 刘生刘生 5.1.5循环结构程序设计循环结构程序设计2021-12-25 第五章第五章 VFP程序设计基础程序设计基础39主讲:主讲: 南京信息工程大学计算机与软件学院南京信息工程大学计算机与软件学院

25、 刘生刘生 l 求N的阶乘。CLEARJC=1N=5FOR I=1 to N JC=JC*IENDFOR? STR(N,5)+的阶乘是:+STR(JC,5)RETURN5.1.5循环结构程序设计循环结构程序设计2021-12-25 第五章第五章 VFP程序设计基础程序设计基础40主讲:主讲: 南京信息工程大学计算机与软件学院南京信息工程大学计算机与软件学院 刘生刘生 l3Scan-EndScan命令格式:Scan For Exit LoopEndScanl功能: 对当前表的指定记录,依次重复执行循环体,每循环一次,表的指针自动下移一位。l说明:在数据库应用程序中,经常要对表中的指定记录逐个进行

26、某种处理,Visual FoxPro专门提供了表记录扫描循环,利用它能非常方便地完成逐条记录扫描。请注意,Scan循环只能用于表打开的情况。5.1.5循环结构程序设计循环结构程序设计2021-12-25 第五章第五章 VFP程序设计基础程序设计基础41主讲:主讲: 南京信息工程大学计算机与软件学院南京信息工程大学计算机与软件学院 刘生刘生 2021-12-25 第五章第五章 VFP程序设计基础程序设计基础42主讲:主讲: 南京信息工程大学计算机与软件学院南京信息工程大学计算机与软件学院 刘生刘生 l查询职工表中年龄大于20的所有女性职工的姓名。CLEARUSE 职工SCAN ALL FOR 年

27、龄=20 IF 性别=男 LOOP ENDIF DISPLAYENDSCAN5.1.5循环结构程序设计循环结构程序设计2021-12-25 第五章第五章 VFP程序设计基础程序设计基础43主讲:主讲: 南京信息工程大学计算机与软件学院南京信息工程大学计算机与软件学院 刘生刘生 LOOP命令和命令和EXIT命令命令l循环结构中的LOOP命令和EXIT命令:p LOOP是短路语句,表示重新开始下一次循环;p EXIT是退出语句,表示跳出循环。2021-12-25 第五章第五章 VFP程序设计基础程序设计基础44主讲:主讲: 南京信息工程大学计算机与软件学院南京信息工程大学计算机与软件学院 刘生刘生

28、 累加示例累加示例l计算S=1+3+5+99S=0 FOR I=1 TO 99 STEP 2S=S+IENDFORl计算N=1*1+2*2+3*3+10*10N=0 FOR J=I TO 10N=N+J*JENDFOR?S=1+2+3+100? N=1*2*3*1002021-12-25 第五章第五章 VFP程序设计基础程序设计基础45主讲:主讲: 南京信息工程大学计算机与软件学院南京信息工程大学计算机与软件学院 刘生刘生 累乘示例累乘示例l计算P=3*5*7*25P=1 FOR K=3 TO 25 STEP 2P=P*KENDFORl计算10!F=1FOR I=1 TO 10F=F*IEND

29、FOR2021-12-25 第五章第五章 VFP程序设计基础程序设计基础46主讲:主讲: 南京信息工程大学计算机与软件学院南京信息工程大学计算机与软件学院 刘生刘生 pSCANENDSCAN示例 USE xscj SCAN ALL FOR cj0) c=left(cstring,1) p=c+p cstring=subs(cstring,2)Enddo?p练习:“123456中华人民共和国”2021-12-25 第五章第五章 VFP程序设计基础程序设计基础50主讲:主讲: 南京信息工程大学计算机与软件学院南京信息工程大学计算机与软件学院 刘生刘生 典型应用(典型应用(4)4.统计字符/数字个数

30、Dimen c(10)C=0S=“0101123569”Do whil len(s)0 M=left(s,1) n=int(val(m)+1 c(n)=c(n)+1 s=right(s,len(s)-1)Enddodisp memo like c*练习:统计“abcdfghkyidlfjkt”中的字符个数(仅限于a-z之间)2021-12-25 第五章第五章 VFP程序设计基础程序设计基础51主讲:主讲: 南京信息工程大学计算机与软件学院南京信息工程大学计算机与软件学院 刘生刘生 典型应用(典型应用(5)5.其它l十进制与二进制的转换2021-12-25 第五章第五章 VFP程序设计基础程序设

31、计基础52主讲:主讲: 南京信息工程大学计算机与软件学院南京信息工程大学计算机与软件学院 刘生刘生 l子程序子程序使用子程序的目的是提高程序代码的可重用性,简化程序设计,其作用与过程和自定义函数类似。一般的,子程序是一段以独立的程序文件方式存放在磁盘上的程序,功能相对独立且通用性强,可被其它程序(主程序)多次调用。l创建格式创建格式:MODIFY COMMAND 子程序文件名在子程序的适当位置要加上返回命令(至少一条),以便主程序在调用子程序后能返回到调用命令后的第一条可执行命令处,(主程序与子程序的主要区别也体现在这里)。即RETURN|TO|TO MASTER5.1.6子程序、过程与自定义

32、函数子程序、过程与自定义函数 2021-12-25 第五章第五章 VFP程序设计基础程序设计基础53主讲:主讲: 南京信息工程大学计算机与软件学院南京信息工程大学计算机与软件学院 刘生刘生 l调用格式:调用格式:DO 5.1.6子程序、过程与自定义函数子程序、过程与自定义函数 2021-12-25 第五章第五章 VFP程序设计基础程序设计基础54主讲:主讲: 南京信息工程大学计算机与软件学院南京信息工程大学计算机与软件学院 刘生刘生 l变量的作用域和参数传递变量的作用域和参数传递l变量的作用域是变量的有效范围。即一个变量在哪些程序单元(如主程序、子程序、过程、用户自定义函数)内是“可见”的,这

33、里“可见”的含义是指能够被处理(如引用和赋值)。根据变量的有效范围,变量可分为全局变量和私有变量两种。l(1)全局变量)全局变量l全局变量是指在整个程序运行期间,在任何程序单元中都可以使用的内存变量,当程序运行结束时,全局变量仍保存在内存中,除非使用RELEASE或CLEAR MEMORY命令才能将其释放。作用域为从定义点开始,到退出FoxPro时所执行的所有的程序或过程。全局变量要先定义,后使用,通常在主程序中定义,也可在子程序中定义,还可在命令窗口中定义。5.1.6子程序、过程与自定义函数子程序、过程与自定义函数 2021-12-25 第五章第五章 VFP程序设计基础程序设计基础55主讲:

34、主讲: 南京信息工程大学计算机与软件学院南京信息工程大学计算机与软件学院 刘生刘生 l格式:格式:PUBLIC l说明:说明:l变量名表可以是简单变量,也可以是数组。l定义变量时未对变量进行赋值,变量的初值为.F.。l若将PUBLIC语句所在程序单元中已经存在的局部变量说明为全局变量,则将导致语法错误。l(2)私有变量)私有变量l只能在说明它的程序以及该程序嵌套调用的各级子程序中使用。数组说明命令定义内存变量后,这个变量自动被默认是私有变量,但也可以显式说明。作用域为从定义点开始,到退出该程序时所执行的所有程序。l格式格式1:PRIVATE 5.1.6子程序、过程与自定义函数子程序、过程与自定

35、义函数 2021-12-25 第五章第五章 VFP程序设计基础程序设计基础56主讲:主讲: 南京信息工程大学计算机与软件学院南京信息工程大学计算机与软件学院 刘生刘生 l(3)参数传递)参数传递在主程序的调用子程序的命令中把需要传递的实际参数进行说明,在子程序的最开始加上接受数据的命令,该命令中的形式参数(形参变量)用来接受主程序中传递过来的数据。格式格式1:DO WITH ,格式格式2: (,)PARAMETERS 5.1.6子程序、过程与自定义函数子程序、过程与自定义函数 2021-12-25 第五章第五章 VFP程序设计基础程序设计基础57主讲:主讲: 南京信息工程大学计算机与软件学院南

36、京信息工程大学计算机与软件学院 刘生刘生 l说明说明:DO WITH 为发送数据命令,PARAMETERS 为接受数据命令;PARAMETERS 语句必须放在子程序或过程中的第一行;可以是常量、变量或表达式;是变量。实参与形参应一一对应:个数相同,类型一致,按参数表中的顺序依次传递。子程序或过程中由参数接收语句说明的形参,事实上就是本程序或本过程中的变量,它们在本单元内能够像普通变量一样被使用,不同的是,形参在运行时一开始就具有确定的取值。5.1.6子程序、过程与自定义函数子程序、过程与自定义函数 2021-12-25 第五章第五章 VFP程序设计基础程序设计基础58主讲:主讲: 南京信息工程

37、大学计算机与软件学院南京信息工程大学计算机与软件学院 刘生刘生 l参数传递的类型有两种,传值和传地址。l传值:将实参的值复制一个拷贝后传递给形参。因此,实参与其对应的形参作为变量,拥有各自的存储单元,互不相干。改变形参的取值并不影响实参的值。实参是非简单变量,如:有运算的表达式。l传地址:将实参存储单元的地址传递给形参。因此,实参与其对应的形参作为变量,共同使用同一存储单元,二者是同一存储单元的两个不同标识符号,其值要相互影响。实参一般是简单变量。5.1.6子程序、过程与自定义函数子程序、过程与自定义函数 2021-12-25 第五章第五章 VFP程序设计基础程序设计基础59主讲:主讲: 南京

38、信息工程大学计算机与软件学院南京信息工程大学计算机与软件学院 刘生刘生 l一般地,形参对实参的影响唯一地取决于参数的传递方式,而与形参及实参的标识名无关。l采用格式1调用模块程序时,如果实参是常量或一般形式的表达式,系统会计算出实参的值,并把它们赋值给相应的形参变量。这种情形称为按值传递。如果实参是变量,那么传递的是变量的地址。这种情形称为按引用传递,如果强调以按值传递,则将变量用括号括起来。如果要强制引用传递,则需在实参变量前加&。l采用格式2调用模块程序时,默认情况下都以按值方式传递参数。5.1.6子程序、过程与自定义函数子程序、过程与自定义函数 2021-12-25 第五章第五章

39、 VFP程序设计基础程序设计基础60主讲:主讲: 南京信息工程大学计算机与软件学院南京信息工程大学计算机与软件学院 刘生刘生 l过程是具有一定功能、且相对独立的一段程序,它可以被别的程序单元中的语句调用。与子程序基本一样,所不同的是:过程既可以像子程序那样独立存在一个PRG文件中,也可以存放在调用它的主程序后面作为主程序的部分。过程与主程序其实都是程序文件,所不同的是:主程序是不被任何过程调用的程序,而过程既可被主程序和别的过程调用,又可以再调用别的过程。5.1.7 过程文件过程文件2021-12-25 第五章第五章 VFP程序设计基础程序设计基础61主讲:主讲: 南京信息工程大学计算机与软件

40、学院南京信息工程大学计算机与软件学院 刘生刘生 l1过程的创建过程的创建在程序设计中为了避免重复写出完成相同任务的程序,提高编程的效率,使程序结构清晰,便于调试和修改是使用过程的重要原因所在。过程的创建格式如下格式格式:PROCEDURE PARAMETERS RETURNTO MASTER ENDPROC功能功能:定义一个过程。5.1.7 过程文件过程文件2021-12-25 第五章第五章 VFP程序设计基础程序设计基础62主讲:主讲: 南京信息工程大学计算机与软件学院南京信息工程大学计算机与软件学院 刘生刘生 l说明:说明:每个过程开始于说明语句PROCEDURE,结束于下一条PROCED

41、URE语句之前。每个过程至少应有一条RETURN语句,通常它是该过程的最后一条语句,以表控制的返回。 不含选择项的RETURN语句,控制返回到调用该过程的下一条命令处,若是用户直接运行该过程,则控制返回到FoxPro命令窗口,带有TO MASTER的RETURN语句一般在过程嵌套中使用,控制返回到最高一级主调程序。5.1.7 过程文件过程文件2021-12-25 第五章第五章 VFP程序设计基础程序设计基础63主讲:主讲: 南京信息工程大学计算机与软件学院南京信息工程大学计算机与软件学院 刘生刘生 l含有“PARAMETERS”的过程,称为“有参过程”,否则称“无参过程”。形参表中的各个形参需

42、用逗号分开。形参可以是输入参数,也可以是输出参数。当调用一个有参过程时,主调程序将实在参数传递给被调过程的形参;过程执行完后,也可通过输出参数将执行结果传递经主调程序中的某个内存变量。当然,某形参也可能同时是输入参数和输出参数即在过程中一开始接受主调程序传来的一个实际值,在过程中又赋予其新值带回到主调程序。5.1.7 过程文件过程文件2021-12-25 第五章第五章 VFP程序设计基础程序设计基础64主讲:主讲: 南京信息工程大学计算机与软件学院南京信息工程大学计算机与软件学院 刘生刘生 l过程的调用过程的调用与子程序调用一样,使用Do命令。对于独立保存的过程文件,主程序调用其中的过程前,首

43、先要打开这个过程文件,使用完后要关闭。与主程序保存在一起的过程,则无须打开和关闭过程文件。5.1.7 过程文件过程文件2021-12-25 第五章第五章 VFP程序设计基础程序设计基础65主讲:主讲: 南京信息工程大学计算机与软件学院南京信息工程大学计算机与软件学院 刘生刘生 l 打开过程文件格式:Set Procedure To Addtive功能:打开一个或多个过程文件。说明:若有Addtive可选项,在打开新的过程文件时,并不关闭已经打开的过程文件。若无此可选项,在打开新的过程文件时,自动关闭原来已打开的过程文件。5.1.7 过程文件过程文件2021-12-25 第五章第五章 VFP程序

44、设计基础程序设计基础66主讲:主讲: 南京信息工程大学计算机与软件学院南京信息工程大学计算机与软件学院 刘生刘生 l 关闭过程文件格式1:Close Procedure格式2:Set Procedure To格式3:Release Procedure 功能:格式1、格式2关闭所有打开的过程文件;格式3关闭指定的过程文件。 5.1.7 过程文件过程文件2021-12-25 第五章第五章 VFP程序设计基础程序设计基础67主讲:主讲: 南京信息工程大学计算机与软件学院南京信息工程大学计算机与软件学院 刘生刘生 5.1.8自定义函数自定义函数1自定义函数的定义自定义函数与过程定义方法相似,主要区别为

45、: 过程以Procedure开头,而自定义函数必须以Function开头来定义。 自定义函数必须返回一个函数值,而子程序或过程却无此限制。格式:Function 函数名 命令序列 Return 表达式 Endfunc2021-12-25 第五章第五章 VFP程序设计基础程序设计基础68主讲:主讲: 南京信息工程大学计算机与软件学院南京信息工程大学计算机与软件学院 刘生刘生 l自定义函数说明: 自定义函数必须以Return 结尾,表示用函数名返回此表达式的值。 自定义函数名不能与Visual FoxPro系统的标准函数同名,也不能与内存变量同名。 通常自定义函数放在程序文件中,也可以象子程序一样

46、保存为一个单独的程序文件,此时程序文件名就是函数名 5.1.8自定义函数自定义函数2021-12-25 第五章第五章 VFP程序设计基础程序设计基础69主讲:主讲: 南京信息工程大学计算机与软件学院南京信息工程大学计算机与软件学院 刘生刘生 2自定义函数的调用自定义函数的调用方法有两种,其一,与系统标准函数一样,作为命令语句中的一个因子;其二,与过程一样,使用Do命令,但第二种方法无法体现作为函数调用的优越性。5.1.8自定义函数自定义函数2021-12-25 第五章第五章 VFP程序设计基础程序设计基础70主讲:主讲: 南京信息工程大学计算机与软件学院南京信息工程大学计算机与软件学院 刘生刘

47、生 作业作业一选择题一选择题1、源程序如下所示,阅读源程序回答下面的问题。A=MnRspqN=LEN(A)I=1DO WHILE I=NB=SUBSTR(A,I,1)IF ISUPPER(B)B=CHR(ASC(B)+32)A=STUFF(A,I,1,B)ENDIFI=I+2ENDDO?ARETURN注:STUFF(cExpression, nStartReplacement, nCharactersReplaced, cReplacement)的功能是返回一个字符串,此字符串是通过用另一个字符表达式*替换现有字符表达式中指定数目的字符得到的。ISUPPER()确定一个字符表达式中的第一个字符

48、是否是一个大写的字母字符。(1)程序运行的结果是( )A)MNRSPQ B)mnrspq C)MNRSpq D)MsRnpq(2)程序循环的次数是( )A)5 B)4 C)6 D)72021-12-25 第五章第五章 VFP程序设计基础程序设计基础71主讲:主讲: 南京信息工程大学计算机与软件学院南京信息工程大学计算机与软件学院 刘生刘生 作业作业2、源程序如下所示,阅读源程序回答下面的问题。CLEARCH=?+-*/?N=1DO WHILE N0S=S+NIF MOD(N,2)=0N=N+1ELSEN=N-2ENDIFENDDO?S=,STR(S,2)SET TALK ONRETURN(1)

49、上述程序执行后,共循环了( )次。A)11 B)9 C)7 D)5(2)上述程序执行后,屏幕显示为( )。A)S=46 B)S=55 C)S=36 D)S=452021-12-25 第五章第五章 VFP程序设计基础程序设计基础73主讲:主讲: 南京信息工程大学计算机与软件学院南京信息工程大学计算机与软件学院 刘生刘生 作业作业二填空题二填空题1、有一学生库STUDENT.DBF,表中有:姓名(C,8),英语(N,2),数学(N,2),奖学金(L,1)等字段,程序功能为确定是否发给奖学金(奖学金字段值目前均为.F.)。若英语数学两门功能都大于或等于90分,则该学生可以发放奖学金,请对程序填空。S

50、ET TALK OFFCLEARUSE STUDENTDO WHILE .T.IF 英语=90 .AND. 数学=90 ENDIFSKIPIF EOF() ENDIFENDDORETURN2、请把下面的程序补充完整,使得该程序运行后能够得到如下图形:l 2021-12-25 第五章第五章 VFP程序设计基础程序设计基础74主讲:主讲: 南京信息工程大学计算机与软件学院南京信息工程大学计算机与软件学院 刘生刘生 作业作业A D DG G GJ J J JM M M M MSET TALK OFFCLEARK=ASC(A)FOR I=1 TO 5FOR J=1 TO I SAY CHR(K)END

51、FOR ENDFORSET TALK ONRETURN3、下面的程序是将“中华人民共和国”显示为“中 华 人 民 共 和 国”,即在每两个汉字之间加入一个空格。阅读下面的程序,将程序填写完整。2021-12-25 第五章第五章 VFP程序设计基础程序设计基础75主讲:主讲: 南京信息工程大学计算机与软件学院南京信息工程大学计算机与软件学院 刘生刘生 作业作业SET TALK OFFCLEARX=中华人民共和国Y=DO WHILE LEN(X)=Y=Y+SUBSTR(X,1,2)+ X=SUBSTR()ENDDO?4有一分支程序为: IF S100 DO P1.PRGELSE IF S10 DO

52、 P2.PRG ELSE IF S1 DO P3.PRG ELSE DO P4.PRG ENDIF ENDIFENDIF分别写出执行P2,P3,P4子程序的条件表达式: DO P1.PRG 条件为:S100DO P2.PRG 条件为:_。 DO P3.PRG 条件为:_。 DO P4.PRG 条件为:_。三程序控制结构三程序控制结构2021-12-25 第五章第五章 VFP程序设计基础程序设计基础76主讲:主讲: 南京信息工程大学计算机与软件学院南京信息工程大学计算机与软件学院 刘生刘生 作业作业1求出下列表达式的值:(x2 + y)(x y)|2x - 3y|)2给定一个年份,判断它是否闰年。闰年的条件是:能被4整除但不能被100整除,或能被100整除且能被400整除。3从键盘输入数据Az,通过类型判断,输出其数据类型的汉字说明。4从键盘输入x,y,z三个数值,将它们从大到小排列后输出。四程序阅读题

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论