




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、第五章第五章 過程與函數(shù)過程與函數(shù) DelphiDelphi中,有許多預先定義好的子程序,它們統(tǒng)稱為中,有許多預先定義好的子程序,它們統(tǒng)稱為運行庫。運行庫。Object PascalObject Pascal也允許程序員自己定義子程也允許程序員自己定義子程序。子程序的引入,降低了程序的復雜性。編寫子序。子程序的引入,降低了程序的復雜性。編寫子程序還可以提高代碼的重用率。子程序實現(xiàn)的功能程序還可以提高代碼的重用率。子程序實現(xiàn)的功能相對獨立。如此,將大大提高程序編寫和維護的效相對獨立。如此,將大大提高程序編寫和維護的效率。率。Object PascalObject Pascal的子程序分為兩種:過
2、程(的子程序分為兩種:過程(procedureprocedure)和函數(shù)(和函數(shù)(functionfunction)。)。過程和函數(shù)的區(qū)別主要在于過程本身沒有返回值,而過程和函數(shù)的區(qū)別主要在于過程本身沒有返回值,而函數(shù)有一個返回值。另外,在定義過程時使用保留函數(shù)有一個返回值。另外,在定義過程時使用保留字字procedureprocedure,而定義函數(shù)使用保留字,而定義函數(shù)使用保留字functionfunction。一、過程和函數(shù)的聲明一、過程和函數(shù)的聲明1. 1. 過程聲明過程聲明procedure procedure 過程名過程名( (參數(shù)表參數(shù)表);); beginbegin end;e
3、nd;過程名過程名即過程標識符。即過程標識符。局部聲明部分局部聲明部分用于聲明僅限于該過用于聲明僅限于該過程內引用的常量、自定義數(shù)據(jù)類型、變量、過程和函程內引用的常量、自定義數(shù)據(jù)類型、變量、過程和函數(shù)等。數(shù)等。參數(shù)表參數(shù)表內聲明參數(shù)的個數(shù)和類型,同類型參數(shù)內聲明參數(shù)的個數(shù)和類型,同類型參數(shù)之間以之間以逗號逗號分隔,不同類型參數(shù)之間以分隔,不同類型參數(shù)之間以分號分號分隔。分隔。2. 2. 函數(shù)聲明函數(shù)聲明function function 函數(shù)名函數(shù)名( (參數(shù)表參數(shù)表):):返回數(shù)據(jù)類型返回數(shù)據(jù)類型; ; beginbegin end;end;函數(shù)首部函數(shù)首部除了聲明函數(shù)的標識符、形式參數(shù)表以
4、外,除了聲明函數(shù)的標識符、形式參數(shù)表以外,必需在冒號之后聲明函數(shù)必需在冒號之后聲明函數(shù)返回數(shù)據(jù)類型返回數(shù)據(jù)類型。局部聲明局部聲明部分與過程的局部聲明部分類似。部分與過程的局部聲明部分類似。函數(shù)名函數(shù)名本身作為一個特殊的變量,與系統(tǒng)預先定義的本身作為一個特殊的變量,與系統(tǒng)預先定義的變量變量ResultResult一樣,可在函數(shù)體中接受賦值,一樣,可在函數(shù)體中接受賦值,用來存用來存儲函數(shù)返回值儲函數(shù)返回值。過程和函數(shù)首部中聲明的參數(shù)稱為過程和函數(shù)首部中聲明的參數(shù)稱為形式參數(shù)形式參數(shù),簡稱形參。,簡稱形參。形式參數(shù),以及過程和函數(shù)局部聲明的各種標識符形式參數(shù),以及過程和函數(shù)局部聲明的各種標識符(如常
5、量、數(shù)據(jù)類型、變量、過程、函數(shù)等)均為(如常量、數(shù)據(jù)類型、變量、過程、函數(shù)等)均為局局部部的,即它們的的,即它們的作用范圍只在該過程或函數(shù)中作用范圍只在該過程或函數(shù)中,在局,在局部范圍內有效。部范圍內有效。全局標識符全局標識符是在主程序中定義的,其是在主程序中定義的,其作用范圍在主程序和子程序。由于任一被調用的子程作用范圍在主程序和子程序。由于任一被調用的子程序中可以隨意地訪問全局變量,全局變量的數(shù)據(jù)缺乏序中可以隨意地訪問全局變量,全局變量的數(shù)據(jù)缺乏可靠和安全,因此,應盡量避免在子程序中直接訪問可靠和安全,因此,應盡量避免在子程序中直接訪問全局變量,而是通過參數(shù)來傳遞外部數(shù)據(jù),進行間接全局變量
6、,而是通過參數(shù)來傳遞外部數(shù)據(jù),進行間接訪問。訪問。二、過程和函數(shù)調用二、過程和函數(shù)調用 如同標準過程和函數(shù)的調用一樣,程序中如同標準過程和函數(shù)的調用一樣,程序中可以調用自定義的過程和函數(shù)。過程調用的形可以調用自定義的過程和函數(shù)。過程調用的形式是以其作為一條單獨的語句。式是以其作為一條單獨的語句。 函數(shù)也可以單獨作為一條語句來調用,而函數(shù)也可以單獨作為一條語句來調用,而更一般的是把函數(shù)作為表達式,或表達式的一更一般的是把函數(shù)作為表達式,或表達式的一部分的形式進行調用的,部分的形式進行調用的, 函數(shù)作為一條單獨的語句是合法的,但多數(shù)函數(shù)作為一條單獨的語句是合法的,但多數(shù)情況下,調用函數(shù)主要是為了獲
7、得其返回值,情況下,調用函數(shù)主要是為了獲得其返回值,因此函數(shù)作為一條單獨語句調用通常實際意義因此函數(shù)作為一條單獨語句調用通常實際意義不大。不大。三、參數(shù)傳遞三、參數(shù)傳遞過程或函數(shù)調用時,調用語句中傳遞給過程或函數(shù)的參數(shù)過程或函數(shù)調用時,調用語句中傳遞給過程或函數(shù)的參數(shù)稱為稱為實際參數(shù)實際參數(shù),簡稱實參。實參的個數(shù)、數(shù)據(jù)類型和,簡稱實參。實參的個數(shù)、數(shù)據(jù)類型和順序必須與形式參數(shù)一一對應,多個參數(shù)之間用逗號順序必須與形式參數(shù)一一對應,多個參數(shù)之間用逗號隔開。隔開。 形式參數(shù)形式參數(shù)出現(xiàn)在過程和函數(shù)聲明的首部,形式參數(shù)分出現(xiàn)在過程和函數(shù)聲明的首部,形式參數(shù)分為三類:為三類:值參數(shù)值參數(shù)(簡稱值參)、
8、(簡稱值參)、變量參數(shù)變量參數(shù)(簡稱變參)(簡稱變參)和和常量參數(shù)常量參數(shù)。三者在聲明時的修飾和實參的區(qū)別分述。三者在聲明時的修飾和實參的區(qū)別分述如下:如下: 值參數(shù)值參數(shù)聲明時,形參的前面無任何修飾,值參傳遞的聲明時,形參的前面無任何修飾,值參傳遞的是一個值。調用時,實參的值拷貝給形參,是一個值。調用時,實參的值拷貝給形參,形參值的形參值的改變不影響其對應實參的值改變不影響其對應實參的值。 變量參數(shù)變量參數(shù)聲明時,形參的前面用保留字聲明時,形參的前面用保留字varvar修飾。變修飾。變參傳遞的是一個變量的地址,即實參把地址傳遞給參傳遞的是一個變量的地址,即實參把地址傳遞給變變參,這樣變參和參
9、,這樣變參和實參指向的是同一地址空間,因此,實參指向的是同一地址空間,因此,在在過程和函數(shù)中對變參的修改,直接影響實參過程和函數(shù)中對變參的修改,直接影響實參。顯然。顯然可以利用變參為被調子程序(函數(shù)或過程)可以利用變參為被調子程序(函數(shù)或過程)“傳遞傳遞”數(shù)據(jù)給主調程序。數(shù)據(jù)給主調程序。 常量參數(shù)常量參數(shù)聲明時,形參的前面用保留字聲明時,形參的前面用保留字constconst修飾。修飾。常量參數(shù)的傳遞形式本質上類似于值參,但在子程序常量參數(shù)的傳遞形式本質上類似于值參,但在子程序中,它相當于局部的類型常量,中,它相當于局部的類型常量,不能對常量參數(shù)進行不能對常量參數(shù)進行賦值賦值。常量參數(shù)的使用可
10、以防止子程序對實參的修改。常量參數(shù)的使用可以防止子程序對實參的修改。在函數(shù)或過程定義中,可以給值參數(shù)設置一個在函數(shù)或過程定義中,可以給值參數(shù)設置一個默認值默認值。在調用子程序(過程或函數(shù))時,如果沒有提供相應在調用子程序(過程或函數(shù))時,如果沒有提供相應的實參,那么子程序即以默認值作為初值。的實參,那么子程序即以默認值作為初值。注意注意:參:參數(shù)的默認值只能從參數(shù)表的數(shù)的默認值只能從參數(shù)表的右邊開始默認右邊開始默認,且中間不且中間不能跳躍能跳躍,此外,變,此外,變參不參不能設置默認值。能設置默認值。例如:例如:procedure FillArray(a:array of Integer;pro
11、cedure FillArray(a:array of Integer; value:Integer=0); value:Integer=0); 值參值參valuevalue是默認參數(shù),缺省值為是默認參數(shù),缺省值為0 0,可以有如下兩種調,可以有如下兩種調用方式:用方式:FillArray(MyArray); / FillArray(MyArray); / 參數(shù)參數(shù)valuevalue使用缺省值使用缺省值0 0FillArray(MyArray,10); / FillArray(MyArray,10); / 參數(shù)參數(shù)valuevalue指值指值1010四、過程和函數(shù)重載四、過程和函數(shù)重載過程和
12、函數(shù)重載是指定義多個名稱相同,而參數(shù)列表不過程和函數(shù)重載是指定義多個名稱相同,而參數(shù)列表不同的過程和函數(shù)。編譯器依據(jù)調用時實參表中同的過程和函數(shù)。編譯器依據(jù)調用時實參表中參數(shù)個參數(shù)個數(shù)和類型數(shù)和類型,自動匹配一個重載的過程或函數(shù)。重載過,自動匹配一個重載的過程或函數(shù)。重載過程和函數(shù)首部句尾應使用保留字程和函數(shù)首部句尾應使用保留字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;重載過
14、程或函數(shù)使用默認參數(shù)可能會導致二義性錯誤。重載過程或函數(shù)使用默認參數(shù)可能會導致二義性錯誤。如:如: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;五、過程和函數(shù)的遞歸調用五、過程和函數(shù)的遞歸調用 遞歸調用遞歸調用是指是指子程序子程序(函數(shù)或過程)(函數(shù)或過程)調用子程序自身調用子程序自身。遞歸在解決某些問題時是十分有用的方法,它可以使遞歸在解決某些問題時是十分有用的方法
溫馨提示
- 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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 小班防火活動方案
- 山區(qū)農(nóng)耕體驗活動方案
- 小組線上活動方案
- 常用團建活動策劃方案
- 工會法宣講活動方案
- 帳篷實踐活動方案
- 小工廠周年慶典活動方案
- 工地開放日活動方案
- 山火植樹活動方案
- 帶隊熱身活動方案
- 捷科醫(yī)藥物流管理系統(tǒng)(SCM)手冊資料講解
- 病理科生物安全培訓
- 2025年立普妥行業(yè)深度研究分析報告-20241226-185650
- 家庭教育中的創(chuàng)客教育與孩子創(chuàng)新思維
- 《金融與科技創(chuàng)新協(xié)同發(fā)展探究的文獻綜述》3300字
- 新生兒科安全教育宣教
- 扶梯設備安全操作培訓
- 2025年北師大版數(shù)學六年級下冊教學計劃(含進度表)
- 曹楊二中英語數(shù)學試卷
- 葫蘆絲社團活動總結3篇
- 管理英語4-008-國開機考復習資料
評論
0/150
提交評論