第6章-3 過程與函數(shù)_第1頁
第6章-3 過程與函數(shù)_第2頁
第6章-3 過程與函數(shù)_第3頁
第6章-3 過程與函數(shù)_第4頁
第6章-3 過程與函數(shù)_第5頁
已閱讀5頁,還剩22頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、主要內(nèi)容:主要內(nèi)容:1、子程序、過程文件的創(chuàng)建。、子程序、過程文件的創(chuàng)建。2、子程序、過程文件的調(diào)用、參數(shù)傳遞。、子程序、過程文件的調(diào)用、參數(shù)傳遞。3、自定義函數(shù)的定義。、自定義函數(shù)的定義。4、自定義函數(shù)的調(diào)用。、自定義函數(shù)的調(diào)用。5、變量的作用域:全局變量、局部變量、本地變量。、變量的作用域:全局變量、局部變量、本地變量。子程序、過程和函數(shù)子程序、過程和函數(shù)子程序、過程和函數(shù)子程序、過程和函數(shù)問題提出:問題提出:設(shè)計一個程序完成下面計算:設(shè)計一個程序完成下面計算:其中,其中,m m、n n為正整數(shù),為正整數(shù),mnmn,該程序如何設(shè)計更有效?該程序如何設(shè)計更有效?)!*(!nmnmcnm例:編

2、程求例:編程求 *求組合數(shù)程序求組合數(shù)程序zhs1.prginput 請輸入請輸入n= to ninput 請輸入請輸入m= to msn=1sm=1smn=1for i=1 to n sn=sn*iendforfor i=1 to m sm=sm*iendfor)!*(!nmnmcnmfor i=1 to m-n smn=smn*iendfor? n!=,sn? m!=,sm? (m-n)!=,smn?Cmn=,sm/(sn*smn)return將需要重復(fù)執(zhí)行的語句序列或獨立的功能子模塊定義將需要重復(fù)執(zhí)行的語句序列或獨立的功能子模塊定義成子程序、過程或用戶自定義函數(shù),需要執(zhí)行時只需調(diào)用成子程

3、序、過程或用戶自定義函數(shù),需要執(zhí)行時只需調(diào)用它即可。它即可。子程序、過程和函數(shù)子程序、過程和函數(shù)主程序、子程序、過程、函數(shù)的概念:主程序、子程序、過程、函數(shù)的概念:l主程序:主程序:指只調(diào)用其他程序的程序。指只調(diào)用其他程序的程序。l子程序:子程序:具有相對的獨立性、能完成某一功能、能被其他具有相對的獨立性、能完成某一功能、能被其他程序調(diào)用的程序。程序調(diào)用的程序。l過程:過程:是指程序文件中的一個子程序模塊。是指程序文件中的一個子程序模塊。l自定義函數(shù):自定義函數(shù):與過程的區(qū)別在于返回語句帶有返回值。與過程的區(qū)別在于返回語句帶有返回值。子程序子程序1. 子程序的創(chuàng)建子程序的創(chuàng)建格式:格式: pa

4、rameters return to master功能:創(chuàng)建子程序文件。功能:創(chuàng)建子程序文件。2. 子程序的調(diào)用子程序的調(diào)用格式:格式:do with 功能:調(diào)用一個指定的子程序,若調(diào)用的是有參數(shù)的子程序,則要功能:調(diào)用一個指定的子程序,若調(diào)用的是有參數(shù)的子程序,則要用用with子句向被調(diào)用的子程序傳遞參數(shù)。子句向被調(diào)用的子程序傳遞參數(shù)。 do sub1 主程序主程序 main.prg do sub2 return子程序子程序1 sub1.prg if return endif return to master子程序子程序2 sub2.prg子程序子程序1. 子程序的創(chuàng)建子程序的創(chuàng)建格式:格式

5、: parameters return to master功能:創(chuàng)建子程序文件。功能:創(chuàng)建子程序文件。2. 子程序的調(diào)用子程序的調(diào)用格式:格式:do with 功能:調(diào)用一個指定的子程序,若調(diào)用的是有參數(shù)的子程序,則要功能:調(diào)用一個指定的子程序,若調(diào)用的是有參數(shù)的子程序,則要 用用with子句向被調(diào)用的子程序傳遞參數(shù)。子句向被調(diào)用的子程序傳遞參數(shù)。3. 參數(shù)傳遞參數(shù)傳遞 參數(shù)傳遞有兩種方式:參數(shù)傳遞有兩種方式:值傳遞值傳遞和和地址傳遞地址傳遞。 如果實參是如果實參是常量常量或或表達式表達式或或括號括起來的變量括號括起來的變量,默認的傳遞方式,默認的傳遞方式是是值傳遞值傳遞,此時子程序中形參的變

6、化不會影響到調(diào)用程序中的實參。,此時子程序中形參的變化不會影響到調(diào)用程序中的實參。 如果實參是如果實參是沒有用括號括起來的變量沒有用括號括起來的變量,默認的傳遞方式是按,默認的傳遞方式是按地址地址傳遞傳遞,此時形參的值發(fā)生改變,實參也隨之改變。,此時形參的值發(fā)生改變,實參也隨之改變。例例1:1:觀察下列程序中的兩種子程序調(diào)用,比較按值傳遞與按地觀察下列程序中的兩種子程序調(diào)用,比較按值傳遞與按地址傳遞的區(qū)別。址傳遞的區(qū)別。* *主程序文件主程序文件main1.prgmain1.prg clear a=3.14 do sub1 with a ? a * *子程序文件子程序文件sub1.prgsub

7、1.prg parameters b ? b b=2.72 return輸出結(jié)果:輸出結(jié)果:3.142.72a3.14b2.72例例1:1:觀察下列程序中的兩種子程序調(diào)用,比較按值傳遞與按地觀察下列程序中的兩種子程序調(diào)用,比較按值傳遞與按地址傳遞的區(qū)別。址傳遞的區(qū)別。* *主程序文件主程序文件main2.prgmain2.prg clear a=3.14 do sub1 with a ? a * *子程序文件子程序文件sub1.prgsub1.prg parameters b ? b b=2.72 return( )a3.14輸出結(jié)果:輸出結(jié)果:3.143.14b3.142.72例例2 2:用

8、子程序調(diào)用求:用子程序調(diào)用求 *主程序主程序zhs2.prginput 請輸入請輸入n= to ninput 請輸入請輸入m= to msn=1sm=1smn=1do jc with n,sndo jc with m,smdo jc with m-n,smn ? n!=,sn ? m!=,sm ? (m-n)!=,smn ? Cmn=,sm/(sn*smn) return)!*(!nmnmcnm*子程序文件子程序文件jc.prgparameters t, ss=1for i=1 to t s=s*iendforreturn運行結(jié)果:運行結(jié)果:請輸入請輸入n=請輸入請輸入m=n!= 6m!= 1

9、20(m-n)!= 2Cmn= 10.0000 3 5過程過程過程可以分為內(nèi)部過程和外部過程。過程可以分為內(nèi)部過程和外部過程。l內(nèi)部過程內(nèi)部過程:過程定義在主調(diào)程序文件中,一般將過程定義在程序:過程定義在主調(diào)程序文件中,一般將過程定義在程序后面。后面。l外部過程外部過程:過程定義在過程文件(:過程定義在過程文件(prg)中。一個過程文件可以)中。一個過程文件可以包含多個過程,每個過程仍然是獨立的,可以單獨調(diào)用包含多個過程,每個過程仍然是獨立的,可以單獨調(diào)用 。1. 過程的建立過程的建立 格式格式: procedure parameters return to master endproc 功能

10、功能: 將一個語句系列定義為以將一個語句系列定義為以為名的過程。為名的過程。在主程序或過程文件中創(chuàng)建過程在主程序或過程文件中創(chuàng)建過程2. 過程的調(diào)用過程的調(diào)用(1)內(nèi)部過程:被調(diào)用的過程在主調(diào)程序中)內(nèi)部過程:被調(diào)用的過程在主調(diào)程序中(后面后面) 。 格式:格式:do with (2)外部過程:被調(diào)用的過程在過程文件中。)外部過程:被調(diào)用的過程在過程文件中。 先打開過程文件,再調(diào)用過程先打開過程文件,再調(diào)用過程 格式:格式:set procedure to 功能:該命令打開一個過程文件。功能:該命令打開一個過程文件。 格式:格式:close procedure 或或set procedure

