




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
12十二月2023DELPHI程序設(shè)計(jì)基礎(chǔ)教程第五章高級(jí)數(shù)據(jù)類型本章學(xué)習(xí)導(dǎo)讀5.1枚舉類型5.2子界類型5.3集合類型5.4數(shù)組5.5記錄類型5.6指針本章小結(jié)12十二月2023DELPHI程序設(shè)計(jì)基礎(chǔ)教程本章學(xué)習(xí)導(dǎo)讀本章介紹了枚舉、子界、集合、數(shù)組、記錄、指針這幾種常用高級(jí)數(shù)據(jù)類型的使用。這些高級(jí)數(shù)據(jù)類型能夠描述和擴(kuò)展定義較復(fù)雜的數(shù)據(jù)的存儲(chǔ)類型,通過結(jié)構(gòu)類型,程序中可以存儲(chǔ)結(jié)構(gòu)復(fù)雜的數(shù)據(jù)。12十二月2023DELPHI程序設(shè)計(jì)基礎(chǔ)教程5.1枚舉類型枚舉類型就是一種用戶自定義數(shù)據(jù)類型,它是通過枚舉的方式將該類型中的值用標(biāo)識(shí)符的形式一一列舉出來。枚舉類型是一個(gè)以標(biāo)識(shí)符標(biāo)識(shí)的有序整型常數(shù)的集合,這些常數(shù)是該類型變量可取的合法值。定義和變量聲明枚舉類型定義的格式如下:
type<類型名稱>=(<標(biāo)識(shí)符1>,<標(biāo)識(shí)符2>,…,<標(biāo)識(shí)符n>);其中type是定義枚舉類型的保留字,“類型名稱”即用戶自定義的枚舉類型變量的名稱,枚舉值表示該種類型的值,又稱為枚舉常量,這些枚舉值規(guī)定了枚舉類型的值域。12十二月2023DELPHI程序設(shè)計(jì)基礎(chǔ)教程5.1枚舉類型運(yùn)算枚舉類型的值是枚舉常量,因此對(duì)枚舉類型的運(yùn)算實(shí)際是對(duì)枚舉常量的運(yùn)算。如有以下函數(shù)運(yùn)算:
Ord(Mon)=1
//返回有序類型表達(dá)式的序號(hào),Mon的序數(shù)值為1Pred(Mon)=Sun
//返回有序類型的先行數(shù),Mon的先行值是SunSucc(Mon)=Tue
//返回有序類型的后繼數(shù),Mon的后繼值是Tue枚舉常量可以進(jìn)行比較,即可進(jìn)行關(guān)系運(yùn)算,返回結(jié)果為true或false,如:
Sun<>Mon
//結(jié)果為false(因?yàn)?>1為false)12十二月2023DELPHI程序設(shè)計(jì)基礎(chǔ)教程5.2子界類型子界類型也是一種用戶自定義數(shù)據(jù)類型,它是由整型、字符型、枚舉型、布爾型中某兩個(gè)常量制定的該類型的值區(qū)域。定義和變量聲明子界類型定義的格式如下:
type <類型名稱>=<常量1>…<常量2>;運(yùn)算例5-1:順序讀入年、月、日,輸出該日期是這一年的第幾天(子界類型的使用)。12十二月2023DELPHI程序設(shè)計(jì)基礎(chǔ)教程5.3集合類型集合類型是一組相同類型元素的組合,即一組相對(duì)對(duì)象的整體,每個(gè)對(duì)象都稱為集合的一個(gè)元素。集合類型通常用于檢查一個(gè)值是否屬于一個(gè)特定集合。定義和變量聲明集合類型是ObjectPascal允許用戶定義的一個(gè)結(jié)構(gòu)數(shù)據(jù)類型,它使用戶可以運(yùn)用通常的集合運(yùn)算。例如:交集、并集和差集。集合類型是一些同類型元素的集合,這些基類型元素可以是整型、布爾型、字符型、枚舉型或子界類型。它通常的作用是用來檢驗(yàn)?zāi)硞€(gè)元素是否被包含在一個(gè)集合當(dāng)中。集合類型聲明的格式如下:
type
集合類型標(biāo)識(shí)符=setof基類型;12十二月2023DELPHI程序設(shè)計(jì)基礎(chǔ)教程5.3集合類型變量集合取值變量集合的取值是用"["和"]"括起來,中間為用逗號(hào)隔開的若干個(gè)集合的元素。如:[]空集[1,2,3]['a','e','i','o','u']運(yùn)算賦值運(yùn)算集合的并、交、差運(yùn)算集合的關(guān)系運(yùn)算12十二月2023DELPHI程序設(shè)計(jì)基礎(chǔ)教程5.3集合類型例5-2:輸入一系列字符,對(duì)其中的數(shù)字字符、字母字符和其它字符分別計(jì)數(shù)。輸入'?'后結(jié)束。12十二月2023DELPHI程序設(shè)計(jì)基礎(chǔ)教程5.4數(shù)組5.4.1靜態(tài)數(shù)組5.4.2動(dòng)態(tài)數(shù)組5.4.3查找5.4.4排序5.4.5數(shù)組參數(shù)12十二月2023DELPHI程序設(shè)計(jì)基礎(chǔ)教程5.4數(shù)組數(shù)組類型數(shù)據(jù)是一種用戶定義的結(jié)構(gòu)數(shù)據(jù)類型,它是一些具有相同數(shù)據(jù)類型的元素的集合。逗號(hào)隔開的下標(biāo)類型個(gè)數(shù)表示數(shù)組的維數(shù)。根據(jù)數(shù)組的維數(shù)可以將數(shù)組分為一維數(shù)組、二位數(shù)組以及多維數(shù)組,每一維度的下標(biāo)指明了元素的數(shù)目。其下標(biāo)類型必須是有序的,包括了除長整型以外的所有有序類型以及長整型的子界類型,如整型、字符型、布爾型、枚舉型、子界型等。數(shù)組類型數(shù)據(jù)表示的是同種類型數(shù)據(jù)的集合。數(shù)組類型的數(shù)據(jù)是排列有序的,每個(gè)數(shù)據(jù)元素都有一個(gè)唯一的索引號(hào)。與集合類型不同的是,數(shù)組類型的數(shù)據(jù)可以重復(fù)。數(shù)組類型分為靜態(tài)數(shù)組和動(dòng)態(tài)數(shù)組。12十二月2023DELPHI程序設(shè)計(jì)基礎(chǔ)教程5.4.1靜態(tài)數(shù)組一維靜態(tài)數(shù)組靜態(tài)數(shù)組在程序的初始化時(shí)就已經(jīng)分配好內(nèi)存單元,在聲明時(shí)指定了數(shù)組的大小。數(shù)組類型定義的格式如下:type{<類型標(biāo)識(shí)符>=array[下標(biāo)1..下標(biāo)2]of基類型};
var<數(shù)組變量表>:<類型標(biāo)識(shí)符>;例5-3:從數(shù)組中找出最大的一個(gè)元素,并指出它是哪一個(gè)元素。例5-4:將一個(gè)十進(jìn)制自然數(shù)轉(zhuǎn)換成二進(jìn)制數(shù)。12十二月2023DELPHI程序設(shè)計(jì)基礎(chǔ)教程5.4.1靜態(tài)數(shù)組二維靜態(tài)及多態(tài)靜態(tài)數(shù)組一維靜態(tài)數(shù)組只有一個(gè)下標(biāo),而二維靜態(tài)數(shù)組有兩個(gè)下標(biāo),多維靜態(tài)數(shù)組則有多個(gè)下標(biāo),可以用來表示一個(gè)矩陣或空間。多維靜態(tài)數(shù)組定義的格式如下:
type{類型標(biāo)識(shí)符=array[下標(biāo)11..下標(biāo)12]ofarray[下標(biāo)21..下標(biāo)22]…ofarray[下標(biāo)n1..下標(biāo)n2]of基類型};也可以定義為:type{類型標(biāo)識(shí)符=array[下標(biāo)11..下標(biāo)12,下標(biāo)21..下標(biāo)22,…,下標(biāo)n1..下標(biāo)n2]of基類型};例5-5:讀入5個(gè)學(xué)生的學(xué)號(hào)和成績,計(jì)算他們的平均分,若比平均分高10分的等第為A,若比平均分高小于10分的等地為B,若低于平均分,則等第為C,輸出他們的成績和等第。12十二月2023DELPHI程序設(shè)計(jì)基礎(chǔ)教程5.4.2動(dòng)態(tài)數(shù)組動(dòng)態(tài)數(shù)組在使用前并沒有說明數(shù)組的大小,只是在程序運(yùn)行當(dāng)中,根據(jù)需要為數(shù)組開辟相應(yīng)的內(nèi)存空間進(jìn)行存儲(chǔ)。一維動(dòng)態(tài)數(shù)組 一維動(dòng)態(tài)數(shù)組定義的格式如下:
type{類型標(biāo)識(shí)符=arrayof基類型};二維及多維動(dòng)態(tài)數(shù)組二維及多維動(dòng)態(tài)數(shù)組定義的格式如下:
type{數(shù)組類型標(biāo)識(shí)符=arrayofarrayof…arrayof基類型};12十二月2023DELPHI程序設(shè)計(jì)基礎(chǔ)教程5.4.2動(dòng)態(tài)數(shù)組例5-6:有N張牌,記為1,2,...,N,應(yīng)當(dāng)怎樣排放,才能使:打開第一張是1,然后報(bào)兩張依次放在末尾;打開上面一張,剛好是2;再依次報(bào)三張放在末尾,打開上面一張,剛好是3;如此繼續(xù)下去,直至打開最后一張是N。寫一個(gè)程序解決這個(gè)問題。12十二月2023DELPHI程序設(shè)計(jì)基礎(chǔ)教程5.4.3查找順序查找順序查找也稱線性查找,是一種最簡單的查找技術(shù),它順序地查閱各個(gè)數(shù)據(jù)記錄,直到找到所要的一個(gè)數(shù)據(jù)記錄,或抵達(dá)終點(diǎn)宣告查找失敗。例5-7:假設(shè)有n個(gè)記錄a[1],a[2],…,a[n],順序地存放在一記錄數(shù)組a中,其中,第i個(gè)記錄的鍵碼值為a[i].key?,F(xiàn)在已給一個(gè)關(guān)鍵數(shù)據(jù)x,將x依次與r[1].key,a[2].key,…進(jìn)行相等比較,當(dāng)找到第一個(gè)r[1].key=x,則查找成功,回送下標(biāo)i;否則,查找失敗,回送0。12十二月2023DELPHI程序設(shè)計(jì)基礎(chǔ)教程5.4.3查找二分查找二分查找也稱折半查找。二分查找不像順序查找那樣從第一個(gè)記錄開始逐個(gè)順序搜索,而是每次把要找的關(guān)鍵數(shù)據(jù)與中間位置的鍵碼值進(jìn)行比較。例5-8:設(shè)有序記錄數(shù)組a中每個(gè)記錄的鍵碼值按升序排列為a[1].key,a[2].key,…a[m].key,…,a[n].key。其中,n為記錄個(gè)數(shù),當(dāng)i<j時(shí)有a[i]≤a[j]。開始時(shí),中間位置的序號(hào)為m=(n+1)/2,相應(yīng)記錄的鍵碼值為a[m].key。將已給的關(guān)鍵數(shù)據(jù)x與a[m].key比較,有三種可能的結(jié)果:x<a[m].key。x=a[m].key。x>a[m].key。重復(fù)上述過程,當(dāng)最后只剩下一個(gè)記錄,而且此記錄不是要找的記錄,則宣告失敗。12十二月2023DELPHI程序設(shè)計(jì)基礎(chǔ)教程5.4.4排序排序的方法有很多種,我們這里只簡單介紹兩種:選擇排序和冒泡排序。選擇排序選擇排序的基本思想是:首先從要排序的數(shù)中選中最大的數(shù),將它放在第一個(gè)位置,然后從剩下的數(shù)中選中最大的數(shù)放在第二個(gè)位置,如此繼續(xù),直到最后從剩下的兩個(gè)數(shù)中選中最大的數(shù)放在倒數(shù)第二個(gè)位置,剩下的一個(gè)數(shù)放在最后位置,完成排序。例5-9:輸入20個(gè)數(shù),將它們從大到小的次序排列以后輸出。12十二月2023DELPHI程序設(shè)計(jì)基礎(chǔ)教程5.4.4排序冒泡排序冒泡排序的基本思想時(shí):依次比較相鄰的兩個(gè)數(shù),將大數(shù)放在前面,小數(shù)放在后面。即首先比較第一個(gè)和第二個(gè)數(shù),將大數(shù)放前,小數(shù)放后。然后比較第二個(gè)數(shù)和第三個(gè)數(shù),將大數(shù)放前,小數(shù)放后。如此繼續(xù),直到比較最后兩個(gè)數(shù),將大數(shù)放前,小數(shù)放后,此時(shí)第一次比較結(jié)束,在最后的數(shù)必是所有數(shù)中的最小數(shù)。重復(fù)以上過程,仍從第一對(duì)數(shù)開始比較(因?yàn)榭赡苡捎诘诙€(gè)數(shù)和第三個(gè)數(shù)的交換,使得第一個(gè)數(shù)不再大于第二個(gè)數(shù)),將大數(shù)放前,小數(shù)放后,已知比較到最小數(shù)前的一對(duì)相鄰數(shù),將大數(shù)放前,小數(shù)放后,第二次比較結(jié)束,在倒數(shù)第二個(gè)數(shù)中得到一個(gè)新的最小數(shù)。如此繼續(xù),直到最后一次比較,只比較第一對(duì)數(shù),大數(shù)放前,小數(shù)放后,從而最終完成排序。例5-10:輸入20個(gè)數(shù),用冒泡排序?qū)⑺鼈儚拇蟮叫〉拇涡蚺帕幸院筝敵觥?2十二月2023DELPHI程序設(shè)計(jì)基礎(chǔ)教程5.4.5數(shù)組參數(shù)數(shù)組在所有的編程語言中都是一個(gè)很重要的數(shù)據(jù)類型,是一個(gè)應(yīng)用和廣泛的技術(shù)。數(shù)組可以作為函數(shù)或過程的參數(shù),但要注意在對(duì)數(shù)組參數(shù)進(jìn)行聲明中不能包含數(shù)組索引類型的聲明。12十二月2023DELPHI程序設(shè)計(jì)基礎(chǔ)教程5.5記錄類型記錄類型(record)可以由不同類型的元素組成,這些元素稱為域。在記錄類型中為每個(gè)域指定了一個(gè)名稱和數(shù)據(jù)類型。數(shù)據(jù)類型可以是對(duì)象Pascal語言中預(yù)定義的類型,可以是相同的數(shù)據(jù)類型,也可以是不同的數(shù)據(jù)類型;這些數(shù)據(jù)可以是數(shù)值型的,也可以是非數(shù)值型的;還可以包括也可以是程序員自定義的類型。定義和變量聲明記錄類型的定義方式如下:typerecordTypeName=recordfieldList1:type1;…fieldListn:typen;end12十二月2023DELPHI程序設(shè)計(jì)基礎(chǔ)教程5.5記錄類型定義和變量聲明域?yàn)橛涗涱愋偷脑?。記錄的每個(gè)域都有名稱,不同域的數(shù)據(jù)類型可以各不相同,這一點(diǎn)是數(shù)組所不能做到的。引用記錄變量的元素采用以下標(biāo)記法:直接引用,其形式為:記錄變量名.域名使用with開域語句,其形式為:with記錄變量名do語句記錄的應(yīng)用例5-11:該例說明了記錄類型的定義與使用,同時(shí)也對(duì)with語句進(jìn)行了說明。12十二月2023DELPHI程序設(shè)計(jì)基礎(chǔ)教程5.6指針5.6.1指針的聲明5.6.2指針的賦值5.6.3無類型指針5.6.4字符指針類型5.6.5指針的動(dòng)態(tài)使用12十二月2023DELPHI程序設(shè)計(jì)基礎(chǔ)教程5.6.1指針的聲明在pascal中,指針變量(也稱動(dòng)態(tài)變量)存放某個(gè)存儲(chǔ)單元的地址;也就是說,指針變量指示某個(gè)存儲(chǔ)單元。在定義指針類型數(shù)據(jù)時(shí),要說明它所指向變量的類型。指針類型的定義形式如下:Type指針類型名稱=^基類型;(typepointerTypeName=^type)例5-12:該例對(duì)指針的定義和使用進(jìn)行了說明。(見教材)12十二月2023DELPHI程序設(shè)計(jì)基礎(chǔ)教程5.6.2指針的賦值對(duì)指針?biāo)赶虻淖兞靠梢赃M(jìn)行指針的基類型所允許的全部操作。對(duì)指針變量本身,除可用New、Dispose過程外,允許下列操作:具有同一基類型的指針變量之間相互賦值例5-13:把x變量的值賦給指針p的變量??梢越o指針變量賦nil值nil是Pascal的關(guān)鍵字,它表示指針的值為"空"。例5-14:給指針p賦空值,程序見教材。12十二月2023DELPHI程序設(shè)計(jì)基礎(chǔ)教程5.6.3無類型指針無類型指針是指在指針變量聲明時(shí)不指明其基類型的指針類型,無類型指針用類型標(biāo)識(shí)符pointer聲明。例如,以下定義的變量p可以指向任何變量類型。
Varp:pointer;12十二月2023DELPHI程序設(shè)計(jì)基礎(chǔ)教程5.6.4字符指針類型有一種特殊的指針,我們稱為字符指針,可以用來操作以零作為結(jié)束的字符串。在了解以零作為結(jié)束的字符串,我們必須先了解一種不固定長度的數(shù)組,但它有固定的形式,即:Array[0..x]ofchar;這種數(shù)組的索引從0開始,因此也可把它稱為以“0為基數(shù)的字符數(shù)組”,它通常用來保存以零作為結(jié)束的字符串。字符指針是事先定義好的指針類型,其中基本的字符指針類型有兩種,即PAnsiChar和PWideChar。PAnsiChar是指向AnsiChar類型的值的指針,而PWideChar則是指向WideChar類型的指針。還有一種通用的字符指針PChar,代表指向Char類型的值的指針。例5-15:使用三種特殊的指針類型,完成加減運(yùn)算。12十二月2023DELPHI程序設(shè)計(jì)基礎(chǔ)教程5.6.5指針的動(dòng)態(tài)使用開辟動(dòng)態(tài)存儲(chǔ)單元在pascal中,指針變量的值一般是通過系統(tǒng)分配的,開辟一個(gè)動(dòng)態(tài)存儲(chǔ)單元必須調(diào)用標(biāo)準(zhǔn)過程new。new過程的調(diào)用的一般格式:New(指針變量)功能:開辟一個(gè)存儲(chǔ)單元,此單元能存放的數(shù)據(jù)的類型正好是指針的基類型,并把此存儲(chǔ)單元的地址賦給指針變量。12十二月2023DELPHI程序設(shè)計(jì)基礎(chǔ)教程5.6.5指針的動(dòng)態(tài)使用釋放動(dòng)態(tài)存儲(chǔ)單元dispose語句的一般格式:dispose(指針變量)功能:釋放指針?biāo)赶虻拇鎯?chǔ)單元,使指針變量的值無定義。動(dòng)態(tài)存儲(chǔ)單元的引用在給一個(gè)指針變量賦以某存儲(chǔ)單元的地址后,就可以使用這個(gè)存儲(chǔ)單元
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度國際教育項(xiàng)目全新留學(xué)合同
- 2025年度員工股權(quán)激勵(lì)計(jì)劃實(shí)施協(xié)議書
- 2025年度文化創(chuàng)意公司兼職聘用員工合同
- 2025年度一手房帶家具家電裝修包購服務(wù)協(xié)議
- 2025年度中式餐廳轉(zhuǎn)讓及品牌推廣合同
- 醫(yī)院裝修監(jiān)理合作協(xié)議
- 2025年度出租房屋裝修工程結(jié)算及租賃服務(wù)協(xié)議
- 2025年度安全生產(chǎn)達(dá)標(biāo)廠房租賃服務(wù)合同
- 2025年度健身機(jī)構(gòu)教練職務(wù)聘用協(xié)議
- 2025年度商鋪物業(yè)管理與社區(qū)文化活動(dòng)合作協(xié)議
- 小兒急乳蛾(小兒急性扁桃體炎)中醫(yī)臨床路徑(2018年版)
- 地質(zhì)災(zāi)害安全教育 主題班會(huì)
- 10G409預(yù)應(yīng)力管樁圖集
- 市場營銷-OPPO手機(jī)市場營銷策略優(yōu)化研究
- 《電視節(jié)目制作》課件
- 小學(xué)生主題班會(huì) 愛國主義教育 課件(共35張PPT)
- XX大學(xué)學(xué)科競賽項(xiàng)目申請書
- 煤礦安全生產(chǎn)管理能力管理機(jī)制與創(chuàng)新管理課件
- 造血細(xì)胞與基本檢驗(yàn)方法-骨髓細(xì)胞基本形態(tài)及檢驗(yàn)(血液學(xué)檢驗(yàn)課件)
- 社會(huì)學(xué)概論全套PPT完整教學(xué)課件
- 艾梅乙的實(shí)驗(yàn)室診斷與溝通
評(píng)論
0/150
提交評(píng)論