八年級信息技術教案第八章 程式序設計個性化----函數和子程序
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)、說明:
<表達式>的值不是整數時,按四舍五入處理,值為0或大于n則不起作用,值為負時系統給出錯誤信息——“不正確的函數調用”。
3、on key(n) gosub-return 語句
(1)、調用格式
on key(n) gosub <標號>
其中n是數值表達式,代表一個“陷阱鍵”。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).說明
設置陷阱:on key(n) gosub <標號>
打開陷阱:key (n) on
關閉陷阱:key (n) off
三、獨立模塊的子程序
1、建立子程序
格式:sub <子程序名>[(<參數表>)]
………
end sub
2、子程序的調用
(1).格式
declare sub <子程序名>[(<參數表>)]
………
call <子程序名>[(<參數表>)]
或 <子程序名> <參數表>
例: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 為外部子程序說明語句,主程序調用多少個子程序,就有多少個declare語句;
ii)call語句的“call”可以省寫,參數的括弧也
可不寫;
如: call stars(30)
可寫成: stars 30
3、參數傳遞
(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
注:地址傳遞方式是當實際參數為變量時發生,它將可能會改變原變量的值,若實際參數是變量時,又不想用地址傳遞(即用值傳遞方式)則可把變量用括號括起來。
例:求兩個整數的最大公約數和最小公倍數。(p208) 最小公倍數=(m*n)/最大公約數
求最大公約數子程序:
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