11、to 功能:該命令關(guān)閉當前過程文件。功能:該命令關(guān)閉當前過程文件。 直接用直接用do命令調(diào)用命令調(diào)用 do with in 3.參數(shù)傳遞參數(shù)傳遞 過程的參數(shù)傳遞和子程序的參數(shù)傳遞方式相同。過程的參數(shù)傳遞和子程序的參數(shù)傳遞方式相同。例:用主程序調(diào)用過程的方式編寫程序,求任意邊長的正方形的面積、周長。例:用主程序調(diào)用過程的方式編寫程序,求任意邊長的正方形的面積、周長。*主程序和過程在同一程序文件中主程序和過程在同一程序文件中clearinput 請輸入正方形的邊長請輸入正方形的邊長: to bmj=0zc=0do zmj with mj,bdo zzc with zc,b?正方形的面積為正方形的面

12、積為:,mj?正方形的周長為:正方形的周長為:,zc*定義求正方形的面積的過程定義求正方形的面積的過程procedure zmjparameters s,xs=x*xreturn*定義求正方形的周長的過程定義求正方形的周長的過程procedure zzcparameters c,xc=4*xreturn例:用主程序調(diào)用過程的方式編寫程序,求任意邊長的正方形的面積、周長。例:用主程序調(diào)用過程的方式編寫程序,求任意邊長的正方形的面積、周長。*主程序和過程不在同一程序文件中主程序和過程不在同一程序文件中*主程序主程序main3.prgclearinput 請輸入正方形的邊長請輸入正方形的邊長: to

