




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、 顺序构造设计顺序构造设计 分支构造设计分支构造设计 循环构造设计循环构造设计 程序设计根底程序设计根底 模块化设计模块化设计程序设计根底程序设计根底数据构造数据构造算法算法对数据的描画:在程序中指定对数据的描画:在程序中指定数据的类型和数据的组织方式数据的类型和数据的组织方式对操作的描画对操作的描画类比了解:菜谱原料操作步骤一系列计算机一系列计算机指令的集合指令的集合 程序设计根底程序设计根底特点:按照程序书写顺序执行程序特点:按照程序书写顺序执行程序 use sb &翻开表翻开表 list fields 称号,价钱称号,价钱 for 主要设备主要设备 &显示相关记录显示相关记录 repla
2、ce all 价钱价钱 with 价钱价钱*0.9 for 主要设主要设备备 &数据交换数据交换 例:翻开设备表,显示一切主要设备的称号及价钱,并将主要设备的价钱降低10%。特点:根据条件特点:根据条件的的 满足与满足与否而否而 分别执分别执行与行与 其相对其相对应的应的 操作操作开场翻开表输入员工号找到吗封锁表终了YN输出查无此人输出姓名等思索:分支构造与思索:分支构造与顺序构造的不同之顺序构造的不同之处处 特点:反复执行某些操作,反复执行的部分称为特点:反复执行某些操作,反复执行的部分称为循环体。循环体。 条件循环体YNa当型循环Y循环体条件Nb)直到型循环思索:思索: 两种循环构造的区别
3、在于?提示:循环两种循环构造的区别在于?提示:循环条件条件答案:答案: 1. 当型是当循环条件成立时执行循环体,条件当型是当循环条件成立时执行循环体,条件不成立时退出循环不成立时退出循环 ;直到型是执行循环体,直到条件;直到型是执行循环体,直到条件成立才退出循环。成立才退出循环。 2. 当型是先判别后执行,能够一当型是先判别后执行,能够一次都不能执行;直到型是先执行后判别,至少执行一次。次都不能执行;直到型是先执行后判别,至少执行一次。 程序设计根底程序设计根底自顶向下逐渐细化构造化编码模块化设计算法设计程序设计根底程序设计根底off屏幕格式屏幕格式 系统将整个屏幕划分为:系统将整个屏幕划分为
4、: 25行行 80列列 XY平面坐标系。平面坐标系。命令格式命令格式 SAY GET DEFAULT READ 根据员工的编号来修正员工的根本工资和水电费。 CLEAR USE 工资表 yg=0001 2,10 SAY 请输入员工的编号 GET yg READ LOCATE FOR 员工编号 = yg 4,10 SAY “请修正根本工资 GET 根本工资 6,10 SAY “请修正水电费 GET 水电费 READ USE 的指定位置出现一个Wait提示窗口。3)Timeout:用来设定等待时间。建立或修正程序文件 (1) 命令方式 格 式:MODIFY COMMAND ? 功 能:建立或修正一
5、个程序文件。 说 明:命令中的文件名是指定要生成的程序文件的称号,缺省的扩展名为.PRG;文件名前也可以指明途径。 顺序构造程序设计是三种根本构造中最简单也是最常用的一种构造。顺序构造的程序在运转时按照语句陈列的先后顺序,自顶向下依次执行。 从键盘输入一个小写字母,要求改用大写字母输出。从键盘输入一个小写字母,要求改用大写字母输出。 SET TALK OFF CLEARACCEPT 请输入一个小写字母 TO aa= UPPER(a)? “转换结果为: , aSET TALK ONRETURN 开 始输入字母大小写转换输出结果结 束例6.2流程图 假设输入的字母为非小写字母,例如,误操作输入了大
6、写字母或是数字字符,那么在此程序运转中依然将继续执行并显示结果,这显然与题意不符,要处理这个问题,需求用到选择构造程序。 程序应具有判别功能,而判别是经过程序中的分支构造选择构造来实现的。 分支构造是程序中一种常用构造,按照分支构造是程序中一种常用构造,按照分支构造执行途径的多少,可分为单分支、分支构造执行途径的多少,可分为单分支、双分支和多分支构造。实现分支构造的语句双分支和多分支构造。实现分支构造的语句有有 IF语句和语句和DO CASE语句。语句。 无论哪种类型的分支构造,都是根据无论哪种类型的分支构造,都是根据所给条件为真或为假,来选择执行某一分所给条件为真或为假,来选择执行某一分支的
7、相应操作。支的相应操作。执行流程:执行流程: 首先计算条件表达式的值,首先计算条件表达式的值, 假设其值为真,那么执行假设其值为真,那么执行IFIF与与ENDIFENDIF之间的之间的命令命令 序列序列, ,然后执行然后执行ENDIFENDIF后面的命令;后面的命令; 假设其值为假,那么直接执行假设其值为假,那么直接执行ENDIFENDIF后面的后面的命令。命令。条件ENDIF后语句后语句N命令序列Y思索:分支构造与顺序构造的不同之处思索:分支构造与顺序构造的不同之处 例例1 1:求长方形面积。判别:当输入的边长值为正:求长方形面积。判别:当输入的边长值为正数时,求面积。数时,求面积。clea
8、rset talk offinput “请输入长方形的长:请输入长方形的长: to linput “请输入长方形的宽:请输入长方形的宽: to wif l0 and w0 s = l * w ? 长方形的面积为:长方形的面积为: , sendifreturn在设计程序时,对于有数据在设计程序时,对于有数据输入的程序,一定要对输入输入的程序,一定要对输入数据的有效性做相应的检查,数据的有效性做相应的检查,防止由于数据的错误输入而防止由于数据的错误输入而导致程序的出错。这是一个导致程序的出错。这是一个程序员必需养成的良好习惯。程序员必需养成的良好习惯。输入长宽:输入长宽:L和和W开场开场L,W “
9、zIF (a “z) OR (a “a) OR (a “a) ) ? “ ? “输入字母错误输入字母错误! ! SET TALK ON SET TALK ON RETURN RETURNENDIFENDIFa= UPPER(a)a= UPPER(a)? ? 转换结果为转换结果为: , a: , aSET TALK ONSET TALK ONRETURN RETURN 2 2、双分支构造、双分支构造 格式:格式:IF IF 1 ELSE ELSE 2 ENDIF ENDIF执行流程:执行流程: 首先计算条件表达式的值,首先计算条件表达式的值, 假设其值为真,那么执行命令序列假设其值为真,那么执行
10、命令序列1 1,然后然后 再执行再执行ENDIFENDIF后面的命令;后面的命令; 假设其为假,执行命令序列假设其为假,执行命令序列2 2,然后再,然后再执执 行行ENDIFENDIF后面的命令。后面的命令。条件条件语句序列语句序列1 1语句序列语句序列2 2YN从键盘输入一个数,判别其为奇数还是偶数。从键盘输入一个数,判别其为奇数还是偶数。 分析:分析:1 1首先是输入一首先是输入一个数,然后判别输入的数奇个数,然后判别输入的数奇偶性。偶性。2 2应输入数值型数据,应输入数值型数据,可以用可以用INPUTINPUT或是或是GETGET语句来语句来输入。输入。 3 3如何判别奇偶性呢?如何判别
11、奇偶性呢?可运用可运用MODMOD函数或求余运算函数或求余运算符符“%“%。对于一个偶数。对于一个偶数x x,MODMODx x,2 2应该为应该为0 0,否那,否那么为么为1 1。 输出偶数开场开场输入数输入数余余数数为为0?0?输出奇数输出奇数终了终了YNSET TALK OFFSET TALK OFFINPUT “INPUT “请输入一个数字请输入一个数字 TO a TO aIF MOD (a,2)=0 & a%2=0IF MOD (a,2)=0 & a%2=0 ? a, “ ? a, “是一个偶数是一个偶数ELSEELSE ? a, “ ? a, “是一个奇数是一个奇数ENDIFEND
12、IFSET TALK ONSET TALK ONRETURN RETURN 分析分析: :1.1.翻开工资表翻开工资表; ;2.2.输入员工号输入员工号; ;3.3.用用LOCATELOCATE命令查找该命令查找该员工;员工;4.4.用用FOUND()FOUND()函数来判函数来判别能否存在该记录。别能否存在该记录。5.5.假设假设FOUND()FOUND()函数为函数为真,表示存在此员工记真,表示存在此员工记录,否那么,不存在此录,否那么,不存在此员工记录,给出员工记录,给出“查无查无此人的提示信息。此人的提示信息。5.5.封锁表。封锁表。开场开场翻开表翻开表输入员工号输入员工号找到找到吗吗
13、封锁表封锁表终了终了YN输出查无此人输出查无此人输出员工信息输出员工信息查找该员工查找该员工SET TALK OFFSET TALK OFFUSE USE 工资表工资表ACCEPT “ACCEPT “请输入员工编号请输入员工编号 TO a TO aLOCATE FOR LOCATE FOR 员工编号员工编号=a=aIF FOUNDIF FOUND & & 条件条件FOUNDFOUND为真表示存在此员工为真表示存在此员工 DISP DISP 员工号员工号, ,根本工资根本工资, ,水电费水电费ELSE & ELSE & 条件条件FOUNDFOUND为假表示不存在此员工为假表示不存在此员工 ?“查
14、无此人!查无此人!ENDIFENDIFUSE USE SET TALK ONSET TALK ONRETURNRETURN程序采用程序采用“缩进制缩进制格式书写,格式书写,最外层顶格写,属于其内层语最外层顶格写,属于其内层语句那么往后退一定间隔,这样句那么往后退一定间隔,这样便于阅读和调试。便于阅读和调试。留意:留意:1 1、IFIF与与ENDIFENDIF必需成对出现,且各占一行。必需成对出现,且各占一行。2 2、 可以为关系表达式、逻辑表达可以为关系表达式、逻辑表达式或其他逻辑量。式或其他逻辑量。clearclearset talk offset talk offinput “input
15、“请输入请输入a a的值:的值: to a to a input “input “请输入请输入b b的值:的值: to b to b input “input “请输入请输入c c的值:的值: to c to c if ab &aif ab &a和和b b比较大小,假设比较大小,假设a a大,那么大,那么a a、b b 交换交换 s=a s=a a=b a=b b=s b=sendifendifif ac &aif ac &a和和c c比较大小,假设比较大小,假设a a大,那么大,那么a a、c c 交换交换 s=a s=a a=c a=c c=s c=sendifendifIf bc &bI
16、f bc &b和和c c比较大小,假设比较大小,假设b b大,那么大,那么b b、c c 交换交换 s=b s=b b=c b=c c=s c=sendifendif? a ,b , c? a ,b , creturnreturn3.IF3.IF语句的嵌套语句的嵌套 实践生活中,很多问题不仅仅只需两种能够,而是要实践生活中,很多问题不仅仅只需两种能够,而是要求对多种情况进展不同的处置,那么需求用到求对多种情况进展不同的处置,那么需求用到IFIF语句嵌套。语句嵌套。 嵌套是指在某种构造中含有其它构造。嵌套是指在某种构造中含有其它构造。普通格式:普通格式: IF IF 1 IF IF 2 ENDI
17、F ENDIF ELSE ELSE IF IF 3 ENDIF ENDIF ENDIF ENDIF 留意:留意:1 1、IFIF一定要与一定要与ENDIFENDIF配对。配对。2 2、在、在IFIF构造之间可以嵌套,构造之间可以嵌套,但不能交叉。但不能交叉。INPUT “INPUT “请输入学生成果请输入学生成果 TO p TO pIF p60 IF p60 ? “ ? “不及格不及格 ELSEELSE IF p70 IF p70 ? “ ? “及格及格 ELSE ELSE IF p80 IF p80 ? “ ? “良良 ELSE ELSE IF p90 IF p100) OR ( P0) ?
18、 输入的成果有误,请重新输入输入的成果有误,请重新输入ELSE DO CASE CASE P60 ? 不及格不及格 CASE P70 ? 及格及格 CASE P80 ? 良良 CASE P90 ? 好好 OTHERWISE ? 优优 ENDCASEENDIFRETURN编一缴税程序,以编一缴税程序,以800800元为基数,超出部分元为基数,超出部分的缴税比例如下:的缴税比例如下: 800-1500800-1500含含800800 5%5% 1500-2500 1500-2500含含15001500 10%10% 2500-5000 2500-5000含含25002500 20%20% 5000
19、 5000以上以上 含含50005000 25% 25% 小结小结 分支构造使得程序功能得到完善,分支构造使得程序功能得到完善,分支构造的目的在于对不同情况做出分支构造的目的在于对不同情况做出不同处置,这种构造的出现使得计算不同处置,这种构造的出现使得计算机在一定程度上具有了判别的功能,机在一定程度上具有了判别的功能,是计算机走向智能化的重要构造。是计算机走向智能化的重要构造。命令序列命令序列EXITLOOPEnddo后面语句后面语句条件条件FTEnddo 求1+2+3+100之和。分析: 0 + 1 = 1 1 + 2 = 3 3 + 3 = 6 6 + 4 = 10 4950+100=50
20、50S I S S=0I =1S=S+II =I+1S=S+II =I+1S=S+II =I+1结 束输出s开 始i=100?s,i赋初值0s=s+ii=i+1YN例6.12流程图SET TALK OFFCLEARI=1S=0I=100I5为止,求此时n的值。 CLEARSET TALK OFFSTORE 0 TO S,IDO WHILE .T.DO WHILE .T. N=N+1 N=N+1 S=S+1/N S=S+1/N IF S5 IF S5 EXIT EXIT ENDIF ENDIFENDDOENDDO? “n的值应该为,nSET TALK ONRETURN求100到200之间一切奇数
21、之和。 条件循环可以实现知和未知循环次数的循环。对于循环次数知的循环还可采用步长循环。 格式:格式: FOR FOR = TO TO STEP STEP ENDFOR ENDFOR NEXT NEXT 数值表达式,默许值为1。阐明:阐明: 1 1循环变量按步长值添加或减小。循环变量按步长值添加或减小。 2 2当循环变量的值不在初值与终值范围内时,终当循环变量的值不在初值与终值范围内时,终了循环。了循环。 假设n的初值为0 求1+2+3+100之和。 SET TALK OFF CLEAR S=0 FOR i=1 TO 100 STEP 1 S=S+i ENDFOR ? 1-100之和为,S SE
22、T TALK ON RETURN S1S=S*i积 求一切的3位数中能同时被5和12整除的数有多少个?其和是多少?并按照每行输出5个,输出这些数。 在员工表中添加10条新记录。格格 式:式: SCAN SCAN FORFORWHILEWHILE2 ENDSCAN ENDSCAN 说说 明:明: 1 1针对当前任务区中被翻开的表的记录进展扫描。针对当前任务区中被翻开的表的记录进展扫描。 2 2 子句确定扫描记录的范围,缺省那么为子句确定扫描记录的范围,缺省那么为ALLALL。 3 3对对 子句内满足子句内满足FORFOR 或或WHILEWHILE 的记录执行循环体中的规定操作。的记录执行循环体中
23、的规定操作。 4 4记录指针可自动往下移。记录指针可自动往下移。 统计员工表中男女人数,以及教授和副教授的人数。 ?“总共有,n1,“个男员工?“总共有,n2,“个女员工?“总共有,j1,“个教授 ?“总共有,j2,“个副教授 USE 5、设S=1+1/2+1/3+1/N,求使S不超越10的最大的N值。6、求1-1000之间能被3整除的偶数的个数及其和。7、打印如以下图形: * * * *附加题: 1、恣意输入10个数,能求出它们中的最大值和最小值。 2、打印九九乘法表。 d) DOd) DO命令所带的参数叫实践参数,命令所带的参数叫实践参数,PARAMETERSPARAMETERS所对所对应
24、的叫方式参数。应的叫方式参数。求一个半径等于边长的圆与正方形面积之差。主程序:主程序:STORE 0 TO S1,S2STORE 0 TO S1,S2INPUT “INPUT “输入半径或边长的值:输入半径或边长的值: TO A TO ADO YUAN.PRG WITH A,S1DO YUAN.PRG WITH A,S1DO ZHEN.PRG WITH A,S2DO ZHEN.PRG WITH A,S2?S1-S2?S1-S2YUAN.PRGYUAN.PRGPARAMETERS R,SPARAMETERS R,SS=3.14S=3.14* *R2R2RETURNRETURNZHEN.PRGZH
25、EN.PRGPARAMETERS L,SPARAMETERS L,SS=L2S=L2RETURNRETURNSTORE 0 TO S1,S2INPUT “输入半径或边长的;值: TO ADO YUAN.PRG WITH A,S1DO ZHEN.PRG WITH A,S2?S1-S2YUAN.PRGYUAN.PRGPARAMETERS R, PARAMETERS R, S SS=3.14S=3.14* *R2R2RETURNRETURNZHEN.PRGZHEN.PRGPARAMETERS L, SPARAMETERS L, SS=L2S=L2RETURNRETURNA ,S2A ,S1主程序:主
26、程序: 注注 意意 1、只需当、只需当DO命令中参数为内存变量时,命令中参数为内存变量时,子程序的参数才干前往给主程序,假设参子程序的参数才干前往给主程序,假设参数为常量或表达式时,子程序的参数值不数为常量或表达式时,子程序的参数值不可以前往给主程序。可以前往给主程序。 2、假设子程序不需求参数时,、假设子程序不需求参数时,DO命令也命令也可以不带参数。可以不带参数。主程序 DO A A.PRG DO B RETUTNB.PRG DO C RETURNTO MASTERC.PRG RETURNTO A主程序主程序CLEARDO A ?“一切程序一切程序执行终了执行终了A.PRG?开场执行开场执
27、行ADO B ?A执行终了执行终了RETURNB.PRG ?开场执行开场执行B DO C?B执行终了执行终了RETURN TO MASTERC.PRG ?开场执行开场执行CRETURN TO A 假设将多模块程序中的每个模块主程序,子程序或自定义函数分别保管为一个独立的.PRG文件,那么每执行一个模块就要翻开一个文件,势必会添加运转时间。为此VFP允许在一个.PRG文件中设置多个程序模块,并将主程序以外的每个模块定义为一个过程,即“过程文件,仍以.PRG为扩展名。说说 明:明: a) a) 每个过程均以每个过程均以PROCEDUREPROCEDURE开场,以开场,以RETURNRETURN终终
28、了。每个过程实践上是一个独立的子程序或一个了。每个过程实践上是一个独立的子程序或一个用户定义函数。用户定义函数。 b) PROCEDURE b) PROCEDURE 用于过程的第一条语句,用于过程的第一条语句,它标识了每个过程的开场,同时定义了过程名。它标识了每个过程的开场,同时定义了过程名。 c) c) 过程假设以过程假设以RETURN RETURN 作为终了语句,作为终了语句,那么该过程既可用那么该过程既可用DO DO 的方的方式执行,又可当做一个合法的自定义函数,可供式执行,又可当做一个合法的自定义函数,可供随时调用。随时调用。将子程序中的例题改为过程。STORE 0 TO S1 ,S2
29、INPUT “输入半径或边长的值: TO ADO YUAN WITH A , S1DO ZHEN WITH A , S2?S1-S2PROCEDURE YUANPARAMETERS R , S S=3.14*R2RETURNPROCEDURE ZHENPARAMETERS L , S S=L2RETURN12写出以下程序的运转结果。SET TALK OFFA=10B=8DO SUBB WITH A , BSET TALK ON RETURNPROCEDURE SUBB PARAMETERS X , Y ?X,Y STORE 25 TO X X=302*SQRT(X) Y=Y+X ?X,YRET
30、URN结果为: 820 28格格 式:式:SET PROCEDURE TO SET PROCEDURE TO 功功 能:翻开过程文件。能:翻开过程文件。 用过程文件实现求一个半径等于边长的圆与正方形面积之差的问题。 * *Main.prgMain.prgCLEARCLEARSET TALK OFFSET TALK OFFSET PROCEDURE TO sub &SET PROCEDURE TO sub &翻开过程文件翻开过程文件sub.prgsub.prgSTORE 0 TO s1,s2STORE 0 TO s1,s2INPUT “INPUT “输入半径或边长的值输入半径或边长的值: TO
31、a: TO aDO yuan WITH a,s1 &DO yuan WITH a,s1 &调用过程文件中的过程调用过程文件中的过程yuanyuanDO zhen WITH a,s2 &DO zhen WITH a,s2 &调用过程文件中的过程调用过程文件中的过程zhenzhen?s1-s2?s1-s2SET TALK ONSET TALK ONRETURN RETURN * *过程文件过程文件sub.prgsub.prgPROCEDURE yuan &PROCEDURE yuan &过程过程yuanyuan PARAMETERS r,s PARAMETERS r,s s=3.14 s=3.14
32、* *r2r2RETURNRETURNPROCEDURE zhen &PROCEDURE zhen &过程过程zhenzhen PARAMETERS i,s PARAMETERS i,s s=i2 s=i2RETURN RETURN 假设运用FUNCTION语句来指出函数名,表示该函数包含在调用程序中;假设缺省,那么表示此函数是一个独立文件,函数名在定义文件名时确定。RETURN用于前往函数值,只能前往一个值。假设缺省该语句那么前往值为.T.。 自定义函数与系统函数调用方法一样: 函数名() 将子程序中的例题改为自定义函数。CLEARS=0INPUT “输入半径或边长的值: TO A?YUAN
33、(A)-ZHEN(A)FUNCTION YUAN PARAMETERS R S=3.14*R2RETURN SFUNCTION ZHEN PARAMETERS L S=L2RETURN S 定义一个判别n能否是素数的函数,然后调用该函数求21000内的全部素数。分析:分析: a) a) 素数也叫质数,它是大于素数也叫质数,它是大于1 1且除了且除了1 1和它本和它本身之外,不能被其他任何整数所整除的整数。身之外,不能被其他任何整数所整除的整数。 b) b) 为了判别某数为了判别某数n n能否是素数,一个最简单的能否是素数,一个最简单的方法是用方法是用2345n-12345n-1这些数逐个去除这
34、些数逐个去除n n,看能否除,看能否除尽,假设全都除不尽,那么尽,假设全都除不尽,那么n n是素数,否那么,是素数,否那么,只需其中一个数除尽了,那么只需其中一个数除尽了,那么n n不是素数。为了不是素数。为了减少除的次数,提高运转效率,除到减少除的次数,提高运转效率,除到n n开方即可。开方即可。程序:程序: *此子程序判别n能否是素数FUNCTION PRIMEPARAMETERS NFLAG=.T.K=INT(SQRT(N)J=2DO WHILE J=K AND FLAG IF MOD(N,J)=0 FLAG=.F. ENIF J=J+1ENDDORETURN FLAG*main.prg
35、调用该函数求21000内的全部素数。CLEARFOR M=2 TO 1000 IF PRIME(M) ?M ENDIFENDFOR一、全局变量一、全局变量 PUBLIC PUBLIC 功能:声明并建立全局变量。功能:声明并建立全局变量。阐明:阐明: a) a) 一旦定义可供一切的程序,模块运用。一旦定义可供一切的程序,模块运用。 b) b) 在命令窗口定义的变量是全局变量。在命令窗口定义的变量是全局变量。 c) c) 程序执行完后不会自动去除。程序执行完后不会自动去除。假设以内存变量的作用域分类,可分为以下三种: 全局变量、部分变量、隐藏部分变量 *TEMP.PRG PUBLIC I I=2
36、?执行TEMP1前的I:,I DO TEMP1 ?执行TEMP1后的I:,I* *TEMP1.PRGTEMP1.PRG I=I+4 I=I+4 ?TEMP1 ?TEMP1中的中的I:,II:,I 结果:结果: 执行执行TEMP1TEMP1前的前的I I:2 2 TEMP1 TEMP1中的中的I I:6 6 执行执行TEMP1TEMP1后的后的I I:6 6二、部分变量二、部分变量 在程序中定义的变量,假设没带在程序中定义的变量,假设没带PUBLICPUBLIC声明声明, ,它只能在定义它的程序及其下级程序中运用,一旦它只能在定义它的程序及其下级程序中运用,一旦定义它的程序运转终了,它便自动被去
37、除。定义它的程序运转终了,它便自动被去除。例:*MAIN.PRG R=100 DO SUB ?P RETURN* *SUB.PRG SUB.PRG P=2 P=2* *3.143.14* *R R RETURN RETURN结果:由于结果:由于P P是在子程序中的部分是在子程序中的部分变量,退出子程序后自动被去除,变量,退出子程序后自动被去除,那么在主程序中输出那么在主程序中输出P P的值时出现的值时出现变量变量P P未定义的错误。未定义的错误。三、隐藏内存变量三、隐藏内存变量 PRIVATE PRIVATE 功能:声明并隐藏上级模块中的同名变量。功能:声明并隐藏上级模块中的同名变量。阐明:阐
38、明:a) a) 对对PRIVATEPRIVATE中内存变量的修正并不影响上级程中内存变量的修正并不影响上级程序中与之同名的内存变量的值。此命令只对本级程序及序中与之同名的内存变量的值。此命令只对本级程序及以下各级子程序有效,当前往到上级程序时,被以下各级子程序有效,当前往到上级程序时,被PRIVETEPRIVETE隐藏的当前程序中的内存变量自动删除。隐藏的当前程序中的内存变量自动删除。 b) b) 在它们被隐藏期间,程序就不能再调用这些被隐藏在它们被隐藏期间,程序就不能再调用这些被隐藏的上级内存变量,但实践上它们依然存在,一旦含有的上级内存变量,但实践上它们依然存在,一旦含有PRIVATEPR
39、IVATE内存变量的程序终了后,被内存变量的程序终了后,被PRIVATEPRIVATE隐藏起来的隐藏起来的那些以前建立的同名的上级内存变量自动恢复以前的内那些以前建立的同名的上级内存变量自动恢复以前的内容和形状。容和形状。 R=100 P=10 DO SUB ?P RETURN PROCEDURE SUB PRIVATE P P=2*3.14*R RETUEN结果:在过程结果:在过程SUBSUB中用中用PRIVATEPRIVATE命令隐藏了主命令隐藏了主程序中定义的全局变程序中定义的全局变量量P P,并重新对,并重新对P P赋值,赋值,前往主程序时,前往主程序时,P P恢复恢复以前的值,即输出
40、以前的值,即输出1010。优点:使得在开发大优点:使得在开发大型运用程序时,在不型运用程序时,在不同层次的程序中可以同层次的程序中可以运用同名内存变量而运用同名内存变量而不致发生混乱。不致发生混乱。 调用子程序时,调用程序要把数据传送给子程序,子程序也能够把数据传回到调用程序,因此在调用子程序过程中,必然要思索调用程序和被调用程序之间的数据是如何传送的。 调用子程序时的数据传送可以经过两种方式处理:a)a)利用变量的作用域实现数据传送利用变量的作用域实现数据传送例:*MAIN.PRG gao=8 kuan=6 c=0 DO SUB ?c return* *SUB.PRGSUB.PRG c=ga
41、o c=gao* *kuankuan RETURN RETURN结果为:48b)b)利用参数实现数据传送利用参数实现数据传送 利用这种方式传送数据,子程序具有更大的独立性。编写子程序时,用PARAMETERS命令来阐明将要输入、输出的变量;用DO命令来提供输入值和接受输出结果。 参数传送有两种方式:值传送和地址传送。值传送:子程序中参数变化后的值不回传各上级调用值传送:子程序中参数变化后的值不回传各上级调用程序。常量和表达式只能运用值传送方式。运用值传程序。常量和表达式只能运用值传送方式。运用值传送方式的变量要用括号括起来。送方式的变量要用括号括起来。地址传送:子程序中参数变化后的值要回传各上
42、级调地址传送:子程序中参数变化后的值要回传各上级调用程序。内存变量既可运用值传送方式,又可用地址用程序。内存变量既可运用值传送方式,又可用地址传送。运用地址传送方式的变量不加括号。传送。运用地址传送方式的变量不加括号。写出以下程序的输出。SET TALK OFFX=1Y=3DO SUB WITH X , (Y) , 5?X , YRERURNPROCEDURE SUBPARAMETERS A , B , C A=ABC B=ABCRERURN分析:程序将分析:程序将3 3个参数传送给过程个参数传送给过程SUBSUB,第一个参数,第一个参数X X采用地址传送方式,变量采用地址传送方式,变量A A
43、的变化将引起的变化将引起X X的变化;的变化;第二个参数第二个参数Y Y采用值传送方式,采用值传送方式,B B的变化不引起的变化不引起Y Y的的变化;第三个参数是常数,最后输出为变化;第三个参数是常数,最后输出为9 39 3。写出以下程序的输出。CLEARA=3B=5?A,BDO PP WITH 3*A , 1*B?A,BRETURNPROCEDURE PPPARAMETERS X , YX=X2Y=Y+1?X , YRETURN 分析:程序将两个表达式传送给过程分析:程序将两个表达式传送给过程PPPP,它们都采,它们都采用值传送方式,用值传送方式,X,YX,Y的变化不引起的变化不引起A,BA
44、,B的变化,那么的变化,那么输出结果为输出结果为 3 5 6 3 5思索:将其改为思索:将其改为B B,结果能否一样?结果能否一样?NfQiTlXo#s%v(y0B3E6I9LdOgRjVmYp!t&w-z1C4G7JaMePhTkWnZr$u*x+A2E5H8KcNfQiUlXp#s%v)y0B3F6IaLdOgSjVmYq!t&w-z1D4G7JbMePhTkWoZr$u(x+A2E5H9KcNfRiUlXp#s&v)y0C3F6IaLdPgSjVnYq!t*w-A1D4G8JbMeQhTlWoZr%u(x+B2E6H9KcOfRiUmXp#s&v)z0C3F7IaLdPgSkVnYq$t
45、*w-A1D5G8JbNeQhTlWo#r%u(y+B2E6H9LcOfRjUmXp!s&w)z0C4F7IaMdPhSkVnZq$t*x-A1D5G8KbNeQiTlWo#r%v(y+B3E6H9LcOgRjUmYp!s&w)z1C4F7JaMdPhSkWnZq$u*x-A2D5H8KbNfQiTlXo#s%v(y0B3E6I9LcOgRjVmYp!t&w)z1C4G7JaMePhSkWnZr$u*x+A2D5H8KcNfQiUlXo#s%v)y0B3F6I9LdOgSjVmYq!t&w-z1D4G7JbMePhTkWoZr$u(x+A2E5H8KcNfRiUlXp#s%v)y0C3F6Ia
46、LdOgSjVnYq!t*w-z1D4G8JbMeQhTkWoZr%u(x+B2E5H9KcOfRiUmXp#s&v)z0C3F7IaLdPgSjVnYq$t*w-A1D4G8JbNeQhTlWoZr%u(y+B2E6H9KcOfRjUmXp!s&v)z0C4F7IaMdPgSkVnZq$t*x-A1D5G8KbNeQiTlWo#r%u(y+B3E6H9LcOfRjUmYp!s&w)z0C4F7JaMdPhSkVnZq$u*x-A2D5G8KbNfQiTlXo#r%v(y0B3E6I9LcOgRjVmYp!t&w)z1C4G7JaMePhSkWnZq$u*x+A2D5H8KbNfQiUlXo#
47、s%v(y0B3F6I9LdOgRjVmYq!t&w-z1C4G7JbMePhTkWnZr$u(x+A2E5H8KcNfRiUlXp#s%v)y0B3F6IaLdOgSjVmYq!t*w-z1D4G7JbMeQhTkWoZr$u(x+B2E5H9KcNfRiUmXp#s&v)y0C3F7IaLdPgSjVnYq$t*w-A1D4G8JbNeQhTlWoZr%u(x+B2E6H9KcOfRiUmXp!s&v)z0C3F7IaMdPgSkVnYq$t*x-A1D5G8JbNeQiTlWo#r%u(y+B3E6H9LcOfRjUmYp!s&w)z0C4F7IaMdPhSkVnZq$t*x-A2D5G
48、8KbNeQiTlXo#r%v(y+B3E6I9LcOgRjUmYp!t&w)z1C4F7JaMePhSkWnZq$u*x+A2D5H8KbNfQiTlXo#s%v(y0B3E6I9LdOgRjVmYp!t&w-z1C4bNeQiTlXo#r%v(y+B3E6I9LcOgRjUmYp!t&w)z1C4F7JaMePhSkWnZq$u*x-A2D5H8KbNfQiTlXo#s%v(y0B3E6I9LdOgRjVmYp!t&w-z1C4G7JaMePhTkWnZr$u*x+A2E5H8KcNfQiUlXp#s%v)y0B3F6I9LdOgSjVmYq!t&w-z1D4G7JbMePhTkWoZr$
49、u(x+A2E5H9KcNfRiUlXp#s&v)y0C3F6IaLdPgSjVnYq!t*w-A1D4G8JbMeQhTlWoZr%u(x+B2E5H9KcOfRiUmXp#s&v)z0C3F7IaLdPgSkVnYq$t*w-A1D5G8JbNeQhTlWo#r%u(y+B2E6H9LcOfRjUmXp!s&w)z0C4F7IaMdPgSkVnZq$t*x-A1D5G8KbNeQiTlWo#r%v(y+B3E6H9LcOgRjUmYp!s&w)z1C4F7JaMdPhSkWnZq$u*x-A2D5H8KbNfQiTlXo#r%v(y0B3E6I9LcOgRjVmYp!t&w)z1C4G7J
50、aMePhSkWnZr$u*x+A2D5H8KcNfQiUlXo#s%v)y0B3F6I9LdOgSjVmYq!t&w-z1D4G7JbMePhTkWnZr$u(x+A2E5H8KcNfRiUlXp#s%v)y0C3F6IaLdOgSjVnYq!t*w-z1D4G8JbMeQhTkWoZr%u(x+B2E5H9KcOfRiUmXp#s&v)y0C3F7IaLdPgSjVnYq$t*w-A1D4G8JbNeQhTlWoZr%u(y+B2E6H9KcOfRjUmXp!s&v)z0C4F7IaMdPgSkVnZq$t*x-A1D5G8KbNeQiTlWo#r%u(y+B3E6H9LcOfRjUmYp
51、!s&w)z0C4F7JaMdPhSkVnZq$u*x-A2D5G8KbNfQiTlXo#r%v(y0B3E6I9LcOgRjVmYp!t&w)z1C4F7JaMePhSkWnZq$u*x+A2D5H8KbNfQiUlXo#s%v(y0B3F6I9LdOgRjVmYq!t&w-z1C4G7JbMePhTkWnZr$u(x3E6I9LcOgRjUmYp!t&w)z1C4F7JaMePhSkWnZq$u*x+A2D5H8KbNfQiUlXo#s%v(y0B3F6I9LdOgRjVmYq!t&w-z1C4G7JbMePhTkWnZr$u*x+A2E5H8KcNfQiUlXp#s%v)y0B3F6Ia
52、LdOgSjVmYq!t*w-z1D4G7JbMeQhTkWoZr$u(x+B2E5H9KcNfRiUmXp#s&v)y0C3F6IaLdPgSjVnYq!t*w-A1D4G8JbMeQhTlWoZr%u(x+B2E6H9KcOfRiUmXp!s&v)z0C3F7IaMdPgSkVnYq$t*x-A1D5G8JbNeQiTlWo#r%u(y+B2E6H9LcOfRjUmXp!s&w)z0C4F7IaMdPhSkVnZq$t*x-A2D5G8KbNeQiTlXo#r%v(y+B3E6I9LcOgRjUmYp!t&w)z1C4F7JaMdPhSkWnZq$u*x-A2D5H8KbNfQiTlXo#
53、s%v(y0B3E6I9LdOgRjVmYp!t&w-z1C4G7JaMePhTkWnZr$u*x+A2E5H8KcNfQiUlXo#s%v)y0B3F6I9LdOgSjVmYq!t&w-z1D4G7JbMePhTkWoZr$u(x+A2E5H9KcNfRiUlXp#s&v)y0C3F6IaLdPgSjVnYq!t*w-A1D4G8JbMeQhTkWoZr%u(x+B2E5H9KcOfRiUmXp#s&v)z0C3F7IaLdPgSkVnYq$t*w-A1D5G8JbNeQhTlWo#r%u(y+B2E6H9LcOfRjUmXp!s&v)z0C4F7IaMdPgSkVnZq$t*x-A1D5G8KbNeQiTlWo#r%v(y+B3ELdPgSkVnYq$t*w-A1D5G8JbNeQhTlWo#r%u(y+B2E6H9KcOfRjUmXp!s&v)z0C4F7IaMdPgSkVnZq$t*x-A1D5G8KbNeQiTlWo#r%v(y+B3E6H9LcOgRjUmYp!s&w)z1C4F7JaMdPhSkVnZq$u*x-A2D5G8KbNfQiTlXo#r%v(y0B3E6I9LcOgRjVmYp!t&w)z1C4G7JaMePhSkWnZr$u*x+A2D5H8KcNfQiUlXo#s%v(y0B3F6I9LdOg
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 历史建筑修复完工合同模板
- 考勤与请休假管理答案
- 职场礼仪坐姿培训
- 产业园装修合同标准文本
- 商业步行街租赁
- 水利工程管理渠道维护
- 班组长培训他人的方法
- 采购合同谈判与签订要点分析
- 2024洛阳市科技中等专业学校工作人员招聘考试及答案
- 2024湖北传媒摄影技师学院工作人员招聘考试及答案
- Unit 2 Go for it!Understanding ideas教学设计 -2024-2025学年外研版(2024)七年级英语下册
- 浙江省金丽衢十二校2025届高三下学期二模试题 地理 含解析
- 【+初中语文+】《山地回忆》课件+统编版语文七年级下册
- 2025-2030中国建筑装饰行业十四五发展分析及投资前景与战略规划研究报告
- (一模)2025年广东省高三高考模拟测试 (一) 语文试卷语文试卷(含官方答案)
- 管理学基础-形考任务一-国开-参考资料
- 3.3 服务业区位因素及其变化-以霸王茶姬为例【知识精研】同步教学课件(人教2019必修第二册)
- 三维网喷播植草施工方案
- 家具设计与软装搭配知到智慧树章节测试课后答案2024年秋四川长江职业学院
- 2025人保寿险校园招聘开启啦笔试参考题库附带答案详解
- 2025年硅湖职业技术学院单招职业适应性测试题库含答案
评论
0/150
提交评论