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

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

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

*求組合數(shù)程序zhs1.prginput"請輸入n="toninput"請輸入m="tomsn=1sm=1smn=1fori=1ton

sn=sn*iendforfori=1tom

sm=sm*iendforfori=1tom-n

smn=smn*iendfor?"n!=",sn?"m!=",sm?"(m-n)!=",smn?"Cmn=",sm/(sn*smn)return將需要重復執(zhí)行的語句序列或獨立的功能子模塊定義成子程序、過程或用戶自定義函數(shù),需要執(zhí)行時只需調用它即可。子程序、過程和函數(shù)主程序、子程序、過程、函數(shù)的概念:主程序:指只調用其他程序的程序。子程序:具有相對的獨立性、能完成某一功能、能被其他程序調用的程序。過程:是指程序文件中的一個子程序模塊。自定義函數(shù):與過程的區(qū)別在于返回語句帶有返回值。子程序1.子程序的創(chuàng)建格式:

[parameters<形參表>]

<命令序列>

return[tomaster]功能:創(chuàng)建子程序文件。2.子程序的調用格式:do<子程序文件名>[with<實參表>]功能:調用一個指定的子程序,若調用的是有參數(shù)的子程序,則要用with子句向被調用的子程序傳遞參數(shù)。

…………dosub1……

……主程序main.prg

…………dosub2…………return子程序1sub1.prg

……if…return

endif……returntomaster子程序2sub2.prg子程序1.子程序的創(chuàng)建格式:

[parameters<形參表>]

<命令序列>

return[tomaster]功能:創(chuàng)建子程序文件。2.子程序的調用格式:do<子程序文件名>[with<實參表>]功能:調用一個指定的子程序,若調用的是有參數(shù)的子程序,則要用with子句向被調用的子程序傳遞參數(shù)。3.參數(shù)傳遞參數(shù)傳遞有兩種方式:值傳遞和地址傳遞。如果實參是常量或表達式或括號括起來的變量,默認的傳遞方式是值傳遞,此時子程序中形參的變化不會影響到調用程序中的實參。如果實參是沒有用括號括起來的變量,默認的傳遞方式是按地址傳遞,此時形參的值發(fā)生改變,實參也隨之改變。例1:觀察下列程序中的兩種子程序調用,比較按值傳遞與按地址傳遞的區(qū)別。*主程序文件main1.prgcleara=3.14dosub1witha?a*子程序文件sub1.prgparametersb?bb=2.72return輸出結果:3.142.72a3.14b2.72例1:觀察下列程序中的兩種子程序調用,比較按值傳遞與按地址傳遞的區(qū)別。*主程序文件main2.prgcleara=3.14dosub1witha?a*子程序文件sub1.prgparametersb?bb=2.72return()a3.14輸出結果:3.143.14b3.142.72例2:用子程序調用求

*主程序zhs2.prginput"請輸入n="toninput"請輸入m="tomsn=1sm=1smn=1dojc

withn,sndojcwithm,smdojc

withm-n,smn?"n!=",sn?"m!=",sm?"(m-n)!=",smn?"Cmn=",sm/(sn*smn)return*子程序文件jc.prgparameterst,ss=1fori=1tots=s*iendforreturn運行結果:請輸入n=請輸入m=n!=6m!=120(m-n)!=2Cmn=10.0000↙3↙5過程過程可以分為內部過程和外部過程。內部過程:過程定義在主調程序文件中,一般將過程定義在程序后面。外部過程:過程定義在過程文件(prg)中。一個過程文件可以包含多個過程,每個過程仍然是獨立的,可以單獨調用。1.過程的建立

格式:procedure<過程名>[parameters<形參表>]<過程語句序列>return[tomaster][endproc]

功能:將一個語句系列定義為以<過程名>為名的過程。在主程序或過程文件中創(chuàng)建過程2.過程的調用(1)內部過程:被調用的過程在主調程序中(后面)

。格式:do<過程名>[with<實參表>](2)外部過程:被調用的過程在過程文件中。①先打開過程文件,再調用過程格式:setprocedureto<過程文件名>

功能:該命令打開一個過程文件。格式:closeprocedure或setprocedureto

功能:該命令關閉當前過程文件。②直接用do命令調用

do<過程名>[with<實參表>][in<過程文件名>]3.參數(shù)傳遞

過程的參數(shù)傳遞和子程序的參數(shù)傳遞方式相同。例:用主程序調用過程的方式編寫程序,求任意邊長的正方形的面積、周長。

*主程序和過程在同一程序文件中clearinput"請輸入正方形的邊長:"tobmj=0zc=0dozmjwithmj,bdozzcwithzc,b?"正方形的面積為:",mj?"正方形的周長為:",zc*定義求正方形的面積的過程procedurezmjparameterss,xs=x*xreturn*定義求正方形的周長的過程procedurezzcparametersc,xc=4*xreturn例:用主程序調用過程的方式編寫程序,求任意邊長的正方形的面積、周長。

*主程序和過程不在同一程序文件中*主程序main3.prgclearinput"請輸入正方形的邊長:"tobmj=0zc=0dozmjwithmj,binproc1dozzcwithzc,binproc1?"正方形的面積為:",mj?"正方形的周長為:",zc*過程文件proc1.prg*定義求正方形的面積的過程procedurezmjparameterss,xs=x*xreturn*定義求正方形的周長的過程procedurezzcparametersc,xc=4*xreturn自定義函數(shù)

1.自定義函數(shù)的定義格式:function<函數(shù)名>

[parameters<形參表>]

<命令序列>

return[<表達式>]

[endfunc]功能:用來定義一個函數(shù),<函數(shù)名>是自定義函數(shù)的名字。說明:return返回函數(shù)的值,如果省略“表達式”,則返回.t.

2.自定義函數(shù)的調用格式:<函數(shù)名>(<實參表>)3、參數(shù)傳遞在自定義函數(shù)中,默認的參數(shù)傳遞方式是值傳遞方式例:編程求

clearinput"請輸入n="toninput"請輸入m="tomsn=1sm=1smn=1sn=jc(n)sm=jc(m)smn=jc(m-n)?"n!=",sn?"m!=",sm?"(m-n)!=",smn?"Cmn=",sm/(sn*smn)functionjcparametersns=1fori=1tons=s*iendforreturns變量的作用域

程序各模塊之間的的數(shù)據(jù)傳遞可以通過兩種方式來解決:利用參數(shù)實現(xiàn)數(shù)據(jù)傳遞利用變量的作用域實現(xiàn)數(shù)據(jù)傳遞變量作用域:內存變量的有效作用范圍。如果一個變量在某個程序或過程或函數(shù)范圍內是有效的,則該程序或過程或函數(shù)為該變量的作用域,在此作用域內可以引用該變量。根據(jù)作用域的不同,內存變量可分為全局變量、私有變量和局部變量三種類型。變量的作用域

1.全局變量(公共變量)全局變量是指聲明后,程序中的任何模塊都能使用的內存變量。(1)全局變量的定義1)在命令窗口創(chuàng)建的變量和數(shù)組將自動成為全局變量。2)用public語句定義:格式:public<內存變量名表/數(shù)組名表>功能:定義全局內存變量或數(shù)組。(2)說明程序結束時,全局變量不會自動釋放,需要用clearall或clearmemory或release等命令釋放。變量的作用域2.私有變量只局限在定義它的程序模塊以及下級模塊(該模塊所調用的模塊)中有效。當定義它的模塊運行結束,它被自動釋放。(1)局部變量的定義①在一個程序或過程中建立的內存變量,如果未加任何說明,自動成為私有變量。②格式:private<內存變量名表/數(shù)組名表>(2)說明:定義私有內存變量和數(shù)組,可以屏蔽來自上級模塊中與當前局部變量同名的變量,使在當前模塊中對局部變量的操作,不影響上級模塊中同名變量的值。即如果本模塊的私有變量和上層模塊中的變量重名,則本模塊的變量優(yōu)先,上層模塊中的變量被屏蔽,直到本模塊運行結束,上層變量恢復使用。變量的作用域3.局部變量只局限在定義它的程序模塊中有效,一旦定義它的程序模塊運行結束,它便自動被清除。(1)局部變量的定義格式:local<內存變量名表/數(shù)組名表>功能:定義局部內存變量和數(shù)組,并屏蔽所有與它同名的變量,使在當前模塊中對局部變量的操作,不影響其它模塊中同名變量的值。說明:和前兩種的不同在于,局部變量只能在本程序模塊中使用,因此它不能負責在各個模塊之間傳遞數(shù)據(jù)。全局變量、局部變量和私有變量的比較

全局變量(public)私有變量(private)局部變量(local)作用域整個系統(tǒng)的所有程序。當前程序模塊變量壽命即使所有程序運行結束,內存中也仍然保存該變量。當前程序模塊運行結束后,該變量被自動清除。數(shù)據(jù)傳遞作用任意一對調用程序與被調過程間雙向傳遞。從調用程序到被調過程雙向傳遞。無當前程序模塊及其下屬程序模塊。例1:用變量作用域編寫程序,求任意邊長的正方形的面積、周長,面積和周長用過程實現(xiàn)。*主程序和過程在同一程序文件中clearinput"請輸入正方形的邊長:"tobmj=0zc=0dozmjwithmj,bdozzcwithzc,b?"正方形的面積為:",mj?"正方形的周長為:",zcreturn*定義求正方形的面積的過程procedurezmjparameterss,xs=x*xreturn*定義求正方形的周長的過程procedurezzcparametersc,xc=4*xreturn例1:用變量作用域編寫程序,求任意邊長的正方形的面積、周長,面積和周長用過程實現(xiàn)。*主程序和過程在同一程序文件中clearpublicxinput"請輸入正方形的邊長:"toxmj=0zc=0dozmjwithmjdozzc?"正方形的面積為:",mj?"正方形的周長為:",zcreturn*定義求正方形的面積的過程procedurezmjparametersss=x*xreturn*定義求正方形的周長的過程procedurezzczc=4*xreturn例1:用變量作用域編寫程序,求任意邊長的正方形的面積、周長,面積和周長用過程實現(xiàn)。*主程序和過程在同一程序文件中clearpublicxinput"請輸入正方形的邊長:"toxmj=0zc=0dozmjwithmjdozzc?"正方形的面積為:",mj?"正方形的周長為:",zcreturn*定義求正方形的面積的過程procedurezmjparametersss=x*xreturn*定義求正方形的周長的過程procedurezzcprivatezczc=4*xreturn例1:用變量作用域編寫程序,求任意邊長的正方形的面積、周長,面積和周長用過程實現(xiàn)。*主程序和過程在同一程序文件中clearpublicxlocalzcinput"請輸入正方形的邊長:"toxmj=0zc=0dozmjwithmjdozzc?"正方形的面積為:",mj?"正方形的周長為:",zcreturn*定義求正方形的面積的過程procedurezmjparametersss=x*xreturn*定義求正方形的周長的過程procedurezzczc=4*xreturn有如下程序,程序執(zhí)行后,b的值為________。b=5STORE2TOA,c,dDOSUB1WITHA,B,C?bretuprocsub1PARAMETERA,B,CD=B*B-4*A*CDOCASECASED=0b=0CASED<0b=-1CASED>0b=1CASED=0D=100ENDCASEendpro1本周實驗實驗時間:工商131-2、金融131-2周六14:00-15:30工管131-2、旅游131周六15:

溫馨提示

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

評論

0/150

提交評論