13、 bmj=0zc=0do zmj with mj,b in proc1do zzc with zc,b in proc1?正方形的面積為正方形的面積為:,mj?正方形的周長為:正方形的周長為:,zc*過程文件過程文件proc1.prg*定義求正方形的面積的過程定義求正方形的面積的過程procedure zmjparameters s,xs=x*xreturn*定義求正方形的周長的過程定義求正方形的周長的過程procedure zzcparameters c,xc=4*xreturn自定義函數(shù)自定義函數(shù) 1. 自定義函數(shù)的定義自定義函數(shù)的定義格式:格式:function parameters r

14、eturn endfunc功能:用來定義一個函數(shù),功能:用來定義一個函數(shù), 是自定義函數(shù)的名字。是自定義函數(shù)的名字。說明:說明:return返回函數(shù)的值,如果省略返回函數(shù)的值,如果省略“表達式表達式”,則返回,則返回.t. 2. 自定義函數(shù)的調(diào)用自定義函數(shù)的調(diào)用格式:格式:()3、參數(shù)傳遞、參數(shù)傳遞在自定義函數(shù)中,默認的參數(shù)傳遞方式是值傳遞方式在自定義函數(shù)中,默認的參數(shù)傳遞方式是值傳遞方式例:編程求例:編程求 clearinput 請輸入請輸入n= to ninput 請輸入請輸入m= to msn=1sm=1smn=1sn=jc(n)sm=jc(m)smn=jc(m-n)? n!=,sn?

15、m!=,sm? (m-n)!=,smn?Cmn=,sm/(sn*smn)!*(!nmnmcnmfunction jcparameters ns=1for i=1 to n s=s*iendforreturn s變量的作用域變量的作用域 程序各模塊之間的的數(shù)據(jù)傳遞可以通過兩種方式來解決:程序各模塊之間的的數(shù)據(jù)傳遞可以通過兩種方式來解決:利用參數(shù)實現(xiàn)數(shù)據(jù)傳遞利用參數(shù)實現(xiàn)數(shù)據(jù)傳遞利用變量的作用域?qū)崿F(xiàn)數(shù)據(jù)傳遞利用變量的作用域?qū)崿F(xiàn)數(shù)據(jù)傳遞l變量作用域:變量作用域:內(nèi)存變量的有效作用范圍。內(nèi)存變量的有效作用范圍。如果一個變量在某個程序或過程或函數(shù)范圍內(nèi)是有效的,則如果一個變量在某個程序或過程或函數(shù)范圍內(nèi)是

16、有效的,則該程序或過程或函數(shù)為該變量的作用域,在此作用域內(nèi)可以該程序或過程或函數(shù)為該變量的作用域,在此作用域內(nèi)可以引用該變量。引用該變量。l根據(jù)作用域的不同,內(nèi)存變量可分為根據(jù)作用域的不同,內(nèi)存變量可分為全局變量、私有變量和全局變量、私有變量和局部變量局部變量三種類型。三種類型。變量的作用域變量的作用域 1. 全局變量(公共變量)全局變量(公共變量)全局變量是指聲明后,程序中的任何模塊都能使用的內(nèi)存變量。全局變量是指聲明后,程序中的任何模塊都能使用的內(nèi)存變量。(1)全局變量的定義全局變量的定義1)在命令窗口創(chuàng)建的變量和數(shù)組將自動成為全局變量。在命令窗口創(chuàng)建的變量和數(shù)組將自動成為全局變量。2)用

17、用public語句定義:語句定義:格式格式:public 內(nèi)存變量名表內(nèi)存變量名表/數(shù)組名表數(shù)組名表功能:定義全局內(nèi)存變量或數(shù)組。功能:定義全局內(nèi)存變量或數(shù)組。(2)說明說明程序結(jié)束時,全局變量不會自動釋放,需要用程序結(jié)束時,全局變量不會自動釋放,需要用clear all或或clear memory或或release等命令釋放。等命令釋放。變量的作用域變量的作用域2. 私有變量私有變量 只局限在定義它的程序模塊以及下級模塊(該模塊所調(diào)用的模塊)只局限在定義它的程序模塊以及下級模塊(該模塊所調(diào)用的模塊)中有效。當定義它的模塊運行結(jié)束,它被自動釋放。中有效。當定義它的模塊運行結(jié)束,它被自動釋放。(

18、1)局部變量的定義局部變量的定義在一個程序或過程中建立的內(nèi)存變量,如果未加任何說明,在一個程序或過程中建立的內(nèi)存變量,如果未加任何說明, 自動自動成為私有變量。成為私有變量。格式格式:private 內(nèi)存變量名表內(nèi)存變量名表/數(shù)組名表數(shù)組名表(2)說明:說明: 定義私有內(nèi)存變量和數(shù)組,可以屏蔽來自上級模塊中與當前局部定義私有內(nèi)存變量和數(shù)組,可以屏蔽來自上級模塊中與當前局部變量同名的變量,使在當前模塊中對局部變量的操作,不影響上級模變量同名的變量,使在當前模塊中對局部變量的操作,不影響上級模塊中同名變量的值。塊中同名變量的值。 即如果本模塊的私有變量和上層模塊中的變量重名即如果本模塊的私有變量和

19、上層模塊中的變量重名,則本模塊的變則本模塊的變量優(yōu)先量優(yōu)先,上層模塊中的變量被屏蔽上層模塊中的變量被屏蔽,直到本模塊運行結(jié)束直到本模塊運行結(jié)束,上層變量恢復(fù)上層變量恢復(fù)使用。使用。變量的作用域變量的作用域3.局部變量局部變量 只局限在定義它的程序模塊中有效,一旦定義它的程序模只局限在定義它的程序模塊中有效,一旦定義它的程序模塊運行結(jié)束,它便自動被清除。塊運行結(jié)束,它便自動被清除。(1)局部變量的定義局部變量的定義格式格式:local 內(nèi)存變量名表內(nèi)存變量名表/數(shù)組名表數(shù)組名表功能功能: 定義局部內(nèi)存變量和數(shù)組,并屏蔽所有與它同名的變定義局部內(nèi)存變量和數(shù)組,并屏蔽所有與它同名的變量,使在當前模塊

20、中對局部變量的操作,不影響其它模塊中量,使在當前模塊中對局部變量的操作,不影響其它模塊中同名變量的值。同名變量的值。說明:和前兩種的不同在于,局部變量說明:和前兩種的不同在于,局部變量只能在本程序模塊中只能在本程序模塊中使用使用,因此它不能負責在各個模塊之間傳遞數(shù)據(jù)。,因此它不能負責在各個模塊之間傳遞數(shù)據(jù)。全局變量、局部變量和私有變量的比較 全局變量全局變量(public) 私有變量私有變量(private)局部變量局部變量(local)作用作用域域整個系統(tǒng)的所有整個系統(tǒng)的所有程序。程序。當前程序模塊當前程序模塊變量變量壽命壽命即使所有程序運行即使所有程序運行結(jié)束,內(nèi)存中也仍結(jié)束,內(nèi)存中也仍然

