




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、Pascal基礎(chǔ)知識一、Pascal程序設(shè)計基礎(chǔ)1、Pascal語言程序的基本結(jié)構(gòu): 變量說明常量說明程序體執(zhí)行部分程序首部例:輸入半徑,求出圓的周長和面積。Program example1(input,output);const pi=3.14159;var c,s,r:real;beginread(r);c:= pi*2*r;求周長s:= pi*r*r;求面積write(c,s);輸出周長和面積end.PASCAL規(guī)定,用"program"來標(biāo)識這是一個PASCAL 程序,任何一個PASCAL程序的首部都必須以此字開頭。PASCAL規(guī)定,凡程序中用到所有變量、符號常量、
2、數(shù)組、標(biāo)號、過程與函數(shù)、記錄、文件等數(shù)據(jù)都必須在說明部分進(jìn)行定義(或稱"說明")。PASCAL規(guī)定,執(zhí)行部分以"begin"開始,以"end."結(jié)束,語句之間以分號隔開。2、標(biāo)準(zhǔn)數(shù)據(jù)類型(1)、實型(real):最常用的數(shù)據(jù)類型。有兩種表示方法:小數(shù)表示法和科學(xué)表示法。小數(shù)表示法的例子:1.25,-1.6,0.0,100.0科學(xué)表示法的實數(shù):1.25e0,-1.6e0,0e0,1e2e后的數(shù)字代表10的冪,比如1.25e0=1.25×100。實型量的運算有:+、-、*、/用于實型量的標(biāo)準(zhǔn)函數(shù)有:abs(絕對值);sqr(平方
3、);sqrt(開方);sin(正弦);cos(余弦);arctan(反正切):函數(shù)的結(jié)果為弧度;exp(以e為底的指數(shù)):那么e2.5=exp(2.5);ln(自然對數(shù));trunc(取整):去掉小數(shù)部分;round(舍入取整):將小數(shù)部分四舍五入后得到最接近它的數(shù)。如:trunc(1.2)=1;round(1.2)=1; trunc(1.8)=1;round(1.8)=2; trunc(-3.6)=-3;round(-3.6)=-4;(2)、整型(integer):包括正、負(fù)整數(shù)和零。不能有小數(shù)點。Integer是整型標(biāo)準(zhǔn)類型標(biāo)識符。實型量的運算有:+、-、*、DIV(整除)、MOD(取余)
4、用于整型量的標(biāo)準(zhǔn)函數(shù)有:abs(絕對值);sqr(平方);pred(前導(dǎo)):取自變量的前一個值。如pred(5)=4;succ(后繼):取自變量的后一個值。如pred(-5)=-4;odd(奇函數(shù)):odd(7=true)、odd(6)=false;chr(取字符):chr(65)=A。標(biāo)準(zhǔn)函數(shù)sin、cos、arctan、exp、ln、sqr也可以用整型量,但其結(jié)果均為實型。例如sqrt(4)=2.0;(不是sqrt(4)=2)實型數(shù)與整型數(shù)的主要差別是:計算機(jī)能表示的實數(shù)的絕對值為10-38-1038,而整數(shù)為-32768-32767。實型量和整型量運算的結(jié)果是實型量。如:4×0
5、.25+1=2.0。(3)、字符型(char):括在單引號中的一個字符。如:A、a 、(空格)、(字符)ABC是字符串,單引號中只有一個字符的才是字符數(shù),用于整型量的標(biāo)準(zhǔn)函數(shù)有:ord(取序號):ASC碼中字符的值,如ord(A)=65;pred(前導(dǎo)):前一個字符,如pred(b)= a;succ(后繼):后一個字符,如succ(b)= c;(4)、布爾型(boolean):只有兩個值false(假)和true(真)。False的序號為0;true的序號為1。用于布爾型的標(biāo)準(zhǔn)函數(shù)有:ord(取序號):ord(false)=0;ord(true)=1;pred(前導(dǎo)):pred(true)=
6、false;succ(后繼):succ(false)= true;false沒有前導(dǎo),true沒有后繼。用于布爾量的運算有布爾運算,也叫邏輯運算。3、表達(dá)式和賦值語句賦值語句是pascal程序中最常用的語句,它的一般形式為:<變量>:=<表達(dá)式>;計算右端表達(dá)式的值然后將這個值賦給左端的變量。4、read語句read語句是讀語句。一般形式:read (<輸入變量表>)一個讀語句可以讀入多個值,此時變量用“,”隔開,例如read(x,y,z);輸入時各數(shù)值以空格分開。輸入數(shù)據(jù)和輸入變量必須賦值相容。readln()語句,它與read()語句的差別是在完成該語句
7、的最后一個變量值輸入之后,將結(jié)束包括這個數(shù)值的這一行,使下一個read()語句(或readln())從下一行開始輸入新的數(shù)據(jù)。輸入數(shù)據(jù): 執(zhí)行輸入語句: 執(zhí)行結(jié)果為:1.5 2.4 3.6 read(a,b); a=1.5,b=2.44.0 5.9 6.0 read(c,d); c=3.6,d=4.0,輸入數(shù)據(jù): 執(zhí)行輸入語句: 執(zhí)行結(jié)果為:1.5 2.4 3.6 readln(a,b); a=1.5,b=2.44.0 5.9 6.0 readln(c,d); c=4.0,d=5.95、write語句write語句是寫語句。一般形式:write(<輸出變量表>)一個寫語句可以輸出多
8、個值,此時變量用“,”隔開,例如write(x,y+x,z*y);若為變量 ,輸出變量的值;若為表達(dá)式,計算表達(dá)式的值,然后輸出此值;若為字符串(用兩個單引號括起來的一串字符),則輸出字符串本身。為了將結(jié)果打印在不同的行上,可以利用writeln()語句。它的作用是在輸出最后一個輸出項后結(jié)束當(dāng)前輸出行。比如: write(A, B);write(C, D);的輸出結(jié)果為ABCDwriteln(A, B);writeln(C, D);的輸出結(jié)果為ABCD Readln和writeln語句也可以不包括輸入、輸出表單獨使用。前者用于結(jié)束當(dāng)前輸入行,后者用于結(jié)束當(dāng)前輸出行,指向下一行。例如: read
9、(x,y);readln;等價于 readln(x,y);write(x,y);writeln;等價于 writeln(x,y); 可以通過添加場寬說明來控制輸出所占的場寬。常寬說明是在輸出項之后加冒號,再加整型數(shù)或表達(dá)式確定輸出項所占的場寬。當(dāng)場寬說明大于輸出數(shù)據(jù)時,左面補(bǔ)上空格,場寬說明小于輸出數(shù)據(jù)要求的字符數(shù)時,將自動突破場寬限制說明,按實際所需要的字符數(shù)輸出整數(shù)、布爾值以及字符串。對于實型數(shù),當(dāng)場寬說明較小時,輸出時小數(shù)位數(shù)將減少,但不論場寬說明多么小,輸出時至少保留1位小數(shù)。對于實型數(shù),還可以用兩個整型表達(dá)式來說明,第一個表示總場寬,第二個表示小數(shù)位數(shù),此時實數(shù)以小數(shù)形式輸出。二、P
10、ascal程序設(shè)計的基本結(jié)構(gòu)Pascal語言程序可以用四種基本結(jié)構(gòu)表示,這就是順序結(jié)構(gòu)、判斷結(jié)構(gòu)、循環(huán)結(jié)構(gòu)以及"過程"和"函數(shù)"結(jié)構(gòu)。1、順序結(jié)構(gòu):順序結(jié)構(gòu)是一組按照書寫順序執(zhí)行的語句。2、選擇結(jié)構(gòu):當(dāng)必須根據(jù)某個變量或表達(dá)式的值做出判斷,以決定執(zhí)行哪些語句和跳過哪些語句不執(zhí)行時,我們使用選擇結(jié)構(gòu),或叫判斷結(jié)構(gòu)。(1)If語句If語句的兩種形式:、IF 條件THEN 語句1ELSE 語句;、IF 條件THEN 語句;(注意型IF語句中語句后無";"號)條件實際上是一個布爾表達(dá)式,它的值可以是真(true)或假(false),條件為真時
11、執(zhí)行語句1,條件為假時執(zhí)行語句2(形式)或不執(zhí)行任何操作(形式)。復(fù)合語句在if語句中,跟在then和else后的語句可能不止一個,這時候就要用到復(fù)合語句。復(fù)合語句是一個以begin開頭,以end結(jié)束的語句,在begin和end之間可以包含若干個用“;”隔開的語句。復(fù)合語句的一般形式為:begin <語句1>;<語句2>;<語句n>;end復(fù)合if語句在if語句中,then和else后的語句也可能是if語句,此時稱為if語句的嵌套,或復(fù)合if語句。例如:IF 條件1THEN 語句1ELSE IF 條件2THEN 語句2ELSE 語句3;(2)case語句ca
12、se語句是實現(xiàn)選擇結(jié)構(gòu)程序設(shè)計的另一種語句。Case語句的一般形式為:Case <表達(dá)式> of<表值1>:<語句1>;<表值2>:<語句2>;<表值n>:<語句n>;EndCase語句頭上的表達(dá)式必須是有序類型,比如整型、字符型、布爾型、以及后面要學(xué)的枚舉型和子界型,不能是實型。表值是一些有“,”分開的常數(shù)。表達(dá)式所有可能出現(xiàn)的值必須在表值中出現(xiàn)一次,并且只能出現(xiàn)一次。當(dāng)表達(dá)式的值在某一個表值中出現(xiàn)后,該程序僅僅執(zhí)行其后的語句,然后執(zhí)行case語句后的其他語句。在case語句中,除最后一個語句外,其他的語句后
13、都應(yīng)該有分號“;”,最后一句可以沒有,也可以有。若對應(yīng)一個值表的語句不止一個,應(yīng)寫成復(fù)合語句的形式。Case語句的最后不要漏掉end。3、循環(huán)結(jié)構(gòu):利用循環(huán)結(jié)構(gòu),可以只編寫少量語句,讓計算機(jī)重復(fù)執(zhí)行多次,從而完成大量同類的計算。在Pascal中,實現(xiàn)循環(huán)程序設(shè)計的語句有For語句、While語句和Repeat語句。(1)For語句:在Pascal中,實現(xiàn)循環(huán)程序設(shè)計的一個最常用的語句是For語句,它的一般形式為:For <循環(huán)變量> := <初值> To <終值> Do<循環(huán)體>程序的執(zhí)行過程為:首先將初值賦給循環(huán)變量,然后將循環(huán)變量與終值比較,
14、當(dāng)循環(huán)變量的值小于等于終值時,執(zhí)行循環(huán)體,執(zhí)行完循環(huán)體以后,將循環(huán)變量的后繼值賦給循環(huán)變量(For語句自動完成),然后再與終值進(jìn)行比較,若仍小于終值,則再次執(zhí)行循環(huán)體,直到循環(huán)變量的值大于終值,結(jié)束For語句,執(zhí)行For語句后面的語句。注意:a、循環(huán)變量的初值和終值可以是常量、變量或表達(dá)式。b、循環(huán)變量的類型必須與初值和終值相同,且只能是整型、字符型、布爾型、枚舉型、子界型等有序類型。c、循環(huán)體如果是多行語句,必須使用復(fù)合語句。d、在循環(huán)體中對初值和終值表達(dá)式的改變不會影響循環(huán)次數(shù)及循環(huán)變量的取值。不允許在循環(huán)體中用任何語句改變循環(huán)變量的值。e、從For語句退出時,循環(huán)變量的值是沒有定義的,不
15、得使用。f、如果初值大于終值,循環(huán)體將根本不執(zhí)行。除了以上的形式外,F(xiàn)or語句還有另外的一種形式:For <循環(huán)變量> := <初值> Downto <終值> Do<循環(huán)體>這是一個從較大值遞減到終值的循環(huán)。首先將初值賦給循環(huán)變量,然后將循環(huán)變量與終值比較,當(dāng)循環(huán)變量的值大于等于終值時,執(zhí)行循環(huán)體,然后將循環(huán)變量的前導(dǎo)值賦給循環(huán)變量(For語句自動完成),然后再與終值進(jìn)行比較,若仍大于終值,則再次執(zhí)行循環(huán)體,直到循環(huán)變量的值小于終值,結(jié)束For語句,執(zhí)行For語句后面的語句。如果初值小于終值,循環(huán)體將根本不執(zhí)行。在循環(huán)設(shè)計中,那些語句安排在循環(huán)前
16、,那些語句安排在循環(huán)中,那些語句安排在循環(huán)后,是一個至關(guān)重要的問題,必須仔細(xì)安排。(2)While語句:For語句用于循環(huán)次數(shù)已知的情況下,其循環(huán)次數(shù)由初值和終值決定。但當(dāng)循環(huán)次數(shù)未知,而是依賴于循環(huán)過程中不斷改變的某一數(shù)值時,就需要使用Pascal提供的While和Repeat語句實現(xiàn)了。While語句的一般形式是:While <布爾表達(dá)式> Do<循環(huán)體>執(zhí)行該語句時,首先檢查布爾表達(dá)式的值,如果它為真,則執(zhí)行循環(huán)體,循環(huán)體中通常包含改變該布爾值表達(dá)式值的語句。每次執(zhí)行完循環(huán)體之后,再次檢查布爾表達(dá)式的值,如果仍為真,繼續(xù)執(zhí)行循環(huán)體,否則結(jié)束循環(huán),執(zhí)行While之后
17、的語句。While循環(huán)體中一定要有能改變布爾變量值的語句,否則循環(huán)將不能結(jié)束,而形成死循環(huán)。(3)Repeat語句:Repeat語句的一般形式是:Repeat<循環(huán)體>Until <布爾表達(dá)式>執(zhí)行該循環(huán)時,首先執(zhí)行循環(huán)體,然后檢查Until后的布爾表達(dá)式,如此繼續(xù),直到布爾表達(dá)式為真時結(jié)束循環(huán),執(zhí)行循環(huán)語句后的其他語句。同樣,循環(huán)體中一定要有能改變布爾變量值的語句,否則循環(huán)將不能結(jié)束??梢钥闯鰓hile和Repeat的兩點主要區(qū)別:a、Repeat語句是在執(zhí)行完循環(huán)體后才檢查布爾表達(dá)式的值,所以循環(huán)至少執(zhí)行一次;而while語句是在執(zhí)行循環(huán)體以前檢查布爾表達(dá)式的值,有
18、可能一次循環(huán)也不執(zhí)行(布爾表達(dá)式開始就為假)。b、Repeat語句在布爾表達(dá)式為真時結(jié)束循環(huán),而while語句在表達(dá)式為真時執(zhí)行循環(huán)。什么時候用Repeat,什么時候用while,要根據(jù)具體情況來定。(4)多重循環(huán):如果一個循環(huán)結(jié)構(gòu)內(nèi)部(循環(huán)體)又包含一個循環(huán)結(jié)構(gòu),就稱之為多重循環(huán)結(jié)構(gòu)。任意循環(huán)語句的循環(huán)體部分都可以包含另一個循環(huán)結(jié)構(gòu)語句,多重循環(huán)的嵌套次數(shù)是任意的,按照嵌套層次數(shù),分別叫做二重循環(huán)、三重循環(huán)等。處于內(nèi)部的叫內(nèi)循環(huán),處于外部的叫外循環(huán)。例如:求100-999中的水仙花數(shù)(若三位數(shù)abc,abc=a3+b3+c3,則程abc為水仙花數(shù),如:13+53+33=1+125+27=15
19、3,則153是水仙花數(shù))。我們可以用一個三重循環(huán)求解:Program example(input,output);Var a,b,c:integer;Begin For a:=1 to 9 do 百位上的數(shù)For b:=0 to 9 do 十位上的數(shù)For c:=0 to 9 do 個位上的數(shù) if a*a*a+b*b*b+c*c*c=a*100+b*10+cthen write(a*100+b*10+c:6);Readln;End.練習(xí)1:分別用For語句、While語句、Repeat語句計算n!。練習(xí)2:描述 Description (2005年全國聯(lián)賽普及組第一題) 陶陶家的院子里有一棵
20、蘋果樹,每到秋天樹上就會結(jié)出10個蘋果。蘋果成熟的時候,陶陶就會跑去摘蘋果。陶陶有個30厘米高的板凳,當(dāng)她不能直接用手摘到蘋果的時候,就會踩到板凳上再試試?,F(xiàn)在已知10個蘋果到地面的高度,以及陶陶把手伸直的時候能夠達(dá)到的最大高度,請幫陶陶算一下她能夠摘到的蘋果的數(shù)目。假設(shè)她碰到蘋果,蘋果就會掉下來。輸入格式 Input Format 輸入包括兩行數(shù)據(jù)。第一行包含10個100到200之間(包括100和200)的整數(shù)(以厘米為單位)分別表示10個蘋果到地面的高度,兩個相鄰的整數(shù)之間用一個空格隔開。第二行只包括一個100到120之間(包含100和120)的整數(shù)(以厘米為單位),表示陶陶把手伸直的時候
21、能夠達(dá)到的最大高度。 輸出格式 Output Format 輸出包括一行,這一行只包含一個整數(shù),表示陶陶能夠摘到的蘋果的數(shù)目。4、Pascal函數(shù)與過程程序設(shè)計1、函數(shù)Pascal提供了一些標(biāo)準(zhǔn)函數(shù),比如sqrt(開方)、abs(絕對值)函數(shù)等。但Pascal提供的標(biāo)準(zhǔn)函數(shù)是有限的,并且有時不能滿足某個問題的需要,這時就需要定義新的函數(shù)。函數(shù)說明(函數(shù)定義)的一般形式:Function <函數(shù)名>(<參數(shù)表>):<函數(shù)類型>; <說明部分>; Begin <函數(shù)體> End;(1)、函數(shù)必須用Function開頭,然后是函數(shù)名、參數(shù)表
22、和函數(shù)類型(即結(jié)果的類型)。(2)、函數(shù)首部的后面是函數(shù)分程序,它由說明部分和語句部分組成。語句部分又稱函數(shù)體,由Begin和End括起來,函數(shù)體對形式參數(shù)進(jìn)行處理,然后將運算結(jié)果賦給函數(shù)名,作為函數(shù)結(jié)果傳給調(diào)用它的程序,所以在函數(shù)體中至少有一個給函數(shù)名賦值的語句:<函數(shù)名>:=<表達(dá)式>在參數(shù)表中,可以有多個參數(shù)?!?,”用來分開相同類型的各個參數(shù);“;”用來分開不同類型的參數(shù);各種類型的參數(shù)分別用“:”后的類型標(biāo)識符說明。比如:(x,y,z:real;m,n:integer;ch:char)2、過程函數(shù)是有局限性的,它們僅可以用于計算單個函數(shù)值,這個值是通過函數(shù)名帶回
23、給調(diào)用程序的。我們常常需要寫出一些單獨的程序模塊送回多個結(jié)果,或者寫一個模塊并不需要送回任何的結(jié)果,而只執(zhí)行某些任務(wù),比如打印以前計算的結(jié)果,這時就不能用函數(shù)了,但是可以用Pascal的過程來解決。過程說明(過程定義)的一般形式:Procedure <過程名>(<形式參數(shù)表>); <說明部分>; Begin <過程體> End;過程調(diào)用的一般形式為:<過程名>(<實在參數(shù)表>)實在參數(shù)表是一些用“,”分開的參數(shù)組成的,并且應(yīng)該滿足:a、形式參數(shù)表中可以包括值參數(shù)和變量參數(shù),當(dāng)無參數(shù)時,形式參數(shù)表和括號應(yīng)該略去。b、實在參數(shù)
24、必須與過程說明中的形式參數(shù)個數(shù)相同,且次序一一對應(yīng)。c、與值參數(shù)對應(yīng)的實在參數(shù)可以是表達(dá)式;與變量參數(shù)對應(yīng)的實在參數(shù)只能是變量。d、實在參數(shù)必須與變量參數(shù)類型同一,與值參數(shù)類型賦值相容。l 值參數(shù)與變量參數(shù)的區(qū)別如下:a、變量參數(shù)定義時需要用保留字VAR指明,而值參數(shù)不能加VAR。b、與值參數(shù)對應(yīng)的可以是表達(dá)式,而變量參數(shù)對應(yīng)的實在參數(shù)只能是變量。c、值參數(shù)的改變不會影響到相應(yīng)的實在參數(shù),調(diào)用完之后實在參數(shù)的值不會改變,比如上例中t的改變不會影響x的具體數(shù)值;而對變量參數(shù)的運算實際上是對實在參數(shù)的運算,因此在函數(shù)中改變了實在參數(shù)的值,比如上例中s的值。d、實在參數(shù)與值參數(shù)應(yīng)類型賦值相容,而實在
25、參數(shù)與變量參數(shù)應(yīng)類型同一。l 過程與函數(shù)的不同點:(1)、函數(shù)以Function開頭,而過程以Procedure開頭。(2)、函數(shù)是通過函數(shù)名送回一個結(jié)果值,并且函數(shù)首部的最后要說明函數(shù)(即結(jié)果)的類型。而過程的結(jié)果由參數(shù)送回,可以包括多個結(jié)果或無結(jié)果。(3)、函數(shù)體中至少要包含一個給函數(shù)名賦值的語句;而過程不能給過程名賦值,因此過程體可以為空。(4)、函數(shù)的調(diào)用出現(xiàn)在表達(dá)式中,而過程的調(diào)用必須作為一個單獨的語句。三、自定義數(shù)據(jù)類型1、枚舉與子界類型1、枚舉類型(1)枚舉類型的一般定義如下:TYPE<枚舉類型標(biāo)識符>=(<標(biāo)識符>,<標(biāo)識符>,<標(biāo)識符
26、>);VAR<枚舉類型變量表>:<枚舉類型標(biāo)識符>;枚舉類型是以TYPE為開始的類型說明,此類型說明應(yīng)放在常量說明和變量說明之間,然后在定義變量時,用枚舉類型標(biāo)識符說明枚舉類型的變量。例如:TYPEday=(sunday,monday,tuesday,wednesday,thursday,friday,saturday);month=(jan,feb,mar,apr,may,jun,jul,aug,sep,oct,nov,dec);VARtoday,tomorrow:day;lastmonth,firstmonth:month;x,y:real;注意:a、枚舉類型
27、是以TYPE為開始的類型說明;b、每個枚舉類型所允許的枚舉值必須全部列在其后的括號中,每個枚舉值用“,”隔開,枚舉值只能是標(biāo)識符(以字母開頭的字母數(shù)字組合),而不能是數(shù)值常量或字符常量。以下的定義是錯誤的:type daystype=('sun','mon','tue','wed','thu','fri','sat')c、每個枚舉值只能出現(xiàn)在一個枚舉類型的定義中,并且只能在該定義中出現(xiàn)一次。以下的定義是錯誤的:type daytype1=(monday,tuesday);daytyp
28、e2=(monday,wednesday);(3)枚舉類型變量的運算:可以直接將枚舉值賦給枚舉變量,或?qū)⑼愋偷拿杜e變量賦給另一個枚舉變量。(4)Turbo Pascal不允許直接讀寫枚舉值,所以枚舉值的輸出常用case語句間接的輸入和輸出,枚舉值的輸入和輸出都要進(jìn)行必要的轉(zhuǎn)換,否則就會出錯。2、子界類型(1)Pascal可以說明變量值的范圍,當(dāng)我們輸入的數(shù)值不在此范圍中時可以讓程序提示我們,然后做相應(yīng)的處理,這就需要通過定義子界類型和子界類型變量來做到這點。子界類型是由整型、字符型、枚舉型、布爾型的兩個常量指定該類型的值域區(qū)間。子界類型的一般定義形式:TYPE<子界類型標(biāo)識符>=
29、<常量1><常量2>;VAR<子界類型變量表>:<子界類型標(biāo)識符>例如:TYPEage=10.100;letter=a.z;VARworkage:age; workage是age子界類型變量char:letter; char是letter子界類型變量在程序執(zhí)行時,如果將存儲在workage中的值小于10或大于100或不是數(shù)值,系統(tǒng)將終止程序的執(zhí)行,并打印出相應(yīng)的提示錯誤的信息。同樣如果準(zhǔn)備賦給char的是數(shù)字或標(biāo)點符號(非字母),程序也將終止執(zhí)行,并輸出診斷信息。子界類型決定了該類型變量可以取值的范圍,所以兩個常量必須是同一種順序類型(整型、字符
30、型、布爾型、枚舉型)的值,并且必須保證第一個值小于第二個值,比如:ab,要求a<=b,例如:type a=1.3;b='a'.'d';在定義枚舉類型的子界時,一定要先定義枚舉類型,然后才能定義枚舉類型的子界。例如:Type day=(sunday,monday,tuesday,wednesday,thursday,friday,saturday);schoolday=monday. friday;myday= monday. saturday;一個枚舉值只能出現(xiàn)在一個枚舉類型的定義中,但是可以出現(xiàn)在多個子界類型的定義中。在說明子界類型時必須保證第一個值的序
31、號小于等于第二個值的序號。(2)和枚舉類型一樣,也可以不預(yù)先定義子界類型,而直接在變量說明中指出子界類型,即: VAR<子界類型變量表>:<常量1><常量2>;例如:VARnumber:19 number不是類型標(biāo)識符,直接就是變量(3)子界類型的運算:一個子界類型繼承它的常量類型的運算符和標(biāo)準(zhǔn)函數(shù),常量類型相容的不同子界類型可以混合運算,可以賦值。子界類型的輸入輸出也與其繼承的基類型相同。3、數(shù)組類型(1)一維數(shù)組的定義:Type<數(shù)組類型標(biāo)識符>=array <下標(biāo)類型> of <元素類型>;Var<數(shù)組變量表&
32、gt;:<數(shù)組類型標(biāo)識符>;解釋:數(shù)組類型標(biāo)識符說明了存儲單元的匯集。下標(biāo)可以是boolean,char或任何用戶自己定義的枚舉類型和子界類型。而不能是標(biāo)準(zhǔn)類型real或integer,因為它們都有無數(shù)個值,而Pascal所允許的數(shù)組空間是有限的。對應(yīng)下標(biāo)類型的每一個枚舉值有一個數(shù)組元素。通常下標(biāo)類型表示成形如min.max的子界,這里ord(min)必須小于ord(max)。元素類型可以是任何類型,包括數(shù)組類型和其他類型。例如:Typeart=array 1.10 of real;Vara,b:art;第二種方法是在變量說明中直接說明數(shù)組類型,即Vara,b:array 1.10
33、 of real;第一種方法中,首先定義數(shù)組類型art,我們推薦用這一種做法。數(shù)組的運算:除了同類型的數(shù)組可以整體拷貝(賦值)和參數(shù)傳遞外,數(shù)組是不能作其它運算的,數(shù)組也不能整體讀、寫。例如定義的數(shù)組:Typeart=array <1.10> of real;Vara,b:art;如果數(shù)組a已有值,將數(shù)組a整體拷貝到數(shù)組b中,可以執(zhí)行下列語句:b:=a;這樣操作的結(jié)果是將數(shù)組a的每個元素拷貝到對應(yīng)的數(shù)組b的每個元素中。它等價于下列語句:For i:=1 to 10 dob i:= a i;注意:對數(shù)組的讀、寫、賦值和其它運算,通常都是對數(shù)組的每個元素進(jìn)行的。(2)多維數(shù)組的定義(1
34、)當(dāng)一維數(shù)組元素的類型也是一維數(shù)組時,便構(gòu)成了二維數(shù)組。二維數(shù)組定義的一般格式:Type<數(shù)組類型標(biāo)識符>=array下標(biāo)類型1,下標(biāo)類型2 of 元素類型;說明:其中兩個下標(biāo)類型與一維數(shù)組定義一樣,可以表示成"min1.max1"和"min2.max2"的形式,給出二維數(shù)組中每個元素( 雙下標(biāo)變量)可以使用下標(biāo)值的范圍。of后面的元素類型就是基類型。例如:Typemat=array1.5,1.10 of integer;Vara,b:mat;有時我們不定義類型標(biāo)識符,直接說明數(shù)組變量的類型:例如:Vara,b:array1.5,1.10 o
35、f integer;此處的說明與前面的說明是等價的,但是在有些情況下,為了保證數(shù)組類型的同一和賦值相容必須先定義數(shù)組類型標(biāo)識符,然后用類型標(biāo)識符說明數(shù)組的類型。一般地,n維數(shù)組的格式為:Type<數(shù)組類型標(biāo)識符>=array下標(biāo)類型1,下標(biāo)類型2,下標(biāo)類型n of 元素類型; 其中,下標(biāo)類型的個數(shù)即數(shù)組的維數(shù),且說明了每個下標(biāo)的類型及取值范圍。下標(biāo)類型通常是枚舉或子屆類型。(2)多維數(shù)組元素的引用:多維數(shù)組的數(shù)組元素引用與一維數(shù)組元素引用類似,區(qū)別在于多維數(shù)組元素的引用必須給出多個下標(biāo)。引用的格式為:<數(shù)組名>下標(biāo)1,下標(biāo)2,下標(biāo)n說明:顯然,每個下標(biāo)表達(dá)式的類型應(yīng)與對
36、應(yīng)的下標(biāo)類型一致,且取值不超出下標(biāo)類型所指定的范圍。例如:Type matrix=array1.5,1.4of integer;var a:matrix;則表示a是二維數(shù)組,共有5*4=20個元素,它們是:a1,1a1,2a1,3a1,4a2,1a2,2a2,3a2,4a3,1a3,2a3,3a3,4a4,1a4,2a4,3a4,4a5,1a5,2a5,3a5,4對于整個二維數(shù)組的元素引用時,大多采用二重循環(huán)來實現(xiàn)。for i:=1 to 5 dofor j:=1 to 4 doai,j:=i*j;對二維數(shù)組的輸入與輸出也同樣可用二重循環(huán)來實現(xiàn):for i:=1 to 5 do 對數(shù)組進(jìn)行賦值
37、輸入beginfor j:=1 to 4 doread(ai,j);readln;end;for i:=1 to 5 do 對數(shù)組進(jìn)行內(nèi)容輸出beginfor j:=1 to 4 dowrite(ai,j:5);writeln;end;4、集合類型(1)集合類型說明:集合類型的一般定義形式如下:Type<集合標(biāo)識符>=set of <基類型>;Var<集合類型變量表>:<集合標(biāo)識符>;上面的定義中首先定義了集合類型表識符,它的全部值由基類型說明,然后由集合類型表識符說明集合類型變量,此外,我們可以合并成如下形式:Var<集合類型變量表>
38、;:set of <基類型>;注意1:基類型必須是有序類型,如整型子界、字符型、布爾型、枚舉類型等,而整型、實型、數(shù)組等不能作為集合的基類型。但是允許數(shù)組的基類型是集合類型。注意2:為了程序效率,Pascal編譯程序都限制了集合類型值的數(shù)目,所以整型不能作為集合的基類型,而整型的子界可以作為集合的基類型。2、集合運算(1)、賦值空集和全集處理集合之前,一般都要給集合變量賦以初值。(2)、集合的并交差集合的并交差要求類型相容的兩個集合作為運算對象。兩個集合的并(+):定義為在任意集合中或兩個集合中元素的匯集。兩個集合的交(*):定義為兩個集合所共有的所有元素的匯集。兩個集合的差(-)
39、:定義為在集合A中,而不在集合B中元素的匯集。注意:a、在集合中的次序是無關(guān)緊要的,集合1,2,3,4和4,1,3,2被認(rèn)為是相同的。b、當(dāng)運算符“+、*、-”兩邊的運算對象是集合時,便執(zhí)行相應(yīng)的集合運算。如:c、集合運算的優(yōu)先規(guī)則:先*后+、-,統(tǒng)計從左到右計算,為了避免混淆,最好使用括號。d、當(dāng)我們希望在一個已有的集合中加入一個新的元素時,要通過將已有的集合與由新元素組成的單個元素集合相加得到。例如:要在集合1,2,4,5中加入新元素2應(yīng)寫成:1,3,4,5+2,得到的集合為1,2,3,4,5。(3)集合的關(guān)系運算在集合中可以進(jìn)行的關(guān)系運算有:=(相等)、<>(不等)、<
40、=(子集)、>=(包集)。運算=和<>用于檢查兩個運算是否包含同樣的元素。運算<=決定子集關(guān)系,如果集合a的每個元素也是集合b的元素,則稱集合a是集合b的子集(a<=b)??占侨魏渭系淖蛹?。運算>=決定包集關(guān)系,如果集合b的每個元素也是集合a的元素,則稱集合a是集合b的包集(a>=b)。任何集合都是空集的包集。除了上面的關(guān)系運算之外,還有一個新的運算IN,用于集合成員檢查。被檢查的元素必須與集合的基本類型相容。1 IN 1,2,3 結(jié)果為 true;1 IN 2,3,4 結(jié)果為 false;利用IN運算可以將布爾表達(dá)式寫成更簡單自然的形式,如:(c
41、h>=0)and(ch<=9) 改為 ch IN 0.9(ch>=a)and(ch<=z) 改為 ch IN a.z(4)集合元素的輸入和輸出集合變量不能直接輸入和輸出,我們通常這樣進(jìn)行:首先將集合變量值為空集,然后逐個讀入集合的每個元素值,并構(gòu)成單值集合與集合變量相加。為了輸出一個集合變量的值,可以采用這樣的辦法:用IN運算逐個測試集合基類型所允許的每個元素,看它是否包含于這個集合變量中,若是則輸出這個元素。5、記錄類型(1)記錄說明:記錄類型的一般定義形式為:Type<記錄類型標(biāo)識符>=Record<域標(biāo)識符表>:類型;<域標(biāo)識符表&g
42、t;:類型;<域標(biāo)識符表>:類型End;其中Record和End是兩個保留字,必不可少。域標(biāo)識符可以是一個標(biāo)識符或多個標(biāo)識符。類型可以是任何標(biāo)準(zhǔn)的或用戶定義的數(shù)據(jù)類型,包括結(jié)構(gòu)類型,比如數(shù)組或記錄類型。例如:Typemont=(jan,feb,mar,apr,may,jun,jul,aug,sep,oct,nov,dec);date=recordmonth:mont;day:1.31;year:integer;end;Varday1,day2:date;記錄類型date包括三個域:month,day和year。它們分別是枚舉類型、子界類型和整型。day1和day2是記錄類型變量。(
43、2)、記錄類型的賦值同類型的記錄變量可以整體拷貝。如:day2:= day1;給每個分量(域)可以分別賦值,此時應(yīng)寫出完整的域名,它由記錄變量名后+圓點+域名組成。如:day1.month:=oct;day1.day:=26;day1.year:=2005;(3)with語句with語句又稱為開域語句。它的引入使得對記錄變量的各個域的訪問更加簡單。使用with語句時,只需將記錄變量名寫在with語句的開頭,而其它地方只簡單的使用域名就可以了,不用寫完整的域名。例如:with day1 do 等價于:begin month:=oct; day1.month:=oct;day:=26; day1.day:=26;year:=2005; day1.year:=2005;endWith語句除了書寫簡單簡單以外,還可以使記錄變量域的訪問迅速,提高編譯執(zhí)行效率。(4)記錄數(shù)組:以記錄類型作為基類型的數(shù)組稱為記錄數(shù)組。比如:Typealfa=packed array1.15 of char;student=record name:alfa;scord:real;grade:char;End;studenta= array1.20 of stud
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 違法建筑拆除與建筑安全評估合同協(xié)議
- 參賽證明設(shè)計方案
- 街道防汛項目建設(shè)方案
- 幼兒園意外傷害的急救與預(yù)防培訓(xùn)
- 油漆技師考試題及答案
- 環(huán)境健康與毒理學(xué)研究框架
- 在職口語考試題及答案
- 招商專員面試題及答案
- 2026版《全品高考》選考復(fù)習(xí)方案生物0506 微專題6 基因位置的判斷及相關(guān)實驗設(shè)計含答案
- 汽車美容與裝飾實訓(xùn)課件 18-0項目七 任務(wù)三 后尾翼板安裝飾實訓(xùn)
- 2024-2030年中國休閑素食行業(yè)市場深度分析及發(fā)展?jié)摿︻A(yù)測報告
- 朝花夕拾考試題及答案
- 高中堅持議論文范文7篇
- 浙江省湖州市2024-2025學(xué)年高一下學(xué)期期末考試數(shù)學(xué)試卷
- 2025年村干部公務(wù)員試題及答案
- 煤礦采礦制圖培訓(xùn)課件
- 羊水栓塞個案護(hù)理
- 2024年萍鄉(xiāng)市縣區(qū)事業(yè)單位引進(jìn)人才筆試真題
- 2025-2030中國透明無色聚酰亞胺薄膜行業(yè)發(fā)展動態(tài)及應(yīng)用趨勢預(yù)測報告
- 2025中國白酒酒業(yè)市場中期研究報告
- 緊急疏散培訓(xùn)課件
評論
0/150
提交評論