收藏 分享(赏)

第07章vfp程序设计基础.ppt

上传人:dwy79026 文档编号:8407616 上传时间:2019-06-24 格式:PPT 页数:97 大小:853.50KB
下载 相关 举报
第07章vfp程序设计基础.ppt_第1页
第1页 / 共97页
第07章vfp程序设计基础.ppt_第2页
第2页 / 共97页
第07章vfp程序设计基础.ppt_第3页
第3页 / 共97页
第07章vfp程序设计基础.ppt_第4页
第4页 / 共97页
第07章vfp程序设计基础.ppt_第5页
第5页 / 共97页
点击查看更多>>
资源描述

1、第七章 VFP程序设计基础,2,当今世界上两大计算机程序设计的方法 面向过程的结构化程序设计、 面向对象程序设计 本章节为VFP的重点与难点部分 注重理解,掌握结构,灵活运用,3,目录,7.1 创建、修改和运行应用程序 7.2 VFP基本语法结构 7.3 数组 7.4 过程和用户自定义函数 7.5 变量的作用域 7.6 综合应用,4,7.1 创建、修改和运行应用程序,7.1.1 创建应用程序 (3种方式) 一、VFP系统菜单创建 文件 | 新建 |程序 | 创建新文件 注 创建的文件不在项目中 二、项目管理器创建 代码 | 程序 | 新建 注 创建的文件在项目中 三、命令窗口直接输入方式 Mo

2、dify command 程序名 注 创建的文件在默认位置 注程序的扩展名为:.PRG,5,7.1.2 修改程序 (4种方式) 一、VFP系统菜单 文件 | 打开| 选择程序 二、项目管理器 代码 | 选择程序 | 修改 注 该程序应在项目中 三、命令窗口输入 Modify command 程序名 注 该程序应在默认位置 四、命令窗口输入 Modify command ? 显示对话框,6,7.1.3 运行程序 (3种方式) 一、VFP系统菜单 程序 | 运行 | 显示对话框,选择程序 二、项目管理器 代码 | 选择程序 | 运行 注 该程序应在项目中 三、命令窗口输入DO 文件名注 如果不指明

3、文件的位置,则执行默认位置的程序;如果程序不在默认位置,必须加路径。例如:Do d: 项目 p2.prg,7,7.2 VFP基本语法结构,在程序设计语言中,程序控制是程序设计语言的精髓所在,在结构化程序设计中,程序一般采用3种结构组成:顺序结构条件分支结构循环结构,8,7.2.1 程序中常用的命令 1、最常用的屏幕输出命令:? ? 数据1,数据2, & 输出前先换行 ? 数据1,数据2, &接着上一行数据输出 2、清除屏幕命令 命令格式: CLEAR ALL 命令功能: 清除屏幕 注: 使用ALL将不清除屏幕,而是释放所有内存变量、数组、用户定义的菜单和窗口、关闭所有打开的表、索引等文件;,9

4、,3、注释命令 命令格式一: NOTE 命令格式二: * 命令格式三: & 命令功能: 注解,系统不对其作语法检查 注: NOTE 和 * 必须写在每一行的开头 & 可以写在每一行的开头,也可以写在命令的后面,10,4、运行中断和结束命令 命令格式一: QUIT 功能: 关闭所有文件,并结束VFP系统的运行,返回到Windows桌面。 命令格式二: CANCEL 功能: 终止程序的执行,返回到命令窗口。 命令格式三: RETURN 功能: 结束所在程序的执行 5、赋值命令 命令格式:STORETO 变量1,变量2 功能: 将数据存入变量、数组、数组元素中。,11,5、常用系统状态设置命令 Se

5、t talk on | off (默认是on)是否在屏幕上显示命令执行的响应信息 Set escape on | off (默认是允许)是否允许用户用【Esc】键取消程序的执行。 Set deleted on | off (默认是允许)是否允许使用做了逻辑删除的记录 Set default to 指定默认的盘符和路径 Set console on | off设置是否将输出信息在窗口上显示,12,程序交互命令 1、等待命令WAIT 格式: WAIT提示信息 TOWINDOWAT , TIMEOUT 功能: 程序执行到该命令时,显示提示信息 ,然后等待用户从键盘上输入一个字符,并将该字符输入到指定

