枚舉子界集合記錄_第1頁
枚舉子界集合記錄_第2頁
枚舉子界集合記錄_第3頁
枚舉子界集合記錄_第4頁
枚舉子界集合記錄_第5頁
已閱讀5頁,還剩18頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、枚舉子界集合記錄枚舉枚舉定義:有些變量的取值是確定的一些內(nèi)容,例如一周有7天,一年有12個(gè)月,可以將其逐一列舉出來。格式一:type 枚舉類型名=(枚舉值1,枚舉值2,枚舉值n); var 枚舉變量名:枚舉類型名;格式二:var 枚舉變量名:(枚舉值1,枚舉值2,枚舉值n);例題: type daytype=(sun,mon,tue,wed,thu,fri,sat); colortype=(red,yellow,blue,black); var d1,d2:daytype; c:colortype;或:var d1,d2:(sun,mon,tue,wed,thu,fri,sat); c:(re

2、d,yellow,blue,black);枚舉的特點(diǎn):枚舉的特點(diǎn):1、枚舉值只能是標(biāo)識(shí)符,而不能是數(shù)值常量或字符常量,也不能被賦值。如:以下兩種定義都是錯(cuò)誤錯(cuò)誤的。type monthtype=(1,2,3,4,5,6,7,8,9,10,11,12); colortype=(red,yellow,blue,black);2、同一枚舉元素不能出現(xiàn)在兩個(gè)或兩個(gè)以上的枚舉類型定義中。如:以下定義是錯(cuò)誤錯(cuò)誤的,black既屬于color1,又屬于color2。type color1=(red,yellow,blue,black); color2=(black,green,white);枚舉的特點(diǎn):枚舉

3、的特點(diǎn):3.1枚舉類型屬于順序類型,序號(hào)從0開始,可用ord函數(shù)求出枚舉值的序號(hào)。如:var d:(sun,mon,tue,wed,thu,fri,sat); c:(red,yellow,blue); ord(sun)的值為0,ord(fri)的值為5,ord(blue)的值為2。3.2可用succ和pred函數(shù)求出枚舉值的后繼和前趨。 枚舉類型的第一個(gè)元素沒有前趨,最后一個(gè)元素沒有后繼。如:pred(tue)的值為mon,succ(red)的值為yellow。3.3可以作為循環(huán)控制變量如:for c:=red to blue do write(ord(c); 將輸出4個(gè)枚舉值的序號(hào):0、1、

4、2。3.4可以作為case語句的選擇表達(dá)式如:case c of red:writeln(the car is red.); yellow:writeln(the car is yellow.); blue:writeln(the car is blue.); end;枚舉的特點(diǎn):枚舉的特點(diǎn):4、枚舉值不允許不允許直接輸入輸出,常通過case語句間接地輸入輸出。輸入時(shí),一般先讀入序號(hào),通過case語句將枚舉值相應(yīng)地賦給枚舉變量;輸出時(shí),通過case語句判斷枚舉類型變量的值,輸出相應(yīng)的字符串。如:輸入顏色的首字母,輸出相應(yīng)的英文單詞。var c:(red,yellow,blue); ch:cha

5、r;begin read(ch); case ch of r:c:=red; y:c:=yellow; b:c:=blue; end; case c of red:writeln(Red); yellow:writeln(Yellow); blue:writeln(Blue); end;end.例:現(xiàn)有四種水果:蘋果、橘子、香蕉、菠蘿。從四種水果中任取三種, 不能重復(fù)和不計(jì)順序。編程列出一切組合。 type fruit=(apple,orange,banana,pineapple);var i,j:fruit;begin for i:=apple to pineapple do begin f

6、or j:=apple to pineapple do if ij then case j of apple:write(apple:12); orange:write(orange:12); banana:write(banana:12); pineapple:write(pineapple:12); end; writeln; end; readln;end.解法一:var i,j,k,p,l:integer;begin for i:=1 to 2 do for j:=i+1 to 3 do for k:=j+1 to 4 do begin for l:=1 to 3 do begin c

7、ase l of 1:p:=i; 2:p:=j; 3:p:=k; end; case p of 1:write(apple:12); 2:write(orange:12); 3:write(banana:12); 4:write(pineapple:12); end; end; writeln; end;end.解法二:例:現(xiàn)有四種水果:蘋果、橘子、香蕉、菠蘿。從四種水果中任取三種, 不能重復(fù)和不計(jì)順序。編程列出一切組合。 【解法二思路簡析】: 三重for循環(huán)分別設(shè)定i,j,k變量的值。由于水果總數(shù)是4種,為敘述方便,分別設(shè)為1號(hào)、2號(hào)、3號(hào)、4號(hào)?,F(xiàn)在想象,有個(gè)大佬(i)帶了一個(gè)副手(j)和

8、一個(gè)小弟(k)來了,大佬的等級(jí)觀念特強(qiáng)。他先取,他會(huì)取什么呢,他只會(huì)取1號(hào)2號(hào)兩種之一,為什么不取3號(hào)或4號(hào)呢,他得留兩個(gè)給手下啊。(他真要是取了3號(hào)或4號(hào),手下豈不要取前面的1號(hào)或2號(hào)嗎,這一來等級(jí)就混亂了。)所以 for i:=1 to 2 就是這意思。現(xiàn)在輪到副手來取了,他會(huì)取什么呢?作為大佬的手下,是絕不會(huì)越級(jí)的,他敢越級(jí)嗎?所以,他得小心翼翼地看大佬到底取了什么。大佬若取了1號(hào),他就可以放心取2號(hào)或3號(hào)。大佬若取了2號(hào),他就只能取3號(hào)了。(4號(hào)他是不會(huì)取的,因?yàn)楹竺孢€有個(gè)小弟,等級(jí)是不能亂的。)所以 for j:=i+1 to 3 就是這意思。最后輪到小弟了,同樣由于等級(jí)觀念,他絕不

