枚舉子界集合(pascal程序語(yǔ)言基礎(chǔ)).ppt
《枚舉子界集合(pascal程序語(yǔ)言基礎(chǔ)).ppt》由會(huì)員分享,可在線(xiàn)閱讀,更多相關(guān)《枚舉子界集合(pascal程序語(yǔ)言基礎(chǔ)).ppt(46頁(yè)珍藏版)》請(qǐng)?jiān)谘b配圖網(wǎng)上搜索。
,枚舉、子界、集合,,pascal語(yǔ)言中的數(shù)據(jù)類(lèi)型,目前為止我們所用到的數(shù)據(jù)類(lèi)型包括:,整型(integerlongint……)實(shí)型(realdouble……)布爾型(boolean)字符型(char),以上數(shù)據(jù)類(lèi)型是pascal規(guī)定的標(biāo)準(zhǔn)數(shù)據(jù)類(lèi)型,只要用相應(yīng)的關(guān)鍵字,pascal編譯系統(tǒng)就能識(shí)別并按這些類(lèi)型來(lái)處理,pascal語(yǔ)言中的數(shù)據(jù)類(lèi)型,除以上標(biāo)準(zhǔn)數(shù)據(jù)類(lèi)型之外,pascal還允許用戶(hù)自定義數(shù)據(jù)類(lèi)型,變量與類(lèi)型:,vari:integer;r:real;,其表示的類(lèi)型含義為:,確定一個(gè)值域,即取值范圍(i變量為整型,表示i只能在整型數(shù)規(guī)定的-32768—32767這個(gè)范圍內(nèi)取值,超過(guò)此范圍就會(huì)出錯(cuò)確定數(shù)據(jù)的存儲(chǔ)方式(整型數(shù)據(jù)和實(shí)型數(shù)據(jù)在計(jì)算機(jī)中的存儲(chǔ)方式是不同的)規(guī)定的相應(yīng)運(yùn)算種類(lèi)(例如實(shí)型不能進(jìn)行DIV,MOD運(yùn)算),算法+數(shù)據(jù)結(jié)構(gòu)=程序,即:不同的數(shù)據(jù)類(lèi)型所使用的操作方法(算法)是不同的。,因此,針對(duì)具體的問(wèn)題選擇相應(yīng)的數(shù)據(jù)類(lèi)型是程序設(shè)計(jì)的關(guān)鍵,枚舉類(lèi)型,為什么要使用枚舉類(lèi)型:,如性別,月份,顏色,星期幾等一系列非數(shù)值問(wèn)題時(shí),我們應(yīng)當(dāng)怎樣處理?,例如:使變量sex為整型變量,ifsex=1thenwriteln(‘heisaman’)elsewriteln(‘sheisawomen’);,缺點(diǎn):不直觀,可讀性差,ifsex=manthenwriteln(‘heisaman’)elsewriteln(‘sheisawomen’);,如果寫(xiě)成:,事先考慮到某一變量盡可能取的值,盡量用自然語(yǔ)言中含義清楚的單詞來(lái)表示它的每一個(gè)值,這種方法稱(chēng)作枚舉方法,這種方法定義的類(lèi)型稱(chēng)為枚舉類(lèi)型。,枚舉類(lèi)型,枚舉類(lèi)型的定義:,type枚舉類(lèi)型標(biāo)識(shí)符=(標(biāo)識(shí)符1,標(biāo)識(shí)符2…………);,typecolor=(red,yellow,blue,white,black);xingbie=(man,women);,例如:定義顏色的枚舉類(lèi)型和性別的枚舉類(lèi)型,枚舉類(lèi)型,枚舉類(lèi)型的應(yīng)用舉例:,programex1;typesextype=(man,woman);varsex:sextype;beginsex:=women;ifsex=manthenwriteln(‘heisaman’)elsewriteln(‘heisawomen’);end.,programex2;typecolortype=(red,yellow,blue);varcolor:colortype;begincolor=red;casecolorofred:writeln(‘thecolorisred’);yellow:writeln(‘thecolorisyellow’);blue:writeln(‘thecolorisblue’);end;end.,枚舉類(lèi)型,枚舉類(lèi)型的數(shù)據(jù)性質(zhì):枚舉元素只能是標(biāo)識(shí)符,而不能是數(shù)字常量和字符常量,例如下面的定義是錯(cuò)誤的,typecolortpye=(‘red’,‘yellow’,‘blue’);numtype=(1,2,3,4,5);,類(lèi)型標(biāo)識(shí)符和枚舉元素不得使用pascal中的保留字和關(guān)鍵字,否則編譯時(shí)將出錯(cuò)誤,同一個(gè)枚舉元素不能出現(xiàn)在兩個(gè)或兩個(gè)以上的枚舉類(lèi)型定義中,typecolor1=(red,yellow,blue);color2=(red,black,white);是不允許的,因?yàn)閞ed同屬于了兩個(gè)枚舉類(lèi)型。,不要把作為枚舉元素的標(biāo)識(shí)符視為變量名,它是不能被賦值的,下面的賦值是錯(cuò)誤的,Red=‘red’woman=0,枚舉類(lèi)型,枚舉類(lèi)型屬于順序類(lèi)型。根據(jù)定義類(lèi)型時(shí)個(gè)枚舉元素的排列順序確定它們的序號(hào)。(前面的序號(hào)小,從0開(kāi)始)例如:,typecolortype=(red,yellow,blue,white,black);則ord(red)=0succ(red)=yellowpred(black)=white,枚舉類(lèi)型,枚舉型數(shù)據(jù)只能進(jìn)行關(guān)系運(yùn)算(=,,,>=)不能進(jìn)行算術(shù)運(yùn)算(+,-,*……)和邏輯運(yùn)算(and,or),枚舉變量的值只能用賦值語(yǔ)句來(lái)獲得,不能對(duì)枚舉變量進(jìn)行讀寫(xiě)。如下語(yǔ)句都是不合法的:,typecolortype=(red,yellow,blue,white,black);Varcolor:colortype;Beginread(color);或write(color);,總之:枚舉類(lèi)型的數(shù)據(jù)不能用read和write語(yǔ)句進(jìn)行讀寫(xiě),枚舉變量可以作為循環(huán)變量。枚舉元素可以作為循環(huán)的初值和終值。,如:forcolor:=redtoblackdo共執(zhí)行5次循環(huán)(color=red->yellow->blue->white->black),枚舉類(lèi)型,教材例6-1的分析,如:forcolor:=redtoblackdo共執(zhí)行5次循環(huán)(color=red->yellow->blue->white->black),枚舉類(lèi)型的應(yīng)用,Fori:=appletoorangedoforj:=succ(i)tobananadofork:=succ(j)dopineappledo可改成:Fori:=appletopineappledoforj:=appletopineappledoifijthenfork:=appletopineappledoif(ik)and(jk)thenbegin…,枚舉類(lèi)型的應(yīng)用例6-1解法2,constft:array[1..4]ofstring=(蘋(píng)果,橙子,香蕉,菠蘿);vari,j,k,l:0..1;beginfori:=0to1doforj:=0to1dofork:=0to1doforl:=0to1doifi+j+k+l=3thenbeginifi=1thenwrite(ft[1]);ifj=1thenwrite(ft[2]);ifk=1thenwrite(ft[3]);ifl=1thenwrite(ft[4]);writeln;end;end.,課堂練習(xí),取球問(wèn)題:求從紅、黃、藍(lán)、白、黑五種顏色的球中,取三種顏色的球的可能的取法,用red、yellow、blue、white、black描述三種上顏色的所有可能的取法。輸入格式:無(wú)輸出格式:輸出每種取法的序號(hào)(占4個(gè)字符位,左對(duì)齊)和三種顏色(每種顏色占10個(gè)字符位,左對(duì)齊)輸出樣例:RedyellowblueRedyellowwhite…,子界類(lèi)型,實(shí)際問(wèn)題:,一年中有多少個(gè)月?每一個(gè)月最多有多少天?一個(gè)班最多有多少個(gè)人?,integer類(lèi)型所表示的范圍是多少?,如果我們能在程序中對(duì)所有的變量的值域(取值范圍)作具體規(guī)定的話(huà),就便于檢查出那些不合法的數(shù)據(jù),例如一月中的日期只能是1-31之間的一個(gè)數(shù)值,由于誤操作輸入了32,pascal就能指出這個(gè)錯(cuò)誤,不需要人工的干預(yù).,子界類(lèi)型,子界類(lèi)型:規(guī)定的值域的上界和下界及其類(lèi)型的一種數(shù)據(jù)類(lèi)型,子界類(lèi)型的定義:,Typedays=1..31;Varsomeday:days,定義了一個(gè)days類(lèi)型的變量somedaysomeday變量值的數(shù)據(jù)類(lèi)型(基類(lèi)型)為整型someday的值只能在1——31范圍,子界類(lèi)型,子界類(lèi)型定義說(shuō)明:,上界和下界必須是順序類(lèi)型,且為同一順序類(lèi)型。也就是說(shuō)整型,字符型,布爾型,枚舉型數(shù)據(jù)都可以作為上、下界。并且上界序號(hào)必須大于下界序號(hào)。,Typeage=0.5..100letter1=0..’z’letter2=‘a(chǎn)’..’z’letter3=‘z’..’a’,以上定義的子界類(lèi)型中哪些正確、哪些錯(cuò)誤?為什么?,子界類(lèi)型的上、下界確定了子界類(lèi)型的基類(lèi)型。,由于1和31都是屬整型數(shù)據(jù),因此days類(lèi)型的基類(lèi)型為整型;someday變量的值為整型其值范圍在1—31之間,Typedays=1..31;Varsomeday:days,子界類(lèi)型,如果子界類(lèi)型的基類(lèi)型為枚舉型,則應(yīng)在類(lèi)型中先定義枚舉類(lèi)型,typeweek=(mon,tue,wed,thu,fri,sat,sun);studyday=mon..fri;varday1:studyday;,day1變量的值只能取mon,tue,wed,thu,fri之一,子界類(lèi)型,子界類(lèi)型的作用:,在程序設(shè)計(jì)中對(duì)數(shù)據(jù)“界”的檢查是很重要的一項(xiàng)工作而又常常被人忽略。定義子界類(lèi)型后,就可以把界的檢查工作交給編譯器完成,不需要人工進(jìn)行。節(jié)省內(nèi)存空間,增強(qiáng)程序的可讀性。,子界類(lèi)型,子界類(lèi)型的運(yùn)算規(guī)則:,凡可以使用子界類(lèi)型的基類(lèi)型數(shù)據(jù)之處,均可以使用子界類(lèi)型的數(shù)據(jù)。,typer=1..10;Varradius:r;,問(wèn)sqr(radius)合法嗎?,對(duì)基類(lèi)型的運(yùn)算規(guī)則同樣適用于該類(lèi)型的子界類(lèi)型。,Typeperson=1..100;Vartotal:person;問(wèn):totaldiv100totalmod100合法嗎?,基類(lèi)型相同的不同子界類(lèi)型數(shù)據(jù),可以出現(xiàn)在同一個(gè)表達(dá)式內(nèi),即混合運(yùn)算,typea=1..100;b=1..1000;c=1..500;varx:a;y:b;z:c;t:integer;beginread(x,y,z);t:=x+y+z;writeln(‘t=‘,t);end.,輸入:50100150,問(wèn):將紅色標(biāo)出部分改為z:=x+y+z;合法嗎?,子界類(lèi)型,結(jié)論:在上例中當(dāng)然也可以將表達(dá)式的值賦給一個(gè)子界類(lèi)型變量,因?yàn)楸磉_(dá)式中的幾個(gè)子界類(lèi)型的變量的基類(lèi)型都是整型,但是要注意:運(yùn)算結(jié)果不能超出它在類(lèi)型說(shuō)明中定義的范圍,,,,,,上例中如果將紅色標(biāo)出部分改為x:=x+y+z;合法嗎?,X為50,y為100,z為150,將運(yùn)算結(jié)果x+y+z的值300賦給x,這超出了x的取值范圍(0..100),就會(huì)出錯(cuò)。,子界類(lèi)型,programcas;varc:char;beginreadln(c);casecof0..9:writeln(digits);A..Z:writeln(UPPER-CASELETTERS);a..z:writeln(lower-caseletters);elsewriteln(specialcharactors);end;end.,可以利用子界類(lèi)型作為情況語(yǔ)句標(biāo)號(hào),對(duì)數(shù)字,大小寫(xiě)字母和特殊字符進(jìn)行判別的程序,,集合,1.集合的定義2.集合的表示3.集合的運(yùn)算,集合(數(shù)學(xué)),集合的概念:某些具有共性,又相互區(qū)別的對(duì)象匯集在一起所構(gòu)成的整體,0—20之間的所有素?cái)?shù);{共性:小于20的素?cái)?shù),相互區(qū)別:各元素有不同的值}26個(gè)小寫(xiě)英文字母;(共性:小寫(xiě)英文字母,相互區(qū)別:各自的寫(xiě)法和讀法都不同。,集合的表示方法(數(shù)學(xué)),1.枚舉法:將集合中的所有元素列舉出來(lái),對(duì)于上例1可寫(xiě)成:,元素,{2,3,5,7,11,13,17,19},,,集合,集合的特點(diǎn):1.同一性;2.無(wú)序性;3.唯一性,集合的特征:,無(wú)序性:,{1,3,5,7}={1,5,3,7},唯一性:,{1,3,5,7}={1,5,3,3,7},元素與集合的關(guān)系,2.不屬于,5∈{2,3,5,7,11,13,17,19},1.屬于,一個(gè)元素可以屬于和不屬于某一個(gè)集合,分別用∈和∈表示,5∈{2,4,6,8,10,12,14,16},,,集合和集合間的關(guān)系,1.相等關(guān)系,兩個(gè)集合的成員完全相同時(shí),稱(chēng)這兩個(gè)集合相等。,{2,3,5,7}={2,3,5,7},{2,3,5,7}={2,5,3,7},{2,3,5,7}={2,5,3,3,7},集合和集合間的關(guān)系,集A的所有成員都是集B的所有成員時(shí),稱(chēng)B蘊(yùn)含A,或稱(chēng)A是B的子集合,,2.蘊(yùn)涵關(guān)系,{2,3}{2,3,5,7},{2,3,5,7}{2,3,5,7},{2,3,9}{2,3,5,7},問(wèn),集合和集合間的關(guān)系,3.空集:,空集是任何集合的子集,4.冪集:一個(gè)集合的所有子集所組成的集合稱(chēng)為此集合的冪集。,{1,2,3}的冪集是:,{{},{1},{2},{3},{1,2},{1,3},{2,3},{1,2,3}},集合的運(yùn)算,1.交運(yùn)算,A∩B,{1,2,3}∩{2,3,5,7}={2,3},集A和集B共有的成員所組成的集合,集合的運(yùn)算,1.并運(yùn)算,A∪B,{2,3,5}∪{5,7}={2,3,5,7},集A和集B的所有成員并起來(lái)(重復(fù)的只算一個(gè))所組成的一個(gè)新集合,集合的運(yùn)算,1.差運(yùn)算,A-B,{2,3,5}-{5,7}={2,3},集A的成員去掉集B中也包含的成員所組成的一個(gè)新集合;(相當(dāng)于A-(A∩B)),,,A,B,,,,,,,,,,,,,,,1.集合的定義:,基類(lèi)型:表示集合中元素的類(lèi)型,可以是整數(shù)類(lèi)型的某一子界,字符型,布爾型,枚舉型。注意:pascal規(guī)定一個(gè)集合里的元素必須是同一數(shù)據(jù)類(lèi)型。,Pascal定義集合類(lèi)型的一般形式:,=setof<基類(lèi)型>,2、在pascal中怎么表示和使用集合,typeint1=0..255;weekday=(sun,mon,tue,wed,thu,fri,sat,sun);weekset=setofweekday;intset=setofint1varwvar:weekset;ivar:intset;或?qū)懗蓈arwvar:setofweekday;ivar:setofint1;,規(guī)則:1.pascal規(guī)定一個(gè)集合的元素個(gè)數(shù)不能超過(guò)256個(gè);(也就是說(shuō)基類(lèi)型所表示的值(整數(shù))的范圍不能超過(guò)256)2.基類(lèi)型的序數(shù)值必須在0—255的范圍內(nèi)。,思考typeint0=setofinteger;int1=setof-20..100;int2=setof50..300;int3=[1,sqrt(4),sqrt(4)+1,sqr(4)],在pascal中使用集合的一些規(guī)則:,1.表示集合的符號(hào)是[]。例如:[2,3]2.集合的值放在一對(duì)[]中,各元素用“,”隔開(kāi)。3.集合內(nèi)的值與[]內(nèi)元素出現(xiàn)的次序無(wú)關(guān)。[2,3]=[3,2]4.集合中的同一元素的重復(fù)出現(xiàn)對(duì)集合的值沒(méi)有影響。[2,2,3]=[2,3]5.“[]”用來(lái)表示空集。6.集合中,如果元素的值是連續(xù)的,則可用“..”來(lái)表示。[1,2,3,4,5,7,8,9]=[1..5,7..9]7.每個(gè)元素可以用基類(lèi)型的表達(dá)式來(lái)表示。[1,succ(4),ord(‘a(chǎn)’),pred(4)],集合的運(yùn)算的數(shù)學(xué)符號(hào)和pascal符號(hào)對(duì)照表,3、集合類(lèi)型的運(yùn)算規(guī)則,集合變量的讀入:,只能通過(guò)賦值語(yǔ)句給集合變量賦值,不能用read語(yǔ)句給集合變量賦值。(跟枚舉類(lèi)型變量一樣),color:=[];color2:=[red,black];,集合并,交,差運(yùn)算:,+,*,-,A:=[1,3,4];B:=[1,2,4];A+B=?A-B=?A*B=?,集合的關(guān)系運(yùn)算:,=,=,,[1,3,5]<=[1,5][1,3,5]<=[1,5,3,7][]<=[1,5,3],集合元素的測(cè)試:(in),判斷一個(gè)元素是否在某個(gè)集合當(dāng)中。,1in[1,5,3,7]7in[1,5,3],集合的輸出:不能直接用write語(yǔ)句對(duì)集合變量進(jìn)行輸出,4、集合例題,1.若a是[‘a(chǎn)’,’c’,’f’,’u’],b是[‘c’,’d’,’e’,’f’,’g’,’h’],c是[‘f’,’m’,’p’],計(jì)算下列各語(yǔ)句中x的值。(1)x:=a+b(2)x:=(c-a)*b(3)x:=a+a*a-a,2.若a是[‘k’,’l’,’m’,’n’],b是[‘l’,’m’,’n’,’k’],c是[‘i’..’p’],d是[],e是[‘k’],計(jì)算下列布爾表達(dá)式的值(判斷哪些是錯(cuò)的)。c=b(4)a=b(5)bc(6)’I’inc,1.輸入一段句子并以“.”結(jié)尾,統(tǒng)計(jì)元音字母和輔音字母出現(xiàn)的次數(shù)。Input:HelloKitty.Output:yuan=3fu=7,2.用集合篩選法1求自然數(shù)M與N之間(小于256)的素?cái)?shù)。程序文件:(gray6e1.pas)Input:(gray6e1.in)1020Output:(gray6e1.out)11131719,編程練習(xí),3.任意給出一個(gè)正整數(shù)N,找出一個(gè)正整數(shù)M,使得N*M的值的數(shù)字由0、1……、C(C<=9)組成,且這些數(shù)字至少出現(xiàn)一次。編寫(xiě)程序在整數(shù)的范圍內(nèi)找出滿(mǎn)足條件的最小M。若沒(méi)有信息,則輸出‘NOFOUND‘。程序文件:(test.pas)Input:(test.in)C=3N=65C=3N=10C=8N=125Output:(test.out)65*48=321010*123=1230‘NOFOUND’,- 1.請(qǐng)仔細(xì)閱讀文檔,確保文檔完整性,對(duì)于不預(yù)覽、不比對(duì)內(nèi)容而直接下載帶來(lái)的問(wèn)題本站不予受理。
- 2.下載的文檔,不會(huì)出現(xiàn)我們的網(wǎng)址水印。
- 3、該文檔所得收入(下載+內(nèi)容+預(yù)覽)歸上傳者、原創(chuàng)作者;如果您是本文檔原作者,請(qǐng)點(diǎn)此認(rèn)領(lǐng)!既往收益都?xì)w您。
下載文檔到電腦,查找使用更方便
9.9 積分
下載 |
- 配套講稿:
如PPT文件的首頁(yè)顯示word圖標(biāo),表示該P(yáng)PT已包含配套word講稿。雙擊word圖標(biāo)可打開(kāi)word文檔。
- 特殊限制:
部分文檔作品中含有的國(guó)旗、國(guó)徽等圖片,僅作為作品整體效果示例展示,禁止商用。設(shè)計(jì)者僅對(duì)作品中獨(dú)創(chuàng)性部分享有著作權(quán)。
- 關(guān) 鍵 詞:
- 枚舉 集合 pascal 程序語(yǔ)言 基礎(chǔ)
鏈接地址:http://www.hcyjhs8.com/p-12184956.html