预览加载中,请您耐心等待几秒...
1/10
2/10
3/10
4/10
5/10
6/10
7/10
8/10
9/10
10/10

亲,该文档总共36页,到这已经超出免费预览范围,如果喜欢就直接下载吧~

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

第七章 函数和子程序本章重点 掌握模块化程序设计思想 掌握函数与子程序的定义及使用 理解全局变量与局部变量 了解参数的传送过程通常把要多次进行某操作的部分编写为子程序 整个程序由一个主程序和若干子程序组成 使程序结构清晰,可读性好 程序总是从主程序开始执行 通常把独立模块的子程序和函数称为过程命名规则与变量相同 子程序通过形式参数来接受数据或传递数据 没有参数时括号必须省略 可以用EXITSUB退出子程序 子程序内不能有DATA语句,DATA语句应放在主程序内 子程序内不能再有SUB行DECLARESUBSTARS() CLS CALLSTARS PRINT"*";TAB(15);"*" CALLSTARS PRINT"*";TAB(15);"*" CALLSTARS END 如省略CALL则必须省略括号,且子程序名和实参间应有空格 实参个数=形参个数,并按类型对应 实参可是变量,常量,表达式,函数 如无参数,括号必须省略 子程序之间可以互相调用DECLARESUBST(N!) FORI=1TO6 CALLST(I) NEXTI END SUBST(N) PRINTTAB(10); FORJ=1TON PRINT"*"; NEXT PRINT ENDSUB子程序的建立DECLARE语句实参与形参的类型必须一致 值传递 是单向传递 形参与实参各占一个单元 形参的变化不影响实参值 实参是常量或表达式时,先计算表达式的值,然后把实参传递给形参 DECLARESUBst(n!) CLS CALLst(10) END SUBst(n) FORi=1TOn PRINT"*"; NEXTi ENDSUBDECLARESUBSORT(A!,B!,C!) CLS INPUT"A,B,C=";A,B,C CALLSORT(A,B,C) PRINTA,B,C CALLSORT(A+B,B+C,C+A) PRINTA+B,B+C,C+A END DECLARESUBP(N!,T!) REM4!+5!+6!+7! CLS SUM=0 FORI=4TO7 CALLP(I,T) SUM=SUM+T NEXTI PRINT"SUM=";SUM END 模块化的函数独立模块的函数的定义DECLAREFUNCTIONMAX%(A%,B%,C%) INPUT"N1,N2,N3=";N1%,N2%,N3% PRINTMAX%(N1%,N2%,N3%) END FUNCTIONMAX%(A%,B%,C%) IFA%>B%THENM%=A%ELSEM%=B% IFC%>M%THENM%=C% MAX%=M% ENDFUNCTION实参个数=形参个数,类型必须一一对应 实参可以是变量,常量,表达式 若函数没有形参,则括号必须省略 函数的调用不能作为一条独立语句 模块化函数的数据传递与子程序的数据传递方法相同DECLAREFUNCTIONarea!(r!) SUM=0 FORi=1TO5 SUM=SUM+area(i) NEXTi PRINT"SUM=";SUM END FUNCTIONarea(r)STATIC a=3.14159*r^2 area=a n=n+1 PRINT"n=";n,"area=";a ENDFUNCTIONDECLAREFUNCTIONT!(N!) SUM=0 FORI=4TO7 SUM=SUM+T(I) NEXTI PRINT"SUM=";SUM END FUNCTIONT(N) F=1 FORI=1TON F=F*I NEXTI T=F ENDFUNCTION函数是通过函数名回送一个结果值,仅用于计算单个函数值 子程序的结果由实参带回,可以包括多个结果 函数的调用出现在表达式中,而子程序的调用必须作为一个单独的语句子程序内至少有一个RETURN语句 主程序与子程序的变量在整个程序中都有效INPUT"m,n(m>n)=";m,n k=m:GOSUBa c=t k=n:GOSUBa c=c/t k=m-n:GOSUBa c=c/t PRINT"C=";c ENDCLS REMa:corner DEFfns(r)=r*r*a/2 a=3.14/3 PRINTfns(2),fns(3),fns(4) END求三角形的面积局部变量:只在本模块中有效的变量 全局变量:在所有模块中都有效的变量 不加以全局说明的变量都是局部变量 DIMSHARED 对数组做全局说明 COMMONSHARED 对变量做全局变量说明 全局变量不能重复定义,且只能在主程序中定义,必须在所有可执行语句前定义DECLARESUBAREA() R=10 PRINT"R=";R CALLAREA END SUBAREA S=3.14*R*R PRINT"R=";R,"AREA="