9、會(huì)擅自取比大佬和副手更好的水果。(即使大佬取2號(hào),副手取3號(hào),剩下1號(hào)4號(hào),小弟也不會(huì)取1號(hào)的,而只會(huì)取4號(hào)而已。)所以小弟是看副手怎么取,他才取之后號(hào)碼的。for k:=j+1 to 4 就是這意思。這樣的三重循環(huán)就可以每次產(chǎn)生一組數(shù)字序列,并且每種序列都可以保證是小數(shù)字在前,大數(shù)字在后。子界子界定義:在處理人的年齡、一年中的12個(gè)月份這樣的數(shù)據(jù)時(shí),可以使用整型數(shù)據(jù), 但范圍太大??梢韵薅〝?shù)據(jù)的范圍,使其是原數(shù)據(jù)類型的一部分。格式一:type 子界類型名=常量1.常量2; var 子界變量名:子界類型名;格式二:var 子界變量名:常量1.常量2;注意注意:常量1稱作下界,常量2稱作上界,且

10、上界必須大于下界。下界和上界可以是整型、字符型、布爾型、枚舉型等順序型順序型的兩個(gè)常量,但必須是同一種順序類型,該順序類型稱為子界類型的“基類型”。如:typeage=0.150; 人的年齡范圍0歲到150歲,基類型為整型month=1.12; 月份從1到12,基類型為整型score=A.E; 成績分A,B,C,D,E5個(gè)等級(jí),基類型為字符型再如:type weekdays=(sun,mon,tue,wed,thu,fri,sat); workdays=mon.fri;其中:枚舉類型weekdays定義了一星期中的7天后,可以用子界類型workdays定義其中的5個(gè)工作日。子界的特點(diǎn):子界的特

11、點(diǎn):1、對(duì)基類型適用的各種運(yùn)算,均適用于該子界類型。 整型的子界類型可以直接輸入輸出,可以參與算術(shù)運(yùn)算和關(guān)系運(yùn)算; 字符型的子界類型可以直接輸入輸出,可以參與關(guān)系運(yùn)算; 布爾型的子界類型可以參與關(guān)系運(yùn)算和邏輯運(yùn)算; 注意:注意:實(shí)型不存在子界類型。2、同一程序中,具有相同基類型的不同子界類型的數(shù)據(jù)可以混合運(yùn)算但 結(jié)果不能超出各自的值域范圍。3、子界類型可以作為情況語句(CASE語句)標(biāo)號(hào)。例題:子界范圍var a:integer; b:-100.100; c:10.30; d:char; e:1.5; f:boolean; g:false.true;begin a:=20; b:=a; c:=

12、b; a:=b+c; d:=2; e:=d; d:=succ(e); f:=ab; g:=not f;end.例題:子界作為情況語句標(biāo)號(hào)var c:char;begin readln(c); case c of 0.9:writeln(digits); A.Z:writeln(UPPER-CASELETTERS); a.z:writeln(lower-caseletters); else writeln(special charactors); end;end.集合集合定義:集合是具有共同性質(zhì)的一組數(shù)據(jù)構(gòu)成的整體,集合中的元素叫集合元素,簡稱元素。集合是由同一種有序類型的一組數(shù)據(jù)元素所組成,這

13、種有序類型稱為該集合的基類型。格式一:type 集合類型名=set of 基類型; var 集合變量名:集合類型名;格式二:var 集合變量名:set of 基類型;注意:類型名應(yīng)是合法的標(biāo)識(shí)符;基類型是集合中的元素的類型,必須是有序類型或有序類型的子界類型,元素的序號(hào)范圍必須在0到255之間。以下集合定義是錯(cuò)誤錯(cuò)誤的:type t1:set of integer;整型的元素超過了256個(gè) t2:set of -30.-20; 元素序號(hào)超過了0255范圍 t3:set of real;實(shí)型不是有序類型集合的表示:集合的表示:集合是通過列舉集合元素來表示的,用一對(duì)方括號(hào)括起一組元素,元素之間用逗

14、號(hào)隔開。格式為:元素1,元素2,元素n如:“10以內(nèi)的質(zhì)數(shù)的集合”可以表示為2,3,5,7。在一個(gè)集合中可以沒有任何元素,稱為空集,用 表示。任何集合都是其自身的子集,空集是任何集合的子集。如:1,2,3的子集有8種: ,1,2,3,1,2,1,3,2,3,1,2,3。(1)集合中各元素的書寫順序不影響集合的值;如:1,2和2,1表示的是同一個(gè)集合。(2)集合中重復(fù)書寫的元素也不影響集合的值;如:1,2,2和1,2,1,2,1表示的集合實(shí)際上就是1,2。(3)在集合中,如果元素的值是連續(xù)的,可以用子界類型表示;如:1,2,3,4,8,9,10可以表示成1.4,8.10。(4)集合中的元素可以用

15、常量表示,也可以用變量表示或者其基類型允許的表達(dá)式。如:若x是整型變量,值為3,則1,2,x,4和1,x-1,x,x+1,5的集合都是合法的。集合的操作:集合的操作:(1)賦值:對(duì)集合變量的賦值只能通過賦值語句完成,且賦值號(hào)右邊必須是一個(gè)集合(賦值相容性原理),而不能通過輸入語句(read或readln)來進(jìn)行。如:var s:set of 0.255; i:integer; a,b:0.255; begin s:= ; 首先將集合s置空 for i:=1 to 10 do begin read(a); s:=s+a; 添加數(shù)到集合s中 end; for b:=0 to 255 do 判斷集合

16、s中取值范圍的每一個(gè)值是否包含元素b if b in s then write(b, ); end.(2)運(yùn)算:運(yùn)算符名稱表示形式定義運(yùn)算結(jié)果假設(shè)有A,B兩個(gè)集合,其中A=1,3,4,5,B=4,5,6,7+并集A+B取兩個(gè)集合中不重復(fù)的所有元素1,3,4,5,6,7*交集A*B取兩個(gè)集合中的相同元素4,5-差集A-B取在集合A中但又不在集合B中的所有元素1,3假設(shè)有A,B兩個(gè)集合,其中A=1,3,4,5,B=1,3,4=相等A=B測(cè)試兩個(gè)集合是否相等false不相等AB測(cè)試兩個(gè)集合是否不相等true=包含于A=包含A=B測(cè)試集合A是否包含集合B中的所有元素true假設(shè)元素x=1,集合A=1,

