八年級(jí)信息技術(shù)教案第八章 程式序設(shè)計(jì)個(gè)性化----函數(shù)和子程序
h=n
end sub
求最小公倍數(shù)子程序:
sub lcm(m,n,h)
h=m*n/h
end sub
主程序:
declare sub hcf(m!,n!,h!)
declare sub lcm(m!,n!,h!)
input "m,n=";m,n
call hcf(m,n,h)
print "最大公約數(shù)為:";h
call lcm(m,n,h)
print "最小公倍數(shù)為:";h
end
說(shuō)明:程序在執(zhí)行時(shí),結(jié)果不正確;其原因是call hcf語(yǔ)句調(diào)用時(shí)修改了m和n的值,以至使call lcm運(yùn)行不
正確。因此,call hcf語(yǔ)句應(yīng)為:
call hcf((m),(n),h)
例:驗(yàn)證哥德巴赫猜想:一個(gè)不小于6的偶數(shù)可以表示為兩個(gè)素?cái)?shù)之和。(p209)
算法: n=10
n1 n2
2(t) 8(f)
3(t) 7(t)
n=16
n1 n2
2(t) 14(f)
3(t) 13(t)
四、模塊化的函數(shù)
1、建立一個(gè)函數(shù)
function <函數(shù)名>(<形參表>)
......
let <函數(shù)名>=<表達(dá)式>
end fuwstion
2、函數(shù)的調(diào)用
與標(biāo)準(zhǔn)函數(shù)相同,只是在主程序開(kāi)頭加上 declare function <函數(shù)名>(<參數(shù)表>),無(wú)參數(shù)函數(shù)也要寫(xiě)上兩個(gè)括號(hào)( );
例:求4到7的階乘之和
function fact(n)
f=1
for i=1 to n
f=f*i
next i
fact=f
end function
__________
declare function fact(n)
s=0
for i=4 to 7
s=s+fact(i)
next i
print "s=";s
end
注意函數(shù)的參數(shù)傳遞
3、static選項(xiàng)(靜態(tài))
外部函數(shù)中使用的變量,在函數(shù)調(diào)用結(jié)束后將全部被釋放,其值不再保留。如要保留函數(shù)中的變量,可在建立函數(shù)時(shí)加寫(xiě)“static”即 funtion 函數(shù)名(<參數(shù)>) static
五、全局變量與局部變量
1、局部變量
每一個(gè)模塊(子程序、主程序、函數(shù))中的變量都只在本模塊中有效,即是它們的作用域只限于模塊,這種變量稱(chēng)為局部變量。
2、全局變量
在程序所有模塊中都有效的變量,即作用域?yàn)檎麄(gè)程序變量稱(chēng)為全局變量。其定義格式為:
common shared <變量表>
六、過(guò)程的嵌套調(diào)用
在一個(gè)過(guò)程里又調(diào)用另一個(gè)過(guò)程。
七、過(guò)程的遞歸調(diào)用
在一個(gè)過(guò)程里又調(diào)用該過(guò)程本身;
例如直接調(diào)用:
function f(x)
c=f(x)
f=2*c
end function
又如交叉調(diào)用:
function f1(x)
……
c=f2(y)
……
f1=2*c
……
end function function f2(t)
……
d=f1(a)
……
f2=4/d
……
end function
執(zhí)行的結(jié)果造成無(wú)終止的自身調(diào)用,顯然,程序中不應(yīng)出現(xiàn)這種無(wú)終止的調(diào)用,而只應(yīng)是有限次數(shù)的、有終止的遞歸調(diào)用。
fonction age(n)
if n=1 then age=10 else age=age(n-1)+2
end fonction
主程序: declare function age(n)
print age(5)
end
fonction fact(n)
if n<=1 then fact=1 else fact=n*fact(n-1)
end fonction
教學(xué)后記: