八年級信息技術教案第八章 程式序設計個性化----函數和子程序
h=n
end sub
求最小公倍數子程序:
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 "最大公約數為:";h
call lcm(m,n,h)
print "最小公倍數為:";h
end
說明:程序在執行時,結果不正確;其原因是call hcf語句調用時修改了m和n的值,以至使call lcm運行不
正確。因此,call hcf語句應為:
call hcf((m),(n),h)
例:驗證哥德巴赫猜想:一個不小于6的偶數可以表示為兩個素數之和。(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)
四、模塊化的函數
1、建立一個函數
function <函數名>(<形參表>)
......
let <函數名>=<表達式>
end fuwstion
2、函數的調用
與標準函數相同,只是在主程序開頭加上 declare function <函數名>(<參數表>),無參數函數也要寫上兩個括號( );
例:求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
注意函數的參數傳遞
3、static選項(靜態)
外部函數中使用的變量,在函數調用結束后將全部被釋放,其值不再保留。如要保留函數中的變量,可在建立函數時加寫“static”即 funtion 函數名(<參數>) static
五、全局變量與局部變量
1、局部變量
每一個模塊(子程序、主程序、函數)中的變量都只在本模塊中有效,即是它們的作用域只限于模塊,這種變量稱為局部變量。
2、全局變量
在程序所有模塊中都有效的變量,即作用域為整個程序變量稱為全局變量。其定義格式為:
common shared <變量表>
六、過程的嵌套調用
在一個過程里又調用另一個過程。
七、過程的遞歸調用
在一個過程里又調用該過程本身;
例如直接調用:
function f(x)
c=f(x)
f=2*c
end function
又如交叉調用:
function f1(x)
……
c=f2(y)
……
f1=2*c
……
end function function f2(t)
……
d=f1(a)
……
f2=4/d
……
end function
執行的結果造成無終止的自身調用,顯然,程序中不應出現這種無終止的調用,而只應是有限次數的、有終止的遞歸調用。
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
教學后記: