




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、第五章第五章 過(guò)程與函數(shù)過(guò)程與函數(shù) DelphiDelphi中,有許多預(yù)先定義好的子程序,它們統(tǒng)稱為中,有許多預(yù)先定義好的子程序,它們統(tǒng)稱為運(yùn)行庫(kù)。運(yùn)行庫(kù)。Object PascalObject Pascal也允許程序員自己定義子程也允許程序員自己定義子程序。子程序的引入,降低了程序的復(fù)雜性。編寫子序。子程序的引入,降低了程序的復(fù)雜性。編寫子程序還可以提高代碼的重用率。子程序?qū)崿F(xiàn)的功能程序還可以提高代碼的重用率。子程序?qū)崿F(xiàn)的功能相對(duì)獨(dú)立。如此,將大大提高程序編寫和維護(hù)的效相對(duì)獨(dú)立。如此,將大大提高程序編寫和維護(hù)的效率。率。Object PascalObject Pascal的子程序分為兩種:過(guò)
2、程(的子程序分為兩種:過(guò)程(procedureprocedure)和函數(shù)(和函數(shù)(functionfunction)。)。過(guò)程和函數(shù)的區(qū)別主要在于過(guò)程本身沒有返回值,而過(guò)程和函數(shù)的區(qū)別主要在于過(guò)程本身沒有返回值,而函數(shù)有一個(gè)返回值。另外,在定義過(guò)程時(shí)使用保留函數(shù)有一個(gè)返回值。另外,在定義過(guò)程時(shí)使用保留字字procedureprocedure,而定義函數(shù)使用保留字,而定義函數(shù)使用保留字functionfunction。一、過(guò)程和函數(shù)的聲明一、過(guò)程和函數(shù)的聲明1. 1. 過(guò)程聲明過(guò)程聲明procedure procedure 過(guò)程名過(guò)程名( (參數(shù)表參數(shù)表);); beginbegin end;e
3、nd;過(guò)程名過(guò)程名即過(guò)程標(biāo)識(shí)符。即過(guò)程標(biāo)識(shí)符。局部聲明部分局部聲明部分用于聲明僅限于該過(guò)用于聲明僅限于該過(guò)程內(nèi)引用的常量、自定義數(shù)據(jù)類型、變量、過(guò)程和函程內(nèi)引用的常量、自定義數(shù)據(jù)類型、變量、過(guò)程和函數(shù)等。數(shù)等。參數(shù)表參數(shù)表內(nèi)聲明參數(shù)的個(gè)數(shù)和類型,同類型參數(shù)內(nèi)聲明參數(shù)的個(gè)數(shù)和類型,同類型參數(shù)之間以之間以逗號(hào)逗號(hào)分隔,不同類型參數(shù)之間以分隔,不同類型參數(shù)之間以分號(hào)分號(hào)分隔。分隔。2. 2. 函數(shù)聲明函數(shù)聲明function function 函數(shù)名函數(shù)名( (參數(shù)表參數(shù)表):):返回?cái)?shù)據(jù)類型返回?cái)?shù)據(jù)類型; ; beginbegin end;end;函數(shù)首部函數(shù)首部除了聲明函數(shù)的標(biāo)識(shí)符、形式參數(shù)表以
4、外,除了聲明函數(shù)的標(biāo)識(shí)符、形式參數(shù)表以外,必需在冒號(hào)之后聲明函數(shù)必需在冒號(hào)之后聲明函數(shù)返回?cái)?shù)據(jù)類型返回?cái)?shù)據(jù)類型。局部聲明局部聲明部分與過(guò)程的局部聲明部分類似。部分與過(guò)程的局部聲明部分類似。函數(shù)名函數(shù)名本身作為一個(gè)特殊的變量,與系統(tǒng)預(yù)先定義的本身作為一個(gè)特殊的變量,與系統(tǒng)預(yù)先定義的變量變量ResultResult一樣,可在函數(shù)體中接受賦值,一樣,可在函數(shù)體中接受賦值,用來(lái)存用來(lái)存儲(chǔ)函數(shù)返回值儲(chǔ)函數(shù)返回值。過(guò)程和函數(shù)首部中聲明的參數(shù)稱為過(guò)程和函數(shù)首部中聲明的參數(shù)稱為形式參數(shù)形式參數(shù),簡(jiǎn)稱形參。,簡(jiǎn)稱形參。形式參數(shù),以及過(guò)程和函數(shù)局部聲明的各種標(biāo)識(shí)符形式參數(shù),以及過(guò)程和函數(shù)局部聲明的各種標(biāo)識(shí)符(如常
5、量、數(shù)據(jù)類型、變量、過(guò)程、函數(shù)等)均為(如常量、數(shù)據(jù)類型、變量、過(guò)程、函數(shù)等)均為局局部部的,即它們的的,即它們的作用范圍只在該過(guò)程或函數(shù)中作用范圍只在該過(guò)程或函數(shù)中,在局,在局部范圍內(nèi)有效。部范圍內(nèi)有效。全局標(biāo)識(shí)符全局標(biāo)識(shí)符是在主程序中定義的,其是在主程序中定義的,其作用范圍在主程序和子程序。由于任一被調(diào)用的子程作用范圍在主程序和子程序。由于任一被調(diào)用的子程序中可以隨意地訪問全局變量,全局變量的數(shù)據(jù)缺乏序中可以隨意地訪問全局變量,全局變量的數(shù)據(jù)缺乏可靠和安全,因此,應(yīng)盡量避免在子程序中直接訪問可靠和安全,因此,應(yīng)盡量避免在子程序中直接訪問全局變量,而是通過(guò)參數(shù)來(lái)傳遞外部數(shù)據(jù),進(jìn)行間接全局變量
6、,而是通過(guò)參數(shù)來(lái)傳遞外部數(shù)據(jù),進(jìn)行間接訪問。訪問。二、過(guò)程和函數(shù)調(diào)用二、過(guò)程和函數(shù)調(diào)用 如同標(biāo)準(zhǔn)過(guò)程和函數(shù)的調(diào)用一樣,程序中如同標(biāo)準(zhǔn)過(guò)程和函數(shù)的調(diào)用一樣,程序中可以調(diào)用自定義的過(guò)程和函數(shù)。過(guò)程調(diào)用的形可以調(diào)用自定義的過(guò)程和函數(shù)。過(guò)程調(diào)用的形式是以其作為一條單獨(dú)的語(yǔ)句。式是以其作為一條單獨(dú)的語(yǔ)句。 函數(shù)也可以單獨(dú)作為一條語(yǔ)句來(lái)調(diào)用,而函數(shù)也可以單獨(dú)作為一條語(yǔ)句來(lái)調(diào)用,而更一般的是把函數(shù)作為表達(dá)式,或表達(dá)式的一更一般的是把函數(shù)作為表達(dá)式,或表達(dá)式的一部分的形式進(jìn)行調(diào)用的,部分的形式進(jìn)行調(diào)用的, 函數(shù)作為一條單獨(dú)的語(yǔ)句是合法的,但多數(shù)函數(shù)作為一條單獨(dú)的語(yǔ)句是合法的,但多數(shù)情況下,調(diào)用函數(shù)主要是為了獲
7、得其返回值,情況下,調(diào)用函數(shù)主要是為了獲得其返回值,因此函數(shù)作為一條單獨(dú)語(yǔ)句調(diào)用通常實(shí)際意義因此函數(shù)作為一條單獨(dú)語(yǔ)句調(diào)用通常實(shí)際意義不大。不大。三、參數(shù)傳遞三、參數(shù)傳遞過(guò)程或函數(shù)調(diào)用時(shí),調(diào)用語(yǔ)句中傳遞給過(guò)程或函數(shù)的參數(shù)過(guò)程或函數(shù)調(diào)用時(shí),調(diào)用語(yǔ)句中傳遞給過(guò)程或函數(shù)的參數(shù)稱為稱為實(shí)際參數(shù)實(shí)際參數(shù),簡(jiǎn)稱實(shí)參。實(shí)參的個(gè)數(shù)、數(shù)據(jù)類型和,簡(jiǎn)稱實(shí)參。實(shí)參的個(gè)數(shù)、數(shù)據(jù)類型和順序必須與形式參數(shù)一一對(duì)應(yīng),多個(gè)參數(shù)之間用逗號(hào)順序必須與形式參數(shù)一一對(duì)應(yīng),多個(gè)參數(shù)之間用逗號(hào)隔開。隔開。 形式參數(shù)形式參數(shù)出現(xiàn)在過(guò)程和函數(shù)聲明的首部,形式參數(shù)分出現(xiàn)在過(guò)程和函數(shù)聲明的首部,形式參數(shù)分為三類:為三類:值參數(shù)值參數(shù)(簡(jiǎn)稱值參)、
8、(簡(jiǎn)稱值參)、變量參數(shù)變量參數(shù)(簡(jiǎn)稱變參)(簡(jiǎn)稱變參)和和常量參數(shù)常量參數(shù)。三者在聲明時(shí)的修飾和實(shí)參的區(qū)別分述。三者在聲明時(shí)的修飾和實(shí)參的區(qū)別分述如下:如下: 值參數(shù)值參數(shù)聲明時(shí),形參的前面無(wú)任何修飾,值參傳遞的聲明時(shí),形參的前面無(wú)任何修飾,值參傳遞的是一個(gè)值。調(diào)用時(shí),實(shí)參的值拷貝給形參,是一個(gè)值。調(diào)用時(shí),實(shí)參的值拷貝給形參,形參值的形參值的改變不影響其對(duì)應(yīng)實(shí)參的值改變不影響其對(duì)應(yīng)實(shí)參的值。 變量參數(shù)變量參數(shù)聲明時(shí),形參的前面用保留字聲明時(shí),形參的前面用保留字varvar修飾。變修飾。變參傳遞的是一個(gè)變量的地址,即實(shí)參把地址傳遞給參傳遞的是一個(gè)變量的地址,即實(shí)參把地址傳遞給變變參,這樣變參和參
9、,這樣變參和實(shí)參指向的是同一地址空間,因此,實(shí)參指向的是同一地址空間,因此,在在過(guò)程和函數(shù)中對(duì)變參的修改,直接影響實(shí)參過(guò)程和函數(shù)中對(duì)變參的修改,直接影響實(shí)參。顯然。顯然可以利用變參為被調(diào)子程序(函數(shù)或過(guò)程)可以利用變參為被調(diào)子程序(函數(shù)或過(guò)程)“傳遞傳遞”數(shù)據(jù)給主調(diào)程序。數(shù)據(jù)給主調(diào)程序。 常量參數(shù)常量參數(shù)聲明時(shí),形參的前面用保留字聲明時(shí),形參的前面用保留字constconst修飾。修飾。常量參數(shù)的傳遞形式本質(zhì)上類似于值參,但在子程序常量參數(shù)的傳遞形式本質(zhì)上類似于值參,但在子程序中,它相當(dāng)于局部的類型常量,中,它相當(dāng)于局部的類型常量,不能對(duì)常量參數(shù)進(jìn)行不能對(duì)常量參數(shù)進(jìn)行賦值賦值。常量參數(shù)的使用可
10、以防止子程序?qū)?shí)參的修改。常量參數(shù)的使用可以防止子程序?qū)?shí)參的修改。在函數(shù)或過(guò)程定義中,可以給值參數(shù)設(shè)置一個(gè)在函數(shù)或過(guò)程定義中,可以給值參數(shù)設(shè)置一個(gè)默認(rèn)值默認(rèn)值。在調(diào)用子程序(過(guò)程或函數(shù))時(shí),如果沒有提供相應(yīng)在調(diào)用子程序(過(guò)程或函數(shù))時(shí),如果沒有提供相應(yīng)的實(shí)參,那么子程序即以默認(rèn)值作為初值。的實(shí)參,那么子程序即以默認(rèn)值作為初值。注意注意:參:參數(shù)的默認(rèn)值只能從參數(shù)表的數(shù)的默認(rèn)值只能從參數(shù)表的右邊開始默認(rèn)右邊開始默認(rèn),且中間不且中間不能跳躍能跳躍,此外,變,此外,變參不參不能設(shè)置默認(rèn)值。能設(shè)置默認(rèn)值。例如:例如:procedure FillArray(a:array of Integer;pro
11、cedure FillArray(a:array of Integer; value:Integer=0); value:Integer=0); 值參值參valuevalue是默認(rèn)參數(shù),缺省值為是默認(rèn)參數(shù),缺省值為0 0,可以有如下兩種調(diào),可以有如下兩種調(diào)用方式:用方式:FillArray(MyArray); / FillArray(MyArray); / 參數(shù)參數(shù)valuevalue使用缺省值使用缺省值0 0FillArray(MyArray,10); / FillArray(MyArray,10); / 參數(shù)參數(shù)valuevalue指值指值1010四、過(guò)程和函數(shù)重載四、過(guò)程和函數(shù)重載過(guò)程和
12、函數(shù)重載是指定義多個(gè)名稱相同,而參數(shù)列表不過(guò)程和函數(shù)重載是指定義多個(gè)名稱相同,而參數(shù)列表不同的過(guò)程和函數(shù)。編譯器依據(jù)調(diào)用時(shí)實(shí)參表中同的過(guò)程和函數(shù)。編譯器依據(jù)調(diào)用時(shí)實(shí)參表中參數(shù)個(gè)參數(shù)個(gè)數(shù)和類型數(shù)和類型,自動(dòng)匹配一個(gè)重載的過(guò)程或函數(shù)。重載過(guò),自動(dòng)匹配一個(gè)重載的過(guò)程或函數(shù)。重載過(guò)程和函數(shù)首部句尾應(yīng)使用保留字程和函數(shù)首部句尾應(yīng)使用保留字overloadoverload修飾。修飾。例如:例如:function add(a,b:integer):integer; overload;function add(a,b:integer):integer; overload;beginbegin result :
13、= a + b; result := a + b;end;end;function add(a,b:real):real; overload;function add(a,b:real):real; overload;beginbegin result := a + b; result := a + b;end;end;function add(a,b:string):string; overload;function add(a,b:string):string; overload;beginbegin result := a + b; result := a + b;end;end;重載過(guò)
14、程或函數(shù)使用默認(rèn)參數(shù)可能會(huì)導(dǎo)致二義性錯(cuò)誤。重載過(guò)程或函數(shù)使用默認(rèn)參數(shù)可能會(huì)導(dǎo)致二義性錯(cuò)誤。如:如:function f1(a:integer; b:integer=10); overload; function f1(a:integer; b:integer=10); overload; beginbegin result := a + b; result := a + b;end;end;function f1(a:integer):overload; function f1(a:integer):overload; beginbegin result := a result := a* *a;a;end;end;五、過(guò)程和函數(shù)的遞歸調(diào)用五、過(guò)程和函數(shù)的遞歸調(diào)用 遞歸調(diào)用遞歸調(diào)用是指是指子程序子程序(函數(shù)或過(guò)程)(函數(shù)或過(guò)程)調(diào)用子程序自身調(diào)用子程序自身。遞歸在解決某些問題時(shí)是十分有用的方法,它可以使遞歸在解決某些問題時(shí)是十分有用的方法
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 單位外出旅行協(xié)議書
- 合作安裝電梯協(xié)議書
- 雙方自愿買賣協(xié)議書
- 廠房意向租賃協(xié)議書
- 商業(yè)糾紛保密協(xié)議書
- 古箏門店轉(zhuǎn)讓協(xié)議書
- 雙方土地置換協(xié)議書
- 醫(yī)療物資供給協(xié)議書
- 土地耕地流轉(zhuǎn)協(xié)議書
- 商鋪用電管理協(xié)議書
- 投壺課件教學(xué)課件
- 【MOOC】中國(guó)稅法:案例·原理·方法-暨南大學(xué) 中國(guó)大學(xué)慕課MOOC答案
- 專題04全等模型-半角模型(原卷版+解析)2
- 村民活動(dòng)中心組織設(shè)計(jì)方案
- 2024年保密工作培訓(xùn)
- 品類創(chuàng)新學(xué)習(xí)通超星期末考試答案章節(jié)答案2024年
- IP電話系統(tǒng)建設(shè)方案設(shè)計(jì)
- 2024年黑龍江省龍東地區(qū)中考英語(yǔ)試卷(含答案與解析)
- 承包建筑寺廟合同范本
- “四史”(改革開放史)學(xué)習(xí)通超星期末考試答案章節(jié)答案2024年
- 《義務(wù)教育物理課程標(biāo)準(zhǔn)》測(cè)試題及詳細(xì)答案2022年修訂版
評(píng)論
0/150
提交評(píng)論