6、的内存变量中。 例: wait “按任意键继续” timeout 6 &超过6秒系统终止该命令的执行,执行下面的命令。 wait “按任意键继续“ &按任意键终止该命令的执行,执行下面的命令。 wait “按任意键继续” window &显示一个窗口,其中有提示信息。 wait “按任意键继续” window at 5,10 & 指定窗口的位置,13,2、输入命令INPUT 格式:input 提示信息 TO 功能:暂停程序运行,等待键盘输入数据,当键入回车符后,继续执行下面的命令。可以输入数值型数据,也可以输入字符型数据,字符型数据必须加引号。 例:input “输入数据:“ to vname

7、 、接受命令ACCEPT ACCEPT提示信息 TO 只能接受字符型数据,输入时不需要加引号。,14,7.2.2 顺序结构程序设计 按语句排列的先后顺序,依次逐条执行。 例7-1,显示学生表中任意一个学生的姓名和系名 Clear Use xs Input “输入记录号:“ to r Go r ? xh, xm use return,15,例7-2 程序运行结果? input “enter a:“ to a input “enter b:“ to b ? “a=“+ltrim(str(a),“b=“+ltrim(str(b) c=a a=b b=c ? “a=“+ltrim(str(a),“b=

8、“+ltrim(str(b) 输入 给a, 输入给b 显示: a=3 b=4a=4 b=3,16,7.2.3 分支结构程序设计 条件分支根据条件的测试结果执行不同的操作。 2种命令: IFELSEENDIF DO CASEENDCASE 一、 IFELSEENDIF 格式:,IF 条件表达式命令组 ENDIF,IF 条件表达式命令组1 ELSE命令组2 ENDIF,当条件表达式结果为.T时,执行命令组1。 当条件表达式结果为.F.时,执行命令组2。 执行完组1或组2后,执行ENDIF后面命令。 通常,使用于只有两个分支的情况。,当条件表达式结果为.T时,执行命令组。 执行完,执行ENDIF后面

9、命令。 当条件为.F.时,执行ENDIF后面命令。,17,例7-if:输出2个数中大的数 input “enter a:“ to a input “enter b:“ to b if ab ? “大的数是:“ ,a else ? “大的数是:“ , b endif,18,If嵌套 IF 条件表达式命令组1 ELSE命令组2 ENDIF 这里的命令组还可以是if语句,编程计算分段函数:,Input “enter x: “ to x If x0y=1 else if x=0y=0elsey=-1endif endif ? y,19,二、 DO CASEENDCASE 格式: DO CASECASE

10、 条件表达式1命令序列1CASE 条件表达式2命令序列2 OTHERWISE其他命令序列 ENDCASE,从第一个CASE开始,判断条件表达式的值是否为.T.当遇到第一个结果为.T.的CASE表达式,就执行它后面的命令序列然后执行ENDCASE后面的命令。若所有CASE表达式都为.F.,则执行OTHERWISE后面的命令序列。通常,用于多于两个分支的情况,20,21,例7-case,根据分数输出等级。 cj=90 输出“优” 75=cj90 输出“良” 60=cj75 输出“合格” cj60 输出“不合格”,input “输入成绩:“ to cj do casecase cj=90 ? “优“

11、case cj=75 .and. cj=60 .and. cj75? “合格“ otherwise? “不合格“ endcase,22,分支结构程序举例,1、编写程序, 实现功能为:判断一个数的奇偶性。INPUT “请输入数据:“ TO C IF C%2=1 ? STR(C)+“是奇数“ ELSE ? STR(C)+“是偶数“ ENDIF,23,2、 求一元二次方程的根。,Input “a=?“ to a Input “b=?“ to b Input “c=?“ to c d = b2 - 4*a*c If d = 0x1=(-b+sqrt(d)/2/ax2=(-b-sqrt(d)/2/a?

12、“该方程的解为:“ ? “x1=“,x1 , “x2=“,x2 Else? “该方程无实数解。“ Endif,ax 2+bx+c=0 判别式d=b2-4ac=0x1=x2=,24,7.2.4 循环结构程序设计 循环是重复执行一组语句若干次,其中被循环执行的一组语句称为循环体。在VFP中,实现循环的语句主要有三种: FORENDFOR DO WHILEENDDO SCANENDSCAN,25,一、FORENDFOR 语句格式:FOR 循环变量=初值 TO 终值 STEP 步长值循环体ENDFOR FOR循环的执行过程如下: 将初值赋给循环变量; 判断循环变量的值是否超出终值; 若超出终值,结束循

13、环,执行ENDFOR后命令; 若未超出终值,执行语句组; 循环变量=循环变量+步长值; 转到重复上述 步骤。,26,例 计算1100之间所有的自然数和。1+2+3+100 s=0 for i=1 to 100 step 1s = s+i endfor ? s 说明: 该语句主要使用于给定次数的循环。 循环开始语句为FOR,结束语句为ENDFOR。 若“step 步长”不写,默认步长为1;,27,多项式求和是基本算法 例:1+3+5+991!+2!+10!1+1/2+1/3+1/1002/1+3/2+5/3+8/5+前20项的和sum=sum + ?,28,例: 计算一个字符串中包括多少个汉字。

14、 基本算法:从字符串中依次取一个字符,如果其ASCII码值大于127,则为一个汉字内码的第一个字节。 clear cstring=学习 Visual FoxPro数据库管理系统 ncount=0 for i=1 to len(cstring)if asc(substr(cstring,i,1)127ncount=ncount+1i=i+1endif endfor ? 汉字个数为:,ncount,29,二、DO WHILEENDDO 语句格式:DO WHILE 循环体ENDDO 执行过程如下:先判断,值为.T.则执行循环体,否则出循环,执行ENDDO下面语句 说明:当循环次数未知,需根据某一条件

15、决定是否循环时使用。循环体中一般须存在能改变循环条件的语句,用于能正常退出循环。,30,例 计算10的阶乘。 S=1 N=1 Do while n=10s = s*nn = n+1 Enddo ? s,用for循环完成:s=1for n=1 to 10 step 1s = s*nendfor? s,31,例 计算1100的偶数和与奇数和 clear even=0 odd=0 i=1 do while i=100if i%2=0even=even+ielseodd=odd+iendifi=i+1 enddo ? 偶数和=,even ? 基数和=,odd,32,例 将十进制数转换成二进制数表示。

16、算法:除2取余,先得到的余数是低位,后得到的余数是高位。 clear d=int(rand()*100+1) ? d binary=space(0) do while d#0b=d%2binary=str(b,1)+binaryd=int(d/2) enddo ? binary,33,例7-a 将所输入的字符串倒序输出.,input “ input a string:“ to ch i=1 mch=“ Do while i= len(ch)mch=substr(ch,i,1)+mchi=i+1 enddo ? mch,34,例:分析程序运行的结果 For i=1 to 5for j=1 to

17、4? Str( i*j)endfor? endfor,循环嵌套,35,For i =1 to 5? Space(10-i)for k=1 to 2*i-1? *endfor ? endfor,例: 输出菱形图案,控制每行的*个数控制每行的*起始位置,36,三、 基于表的循环命令SCANENDSCAN 格式:SCAN NOOPTIMIZE 范围 FOR 条件 WHILE 条件循环体ENDSCAN 说明: 该语句主要用于对表中记录进行处理; SCAN命令自动将记录指针移到下一条满足条件的记录,并执行循环体; NO OPTIMIZE禁用Rushmore技术(优化数据访问技术) 范围可用ALL、NEX

18、T n、RECORD n、REST等,限定扫描记录的范围; FOR 条件限定对所有满足条件的记录进行操作; WHILE 条件限定对所有连续满足条件的记录进行操作;,37,例7-9 逐条显示xs表中的记录 clear use xs scan disp inkey(0.6) &延时0.6秒 endscan,38,例 逐条显示cj表中成绩大于80分的记录 clear use cj scan for cj80 disp inkey(0.6) endscan,39,例:逐条显示xs表中第10条记录内的偶数行记录 clear use xs scan for recno()%2=0 while recno(

19、)%10!=0 disp inkey(0.6) Endscan 显示第2、4、6、8条记录 & 注意,改写如下 scan for recno()%2=0 and recno()10,40,下列两段程序结果是否一致?,Use xs n=0 Scan alln=n+1skip 1 Endscan ? n,use xsn=0Do while not eof()n=n+1skip 1Enddo? n,不同, Scan 命令会自动将记录指针后移,Do while not eof()不会移记录指针 如果xs有16个记录,前者输出8,后者输出16,41,四、 循环结构中的LOOP命令与EXIT命令 1、如果

20、在循环体中,执行到LOOP语句,将跳过LOOP语句与循环出口之间的所有语句,返回到循环入口的语句,进行下一次循环。 2、如果在循环体中,执行到EXIT语句,则跳出循环。 比较2个程序:,for k=1 to 10 if k%2=0loop endif ? k endfor,for k=1 to 10 if k%2=0exit endif ? k endfor,显示1 3 5 7 9,显示1,42,例:信用卡身份密码安全检测,允许最多出错3次,否则吞卡。,ma=12345 & 预留密码 n=0 & 密码输入次数 do while .t.Input “please input your passw

21、ord:“ to xIf x=ma? “welcome!“exit &完成业务,退出elsen=n+1if n3loop &允许继续输入密码else? “warn ! 吞卡“exit &不允许继续输入密码endifendif enddo,43,7.3 数组,数组由若干元素组成,属于内存变量。 数组必须先定义,后使用。 一、数组的声明 1、DIMENSION 数组名行,列 &私有数组 2、DECLARE 数组名行,列 &私有数组 3、PUBLIC 数组名行,列 &全局数组 4、LOCAL 数组名行,列 &局部数组,44,例:DIMENSION a5 ,b2,3 &也可以用圆括号DIMENSION

22、 a(5),b(2,3) a数组有5个元素,b数组有6个元素, 系统给a数组和b数组连续的存储空间。,45,数组的逻辑结构:,数组的存储结构:,46,二、为数组元素赋值 DIMENSION a2,4a1,2=2 &或 a(1,2)=2 a=5 &给a数组所有元素赋值5a2,3=.t.a2,1=:a5=100 &即a2,1=100 注意: 数组在声明后,每个元素默认地赋予.F. list memory like a 显示a数组所有元素值,47,例,分析程序运行结果dime a10 for i=1 to 10ai=i*iendforfor i=1 to 10? aiendfor,48,例:产生10

23、个10,90之间的随机整数,找出最大的数,clear dime a10 for i=1 to 10ai=int(rand()*81)+10? aiendfornmax=a1for i=2 to 10if nmaxainmax=aiendif endfor? “max=“+allt(str(nmax),49,三、在数组与表之间传送数据 1、SCATTER TO 将当前表当前记录的数据存入数组,可以是未定义的新数组,也可以是已定义的数组。 clear use xs go 2 scatter to a list memory like a,50,2、GATHER FROM 将数组中的记录存入当前记录

24、 clear dimension a5 use xs go 2 a1=00001 a2=张三 a3=男 a4=102002 a5=计算机科学 gather from a,比较前后2个表的数据,51,3、COPY TO ARRAY 将当前表中所有记录存入2维数组 clear dimen a5,5 use xs copy to array a for i=1 to 3? for j=1 to 5? ai,jnext endfor list memory like a,52,4、APPENDFROM ARRAY 用数组中的数据在表中添加记录(2维数组同样) clear dimension a5 us

25、e xs a1=00002 a2=李民 a3=男 a4=102002 a5=计算机科学 append from array a,53,5、SELECTFROMINTO ARRAYSELECT-SQL语言,可以传输查询结果到数组中,clear Dimension s5,4 select xs.xh , xm, kc.kcm, cj.cj; from jxsjk!xs , jxsjk!kc , jxsjk!cj; where xs.xh=cj.xh and kc.kcdh=cj.kcdh; order by Xs.xh; Into array s list memory like s &disp

26、memory like s,54,6、INSERT INTOFROM ARRAYINSERT -SQL语言,向表中添加一条新记录,并以数组中的数据填充这条记录,Dimension s2,5 S1,1=001 S1,2=李力 S1,3=男 S1,4=a01 S1,5=英语 S2,1=002 S2,2=王可 S2,3=男 S2,4=a01 S2,5=英语,Insert into xs from array s,55,四、处理数组元素(可以用如下函数处理数组元素) 1、数组元素的排序ASORT( ) 格式:ASORT(数组名,起始位置,排序个数,排序方法),例:排序 clear dimension

27、a10 for i=1 to 9 step 2 ai=i next for i=2 to 10 step 2 ai=-i next list memory like a asort(a) list memory like a,asort(a,3,-1,1) 从第3个到最后一个,降序排,第4个参数 0表示升序,1表示降序 asort(a) 升序,56,例 : 搜索 clear dimension a2,5 a1,1=00003 a1,2=王民 a1,3=男 a1,4=102003 a1,5=计算机科学 a2,1=00004 a2,2=李克 a2,3=男 a2,4=102002 a2,5=计算机科

28、学 set exact on ? ascan(a,李克,1,10),显示: 7说明 ? ascan(a,李克,1,10) 表示在数组a中,从第1个元素到第10个元素查找,与李克相同的元素,函数值为元素下标 set exact on 设置字符串精确匹配,2、数组元素的搜索ASCAN( ) 格式:ASCAN(数组名,表达式,起始位置,查询个数),57,例: 删除 clear dimension a2,5 a1,1=00003 a1,2=王民 a1,3=男 a1,4=102003 a1,5=计算机科学 a2,1=00004 a2,2=李克 a2,3=男 a2,4=102002 a2,5=计算机科学

29、adel(a,1) list memo like a,结果,删除第1行,第2行向前补,最后一行填入.F. 。 adel(a,1,2) 是删除第1列,后面的4列向前移,最后一列填.F. 对于一维数组来说是删除一个元素,3、元素的删除ADEL( ) 格式:adel(数组名,元素位置,2) 可以删除一维数组中的一个元素或二维数组中的一行或一列。,58,例:插入 clear dimension a3,5 a1,1=00003 a1,2=王民 a1,3=男 a1,4=102003 a1,5=计算机科学 a2,1=00004 a2,2=李克 a2,3=男 a2,4=102002 a2,5=计算机科学 ai

30、ns(a,2) list memo like a,结果,插入第2行,原第2行向下移,第2行填入.F. 。 ains(a,3,2) 是插入第3列,后面的列向右移,第3列填.F. 对于一维数组来说是插入一个元素,4、插入AINS( ) 格式:AINS(数组名,元素位置,2) 可以插入一维数组中的一个元素或二维数组中的一行或一列。,59,用数组对数据排序 例 选择法排序。升序排列。算法说明:在a ia10中找最小的,放到a i中, i=1 to 9,clear dime a10 for i=1 to 10 ai=int(rand()*90)+10? ai Endfor ?,for i=1 to 9k

31、=i for j=i+1 to 10if a( k)a( j)k=jendifendfor t=a(i)a( i)=a( k)a( k)=t endfor for i=1 to 10? ai Endfor,在a ia10中找最小的,下标放在k中,a i与ak交换数据,60,例: 冒泡法排序,10个数按从小到大顺序排,clear dime a10 for i=1 to 10 ai=int(rand()*90)+10? ai endfor ?,for k=9 to 1 step -1for i=1 to kif a(i)a(i+1)t=a(i)a(i)=a(i+1)a(i+1)=tendifend

32、for endfor for i=1 to 10? ai endfor,算法说明:相邻两个数比较,小的数放到前面,大的数放到后面。i=1 to k (k=9,8,7,.1) If a iai+1t=a i ,a i=ai+1,ai+1=t,61,7.4 过程和用户自定义函数,把多次重复使用的、具有某种功能的一段代码独立出来,创建一个过程或自定义函数,供其它程序调用,该程序段称为子程序。 VFP中的过程或用户自定义函数属于子程序。 子程序是结构化程序设计的主要特点,一个应用程序的许多功能可以编写成一个个独立的程序段,供其它程序调用。,62,用户自定义函数的存储 存储于独立的程序文件中或主程序的底

33、部,但不能把可执行的主程序代码放在过程和函数之后。 * 存储于过程文件中 * 如果创建的过程或函数是用来处理数据库中的表,可以将过程存储于数据库的存储过程中。,63,过程和用户自定义函数的创建与调用 1、过程的定义 PROCEDURE PARAMETER &形式参数ENDPROC 2、函数的定义 FUNCTION PARAMETER &形式参数ENDFUNC,64,调用过程或函数 过程方式调用 DO 过程名 with 参数 &实际参数 函数方式调用 函数名(参数) &实际参数 注 过程方式和函数方式都可以调用过程及函数,65,显示,clear ? “ 调用函数“ f1() &调用函数 *定义函

34、数 function f1 ? “ 运行函数“ endfunc,66,例:定义一个函数ntoc(),当传递给一个09之间的阿拉伯数字时,返回“AJ”中对应一个英文字母。,function ntoc parameter xsource=“ABCDEFGHIJ“result=substr(source,x+1,1)return result Endfunc 要求写主程序调用,67,参数传递 1、向过程或函数传递参数 定义时参数写法(形参) 在PROCEDURE或FUNCTION命令后的第一个可执行语句必须是PARAMETERS语句。 格式:PARAMETERS &形参,用逗号隔开 调用时参数写法(

35、实参) 用WITH子句传参数 DO WITH &实参,用逗号隔开 函数调用方式 (参数表),68,用自定义函数完成 clear ? Area(3,5) m=4 n=5 ? Area(m,n) Function area Parameters x,y S=x*y Return s endfunc,用过程完成 clear Do Area with 3,5 m=4 n=5 Do Area with m,n Procedure area Parameters x,y S=x*y ? S Endproc,例:求矩形面积,69,2、参数传递的两种方式 按引用传递(地址传递方式)地址传递方式,是将作为实参变

36、量的地址传递给被调程序的形参。地址传递时,主调程序的实参与被调程序的形参使用相同的存储器地址,一旦当形参的值发生改变,则实参的值也随之改变。 按值传递将实参的值直接传送给被调程序的形参,当被调程序的形参的值发生变化时,实参原来的值不变化。 用DO 命令调用过程或函数默认情况下是引用传递. 函数方式调用,默认是按值传递,70,例:DO方式调用自定义函数(地址传递) p=2 ? P do udf with p ? P function udf parameters q q=q*10 ? “q=”,q endfunc运行结果:2q= 2020,例: 函数方式调用自定义函数(值传递) p=2 ? P

37、udf(p) ? “p=“,p function udf parameters q q=q*10 ? “q=”,q endfunc运行结果:2q= 20p= 2,71,例:DO方式调用自定义过程(地址传递) p=2 ? P do udf with p ? P proc udf parameters q q=q*10 ? “q=”,q endproc 运行结果:2 q= 2020,例:函数表达式方式调用自定义过程(值传递) p=2 ? P udf(p) ? “p=“, P proc udf parameters q q=q*10 ? “q=”,q endproc 运行结果:2q= 20p= 2,

38、72,3、改变传递方式 有2种方法可以改变默认的参数传递方式 用SET UDFPARMS TO命令主程序中,在调用用户自定义函数或过程前,若先执行 SET UDFPARMS TO REFERENCE 则,设置为按引用/地址传递方式;若先执行 SET UDFPARMS TO VALUE 则,设置为按值传递方式。 使用来强制采用地址传递方式函数方式调用时,用括号括起一个变量,则设定按值传递;在一个实参变量前加符号,可以设定以引用传递方式传递。,73,clear p=2 ? “p=“,P udf( p) ? “p=“, P proc udf parameters q q=q*10 ? “q=“,q

39、endproc,结果:p= 2q= 20p= 20,程序,74,函数的返回值 用RETURN命令将值返回,一次只能返回一个数据。 命令格式: RETURN表达式|TO MASTER |TO 过程名 功能: RETURN 表达式 &返回一个值给调用程序; RETURN TO MASTER &直接返回到主程序。 RETURN TO 过程名 &返回到指定的过程。 省略RETURN,其缺省的返回值为真(.T.),75,子程序调用的流程,主程序,子程序f1,子程序f2,调用f1,调用f2,76,注 substr(cString, p*2+1, 2) 在cString中, 从第p*2+1位置开始,取2个,

40、FUNCTION ntocPARAMETERS pcString=“零一二三四五六七八九“RETURN substr(cString, p*2+1, 2) ENDFUNC,例7-20 输入一个09的数字 返回一个中文的零九,Clear do while .t.Input “please input 09:“ to tif t9return &返回到上级程序中endif? ntoc(t) enddo,77,注:子程序 子程序是结构化程序设计的主要特点 一个应用软件由一个主程序多个子程序组成 主程序可以调用子程序 子程序还可以调用子程序,VFP允许嵌套的DO调用层数为128层,78,7.5 变量的

41、作用域,一个应用程序一般包含多个程序模块,在各程序模块中要使用变量和数组。根据变量和数组在程序模块中作用范围不同,可将变量和数组分为三类:全局、局部和私有。类型 作用域 全局变量和数组 任何程序模块 局部变量和数组 只限于其创建模块中 私有变量和数组 只限于其声明模块及下层模块中,79,变量的声明 全局 PUBLIC 局部 LOCAL 私有 PRIVATE 例如: PUBLIC a,b 注 1、在程序中未用上述命令指定的变量默认为私有变量。 2、在命令窗口中创建的变量或数组被自动赋予全局属性。,80,clear public a,c a=“篮球“ b=“足球“ c=“排球“f( )? a? b

42、,function flocal ba=“网球“b=a+c? bendfun,网球排球 网球 足球,结果,例如,81,7.6 综合应用,例7-21 输入一个数字(06),用中英文显示星期几,Clear Input “输入数字(06):“ to n do casecase n=1m=“星期一(Monday)“case n=2m=“星期二(Tuesday)“case n=3m=“星期三(Wednesday)“case n=4m=“星期四(Thursday)“,case n=5m=“星期五(Friday)“case n=6m=“星期六(Saturday)“case n=0m=“星期日(Sunday)

43、“OTHERWISEm=“重新输入!“ endcase ? “数字“+ltrim(str(n)+ “是:“+m,82,例7-23 30个人在饭店用餐,其中有男人、女人和小孩。每个男人花了3个先令,每个女人花了2个先令,每个小孩花了1个先令,一共花去50个先令,问男人、女人和小孩各有多少人?,clearfor x=1 to 16for y=1 to 24z=30-x-yif 3*x+2*y+z=50? x,y,zendifendforendfor,假设 男人有x个 女人有y个 小孩有z个 则 x+y+z=30 3x+2y+z=50,83,例7-24 一个班有50个同学,要随机地抽出10个同学组成

44、“计算机兴趣小组”,编制程序如下:,Clear Dime student10 For i=1 to 10x=int(rand()*50)+1k=0for j=1 to i-1if x=studentji=i-1k=1exitendif endfor,If k=1loop endif studenti=x endfor ?“计算机兴趣小组:“ For i=1 to 10? studenti Endfor return,产生随机数,去掉相同数,84,例7-25,打印杨辉三角形的前8行,cleardime a(8,8)for i=1 to 8a(i,i)=1a(i,1)=1endforfor i=3

45、 to 8for j=2 to i-1a(i,j)= a(i-1,j)+ a(i-1,j-1)endforendfor,1 1 1 1 2 1 1 3 3 1 1 4 6 4 1 1 5 10 10 5 1 1 6 15 20 15 6 1 1 7 21 35 35 21 7 1,for i=1 to 8for j=1 to i? Substr(str(a(i,j),6)endfor?endfor,85,*例7-27,求方阵的两个对角线元素和,clearpublic a3,3?“矩阵:“?for i=1 to 3for j=1 to 3ai,j=int(rand()*50)? str(ai,j,5)endfor?endfor,s1=0for i=1 to 3s1=s1+ ai,iendfors2=0for i=1 to 3s2=s2+ ai,4-iendfor ?“主对角元素之和=“,str(s1,5) ?“次对角元素之和=“,str(s2,5),86,例:设计一个8进制变10进制转换器,input to n C=alltrim(str(n) x=0 for i=1 to len(c)x = x*8 + val(substr(c,i,1) endfor ? x,

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

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报