21、保存該變量。然保存該變量。當前程序模塊運行結(jié)束后,該變量被當前程序模塊運行結(jié)束后,該變量被自動清除。自動清除。數(shù)據(jù)數(shù)據(jù)傳遞傳遞作用作用任意一對調(diào)用程任意一對調(diào)用程序與被調(diào)過程間序與被調(diào)過程間雙向傳遞。雙向傳遞。從調(diào)用程序到被從調(diào)用程序到被調(diào)過程雙向傳遞。調(diào)過程雙向傳遞。無無當前程序模塊及當前程序模塊及其下屬程序模塊。其下屬程序模塊。例例1:用變量作用域編寫程序,求任意邊長的正方形的面積、周長,:用變量作用域編寫程序,求任意邊長的正方形的面積、周長,面積和周長用過程實現(xiàn)。面積和周長用過程實現(xiàn)。*主程序和過程在同一程序文件中主程序和過程在同一程序文件中clearinput 請輸入正方形的邊長請輸入

22、正方形的邊長: to bmj=0zc=0do zmj with mj,bdo zzc with zc,b?正方形的面積為正方形的面積為:,mj?正方形的周長為:正方形的周長為:,zcreturn*定義求正方形的面積的過程定義求正方形的面積的過程procedure zmjparameters s,xs=x*xreturn*定義求正方形的周長的過程定義求正方形的周長的過程procedure zzcparameters c,xc=4*xreturn例例1:用變量作用域編寫程序,求任意邊長的正方形的面積、周長,:用變量作用域編寫程序,求任意邊長的正方形的面積、周長,面積和周長用過程實現(xiàn)。面積和周長用過

23、程實現(xiàn)。*主程序和過程在同一程序文件中主程序和過程在同一程序文件中clearpublic xinput 請輸入正方形的邊長請輸入正方形的邊長: to xmj=0zc=0do zmj with mjdo zzc?正方形的面積為正方形的面積為:,mj?正方形的周長為:正方形的周長為:,zcreturn*定義求正方形的面積的過程定義求正方形的面積的過程procedure zmjparameters ss=x*xreturn*定義求正方形的周長的過程定義求正方形的周長的過程procedure zzczc=4*xreturn例例1:用變量作用域編寫程序,求任意邊長的正方形的面積、周長,:用變量作用域編寫

24、程序,求任意邊長的正方形的面積、周長,面積和周長用過程實現(xiàn)。面積和周長用過程實現(xiàn)。*主程序和過程在同一程序文件中主程序和過程在同一程序文件中clearpublic xinput 請輸入正方形的邊長請輸入正方形的邊長: to xmj=0zc=0do zmj with mjdo zzc?正方形的面積為正方形的面積為:,mj?正方形的周長為:正方形的周長為:,zcreturn*定義求正方形的面積的過程定義求正方形的面積的過程procedure zmjparameters ss=x*xreturn*定義求正方形的周長的過程定義求正方形的周長的過程procedure zzcprivate zczc=4*

25、xreturn例例1:用變量作用域編寫程序,求任意邊長的正方形的面積、周長,:用變量作用域編寫程序,求任意邊長的正方形的面積、周長,面積和周長用過程實現(xiàn)。面積和周長用過程實現(xiàn)。*主程序和過程在同一程序文件中主程序和過程在同一程序文件中clearpublic xlocal zcinput 請輸入正方形的邊長請輸入正方形的邊長: to xmj=0zc=0do zmj with mjdo zzc?正方形的面積為正方形的面積為:,mj?正方形的周長為:正方形的周長為:,zcreturn*定義求正方形的面積的過程定義求正方形的面積的過程procedure zmjparameters ss=x*xreturn*定義求正方形的周長的過程定義求正方形的周長的過程procedure zzczc=4*xreturn有如下程序,程序執(zhí)行后,有如下程序,程序執(zhí)行后,b的值為的值為_。 b=5STORE

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論