一、實驗目的
1. 掌握用戶自定義函數(shù)、過程的定義。
2. 掌握用戶自定義函數(shù)及過程的建立方法。
3. 掌握子程序的建立和調用方法。
4. 理解在調用過程和函數(shù)時參數(shù)傳遞的意義和功能。
二、實驗內容及上機步驟
【上機題一】
編寫自定義函數(shù)求一自然數(shù)x的階乘。在主程序中調用函數(shù),計算s=a!+b!+c!
操作要求:
1. 由鍵盤輸入3個數(shù),分別存放在變量a,b,c中。
2. 設計一個自定義函數(shù)FAC(),用它來求x!
3. 由主程序調用3次函數(shù),即求得結果。
【上機步驟】
本題的知識點是用戶自定義函數(shù)的建立及調用方法,程序代碼如下:
CLEAR
SET TALK OFF
INPUT “請輸入a” TO a
INPUT “請輸入b” TO b
INPUT “請輸入c” TO c
s=FAC(a)+FAC(b)+FAC(c)
? “三個數(shù)的階乘之和為”,s
SET TALK ON
RETURN
FUNCTION FAC()
PARAMETERS n
f=1
FOR i=1 to n
f=f*i
ENDFOR
RETURN f
【上機題二】
用過程的方法來求1000內的素數(shù)的個數(shù)。
【上機步驟】
本題的知識點是過程的建立方法。素數(shù)的算法需要用到雙重循環(huán),外層循環(huán)用來循環(huán)1到1000每個數(shù),內層循環(huán)進行素數(shù)的判斷。
用過程的方法來解決,則把內層循環(huán)的內容用過程來描述,程序代碼如下:
CLEAR
SET TALK OFF
sum=0
For i=1 to 1000
prime=.T.
DO SUB1 WITH i
IF prime
sum=sum+1
ENDIF
ENDFOR
? “1000內素數(shù)的個數(shù)為:”,sum
SET TALK ON
RETURN
PROCEDURE SUB1
PARAMETERS x
FOR j=2 TO INT(SQRT(x))
IF MOD(x,j)=0
prime=.F.
EXIT
ENDIF
ENDFOR
RETURN
【上機題三】
驗證以下過程程序,并檢查輸出結果。
【上機步驟】
本題的知識點是理解在調用過程或函數(shù)時參數(shù)傳遞的意義和功能。
(1)建立一個程序文件,程序代碼如下:
SET TALK OFF
x=15
y=7
DO SUB WITH x,(y)
? x,y
SET TALK ON
RETURN
PROCEDURE SUB
PARAMETERS a,b
a=a+b
b=a-b
RETURN
保存該程序文件并運行程序,輸出結果為22,7。因為x為按地址傳遞,其值會隨著形參的變化而變化。y為值傳遞,不管形參如何變化,實參y的值不變。
把x,y都改成地址傳遞,再次運行程序,觀察程序運行結果有沒有變化?
(2) 建立一個程序文件,程序代碼如下:
SET TALK OFF
x=9
y=13
z=FU(x,y)
? z
SET TALK ON
RETURN
FUNCTION FU
PARAMETERS a,b
a=a*b
RETURN (a)
保存該程序文件并運行程序,輸出結果為117。
把自定義函數(shù)中的RETURN(a)語句改為RETURN(b-a),再次運行程序,觀察返回結果是多少?