17、2,3,4in屬于集合/成員x in A判讀元素是否屬于集合true注意事項(xiàng):注意事項(xiàng):(1)集合類型是一種使用簡便,節(jié)省內(nèi)存又運(yùn)算速度快的數(shù)據(jù)類型。集合運(yùn)算相當(dāng)快,在程序中常用集合表達(dá)式來描述復(fù)雜的測(cè)試。如:(ch=T) or (ch=t) or (ch=Y) or (ch=y) 可用集合表達(dá)式表示為:ch in T,t,Y,y if (ch=20) and (ch=50) then .; 可寫成:if ch in 20.50 then .;(2)集合類型變量不能進(jìn)行算術(shù)運(yùn)算,不允許用讀/寫語句直接輸入/輸出集合。所以集合的建立要通過賦值語句實(shí)現(xiàn),或先初始化一個(gè)集合,然后通過并運(yùn)算向集合中逐

18、步加入各個(gè)元素。(3)集合元素是無序的,所以ord,pred和succ函數(shù)不能用于集合類型的變量。 習(xí)題:用篩選法求n以內(nèi)的所有素?cái)?shù)?!舅惴ㄈ缦隆砍跏蓟涸O(shè)一個(gè)2到n的全體整數(shù)集合,即s:=2.n, 同時(shí)設(shè)一個(gè)空集合存放結(jié)果,即p:= ;i從集合s中最小的數(shù)開始;將i添加到p中,然后將s中所有i的倍數(shù)從s中篩去;循環(huán)重復(fù),直到篩空s。記錄記錄定義:計(jì)算機(jī)中的數(shù)據(jù)類型都是根據(jù)現(xiàn)實(shí)需求引入的,如:數(shù)值數(shù)據(jù)整型和實(shí)型;文本數(shù)據(jù)字符和字符串類型;同類的一組數(shù)據(jù)數(shù)組類型。但現(xiàn)實(shí)中有些數(shù)據(jù)對(duì)象是由不同類型的數(shù)據(jù)項(xiàng)組成的整體。如:一本書的相關(guān)信息。如:一本書的相關(guān)信息。書名:書名:Pascal語言(中學(xué)版)

19、語言(中學(xué)版)出版社:北京理工大學(xué)出版社出版社:北京理工大學(xué)出版社定價(jià):定價(jià):30.00元元其中,書名、出版社是不同長度的字符串類型,定價(jià)是實(shí)型??梢杂?個(gè)單獨(dú)的變量來表示這些數(shù)據(jù),但無法體現(xiàn)它們的關(guān)系,也無法進(jìn)行整體操作。因此,Pascal提供了記錄類型。記錄記錄(record)是由一組不同類型的數(shù)據(jù)項(xiàng)構(gòu)成的整體,記錄中的數(shù)據(jù)項(xiàng)叫做記錄是由一組不同類型的數(shù)據(jù)項(xiàng)構(gòu)成的整體,記錄中的數(shù)據(jù)項(xiàng)叫做記錄的域的域(field)。格式一:格式一:type 記錄類型名=record域名1:類型1; 域名2:類型2; . 域名n:類型n; end; var 變量名:記錄類型名;其中,記錄的類型名和各個(gè)域名都必

20、須是合法標(biāo)識(shí)符,域的數(shù)據(jù)類型可以是標(biāo)準(zhǔn)數(shù)據(jù)類型,也可以自定義數(shù)據(jù)類型。格式二:格式二:var 變量名:record 域名1:類型1; 域名2:類型2; . 域名n:類型n; end;如:type booktype=record; title:string50; publisher:string50; price:real;end;var book1:booktype;或:var book1:record; title:string100; publisher:string50; price:real;end;如:定義學(xué)生的相關(guān)信息:學(xué)號(hào) 字符串類型姓名 字符串類型年齡 整型性別 字符型是否團(tuán)員

21、 布爾型家庭住址 字符串類型電話號(hào)碼 字符串類型語文成績 實(shí)型數(shù)學(xué)成績 實(shí)型英語成績 實(shí)型政治成績 實(shí)型歷史成績 實(shí)型type studata=record num:string6; name:string10; age:integer; sex:char; ty:boolean; add:string30; tel:string12; Chinese:real; Maths:real; English:real; Politics:real; History:real; end;記錄成員的引用:記錄成員的引用:(1)直接引用:記錄名.域名記錄中的每個(gè)域都相當(dāng)于一個(gè)相應(yīng)數(shù)據(jù)類型的變量,可以對(duì)其進(jìn)行相應(yīng)

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(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)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論