Delphi教學第02章面向對象的Pascal(第二部分)課件_第1頁
Delphi教學第02章面向對象的Pascal(第二部分)課件_第2頁
Delphi教學第02章面向對象的Pascal(第二部分)課件_第3頁
Delphi教學第02章面向對象的Pascal(第二部分)課件_第4頁
Delphi教學第02章面向對象的Pascal(第二部分)課件_第5頁
已閱讀5頁,還剩47頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、Delphi 7 程序設計程序設計福州大學至誠學院福州大學至誠學院Delphi教學第02章面向對象的Pascal(第二部分)第二章第二章 面向對象的面向對象的Pascal Delphi的編程語言即的編程語言即Object Pascal是在是在Pascal的基的基礎上發(fā)展起來的,它繼承了礎上發(fā)展起來的,它繼承了Pascal語言語法結構嚴謹語言語法結構嚴謹和編譯代碼高效優(yōu)化等優(yōu)點。和編譯代碼高效優(yōu)化等優(yōu)點。2.1 基本概念基本概念2.2 簡單數(shù)據(jù)類型簡單數(shù)據(jù)類型2.3 常量、變量常量、變量2.4 運算符和表達式運算符和表達式2.5 語句語句2.6 構造構造(結構)數(shù)據(jù)類型結構)數(shù)據(jù)類型2.7 函數(shù)

2、和過程函數(shù)和過程字符串類型字符串類型實型實型整型整型字符型字符型布爾型布爾型枚舉類型枚舉類型子界類型子界類型序數(shù)類型序數(shù)類型標準類型標準類型自定義類型自定義類型簡單類型簡單類型構造類型構造類型集合類型集合類型數(shù)組類型數(shù)組類型記錄類型記錄類型文件類型文件類型可變類型可變類型數(shù)據(jù)類型數(shù)據(jù)類型2.6 集合類型集合類型2.6.1 -1 集合類型的定義集合類型的定義 集合是指具有相同性質且可以相互區(qū)分的對象的全體。集合是指具有相同性質且可以相互區(qū)分的對象的全體。例如,所例如,所有的英文字母可以組成一個集合,全體自然數(shù)組成一個集合,某個學有的英文字母可以組成一個集合,全體自然數(shù)組成一個集合,某個學校的全體

3、學生組成一個集合,等等。為了表示集合,校的全體學生組成一個集合,等等。為了表示集合,Object Pascal 引入了集合類型。引入了集合類型。使用集合類型和集合變量之前必須首先進行類型定義和變量聲明。使用集合類型和集合變量之前必須首先進行類型定義和變量聲明。1. 集合與集合類型集合與集合類型 集合的特點是所包括的各個對象具有某種相同的性質,構成集合的集合的特點是所包括的各個對象具有某種相同的性質,構成集合的各個對象稱為集合的元素,各個對象稱為集合的元素,集合的元素是某種簡單數(shù)據(jù)類型的值,這種集合的元素是某種簡單數(shù)據(jù)類型的值,這種數(shù)據(jù)類型稱為集合的數(shù)據(jù)類型稱為集合的“基類型基類型”,基類型只能

4、是順序類型,基類型只能是順序類型。對于集合有。對于集合有以下幾個特點:以下幾個特點:(1)集合中的元素是互異的,即相同的元素視為同一個元素,集合)集合中的元素是互異的,即相同的元素視為同一個元素,集合1, 1,2,2與集合與集合1,2是相同的;是相同的;(2)集合中的元素是無序的,)集合中的元素是無序的,1,2與與2,1是同一個集合;是同一個集合;2.6.1-1 集合類型的定義集合類型的定義2. 集合定義集合定義集合的聲明格式如下:集合的聲明格式如下:Type =Set of ;是用戶定義的集合類型名稱。是用戶定義的集合類型名稱。表示集合中各元素的類型,表示集合中各元素的類型,可以是字符型、布

