八年級信息技術(shù)教案第八章 程式序設(shè)計個性化----函數(shù)和子程序
input c
if c=a+b then n=n+1
return
a2: print a;"-";b;"=";
input c
if c=a-b then n=n+1
return
a3: print a;"*";b;"="
input c
if c=a*b then n=n+1
return.
(2)、說明:
<表達式>的值不是整數(shù)時,按四舍五入處理,值為0或大于n則不起作用,值為負時系統(tǒng)給出錯誤信息——“不正確的函數(shù)調(diào)用”。
3、on key(n) gosub-return 語句
(1)、調(diào)用格式
on key(n) gosub <標(biāo)號>
其中n是數(shù)值表達式,代表一個“陷阱鍵”。n的值與 設(shè)定鍵的對應(yīng)關(guān)系如下:
n值 鍵名
1~10 功能鍵f1~f10
11 方向鍵↑
12 方向鍵←
13 方向鍵→
14 方向鍵↓
例: 求和式:s=12+22+...+n2 n=100000
on key(2) gosub pri
key(2) on
s=0
for i=1 to 100000
s=s+i*i
next i
pring “s=”;s
end
pri:print “now swm is”;s,”i=”;i
return
(2).說明
設(shè)置陷阱:on key(n) gosub <標(biāo)號>
打開陷阱:key (n) on
關(guān)閉陷阱:key (n) off
三、獨立模塊的子程序
1、建立子程序
格式:sub <子程序名>[(<參數(shù)表>)]
………
end sub
2、子程序的調(diào)用
(1).格式
declare sub <子程序名>[(<參數(shù)表>)]
………
call <子程序名>[(<參數(shù)表>)]
或 <子程序名> <參數(shù)表>
例:sub stars(n)
for i=1 to n
print “*”;
next i
end sub
_________________________
declare sub stars(n)
call stars(30)
call stars(18)
end
(2). 說明
i)declare 為外部子程序說明語句,主程序調(diào)用多少個子程序,就有多少個declare語句;
ii)call語句的“call”可以省寫,參數(shù)的括弧也
可不寫;
如: call stars(30)
可寫成: stars 30
3、參數(shù)傳遞
(1).值傳遞方式
call stars (30)
......
sub stars (n)
(2).地址傳遞方式
a=30
call stars(a)
......
sub stars(n)
例:求4!+5!+6!+7!
子程序:sub fact(n,f)
f=1
for i=1 to n
f=f*i
next i
end sub
主程序:declare sub fact(n,f)
for i=4 to 7
call fact(i,f)
s=s+f
next i
print “s=”;s
end
注:地址傳遞方式是當(dāng)實際參數(shù)為變量時發(fā)生,它將可能會改變原變量的值,若實際參數(shù)是變量時,又不想用地址傳遞(即用值傳遞方式)則可把變量用括號括起來。
例:求兩個整數(shù)的最大公約數(shù)和最小公倍數(shù)。(p208) 最小公倍數(shù)=(m*n)/最大公約數(shù)
求最大公約數(shù)子程序:
sub hcf(m,n,h)
if m<n then swap m,n
r=m mod n
do while r<>0
m=n
n=r
r=m mod n
loop