5、爾型、可以是字符型、布爾型、枚舉型和子界型等順序類型,但不能是整型、實型和其枚舉型和子界型等順序類型,但不能是整型、實型和其他的構造類型。他的構造類型。(3)集合中的元素按順序出現(xiàn)時可以寫為子界的形式,如)集合中的元素按順序出現(xiàn)時可以寫為子界的形式,如6,7,8, 9,11,13可寫為可寫為69,11,13;(4) 元素與集合的關系是元素與集合的關系是“屬于屬于”或或“不屬于不屬于”關系。(關系。(in) (5) 集合類型屬于構造類型,是由其他的數(shù)據(jù)類型按照一定的規(guī)則構集合類型屬于構造類型,是由其他的數(shù)據(jù)類型按照一定的規(guī)則構造而成的。造而成的。Object Pascal規(guī)定集合的基類型可能的值

6、不能超過規(guī)定集合的基類型可能的值不能超過256個,個,且序號必須在且序號必須在0到到255之間,這同時也表明,之間,這同時也表明,集合中元素的個數(shù)最多是集合中元素的個數(shù)最多是256個。個。例如,以下定義會顯示編譯錯誤:例如,以下定義會顯示編譯錯誤:type intset = set of 1.300; /集合元素超過集合元素超過256個個2.6.1-1 集合類型的定義集合類型的定義 若基類型為枚舉或子界類型,則必須先定義該類型,若基類型為枚舉或子界類型,則必須先定義該類型,再定義集合類型。例如:再定義集合類型。例如:type Colors=(Red,Blue,Yellow,White,Blac

7、k); color=set of Colors; numbers=set of 1.10;2.6.1-1 集合類型的定義集合類型的定義3. 集合變量集合變量定義了一個集合則可以聲明集合變量,集合變量聲明的格式如下:定義了一個集合則可以聲明集合變量,集合變量聲明的格式如下:var :;集合變量的取值稱為集合值,它是基類型元素的一個集合,取值范圍是包括集合變量的取值稱為集合值,它是基類型元素的一個集合,取值范圍是包括空集合在內的全體子集。集合值的一般表示格式為方括號括起來的元素序列,空集合在內的全體子集。集合值的一般表示格式為方括號括起來的元素序列,元素之間用逗號隔開。元素之間用逗號隔開。,如下定

8、義了一個集合變量:如下定義了一個集合變量: Type Colors=(Red, Yellow, Blue); BasicColor=set of Colors; var Color1:BasicColor;則集合變量則集合變量Color1的取值可以是下列所示的任何集合:的取值可以是下列所示的任何集合:,Red, Yellow, Blue, Red, Yellow, Red, Blue, Yellow, Blue, Red, Yellow, Blue若集合類型的基類型有若集合類型的基類型有n個元素,根據(jù)組合可知該類型變量的取值有個元素,根據(jù)組合可知該類型變量的取值有2n 個,個,其中包括一個空集

9、合其中包括一個空集合 。2.6.1-2 集合類型的運算集合類型的運算1. 集合的并、交、差運算集合的并、交、差運算相同類型的集合可以進行并、交、差運算,其值仍是一個該類型的集相同類型的集合可以進行并、交、差運算,其值仍是一個該類型的集合。合。并運算:并運算:集合集合A、B類型相同,則類型相同,則A和和B的并運算記作的并運算記作A+B或或B+A,計,計算結果是由算結果是由A和和B中所有不重復元素組成的集合。中所有不重復元素組成的集合。交運算:交運算:集合集合A、B類型相同,則類型相同,則A和和B的交運算記作的交運算記作AB或或BA,計算結果是由計算結果是由A和和B中所有公共元素組成的集合。中所有

10、公共元素組成的集合。差運算:差運算:集合集合A、B類型相同,則類型相同,則A和和B的差運算記作的差運算記作A-B,計算結果,計算結果是由所有屬于集合是由所有屬于集合A而不屬于集合而不屬于集合B的元素組成的集合。利用差運算可的元素組成的集合。利用差運算可以刪除集合中的一些元素。以刪除集合中的一些元素。例如,例如,A=1,2,3,B=2,3,4,則:,則:A+B=1,2,3,4;A*B=2,3;A-B=1;B-A=4; 集合類型數(shù)據(jù)的運算包括兩大類,一類是集合的并、交、差運算,集合類型數(shù)據(jù)的運算包括兩大類,一類是集合的并、交、差運算,其運算結果仍為集合類型值;一類是集合的關系運算,其運算結果是布其

11、運算結果仍為集合類型值;一類是集合的關系運算,其運算結果是布爾類型值。爾類型值。2.6. 1-2 集合類型的運算集合類型的運算 2. 集合的關系運算集合的關系運算 集合的關系運算包括類型相同集合之間所進行的相等集合的關系運算包括類型相同集合之間所進行的相等“=”、不等、不等“”、包含、包含“=”、被包含、被包含“=”等運算,以及數(shù)據(jù)是否屬于集合的等運算,以及數(shù)據(jù)是否屬于集合的IN運算。這些運算的結果均為布爾類型值。運算。這些運算的結果均為布爾類型值。 集合相等運算:集合相等運算:如果相同類型集合如果相同類型集合A和和B的元素完全相同,則運算的元素完全相同,則運算A=B或或B=A的值為的值為Tr

12、ue,否則為,否則為Flase。2,3=3,2的值為的值為True。 集合的不等運算:集合的不等運算:如果相同類型集合如果相同類型集合A和和B的元素不完全相同,則的元素不完全相同,則運算運算AB或或BA的值為的值為True,否則為,否則為Flase。2,31,3,2的值為的值為True。 集合的包含運算:集合的包含運算:如果集合如果集合B中的元素都是集合中的元素都是集合A中的元素,則運中的元素,則運算算A=B(稱為(稱為A包含包含B)的值為)的值為True,否則為,否則為Flase。1,3,2=2,3 的值為的值為True。 集合的被包含運算:集合的被包含運算:如果集合如果集合B中的元素都是集

13、合中的元素都是集合A中的元素,則中的元素,則運算運算B=A (稱為(稱為B被包含在被包含在A中)的值為中)的值為True,否則為,否則為Flase。RED,BLUE=RED,GREEN,BLUE的值為的值為True。 屬于運算:屬于運算:如果數(shù)據(jù)如果數(shù)據(jù)X與集合與集合A的基類型相同,且被包含在的基類型相同,且被包含在A中,則運算中,則運算X INA(稱為(稱為X屬于屬于A)的值為)的值為True,否則為,否則為Flase。RED IN RED,BLUE 的值為的值為True。2.6. 1-2 集合類型的運算集合類型的運算3. 集合運算符的優(yōu)先級集合運算符的優(yōu)先級集合運算符的優(yōu)先級決定運算時的順

14、序,運算符的優(yōu)先順序如表所示。集合運算符的優(yōu)先級決定運算時的順序,運算符的優(yōu)先順序如表所示。優(yōu)先順序優(yōu)先順序運算符運算符1(最高)(最高)*(交運算)(交運算)2+(并運算)、(并運算)、-(差運算)(差運算)3(最低)(最低)=(相等)、(相等)、(不等)、(不等)、=(包含)(包含)= 2, 3, 4, 5, 7(D) 12 in 1 . 10參考答案:參考答案:1、A 2、A 3、D 4、B 數(shù)組的概念數(shù)組的概念 數(shù)組是一些具有相同類型的元素按一定順序組成的數(shù)組是一些具有相同類型的元素按一定順序組成的序列。序列。其中每個元素由其對應的位置來指定,這個位置其中每個元素由其對應的位置來指定,

15、這個位置就是數(shù)組的索引號(又稱就是數(shù)組的索引號(又稱下標下標),數(shù)組元素與索引號是),數(shù)組元素與索引號是一一對應的,用戶可以通過這個索引號來存取數(shù)組的每一一對應的,用戶可以通過這個索引號來存取數(shù)組的每個元素。數(shù)組中的各元素是順序地安排在內存中一段連個元素。數(shù)組中的各元素是順序地安排在內存中一段連續(xù)的存儲空間中。按照數(shù)組在定義時是否確定了元素個續(xù)的存儲空間中。按照數(shù)組在定義時是否確定了元素個數(shù)可以將數(shù)組分為數(shù)可以將數(shù)組分為靜態(tài)數(shù)組和動態(tài)數(shù)組靜態(tài)數(shù)組和動態(tài)數(shù)組。 2.6.2 數(shù)組數(shù)組 2.6.2-1 靜態(tài)數(shù)組靜態(tài)數(shù)組 數(shù)組是相同類型的元素按一定順序組成的序列。數(shù)組中的每一個元素數(shù)組是相同類型的元素

16、按一定順序組成的序列。數(shù)組中的每一個元素都可以通過數(shù)組名和惟一一個索引號來存取。在都可以通過數(shù)組名和惟一一個索引號來存取。在Object Pascal中可以定中可以定義數(shù)組元素個數(shù)一定的數(shù)組,即靜態(tài)數(shù)組。根據(jù)靜態(tài)數(shù)組的維數(shù)可以把義數(shù)組元素個數(shù)一定的數(shù)組,即靜態(tài)數(shù)組。根據(jù)靜態(tài)數(shù)組的維數(shù)可以把數(shù)組分為一維靜態(tài)數(shù)組、二維靜態(tài)數(shù)組和多維靜態(tài)數(shù)組。數(shù)組分為一維靜態(tài)數(shù)組、二維靜態(tài)數(shù)組和多維靜態(tài)數(shù)組。 靜態(tài)數(shù)組在程序初始化時必須分配內存單元,明確其固定的大小和靜態(tài)數(shù)組在程序初始化時必須分配內存單元,明確其固定的大小和元素的數(shù)據(jù)類型。元素的數(shù)據(jù)類型。2.6.2-1(1) 定義定義1. 一維靜態(tài)數(shù)組一維靜態(tài)數(shù)組

17、一維靜態(tài)數(shù)組類型聲明格式為:一維靜態(tài)數(shù)組類型聲明格式為:Type =arrayof ;如定義一個數(shù)組類型:如定義一個數(shù)組類型:Type MyArray=array1.100of Real; 表示定義了一個有表示定義了一個有100個元素的數(shù)組類型,元素下標從個元素的數(shù)組類型,元素下標從1到到100,每個數(shù)組元素都是每個數(shù)組元素都是Real類型,數(shù)組類型標識符為類型,數(shù)組類型標識符為MyArray。2.6.2-1(1) 2.6.2-1(1) 靜態(tài)數(shù)組定義靜態(tài)數(shù)組定義 數(shù)組類型標識符可以是任何合法的標識符。數(shù)組類型標識符可以是任何合法的標識符。Object Pascal 允許允許下標的類型為整數(shù)類型

18、、字符類型、布爾類型、下標的類型為整數(shù)類型、字符類型、布爾類型、子界類型、枚舉類型子界類型、枚舉類型等。而等。而元素類型可以為任意的數(shù)據(jù)類型元素類型可以為任意的數(shù)據(jù)類型,但在同一數(shù)組中,所有元素的數(shù)據(jù)類型必須相同。但在同一數(shù)組中,所有元素的數(shù)據(jù)類型必須相同。對于用戶對于用戶定義的數(shù)據(jù)類型作為下標類型,在使用之前必須聲明。例如定義的數(shù)據(jù)類型作為下標類型,在使用之前必須聲明。例如可以進行如下定義:可以進行如下定義:Type Color=(red,green,blue); Number=0.100; MyArray=ArrayColor of Integer; ColorArray=ArrayNum

19、ber of Color; 以上就定義了一個以以上就定義了一個以MyArray為標識的為標識的數(shù)組類型,其元素下標分別為數(shù)組類型,其元素下標分別為 red、green和和blue,每個數(shù)組元素都是,每個數(shù)組元素都是Integer類型。類型。2.6.2-1(1)2.6.2-1(1)靜態(tài)數(shù)組定義靜態(tài)數(shù)組定義 經(jīng)過數(shù)組類型聲明之后才可以定義數(shù)組變量。就像定義整型經(jīng)過數(shù)組類型聲明之后才可以定義數(shù)組變量。就像定義整型或實型變量一樣,通過變量說明語句定義變量,例如:或實型變量一樣,通過變量說明語句定義變量,例如: var A1,A2:MyArray;/A1red;A1green; A1blue 上面定義了

20、兩個數(shù)組變量上面定義了兩個數(shù)組變量A1和和A2,它們的數(shù)據(jù)類,它們的數(shù)據(jù)類型是型是MyArray;也可以把數(shù)組類型的定義和數(shù)組變量;也可以把數(shù)組類型的定義和數(shù)組變量的定義組合起來,以便簡化代碼,例如:的定義組合起來,以便簡化代碼,例如: var A1,A2:Array1.100 of real; 數(shù)組元素的訪問數(shù)組元素的訪問: 要訪問數(shù)組中的元素,可以用數(shù)組名加方括號,方括號內要訪問數(shù)組中的元素,可以用數(shù)組名加方括號,方括號內是元素的下標值,如是元素的下標值,如A13 、A220等。方括號內的下標值等。方括號內的下標值必須符合數(shù)組類型的定義,其類型必須與下標類型一致,其必須符合數(shù)組類型的定義,

21、其類型必須與下標類型一致,其值在下標取值范圍。另外,下標可以是表達式。值在下標取值范圍。另外,下標可以是表達式。Eg: x=4;y=16; A2x+y2.6.2-1(1)2.6.2-1(1)靜態(tài)數(shù)組定義靜態(tài)數(shù)組定義3. 二維及多維靜態(tài)數(shù)組二維及多維靜態(tài)數(shù)組 二維數(shù)組是指一個一維數(shù)組中的元素類型本身又是一個一維數(shù)組,聲明二維數(shù)組是指一個一維數(shù)組中的元素類型本身又是一個一維數(shù)組,聲明二維數(shù)組的一般形式為:二維數(shù)組的一般形式為:Type =Array,of ;例如:例如:Type RealArray=Array1.20,1.100of Real; 以把二維數(shù)組看做是一個矩陣,其中下標以把二維數(shù)組看做

22、是一個矩陣,其中下標1是行,下標是行,下標2是列,這樣要是列,這樣要訪問二維數(shù)組的元素可以寫成訪問二維數(shù)組的元素可以寫成array12,3,即訪問第,即訪問第2行第行第3列的元素。列的元素。對于多維數(shù)組可以使用循環(huán)語句給數(shù)組賦值,例如:對于多維數(shù)組可以使用循環(huán)語句給數(shù)組賦值,例如:var Col,Row : Integer; for Col :=1 to 20 do for Row :=1 to 100 do RealArrayCol,Row:=0;2.6.2-1(1)2.6.2-1(1)靜態(tài)數(shù)組定義靜態(tài)數(shù)組定義 多維靜態(tài)數(shù)組的一般格式為:多維靜態(tài)數(shù)組的一般格式為:Type =Array, ,

23、 ,of 一般情況,用戶的數(shù)組不超過三維數(shù)組,用到三維以一般情況,用戶的數(shù)組不超過三維數(shù)組,用到三維以上的很少,但上的很少,但Object Pascal允許定義任意維數(shù)的數(shù)組。允許定義任意維數(shù)的數(shù)組。靜態(tài)數(shù)組通過下標類型、維數(shù)明確了數(shù)組的大小。動態(tài)靜態(tài)數(shù)組通過下標類型、維數(shù)明確了數(shù)組的大小。動態(tài)數(shù)組使用時沒有說明數(shù)組的大小,只是在程序設計中為數(shù)組使用時沒有說明數(shù)組的大小,只是在程序設計中為程序動態(tài)地開辟存儲空間。程序動態(tài)地開辟存儲空間。2.6.2-1(1)2.6.2-1(1)靜態(tài)數(shù)組使用靜態(tài)數(shù)組使用隨機產(chǎn)生隨機產(chǎn)生5個小于個小于10的整數(shù)的整數(shù),放入一維數(shù)組放入一維數(shù)組A中中,求出該組數(shù)求出該

24、組數(shù)據(jù)的累加和及平均值據(jù)的累加和及平均值,并輸出并輸出.運行結果如圖示運行結果如圖示:var Form1: TForm1; a:array1.5 of integer; /定義全局變量定義全局變量procedure TForm1.Button1Click(Sender: TObject);var i:integer;begin ption :=; randomize; for i:=1 to 5 do begin ai:=trunc(random(10); ption :=ption +inttostr(ai)+ ; end;end;procedure TForm1.Button2Click(

25、Sender: TObject);var i,sum:integer; avg:real;begin sum:=0; for i:=1 to 5 do sum:=sum+ai; avg:=sum/5; ption :=累加和為:累加和為:+inttostr(sum)+,平均值平均值為為:+floattostr(avg);end;2.6.2-22.6.2-2 動態(tài)數(shù)組動態(tài)數(shù)組 靜態(tài)數(shù)組在程序初始化時必須明確其固定的大小和類型。然而在有些靜態(tài)數(shù)組在程序初始化時必須明確其固定的大小和類型。然而在有些時候,希望在數(shù)組使用的時候再分配內存,這種數(shù)組稱為動態(tài)數(shù)組。時候,希望在數(shù)組使用的時候再分配內存,這種

26、數(shù)組稱為動態(tài)數(shù)組。 動態(tài)數(shù)組是指在定義數(shù)組時不說明數(shù)組元素個數(shù)而是在程序運行時確定。動態(tài)數(shù)組是指在定義數(shù)組時不說明數(shù)組元素個數(shù)而是在程序運行時確定。1. 一維動態(tài)數(shù)組一維動態(tài)數(shù)組一維動態(tài)數(shù)組類型聲明格式為:一維動態(tài)數(shù)組類型聲明格式為:Type =array of ;也可在聲明變量時直接聲明一維動態(tài)數(shù)組:也可在聲明變量時直接聲明一維動態(tài)數(shù)組:var :array of ;如下代碼:如下代碼:var Myarray:array of integer;就聲明了一個變量名為就聲明了一個變量名為Myarray的元素類型為一維整型的動態(tài)數(shù)組。的元素類型為一維整型的動態(tài)數(shù)組。2.6.2-2 定義定義2.6.

27、2-2 動態(tài)數(shù)組定義動態(tài)數(shù)組定義 一維動態(tài)數(shù)組的聲明中沒有給出數(shù)組的下標類型,因此就一維動態(tài)數(shù)組的聲明中沒有給出數(shù)組的下標類型,因此就可以聲明一個不指定元素個數(shù)的數(shù)組。在程序設計中,通過調可以聲明一個不指定元素個數(shù)的數(shù)組。在程序設計中,通過調用標準過程用標準過程Setlength來明確動態(tài)數(shù)組的大小。來明確動態(tài)數(shù)組的大小。 varA: array of real; /定義一個名為定義一個名為A的動態(tài)數(shù)組的動態(tài)數(shù)組beginA2:=1.52; /錯誤,沒有明確數(shù)組大小前是不能錯誤,沒有明確數(shù)組大小前是不能對數(shù)組賦值的對數(shù)組賦值的setlength(A,30); /設置動態(tài)數(shù)組長度為設置動態(tài)數(shù)組長

28、度為30,下標從,下標從0到到29A2:=1.52; /正確正確end;2.6.2-2動態(tài)數(shù)組定義動態(tài)數(shù)組定義2. 多維動態(tài)數(shù)組多維動態(tài)數(shù)組 動態(tài)數(shù)組也可以是多維的,要聲明多維數(shù)組,可以采用遞歸的方式來動態(tài)數(shù)組也可以是多維的,要聲明多維數(shù)組,可以采用遞歸的方式來定義??梢栽谝痪S數(shù)組的定義??梢栽谝痪S數(shù)組的array of后面再附加上后面再附加上array of :Type =array of array of array of ;var :; 當然,也可以在聲明變量時直接聲明多維動態(tài)數(shù)組,如下定義:當然,也可以在聲明變量時直接聲明多維動態(tài)數(shù)組,如下定義:var :array of array

29、of array of ;如下代碼定義了一個變量名為如下代碼定義了一個變量名為A的元素數(shù)據(jù)類型為實型的二維動態(tài)數(shù)組:的元素數(shù)據(jù)類型為實型的二維動態(tài)數(shù)組:var A:array of array of real;相應地,如果要設定一個相應地,如果要設定一個45的二維動態(tài)數(shù)組可將的二維動態(tài)數(shù)組可將setlength函數(shù)寫成:函數(shù)寫成:setlength(A,4,5);2.6.3 2.6.3 記錄類型記錄類型 在解決現(xiàn)實問題中,常需要把一些數(shù)據(jù)類型不同的數(shù)據(jù)集中在一在解決現(xiàn)實問題中,常需要把一些數(shù)據(jù)類型不同的數(shù)據(jù)集中在一起,并作為一個整體處理。例如學生登記表一般包含學號、姓名、起,并作為一個整體處理

30、。例如學生登記表一般包含學號、姓名、性別、年齡、家庭地址多條信息,每一個學生的情況可以看成一性別、年齡、家庭地址多條信息,每一個學生的情況可以看成一個整體,就像數(shù)據(jù)庫中的一個記錄一樣。個整體,就像數(shù)據(jù)庫中的一個記錄一樣。 記錄類型記錄類型( record )是由不同類型的元素組成的一種結構,這些元是由不同類型的元素組成的一種結構,這些元素稱為域。素稱為域。語法(記錄類型的定義):語法(記錄類型的定義):type 記錄類型標識符記錄類型標識符= Record域名域名1: 類型類型;域名域名2: 類型類型;. . .域名域名n: 類型類型end;例例: type Student=Record /定

31、義記錄類型定義記錄類型Student Num:1.60; Name:string; Birthday:TdateTime end; var Student1,Student2:Student;2.6.3 2.6.3 記錄類型記錄類型語法(記錄域訪問格式):語法(記錄域訪問格式):記錄變量名記錄變量名.域名域名例例: Student1. Num=1; 和和=Tony; 語法(語法(with語句):語句):with 記錄變量名表記錄變量名表 do 語句語句with后如果包含多個變量名,各變量名之間須用逗號隔開,后如果包含多個變量名,各變量名之間須用逗號隔開,do后可以是單條語句,也可以是復合語句(

32、用后可以是單條語句,也可以是復合語句(用begin和和end括起來),在這些語句中,對域的訪問不需要再加記錄的括起來),在這些語句中,對域的訪問不需要再加記錄的變量名。變量名。例:例:with student1 dobeginnum:=1;name=TonyEnd;2.6.5 2.6.5 可變類型可變類型變體類型是變體類型是Delphi 中提供了一種功能強大的數(shù)據(jù)類型。中提供了一種功能強大的數(shù)據(jù)類型。變體類型的作用在于能在運行期間動態(tài)的改變數(shù)據(jù)類型。變體類型的作用在于能在運行期間動態(tài)的改變數(shù)據(jù)類型。Variant變量在聲明時,總是被初始化為一個特殊值變量在聲明時,總是被初始化為一個特殊值Una

33、ssigned,表明,表明Variant未被賦值。未被賦值。當當Variant為的值為為的值為Null時,表明變量未知或數(shù)據(jù)已丟失。時,表明變量未知或數(shù)據(jù)已丟失。例:例: Var V,V1:Variant;Begin V:=Delphi is Great!;/此時變量是一個字符串。此時變量是一個字符串。 V:=4;/此時變量是一個整型數(shù)據(jù)。此時變量是一個整型數(shù)據(jù)。 V:=1.5;/此時變量是一個浮點數(shù)。此時變量是一個浮點數(shù)。 V:=true;/此時變量是一個布爾型量。此時變量是一個布爾型量。End;2.7 函數(shù)和過程函數(shù)和過程函數(shù)和過程是實現(xiàn)一定功能的語句塊,是程序中的特定功函數(shù)和過程是實現(xiàn)一

34、定功能的語句塊,是程序中的特定功能單元??梢栽诔绦虻钠渌胤奖徽{用,也可以進行遞歸能單元。可以在程序的其他地方被調用,也可以進行遞歸調用。函數(shù)和過程的區(qū)別在于函數(shù)有返回值,而過程沒有調用。函數(shù)和過程的區(qū)別在于函數(shù)有返回值,而過程沒有返回值。返回值。2.7.1 函數(shù)和過程的聲明函數(shù)和過程的聲明函數(shù)和過程在使用前必須進行聲明。函數(shù)和過程在使用前必須進行聲明。1函數(shù)的聲明函數(shù)的聲明具體形式如下:具體形式如下:function ():;2.7 函數(shù)和過程函數(shù)和過程函數(shù)的定義是在程序的函數(shù)的定義是在程序的implementation部分,具體形式如下:部分,具體形式如下:function ():;var

35、begin := /也可以用也可以用Result系統(tǒng)保留字代替系統(tǒng)保留字代替end;在在begin與與end之間是在函數(shù)調用時實現(xiàn)特定功能的一系列語句。函數(shù)值的之間是在函數(shù)調用時實現(xiàn)特定功能的一系列語句。函數(shù)值的返回有兩種方式:返回有兩種方式:將返回值直接賦給函數(shù)名。將返回值直接賦給函數(shù)名。將返回值賦給將返回值賦給Result。2.7 函數(shù)和過程函數(shù)和過程【例例】求兩個數(shù)中的最大數(shù)。求兩個數(shù)中的最大數(shù)。function Max1(a,b: integer):integer; /兩個形參兩個形參為整型值為整型值a、b,函數(shù)返回值為整型,函數(shù)返回值為整型varm: Integer;begin if

36、 ab then m:= a else m:= b; Max1:= m; /或或result := m;end;2.7 函數(shù)和過程函數(shù)和過程2過程的聲明過程的聲明過程的聲明與函數(shù)類似,所不同的是使用的保留字不同,而且過程的聲明與函數(shù)類似,所不同的是使用的保留字不同,而且少了一個返回值類型;少了一個返回值類型; 具體形式如下:具體形式如下:procedure ();過程的定義是在程序的過程的定義是在程序的implementation部分,具體形式如下:部分,具體形式如下:procedure (); begin end;2.7 函數(shù)和過程函數(shù)和過程【例】顯示一行【例】顯示一行num個星號個星號*。

37、 procedure ShowStar(num:Integer); var i: Integer; s:String; begin s:= ; for i:=1 to num do s:= s+*; ShowMessage(s); end;2.7 函數(shù)和過程函數(shù)和過程2.7.2 重載函數(shù)和過程重載函數(shù)和過程所謂重載,是指在同一程序內給不同的函數(shù)或過程取同一個名稱。所謂重載,是指在同一程序內給不同的函數(shù)或過程取同一個名稱。重載函數(shù)必須用指令字重載函數(shù)必須用指令字overload來進行說明。來進行說明。 下面的兩個函數(shù)就是重載函數(shù):下面的兩個函數(shù)就是重載函數(shù): function Max1(a:In

38、teger;b:Integer):Integer;overload; /求兩個整數(shù)的最大值求兩個整數(shù)的最大值 function Max1(a:Real;b:Real):Real;overload; /求兩個求兩個實數(shù)的最大值實數(shù)的最大值下面兩條語句就調用了不同的函數(shù):下面兩條語句就調用了不同的函數(shù): Max1(3.7,4.6); /調用的是第二個重載函數(shù)調用的是第二個重載函數(shù)Max1(3,4); /調用的是第一個重載函數(shù)調用的是第一個重載函數(shù)2.7 函數(shù)和過程函數(shù)和過程2.7.3 參數(shù)參數(shù)1形參與實參形參與實參函數(shù)或過程的聲明和定義時參數(shù)列表中的參數(shù)稱為形式參函數(shù)或過程的聲明和定義時參數(shù)列表中

39、的參數(shù)稱為形式參數(shù),簡稱形參;而函數(shù)或過程調用時參數(shù)列表中的參數(shù)數(shù),簡稱形參;而函數(shù)或過程調用時參數(shù)列表中的參數(shù)稱為實在參數(shù),簡稱實參。稱為實在參數(shù),簡稱實參。2數(shù)值參數(shù)、變量參數(shù)和常量參數(shù)數(shù)值參數(shù)、變量參數(shù)和常量參數(shù)(1) 數(shù)值參數(shù)數(shù)值參數(shù)在調用函數(shù)或過程時,數(shù)值參數(shù)在運行過程中只改變其形在調用函數(shù)或過程時,數(shù)值參數(shù)在運行過程中只改變其形參的值,不改變其實參的值,即形參不會影響原來實參參的值,不改變其實參的值,即形參不會影響原來實參的值。的值。Eg:Var x:integer; procedure proc1(x:integer);X:=10 beginProc1(x); x:=x+5; e

40、nd;則執(zhí)行則執(zhí)行proc1(x)后后,主程序中的主程序中的x=10,過程體中的過程體中的x=15(2) 變量參數(shù)變量參數(shù)如果用戶想改變傳遞的參數(shù)值,就需要使用變量參數(shù),即如果用戶想改變傳遞的參數(shù)值,就需要使用變量參數(shù),即在被調用程序的參數(shù)表中的形參前加上保留字在被調用程序的參數(shù)表中的形參前加上保留字var。Var x:integer; procedure proc2(var x:integer);X:=10 beginProc2(x); x:=x+5; end;則執(zhí)行則執(zhí)行proc2(x)后后,主程序中的主程序中的x=15,過程體中的過程體中的x=152.7 函數(shù)和過程函數(shù)和過程2.7 函數(shù)

41、和過程函數(shù)和過程(3) 常量參數(shù)常量參數(shù) 如果當過程或函數(shù)執(zhí)行時要求不改變形參的值,最保險如果當過程或函數(shù)執(zhí)行時要求不改變形參的值,最保險的辦法是使用常量參數(shù)。的辦法是使用常量參數(shù)。在參數(shù)表的參數(shù)名稱前加上保在參數(shù)表的參數(shù)名稱前加上保留字留字const可以使一個形參成為常量參數(shù)。使用常量參可以使一個形參成為常量參數(shù)。使用常量參數(shù)代替數(shù)值參數(shù)可以保護用戶的參數(shù),使用戶在不想改數(shù)代替數(shù)值參數(shù)可以保護用戶的參數(shù),使用戶在不想改變參數(shù)值時不會意外地將新的值賦給這個參數(shù)。變參數(shù)值時不會意外地將新的值賦給這個參數(shù)。 Var x:integer; procedure proc3(const x:intege

42、r);X:=10 beginProc3(x); x:=x+5; /編譯出錯編譯出錯 end;2.7 函數(shù)和過程函數(shù)和過程2.7.4 作用域作用域 在在Object Pascal中,根據(jù)變量的作用域,可將變量分中,根據(jù)變量的作用域,可將變量分為:為:全局變量和局部變量全局變量和局部變量。所謂變量的作用域,是指變。所謂變量的作用域,是指變量的有效范圍。全局變量在整個程序中都有效,其作用量的有效范圍。全局變量在整個程序中都有效,其作用域為整個程序;局部變量只在聲明它的函數(shù)和過程中有域為整個程序;局部變量只在聲明它的函數(shù)和過程中有效,其作用域只限于該函數(shù)或過程本身。效,其作用域只限于該函數(shù)或過程本身。

43、 2.7 函數(shù)和過程函數(shù)和過程例:例:typevarForm1: TForm1; /全局變量全局變量Form1implementation$R *.dfmprocedure TForm1.FormCreate(Sender: TObject);var m,n:Integer; /局部變量局部變量m,nForm1:Tform1;(*局部變量局部變量Form1,與上面的全局變量同名,在過程,與上面的全局變量同名,在過程TForm1.FormCreate中局部變量起作用。中局部變量起作用。*)2.7 函數(shù)和過程函數(shù)和過程2.7.5 函數(shù)和過程的調用函數(shù)和過程的調用1函數(shù)和過程的調用函數(shù)和過程的調用(

44、1) 函數(shù)的調用函數(shù)的調用函數(shù)調用的一般形式為:函數(shù)調用的一般形式為:()函數(shù)的調用往往是將返回值賦給某個變量或參與運算。函數(shù)的調用往往是將返回值賦給某個變量或參與運算。例如調用上例,將其返回值賦給變量例如調用上例,將其返回值賦給變量x的語句為:的語句為:x:=Max1(3,6);(2) 過程的調用過程的調用過程的調用的一般形式為:過程的調用的一般形式為: ();其中的實參可以是常量、變量或表達式,但實參的個數(shù)其中的實參可以是常量、變量或表達式,但實參的個數(shù)和類型與形參完全匹配,即個數(shù)相同、類型一致。例和類型與形參完全匹配,即個數(shù)相同、類型一致。例如:調用上例的過程如:調用上例的過程ShowS

45、tar的語句為:的語句為:ShowStar(20);2.7 函數(shù)和過程函數(shù)和過程2函數(shù)和過程的遞歸調用函數(shù)和過程的遞歸調用 遞歸調用遞歸調用是指是指子程序子程序(函數(shù)或過程)(函數(shù)或過程)調用子程序自身調用子程序自身。 用遞歸解決問題出自這樣一種思維方法:把一個問題分用遞歸解決問題出自這樣一種思維方法:把一個問題分解成若干個子問題,這些子問題的求解方法與原問題的求解成若干個子問題,這些子問題的求解方法與原問題的求解方法一樣,繼續(xù)這種分解,直到問題的規(guī)模足夠小時,解方法一樣,繼續(xù)這種分解,直到問題的規(guī)模足夠小時,能直接得出答案,然后再逐層回溯,組合這些子問題,以能直接得出答案,然后再逐層回溯,組

46、合這些子問題,以得到原問題的解。用遞歸方法寫出的程序較簡短,容易理得到原問題的解。用遞歸方法寫出的程序較簡短,容易理解,但遞歸的程序執(zhí)行效率比較低。解,但遞歸的程序執(zhí)行效率比較低?!纠壳笄髎 =1+2+3+ +n。這個求和問題可以這樣理解:這個求和問題可以這樣理解: 1 當當n=1n=1時時f(n)= f(n)= f(n-1)+n f(n-1)+n 當當n1n1時時 Function f(n:integer):integerBegin if n=1 then result:=1; else result:=f(n-1)+n/調用函數(shù)自身調用函數(shù)自身End;練習練習1 設有一個自定義函數(shù)聲明

47、如下:設有一個自定義函數(shù)聲明如下:function fun(x, y, z : integer) : integer;begin fun := z y div x;end;則表達式則表達式fun(fun(2, 4, 6), 6, 8)的值是多少?的值是多少?2 設有一個自定義過程聲明如下:設有一個自定義過程聲明如下:procedure p(x : integer; var y : integer);begin x := x y; y := y + x;end;執(zhí)行下述程序段:執(zhí)行下述程序段:a := 10; b := 4;p(a, b);p(a mod b, a);則則a, b的值分別是什么?

48、的值分別是什么?參考答案:參考答案:1、7 2、a=0,b=102.8 習題及上機練習習題及上機練習1Object Pascal語言中有哪些常用的數(shù)據(jù)類型?變量在使語言中有哪些常用的數(shù)據(jù)類型?變量在使用前必須先定義,如何定義各種數(shù)據(jù)類型的變量?用前必須先定義,如何定義各種數(shù)據(jù)類型的變量?2. 簡述簡述Object Pascal中標識符的命名應遵循哪些規(guī)則。中標識符的命名應遵循哪些規(guī)則。3. Object Pascal中提供了哪些類型運算符,在表達式中其優(yōu)中提供了哪些類型運算符,在表達式中其優(yōu)先級從高到低如何排列。先級從高到低如何排列。4注釋語句有哪幾種形式?注釋語句有哪幾種形式?5條件語句有哪

49、幾種形式?它們在什么情況下適用。條件語句有哪幾種形式?它們在什么情況下適用。6循環(huán)語句有哪幾種形式?循環(huán)語句有哪幾種形式?break語句與語句與continue語句有何語句有何異同。異同。7如何聲明、定義和調用函數(shù)和過程。如何聲明、定義和調用函數(shù)和過程。8什么是重載?如何進行重載函數(shù)和過程。什么是重載?如何進行重載函數(shù)和過程。9什么是變量的作用域?根據(jù)變量的作用域,可將變量分為什么是變量的作用域?根據(jù)變量的作用域,可將變量分為哪幾類。哪幾類。上機練習題上機練習題1、求整數(shù)各位數(shù)字、求整數(shù)各位數(shù)字 【練習題目練習題目】 利用本章學習的算術運算符和算術表達式,編寫一個程利用本章學習的算術運算符和算

50、術表達式,編寫一個程序,實現(xiàn)下面的功能:輸入一個任意序,實現(xiàn)下面的功能:輸入一個任意4位整數(shù),計算千位位整數(shù),計算千位、百位、十位和個位上的數(shù)字。程序設計界面和程序運行、百位、十位和個位上的數(shù)字。程序設計界面和程序運行界面如圖所示。程序運行時,輸入任意整數(shù)(界面如圖所示。程序運行時,輸入任意整數(shù)(4位整數(shù))位整數(shù)),單擊按鈕,單擊按鈕【個位數(shù)字個位數(shù)字】,將顯示個位數(shù)字,單擊按鈕,將顯示個位數(shù)字,單擊按鈕【十位數(shù)字十位數(shù)字】,將顯示十位數(shù)字,其它依此類推。,將顯示十位數(shù)字,其它依此類推。上機練習題上機練習題2 2、計算數(shù)學中常量的值計算數(shù)學中常量的值 【練習題目練習題目】 編一個程序按下列公式求編一個程序按下列公式求e e的值(要求精度達到的值(要求精度達到1e-51e-5)。)。 程序運行時,單擊程序運行時,單擊【計算計算】按鈕,將計算并顯示符合給按鈕,將計

溫馨提示

  • 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

提交評論