《Delphi程序設(shè)計(jì)及實(shí)驗(yàn)指導(dǎo)》電子教案-第2章課件_第1頁(yè)
《Delphi程序設(shè)計(jì)及實(shí)驗(yàn)指導(dǎo)》電子教案-第2章課件_第2頁(yè)
《Delphi程序設(shè)計(jì)及實(shí)驗(yàn)指導(dǎo)》電子教案-第2章課件_第3頁(yè)
《Delphi程序設(shè)計(jì)及實(shí)驗(yàn)指導(dǎo)》電子教案-第2章課件_第4頁(yè)
《Delphi程序設(shè)計(jì)及實(shí)驗(yàn)指導(dǎo)》電子教案-第2章課件_第5頁(yè)
已閱讀5頁(yè),還剩93頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

Delphi7程序設(shè)計(jì)與實(shí)驗(yàn)指導(dǎo)張景安趙慧勤張葉娥傅文博編著Delphi7程序設(shè)計(jì)與實(shí)驗(yàn)指導(dǎo)張景安趙慧勤1第二章面向?qū)ο蟮腜ascalDelphi的編程語(yǔ)言即ObjectPascal是在Pascal的基礎(chǔ)上發(fā)展起來(lái)的,它繼承了Pascal語(yǔ)言語(yǔ)法結(jié)構(gòu)嚴(yán)謹(jǐn)和編譯代碼高效優(yōu)化等優(yōu)點(diǎn)。本章將介紹ObjectPascal的數(shù)據(jù)類型、常量、變量、運(yùn)算符、語(yǔ)句、函數(shù)和過程等。第二章面向?qū)ο蟮腜ascal22.1數(shù)據(jù)類型2.1.1簡(jiǎn)單數(shù)據(jù)類型簡(jiǎn)單類型包括有序類型和實(shí)型兩種。1.有序類型有序類型包括整型、字符型、布爾型、枚舉型和子界型。有序類型是一種線性的數(shù)據(jù)結(jié)構(gòu),每個(gè)值都有唯一的前驅(qū)(除第一個(gè))和唯一的后繼(除最后一個(gè))。(1)整型整型的表示范圍及存儲(chǔ)格式見表2-1。2.1數(shù)據(jù)類型2.1.1簡(jiǎn)單數(shù)據(jù)類型3類型取值范圍存儲(chǔ)格式Integer-2147483648~2147483647有符號(hào)32位整數(shù)Cardinal0~4294967295無(wú)符號(hào)32位整數(shù)Shortint-128~127有符號(hào)8位整數(shù)Smallint-32768~32767有符號(hào)16位整數(shù)Longint-2147483648~2147483647有符號(hào)32位整數(shù)Int64-263~263-l有符號(hào)64位整數(shù)Byte0~255無(wú)符號(hào)8位整數(shù)Word0~65535無(wú)符號(hào)16位整數(shù)Longword0~4294967295無(wú)符號(hào)32位整數(shù)表2-1整型的取值范圍和存儲(chǔ)格式2.1數(shù)據(jù)類型類型取值范圍存儲(chǔ)格式Integer-2147483648~242.1數(shù)據(jù)類型(2)字符型字符型的類型標(biāo)識(shí)符是Char。字符型的數(shù)據(jù)只能是單個(gè)字符,不能是一串字符。例如'ABC','x=?'等都不是字符型的數(shù)據(jù),而是字符串。(3)布爾型通常用到的布爾類型是Boolean,一個(gè)Boolean類型的變量占一個(gè)字節(jié),它只有兩種取值:true和false。定義變量i,ch,t分別為整型、字符型、布爾型。vari:Interge;ch:Char;t:Boolean;2.1數(shù)據(jù)類型(2)字符型52.1數(shù)據(jù)類型(4)枚舉類型枚舉類型是用一些標(biāo)識(shí)符來(lái)表示一系列有序數(shù),即由一些標(biāo)識(shí)符組成的一個(gè)線性表。定義枚舉類型的語(yǔ)法是:typetypeName=(val1,...,valn)(5)子界類型子界類型指的是某個(gè)有序類型(稱為基類)的一個(gè)子集。定義子界類型的語(yǔ)法是:typetypeName=Low..High;2.1數(shù)據(jù)類型(4)枚舉類型62.1數(shù)據(jù)類型2.實(shí)型表2-2給出了實(shí)型的表示范圍和存儲(chǔ)格式。類型范圍有效位所占位數(shù)Real±2.9*10-24~1.7*1030811~-28Real48±2.9*10-39~1.7*103811~-26Single±1.510-45~3.4*10387~84Double±5.0*10-324~1.7*1030815~168Extended±3.6*10-4951~1.1*10493219~2010Comp-263+l~263-l19~208Currency-922337203685477.5808~922337203685477.580719~208表2-2實(shí)型的表示范圍和存儲(chǔ)格式2.1數(shù)據(jù)類型2.實(shí)型類型范圍有效位所占位數(shù)Real±272.1數(shù)據(jù)類型2.1.2字符串類型字符串類型是用一對(duì)單引號(hào)括起來(lái)的一系列字符。字符串類型的表示范圍和存儲(chǔ)格式見表2-3。類型最多字符字節(jié)數(shù)字符集ShortString2552~256BANSI向后兼容AnsiString2314~2GBSBCS,MBCSLongString2314~2GBUnicodeWideString2304~2GB等價(jià)于AnsiChar表2-3字符串類型的表示范圍和存儲(chǔ)格式2.1數(shù)據(jù)類型2.1.2字符串類型類型最多字符字節(jié)數(shù)字82.1數(shù)據(jù)類型2.1.3結(jié)構(gòu)類型結(jié)構(gòu)數(shù)據(jù)類型是一種復(fù)合數(shù)據(jù)類型,由多個(gè)數(shù)據(jù)組成。結(jié)構(gòu)類型包括集合類型、數(shù)組類型、記錄類型、文件類型等。1.集合類型集合類型是一組相同類型元素的組合。定義集合類型:typeName=setofBaseType2.?dāng)?shù)組數(shù)組是一些具有相同類型元素的有序組合。(1)靜態(tài)數(shù)組靜態(tài)數(shù)組的聲明格式為:typeName=array[indexType1,...,indexTypen]ofBaseType;2.1數(shù)據(jù)類型2.1.3結(jié)構(gòu)類型92.1數(shù)據(jù)類型(2)動(dòng)態(tài)數(shù)組動(dòng)態(tài)數(shù)組沒有固定的大小或長(zhǎng)度。當(dāng)賦值或使用某些函數(shù)(如SetLength)時(shí),動(dòng)態(tài)數(shù)組在內(nèi)存中重新分配。動(dòng)態(tài)數(shù)組的聲明格式為:typeName=arrayofBaseType;定義動(dòng)態(tài)數(shù)組不需聲明元素的個(gè)數(shù)。例如:typeDynamicarray=arrayofReal;vara1,a2:Dynamicarry;a1:=a2;//a1和a2指向相同的內(nèi)存單元。2.1數(shù)據(jù)類型(2)動(dòng)態(tài)數(shù)組102.1數(shù)據(jù)類型3.記錄類型記錄類型(有的語(yǔ)言中被稱為結(jié)構(gòu))是一個(gè)不同種類元素的集合,每個(gè)元素稱為字段(field)。在聲明時(shí),指定記錄的名字和每個(gè)字段。聲明格式為:typeRecordTypeName=recordFieldList1:type1;FieldList2:type2;…FieldListn:typen;end;2.1數(shù)據(jù)類型3.記錄類型112.1數(shù)據(jù)類型4.文件類型文件類型是由相同類型的元素組成的有序集合。文件類型的聲明格式為:typefileTypeName=fileoftype例:聲明一個(gè)文件類型RecordList,以上面已定義的TdateRec為數(shù)據(jù)類型。typeRecordList=fileofTdateRec;varMyrecordlist:RecordList;2.1數(shù)據(jù)類型4.文件類型122.1數(shù)據(jù)類型2.1.4可變類型有時(shí)要對(duì)一些數(shù)據(jù)類型變化的數(shù)據(jù)進(jìn)行操作,并且在編譯期間不能確定數(shù)據(jù)的類型,這時(shí)就可以使用可變類型的數(shù)據(jù)??勺冾愋涂梢允褂贸涗洝⒓?、靜態(tài)數(shù)組、文件等結(jié)構(gòu)類型、指針類型及長(zhǎng)整型外的所有類型??勺冾愋陀幸粋€(gè)特殊的值Null,表示不明的或丟失的數(shù)據(jù)??勺冾愋妥兞康穆暶鞲袷綖椋簐arv1:Variant;2.1數(shù)據(jù)類型2.1.4可變類型132.2常量與變量2.2.1標(biāo)識(shí)符標(biāo)識(shí)符是描述ObjectPascal程序各個(gè)部分的名稱,這些部分包括標(biāo)記、對(duì)象、過程、類型、單元、變量及程序。標(biāo)識(shí)符的大小寫無(wú)關(guān)(即它不區(qū)分大小寫),并且遵循以下規(guī)則:可為任意長(zhǎng)度,但只有前255個(gè)字符有效。標(biāo)識(shí)符的第1個(gè)字符必須是字母或下劃線。跟在第1個(gè)字符后面的字符必須是字母、數(shù)字或下劃線。標(biāo)識(shí)符中不允許出現(xiàn)空格。2.2常量與變量2.2.1標(biāo)識(shí)符14

2.2.2常量常量是一個(gè)在程序的運(yùn)行過程中具有不變值的標(biāo)識(shí)符,常量的聲明格式如下:Const常量名=表達(dá)式;變量不能在一個(gè)常量聲明中使用,但算術(shù)和邏輯運(yùn)算符可以,下面的函數(shù)可以在常量聲明中使用。AbsLowRoundChrOddSizeOfHiOrdSuccHighPredSwapLengthPtrTruncLo2.2常量與變量2.2.2常量2.2常量與變量152.2常量與變量2.2.3變量變量是程序代碼中代表一個(gè)內(nèi)存地址的標(biāo)識(shí)符,而此地址中的內(nèi)容在程序執(zhí)行過程中可以改變。在變量使用之前必須先聲明,變量聲明格式如下:var變量名表:類型名;例:vars:string;i:integer;flag:Boolean;2.2常量與變量2.2.3變量162.3表達(dá)式與運(yùn)算符2.3.1表達(dá)式表達(dá)式就是變量、常量、字符串、運(yùn)算符及函數(shù)按照一定規(guī)則的組合。例:'People’sRepublicOf'+'China'Gross/12Max(x,y)-Min(x,y)2.3.2運(yùn)算符1.賦值運(yùn)算符(:=)賦值運(yùn)算符“:=”是先計(jì)算賦值運(yùn)算符右邊表達(dá)式的值,再將結(jié)果賦給左邊的變量。2.3表達(dá)式與運(yùn)算符2.3.1表達(dá)式172.3表達(dá)式與運(yùn)算符2.算術(shù)運(yùn)算符表2-4算術(shù)運(yùn)算符運(yùn)算符作用操作數(shù)類型結(jié)果類型+表示正值Integer或RealInteger或Real算術(shù)加Integer或RealInteger或Real-表示負(fù)值Integer或RealInteger或Real算術(shù)減Integer或RealInteger或Real*算術(shù)的乘運(yùn)算Integer或RealInteger或Real/浮點(diǎn)數(shù)的除運(yùn)算Integer或RealRealDiv整型數(shù)的除運(yùn)算IntegerIntegerMod模運(yùn)算IntegerInteger2.3表達(dá)式與運(yùn)算符2.算術(shù)運(yùn)算符運(yùn)算符作用操作數(shù)類型結(jié)果182.3表達(dá)式與運(yùn)算符3.關(guān)系運(yùn)算符關(guān)系運(yùn)算符是對(duì)兩個(gè)類型相容且可以比較大小的數(shù)據(jù)進(jìn)行比較,結(jié)果為布爾類型,見表2-5。表2-5關(guān)系運(yùn)算符運(yùn)算符作用結(jié)果類型=等于Bealoon<>不等于Bealoon<小于Bealoon>大于Bealoon<=小于或等于Bealoon>=大于或等于BealoonIn屬于Bealoon2.3表達(dá)式與運(yùn)算符3.關(guān)系運(yùn)算符運(yùn)算符作用結(jié)果類型=等于192.3表達(dá)式與運(yùn)算符4.邏輯運(yùn)算符邏輯運(yùn)算符對(duì)邏輯類型的操作數(shù)進(jìn)行運(yùn)算,結(jié)果為布爾型,見表2-6。表2-6邏輯運(yùn)算符運(yùn)算符作用操作數(shù)類型結(jié)果類型not邏輯非BealoonBealoonand邏輯與BealoonBealoonor邏輯或BealoonBealoonxor邏輯異或BealoonBealoon2.3表達(dá)式與運(yùn)算符4.邏輯運(yùn)算符運(yùn)算符作用操作數(shù)類型結(jié)果202.3表達(dá)式與運(yùn)算符5.集合運(yùn)算符

表2-7集合運(yùn)算符運(yùn)算符作用操作數(shù)類型結(jié)果類型+集合的并集集合類型集合類型-集合的差集集合類型集合類型*集合的交集集合類型集合類型<=A<=B,A是否是B的子集集合類型Bealoon>=A>=B,B是否是A的子集集合類型Bealoon=兩個(gè)集合是否相等集合類型Bealoon<>兩個(gè)集合是否不相等集合類型BealooninsinA,s是否屬于集合A有序類型,集合類型Bealoon2.3表達(dá)式與運(yùn)算符5.集合運(yùn)算符運(yùn)算符作用操作數(shù)類型結(jié)果212.3表達(dá)式與運(yùn)算符6.運(yùn)算符的優(yōu)先級(jí)運(yùn)算符優(yōu)先級(jí)not1(最高)*,/,div,mod,and2+,-,or,xor3關(guān)系運(yùn)算符4(最低)表2-8ObjectPascal各運(yùn)算符的優(yōu)先級(jí)2.3表達(dá)式與運(yùn)算符6.運(yùn)算符的優(yōu)先級(jí)運(yùn)算符優(yōu)先級(jí)not1222.4語(yǔ)句2.4.1注釋注釋是添加在程序中用來(lái)說明代碼功能的語(yǔ)句,它是非執(zhí)行語(yǔ)句,對(duì)程序的執(zhí)行部分不會(huì)產(chǎn)生任何影響,有助于提高程序的可讀性。在ObjectPascal中,有三種注釋標(biāo)記:花括號(hào)“{}”注釋:位于“{}”中的內(nèi)容為注釋。雙斜杠“//”注釋:“//”之后到本行結(jié)束的內(nèi)容為注釋。圓括號(hào)及星號(hào)對(duì)“(*……*)”注釋:(*……*)中的內(nèi)容為注釋。例如以下語(yǔ)句都是注釋:{ThefirstkindOfcomment.}//Thesecond

kindOfcomment.(*ThethirdkindOfcomment.*)2.4語(yǔ)句2.4.1注釋232.4語(yǔ)句2.4.2簡(jiǎn)單語(yǔ)句和復(fù)合語(yǔ)句簡(jiǎn)單語(yǔ)句是ObjectPascal中最簡(jiǎn)單也最常用的語(yǔ)句,簡(jiǎn)單語(yǔ)句用分號(hào)分隔。賦值語(yǔ)句、函數(shù)、過程調(diào)用語(yǔ)句等是簡(jiǎn)單語(yǔ)句,例如下面的語(yǔ)句都是簡(jiǎn)單語(yǔ)句:r:=m+n;//兩個(gè)值相加并賦值ShowMessage('I’mastudent.');復(fù)合語(yǔ)句是多個(gè)簡(jiǎn)單語(yǔ)句的組合,復(fù)合語(yǔ)句以begin表示開始,以end表示結(jié)束。例如:begini:=1;j:=i+1;s:='abc';end;2.4語(yǔ)句2.4.2簡(jiǎn)單語(yǔ)句和復(fù)合語(yǔ)句242.4語(yǔ)句2.4.3條件語(yǔ)句條件語(yǔ)句是ObjectPascal語(yǔ)言提供的選擇結(jié)構(gòu)語(yǔ)句,主要有如下兩種:1.if語(yǔ)句if語(yǔ)句的表示形式:if<表達(dá)式>then<執(zhí)行語(yǔ)句>[else<執(zhí)行語(yǔ)句>]2.4語(yǔ)句2.4.3條件語(yǔ)句252.4語(yǔ)句【例2-1】求兩個(gè)數(shù)中的最大值。ifa>bthenmax:=a//在變量a之后不能加“;”Elsemax:=b;【例2-2】符號(hào)函數(shù)。

-1(x<0)y=0(x=0)1(x>0)用if語(yǔ)句的嵌套實(shí)現(xiàn),如下:ifx<0theny:=-1elseifx>0theny:=1elsey:=0;2.4語(yǔ)句【例2-1】求兩個(gè)數(shù)中的最大值。用if語(yǔ)句的嵌套262.4語(yǔ)句2.case語(yǔ)句case語(yǔ)句的表示形式:case<表達(dá)式>of<選擇值1>:<執(zhí)行語(yǔ)句1>…<選擇值n>:<執(zhí)行語(yǔ)句n>[else<執(zhí)行語(yǔ)句n+1>]end;2.4語(yǔ)句2.case語(yǔ)句272.4語(yǔ)句【例2-3】編寫一個(gè)程序,輸入一個(gè)年份,判斷是否是閏年。閏年的條件是滿足下面條件之一:(1)能被4整除,但不能被100整除的年份;(2)能被100整除,也能被400整除的年份。對(duì)這兩個(gè)條件都不符合的年份不是閏年。程序功能:輸入一個(gè)年份,顯示其是否為閏年的信息。界面設(shè)計(jì):四個(gè)組件:兩個(gè)文本框Label1和Lable2,分別顯示提示和結(jié)果信息;一個(gè)Edit組件Edit1,用來(lái)輸入要進(jìn)行判斷的年份;一個(gè)Button組件Button1,用來(lái)查詢結(jié)果。如圖2-1所示。2.4語(yǔ)句【例2-3】編寫一個(gè)程序,輸入一個(gè)年份,判斷是否282.4語(yǔ)句圖2-1窗體界面程序代碼:procedureTForm1.Button1Click(Sender:TObject);varyear:Integer;flag:Boolean;2.4語(yǔ)句圖2-1窗體界面292.4語(yǔ)句beginyear:=StrtoInt(Edit1.text);//將字符串轉(zhuǎn)變?yōu)檎?/p>

ifyearmod4=0thenbeginifyearmod100=0thenbeginifyearmod400=0thenflag:=trueelseflag:=false;endelse

flag:=true;endelseflag:=false;ifflagthenLabel2.Caption:='該年份是閏年'elseLabel2.Caption:='該年份不是閏年';end;2.4語(yǔ)句beginflag:=true;302.4語(yǔ)句

2.4.4循環(huán)控制語(yǔ)句循環(huán)語(yǔ)句可以使用戶重復(fù)執(zhí)行一條或多條語(yǔ)句,直到滿足某個(gè)條件時(shí)為止。1.for語(yǔ)句for語(yǔ)句的一般形式為:for循環(huán)變量:=<起始值>to/downto<終止值>do<循環(huán)體>;【例2-4】求1~100所有整數(shù)的累加和。vars,i:Integer;s:=0;fori:=lto100dos:=s+i;2.4語(yǔ)句2.4.4循環(huán)控制語(yǔ)句312.4語(yǔ)句2.while語(yǔ)句while語(yǔ)句的一般形式為:while<表達(dá)式>do<循環(huán)體>while后面的<表達(dá)式>為邏輯表達(dá)式,先計(jì)算表達(dá)式的結(jié)果,如果表達(dá)式為true,while語(yǔ)句將重復(fù)執(zhí)行循環(huán)體。如果表達(dá)式結(jié)果為false,則跳出循環(huán),執(zhí)行while之后的語(yǔ)句?!纠?-5】求1~100所有整數(shù)的累加和。vars,i:Integer;i:=1;s:=0;whilei<=100dobegins:=s+i;i:=i+1;end;2.4語(yǔ)句2.while語(yǔ)句【例2-5】求1~100所有整322.4語(yǔ)句3.repeat語(yǔ)句repeat語(yǔ)句的一般形式為:repeat<循環(huán)體>until<表達(dá)式>當(dāng)使用repeat語(yǔ)句時(shí),先執(zhí)行循環(huán)體,再判斷表達(dá)式,只要until后面的表達(dá)式為true,則將再執(zhí)行循環(huán)體。因此,repeat語(yǔ)句下面的循環(huán)體至少執(zhí)行一次?!纠?-6】求1~100所有整數(shù)的累加和。vars,i:Integer;i:=1;s:=0;repeats:=s+i;i:=i+1;untili>100;2.4語(yǔ)句3.repeat語(yǔ)句【例2-6】求1~100所有332.4語(yǔ)句4.break語(yǔ)句功能是強(qiáng)行退出循環(huán),break語(yǔ)句只能用在循環(huán)體內(nèi)。【例2-7】利用break語(yǔ)句退出一個(gè)while循環(huán)。vars:String;beginwhiletruedo//條件恒為真

beginReadLn(s);//讀入一字符串

ifs=''thenbreak;//不輸入任何字符,則退出循環(huán)

WriteLn(s);//輸出字符串

end;end;2.4語(yǔ)句4.break語(yǔ)句342.4語(yǔ)句5.continue語(yǔ)句continue語(yǔ)句也用在循環(huán)體中,其作用是強(qiáng)行結(jié)束本次循環(huán),轉(zhuǎn)入循環(huán)開始處,開始執(zhí)行下一次循環(huán)操作?!纠?-8】使用continue語(yǔ)句,求1~100所有奇數(shù)之和。vari,s:Integer;s=0;beginfori:=1to100dobeginifimod2=0thencontinue;//如果為空,跳過剩余語(yǔ)句,轉(zhuǎn)到下一個(gè)循環(huán)

s:=s+i;end;end;2.4語(yǔ)句5.continue語(yǔ)句352.5函數(shù)和過程函數(shù)和過程是實(shí)現(xiàn)一定功能的語(yǔ)句塊,是程序中的特定功能單元??梢栽诔绦虻钠渌胤奖徽{(diào)用,也可以進(jìn)行遞歸調(diào)用。函數(shù)和過程的區(qū)別在于函數(shù)有返回值,而過程沒有返回值。2.5.1函數(shù)和過程的聲明函數(shù)和過程在使用前必須進(jìn)行聲明。1.函數(shù)的聲明函數(shù)的聲明是在程序的type區(qū),具體形式如下:function<函數(shù)名>([<形式參數(shù)表>]):<函數(shù)返回類型>;[<指令字>;]2.5函數(shù)和過程函數(shù)和過程是實(shí)現(xiàn)一定功能的語(yǔ)句塊,是程序中362.5函數(shù)和過程函數(shù)的定義是在程序的implementation部分,具體形式如下:function<函數(shù)名>([<形式參數(shù)表>]):<函數(shù)返回類型>;[<指令字>;]var<局部變量聲明>begin

<函數(shù)體><函數(shù)名>:=<返回值>//<函數(shù)名>也可以用Result系統(tǒng)保留字代替end;在begin與end之間是在函數(shù)調(diào)用時(shí)實(shí)現(xiàn)特定功能的一系列語(yǔ)句。函數(shù)值的返回有兩種方式:將返回值直接賦給函數(shù)名。將返回值賦給Result。2.5函數(shù)和過程函數(shù)的定義是在程序的implementat372.5函數(shù)和過程【例2-9】求兩個(gè)數(shù)中的最大數(shù)。functionMax(a,b:integer):integer;//兩個(gè)形參為整型值a、b,函數(shù)返回值為整型varm:Integer;beginifa>bthenm:=aelsem:=b;Max:=m;//或result:=m;end;2.5函數(shù)和過程【例2-9】求兩個(gè)數(shù)中的最大數(shù)。382.5函數(shù)和過程2.過程的聲明過程的聲明與函數(shù)類似,所不同的是使用的保留字不同,而且少了一個(gè)返回值類型;過程的聲明是在程序的type區(qū),具體形式如下:procedure<過程名>([<形式參數(shù)表>]):<過程返回類型>;過程的定義是在程序的implementation部分,具體形式如下:procedure<過程名>([<形式參數(shù)表>]);<局部變量聲明>begin<過程體>end;2.5函數(shù)和過程2.過程的聲明392.5函數(shù)和過程【例2-10】顯示一行num個(gè)星號(hào)*。procedureShowStar(num:Integer);vari:Integer;s:String;begins:='';fori:=1tonumdos:=s+'*';ShowMessage(s);end;2.5函數(shù)和過程【例2-10】顯示一行num個(gè)星號(hào)*。402.5函數(shù)和過程2.5.2重載函數(shù)和過程所謂重載,是指在同一個(gè)作用范圍內(nèi)給不同的函數(shù)或過程取同一個(gè)名稱。重載可以方便編程,重載函數(shù)必須用指令字overload來(lái)進(jìn)行說明。下面的兩個(gè)函數(shù)就是重載函數(shù):functionMax(a:Integer;b:Integer):Integer;overload;//求兩個(gè)整數(shù)的最大值functionMax(a:Real;b:Real):Real;overload;//求兩個(gè)實(shí)數(shù)的最大值下面兩條語(yǔ)句就調(diào)用了不同的函數(shù):Max(3.7,4.6);//調(diào)用的是第二個(gè)重載函數(shù)Max(3,4);//調(diào)用的是第一個(gè)重載函數(shù)2.5函數(shù)和過程2.5.2重載函數(shù)和過程412.5函數(shù)和過程2.5.3參數(shù)1.形參與實(shí)參函數(shù)或過程的聲明和定義時(shí)參數(shù)列表中的參數(shù)稱為形式參數(shù),簡(jiǎn)稱形參;而函數(shù)或過程調(diào)用時(shí)參數(shù)列表中的參數(shù)稱為實(shí)在參數(shù),簡(jiǎn)稱實(shí)參。2.?dāng)?shù)值參數(shù)、變量參數(shù)和常量參數(shù)(1)數(shù)值參數(shù)在調(diào)用函數(shù)或過程時(shí),數(shù)值參數(shù)在運(yùn)行過程中只改變其形參的值,不改變其實(shí)參的值,即形參不會(huì)影響原來(lái)實(shí)參的值。(2)變量參數(shù)如果用戶想改變傳遞的參數(shù)值,就需要使用變量參數(shù),即在被調(diào)用程序的參數(shù)表中的形參前加上保留字var。2.5函數(shù)和過程2.5.3參數(shù)422.5函數(shù)和過程(3)常量參數(shù)如果當(dāng)過程或函數(shù)執(zhí)行時(shí)要求不改變形參的值,最保險(xiǎn)的辦法是使用常量參數(shù)。在參數(shù)表的參數(shù)名稱前加上保留字const可以使一個(gè)形參成為常量參數(shù)。使用常量參數(shù)代替數(shù)值參數(shù)可以保護(hù)用戶的參數(shù),使用戶在不想改變參數(shù)值時(shí)不會(huì)意外地將新的值賦給這個(gè)參數(shù)。2.5.4作用域在ObjectPascal中,根據(jù)變量的作用域,可將變量分為:全局變量和局部變量。所謂變量的作用域,是指變量的有效范圍。全局變量在整個(gè)程序中都有效,其作用域?yàn)檎麄€(gè)程序;局部變量只在聲明它的函數(shù)和過程中有效,其作用域只限于該函數(shù)或過程本身。2.5函數(shù)和過程(3)常量參數(shù)432.5函數(shù)和過程例:typevarForm1:TForm1;//全局變量Form1implementation{$R*.dfm}procedureTForm1.FormCreate(Sender:TObject);varm,n:Integer;//局部變量m,nForm1:Tform1;(*局部變量Form1,與上面的全局變量同名,在過程TForm1.FormCreate中局部變量起作用。*)2.5函數(shù)和過程例:442.5函數(shù)和過程2.5.5函數(shù)和過程的調(diào)用1.函數(shù)和過程的調(diào)用(1)函數(shù)的調(diào)用函數(shù)調(diào)用的一般形式為:<函數(shù)名>([<實(shí)參表>])函數(shù)的調(diào)用往往是將返回值賦給某個(gè)變量或參與運(yùn)算。例如調(diào)用例2-9,將其返回值賦給變量x的語(yǔ)句為:x:=Max(3,6);(2)過程的調(diào)用過程的調(diào)用的一般形式為:<過程名>([<實(shí)參表>]);其中的實(shí)參可以是常量、變量或表達(dá)式,但實(shí)參的個(gè)數(shù)和類型與形參完全匹配,即個(gè)數(shù)相同、類型一致。例如:調(diào)用例2-10的過程ShowStar的語(yǔ)句為:ShowStar(20);2.5函數(shù)和過程2.5.5函數(shù)和過程的調(diào)用452.5函數(shù)和過程2.函數(shù)和過程的遞歸調(diào)用所謂遞歸調(diào)用,是指函數(shù)A調(diào)用函數(shù)B,而函數(shù)B又調(diào)用函數(shù)A的情況,或是指一個(gè)函數(shù)調(diào)用自身的特殊情況?!纠?-11】遞歸調(diào)用programProject1;($SappTypeConsole)varalpha:Integer;procedureTest2(varA:Integer):forword;(*Test2被說明為前置過程*)procedureTestl(VarA:Integer);begina:=a-1;ifa>0thenTest2(a);Writeln(a);end;procedureTest2(vara:Integer);{經(jīng)前置說明的Test2的執(zhí)行部分}begina:=adiv2;ifa>0thenTest1(a);{在Test2中調(diào)用已執(zhí)行的過程Test1}end;begina1pha:=15;//給a1pha賦初值Test1(a1plla);(*第一次調(diào)用Test1,遞歸開始*)end;2.5函數(shù)和過程2.函數(shù)和過程的遞歸調(diào)用Test2(a);46習(xí)題1.ObjectPascal語(yǔ)言中有哪些常用的數(shù)據(jù)類型?變量在使用前必須先定義,如何定義各種數(shù)據(jù)類型的變量?簡(jiǎn)述ObjectPascal中標(biāo)識(shí)符的命名應(yīng)遵循哪些規(guī)則。ObjectPascal中提供了哪些類型運(yùn)算符,在表達(dá)式中其優(yōu)先級(jí)從高到低如何排列。4.注釋語(yǔ)句有哪幾種形式?5.條件語(yǔ)句有哪幾種形式?它們?cè)谑裁辞闆r下適用。6.循環(huán)語(yǔ)句有哪幾種形式?break語(yǔ)句與continue語(yǔ)句有何異同。7.如何聲明、定義和調(diào)用函數(shù)和過程。8.什么是重載?如何進(jìn)行重載函數(shù)和過程。9.什么是變量的作用域?根據(jù)變量的作用域,可將變量分為哪幾類。習(xí)題47習(xí)題10.分析下列程序段的運(yùn)行結(jié)果。①a:=False;b:=False;c:=True;d:=20;ifathend:=d-12elseifnotbthen

ifcthenbeginx:=10;d:=d+3;endelsex:=34;運(yùn)行后,d,x的值分別是

。

習(xí)題10.分析下列程序段的運(yùn)行結(jié)果。ifcthen48習(xí)題②s:=0;fori=3to14dos:=s+i;運(yùn)行后,s的值是

。③FunctionFun(x:Integer):Integer;beginifx=0theny=0elseifx>0then

y:=x+4elsey:=x-5;end;則函數(shù)調(diào)用Fun(0)、Fun(4)、Fun(-7)的值分別是

、

。11.編程實(shí)現(xiàn):輸入兩個(gè)整數(shù),求這兩個(gè)數(shù)之間的所有奇數(shù)之和。習(xí)題②s:=0;y:=x+449Delphi7程序設(shè)計(jì)與實(shí)驗(yàn)指導(dǎo)張景安趙慧勤張葉娥傅文博編著Delphi7程序設(shè)計(jì)與實(shí)驗(yàn)指導(dǎo)張景安趙慧勤50第二章面向?qū)ο蟮腜ascalDelphi的編程語(yǔ)言即ObjectPascal是在Pascal的基礎(chǔ)上發(fā)展起來(lái)的,它繼承了Pascal語(yǔ)言語(yǔ)法結(jié)構(gòu)嚴(yán)謹(jǐn)和編譯代碼高效優(yōu)化等優(yōu)點(diǎn)。本章將介紹ObjectPascal的數(shù)據(jù)類型、常量、變量、運(yùn)算符、語(yǔ)句、函數(shù)和過程等。第二章面向?qū)ο蟮腜ascal512.1數(shù)據(jù)類型2.1.1簡(jiǎn)單數(shù)據(jù)類型簡(jiǎn)單類型包括有序類型和實(shí)型兩種。1.有序類型有序類型包括整型、字符型、布爾型、枚舉型和子界型。有序類型是一種線性的數(shù)據(jù)結(jié)構(gòu),每個(gè)值都有唯一的前驅(qū)(除第一個(gè))和唯一的后繼(除最后一個(gè))。(1)整型整型的表示范圍及存儲(chǔ)格式見表2-1。2.1數(shù)據(jù)類型2.1.1簡(jiǎn)單數(shù)據(jù)類型52類型取值范圍存儲(chǔ)格式Integer-2147483648~2147483647有符號(hào)32位整數(shù)Cardinal0~4294967295無(wú)符號(hào)32位整數(shù)Shortint-128~127有符號(hào)8位整數(shù)Smallint-32768~32767有符號(hào)16位整數(shù)Longint-2147483648~2147483647有符號(hào)32位整數(shù)Int64-263~263-l有符號(hào)64位整數(shù)Byte0~255無(wú)符號(hào)8位整數(shù)Word0~65535無(wú)符號(hào)16位整數(shù)Longword0~4294967295無(wú)符號(hào)32位整數(shù)表2-1整型的取值范圍和存儲(chǔ)格式2.1數(shù)據(jù)類型類型取值范圍存儲(chǔ)格式Integer-2147483648~2532.1數(shù)據(jù)類型(2)字符型字符型的類型標(biāo)識(shí)符是Char。字符型的數(shù)據(jù)只能是單個(gè)字符,不能是一串字符。例如'ABC','x=?'等都不是字符型的數(shù)據(jù),而是字符串。(3)布爾型通常用到的布爾類型是Boolean,一個(gè)Boolean類型的變量占一個(gè)字節(jié),它只有兩種取值:true和false。定義變量i,ch,t分別為整型、字符型、布爾型。vari:Interge;ch:Char;t:Boolean;2.1數(shù)據(jù)類型(2)字符型542.1數(shù)據(jù)類型(4)枚舉類型枚舉類型是用一些標(biāo)識(shí)符來(lái)表示一系列有序數(shù),即由一些標(biāo)識(shí)符組成的一個(gè)線性表。定義枚舉類型的語(yǔ)法是:typetypeName=(val1,...,valn)(5)子界類型子界類型指的是某個(gè)有序類型(稱為基類)的一個(gè)子集。定義子界類型的語(yǔ)法是:typetypeName=Low..High;2.1數(shù)據(jù)類型(4)枚舉類型552.1數(shù)據(jù)類型2.實(shí)型表2-2給出了實(shí)型的表示范圍和存儲(chǔ)格式。類型范圍有效位所占位數(shù)Real±2.9*10-24~1.7*1030811~-28Real48±2.9*10-39~1.7*103811~-26Single±1.510-45~3.4*10387~84Double±5.0*10-324~1.7*1030815~168Extended±3.6*10-4951~1.1*10493219~2010Comp-263+l~263-l19~208Currency-922337203685477.5808~922337203685477.580719~208表2-2實(shí)型的表示范圍和存儲(chǔ)格式2.1數(shù)據(jù)類型2.實(shí)型類型范圍有效位所占位數(shù)Real±2562.1數(shù)據(jù)類型2.1.2字符串類型字符串類型是用一對(duì)單引號(hào)括起來(lái)的一系列字符。字符串類型的表示范圍和存儲(chǔ)格式見表2-3。類型最多字符字節(jié)數(shù)字符集ShortString2552~256BANSI向后兼容AnsiString2314~2GBSBCS,MBCSLongString2314~2GBUnicodeWideString2304~2GB等價(jià)于AnsiChar表2-3字符串類型的表示范圍和存儲(chǔ)格式2.1數(shù)據(jù)類型2.1.2字符串類型類型最多字符字節(jié)數(shù)字572.1數(shù)據(jù)類型2.1.3結(jié)構(gòu)類型結(jié)構(gòu)數(shù)據(jù)類型是一種復(fù)合數(shù)據(jù)類型,由多個(gè)數(shù)據(jù)組成。結(jié)構(gòu)類型包括集合類型、數(shù)組類型、記錄類型、文件類型等。1.集合類型集合類型是一組相同類型元素的組合。定義集合類型:typeName=setofBaseType2.?dāng)?shù)組數(shù)組是一些具有相同類型元素的有序組合。(1)靜態(tài)數(shù)組靜態(tài)數(shù)組的聲明格式為:typeName=array[indexType1,...,indexTypen]ofBaseType;2.1數(shù)據(jù)類型2.1.3結(jié)構(gòu)類型582.1數(shù)據(jù)類型(2)動(dòng)態(tài)數(shù)組動(dòng)態(tài)數(shù)組沒有固定的大小或長(zhǎng)度。當(dāng)賦值或使用某些函數(shù)(如SetLength)時(shí),動(dòng)態(tài)數(shù)組在內(nèi)存中重新分配。動(dòng)態(tài)數(shù)組的聲明格式為:typeName=arrayofBaseType;定義動(dòng)態(tài)數(shù)組不需聲明元素的個(gè)數(shù)。例如:typeDynamicarray=arrayofReal;vara1,a2:Dynamicarry;a1:=a2;//a1和a2指向相同的內(nèi)存單元。2.1數(shù)據(jù)類型(2)動(dòng)態(tài)數(shù)組592.1數(shù)據(jù)類型3.記錄類型記錄類型(有的語(yǔ)言中被稱為結(jié)構(gòu))是一個(gè)不同種類元素的集合,每個(gè)元素稱為字段(field)。在聲明時(shí),指定記錄的名字和每個(gè)字段。聲明格式為:typeRecordTypeName=recordFieldList1:type1;FieldList2:type2;…FieldListn:typen;end;2.1數(shù)據(jù)類型3.記錄類型602.1數(shù)據(jù)類型4.文件類型文件類型是由相同類型的元素組成的有序集合。文件類型的聲明格式為:typefileTypeName=fileoftype例:聲明一個(gè)文件類型RecordList,以上面已定義的TdateRec為數(shù)據(jù)類型。typeRecordList=fileofTdateRec;varMyrecordlist:RecordList;2.1數(shù)據(jù)類型4.文件類型612.1數(shù)據(jù)類型2.1.4可變類型有時(shí)要對(duì)一些數(shù)據(jù)類型變化的數(shù)據(jù)進(jìn)行操作,并且在編譯期間不能確定數(shù)據(jù)的類型,這時(shí)就可以使用可變類型的數(shù)據(jù)??勺冾愋涂梢允褂贸涗?、集合、靜態(tài)數(shù)組、文件等結(jié)構(gòu)類型、指針類型及長(zhǎng)整型外的所有類型??勺冾愋陀幸粋€(gè)特殊的值Null,表示不明的或丟失的數(shù)據(jù)??勺冾愋妥兞康穆暶鞲袷綖椋簐arv1:Variant;2.1數(shù)據(jù)類型2.1.4可變類型622.2常量與變量2.2.1標(biāo)識(shí)符標(biāo)識(shí)符是描述ObjectPascal程序各個(gè)部分的名稱,這些部分包括標(biāo)記、對(duì)象、過程、類型、單元、變量及程序。標(biāo)識(shí)符的大小寫無(wú)關(guān)(即它不區(qū)分大小寫),并且遵循以下規(guī)則:可為任意長(zhǎng)度,但只有前255個(gè)字符有效。標(biāo)識(shí)符的第1個(gè)字符必須是字母或下劃線。跟在第1個(gè)字符后面的字符必須是字母、數(shù)字或下劃線。標(biāo)識(shí)符中不允許出現(xiàn)空格。2.2常量與變量2.2.1標(biāo)識(shí)符63

2.2.2常量常量是一個(gè)在程序的運(yùn)行過程中具有不變值的標(biāo)識(shí)符,常量的聲明格式如下:Const常量名=表達(dá)式;變量不能在一個(gè)常量聲明中使用,但算術(shù)和邏輯運(yùn)算符可以,下面的函數(shù)可以在常量聲明中使用。AbsLowRoundChrOddSizeOfHiOrdSuccHighPredSwapLengthPtrTruncLo2.2常量與變量2.2.2常量2.2常量與變量642.2常量與變量2.2.3變量變量是程序代碼中代表一個(gè)內(nèi)存地址的標(biāo)識(shí)符,而此地址中的內(nèi)容在程序執(zhí)行過程中可以改變。在變量使用之前必須先聲明,變量聲明格式如下:var變量名表:類型名;例:vars:string;i:integer;flag:Boolean;2.2常量與變量2.2.3變量652.3表達(dá)式與運(yùn)算符2.3.1表達(dá)式表達(dá)式就是變量、常量、字符串、運(yùn)算符及函數(shù)按照一定規(guī)則的組合。例:'People’sRepublicOf'+'China'Gross/12Max(x,y)-Min(x,y)2.3.2運(yùn)算符1.賦值運(yùn)算符(:=)賦值運(yùn)算符“:=”是先計(jì)算賦值運(yùn)算符右邊表達(dá)式的值,再將結(jié)果賦給左邊的變量。2.3表達(dá)式與運(yùn)算符2.3.1表達(dá)式662.3表達(dá)式與運(yùn)算符2.算術(shù)運(yùn)算符表2-4算術(shù)運(yùn)算符運(yùn)算符作用操作數(shù)類型結(jié)果類型+表示正值Integer或RealInteger或Real算術(shù)加Integer或RealInteger或Real-表示負(fù)值Integer或RealInteger或Real算術(shù)減Integer或RealInteger或Real*算術(shù)的乘運(yùn)算Integer或RealInteger或Real/浮點(diǎn)數(shù)的除運(yùn)算Integer或RealRealDiv整型數(shù)的除運(yùn)算IntegerIntegerMod模運(yùn)算IntegerInteger2.3表達(dá)式與運(yùn)算符2.算術(shù)運(yùn)算符運(yùn)算符作用操作數(shù)類型結(jié)果672.3表達(dá)式與運(yùn)算符3.關(guān)系運(yùn)算符關(guān)系運(yùn)算符是對(duì)兩個(gè)類型相容且可以比較大小的數(shù)據(jù)進(jìn)行比較,結(jié)果為布爾類型,見表2-5。表2-5關(guān)系運(yùn)算符運(yùn)算符作用結(jié)果類型=等于Bealoon<>不等于Bealoon<小于Bealoon>大于Bealoon<=小于或等于Bealoon>=大于或等于BealoonIn屬于Bealoon2.3表達(dá)式與運(yùn)算符3.關(guān)系運(yùn)算符運(yùn)算符作用結(jié)果類型=等于682.3表達(dá)式與運(yùn)算符4.邏輯運(yùn)算符邏輯運(yùn)算符對(duì)邏輯類型的操作數(shù)進(jìn)行運(yùn)算,結(jié)果為布爾型,見表2-6。表2-6邏輯運(yùn)算符運(yùn)算符作用操作數(shù)類型結(jié)果類型not邏輯非BealoonBealoonand邏輯與BealoonBealoonor邏輯或BealoonBealoonxor邏輯異或BealoonBealoon2.3表達(dá)式與運(yùn)算符4.邏輯運(yùn)算符運(yùn)算符作用操作數(shù)類型結(jié)果692.3表達(dá)式與運(yùn)算符5.集合運(yùn)算符

表2-7集合運(yùn)算符運(yùn)算符作用操作數(shù)類型結(jié)果類型+集合的并集集合類型集合類型-集合的差集集合類型集合類型*集合的交集集合類型集合類型<=A<=B,A是否是B的子集集合類型Bealoon>=A>=B,B是否是A的子集集合類型Bealoon=兩個(gè)集合是否相等集合類型Bealoon<>兩個(gè)集合是否不相等集合類型BealooninsinA,s是否屬于集合A有序類型,集合類型Bealoon2.3表達(dá)式與運(yùn)算符5.集合運(yùn)算符運(yùn)算符作用操作數(shù)類型結(jié)果702.3表達(dá)式與運(yùn)算符6.運(yùn)算符的優(yōu)先級(jí)運(yùn)算符優(yōu)先級(jí)not1(最高)*,/,div,mod,and2+,-,or,xor3關(guān)系運(yùn)算符4(最低)表2-8ObjectPascal各運(yùn)算符的優(yōu)先級(jí)2.3表達(dá)式與運(yùn)算符6.運(yùn)算符的優(yōu)先級(jí)運(yùn)算符優(yōu)先級(jí)not1712.4語(yǔ)句2.4.1注釋注釋是添加在程序中用來(lái)說明代碼功能的語(yǔ)句,它是非執(zhí)行語(yǔ)句,對(duì)程序的執(zhí)行部分不會(huì)產(chǎn)生任何影響,有助于提高程序的可讀性。在ObjectPascal中,有三種注釋標(biāo)記:花括號(hào)“{}”注釋:位于“{}”中的內(nèi)容為注釋。雙斜杠“//”注釋:“//”之后到本行結(jié)束的內(nèi)容為注釋。圓括號(hào)及星號(hào)對(duì)“(*……*)”注釋:(*……*)中的內(nèi)容為注釋。例如以下語(yǔ)句都是注釋:{ThefirstkindOfcomment.}//Thesecond

kindOfcomment.(*ThethirdkindOfcomment.*)2.4語(yǔ)句2.4.1注釋722.4語(yǔ)句2.4.2簡(jiǎn)單語(yǔ)句和復(fù)合語(yǔ)句簡(jiǎn)單語(yǔ)句是ObjectPascal中最簡(jiǎn)單也最常用的語(yǔ)句,簡(jiǎn)單語(yǔ)句用分號(hào)分隔。賦值語(yǔ)句、函數(shù)、過程調(diào)用語(yǔ)句等是簡(jiǎn)單語(yǔ)句,例如下面的語(yǔ)句都是簡(jiǎn)單語(yǔ)句:r:=m+n;//兩個(gè)值相加并賦值ShowMessage('I’mastudent.');復(fù)合語(yǔ)句是多個(gè)簡(jiǎn)單語(yǔ)句的組合,復(fù)合語(yǔ)句以begin表示開始,以end表示結(jié)束。例如:begini:=1;j:=i+1;s:='abc';end;2.4語(yǔ)句2.4.2簡(jiǎn)單語(yǔ)句和復(fù)合語(yǔ)句732.4語(yǔ)句2.4.3條件語(yǔ)句條件語(yǔ)句是ObjectPascal語(yǔ)言提供的選擇結(jié)構(gòu)語(yǔ)句,主要有如下兩種:1.if語(yǔ)句if語(yǔ)句的表示形式:if<表達(dá)式>then<執(zhí)行語(yǔ)句>[else<執(zhí)行語(yǔ)句>]2.4語(yǔ)句2.4.3條件語(yǔ)句742.4語(yǔ)句【例2-1】求兩個(gè)數(shù)中的最大值。ifa>bthenmax:=a//在變量a之后不能加“;”Elsemax:=b;【例2-2】符號(hào)函數(shù)。

-1(x<0)y=0(x=0)1(x>0)用if語(yǔ)句的嵌套實(shí)現(xiàn),如下:ifx<0theny:=-1elseifx>0theny:=1elsey:=0;2.4語(yǔ)句【例2-1】求兩個(gè)數(shù)中的最大值。用if語(yǔ)句的嵌套752.4語(yǔ)句2.case語(yǔ)句case語(yǔ)句的表示形式:case<表達(dá)式>of<選擇值1>:<執(zhí)行語(yǔ)句1>…<選擇值n>:<執(zhí)行語(yǔ)句n>[else<執(zhí)行語(yǔ)句n+1>]end;2.4語(yǔ)句2.case語(yǔ)句762.4語(yǔ)句【例2-3】編寫一個(gè)程序,輸入一個(gè)年份,判斷是否是閏年。閏年的條件是滿足下面條件之一:(1)能被4整除,但不能被100整除的年份;(2)能被100整除,也能被400整除的年份。對(duì)這兩個(gè)條件都不符合的年份不是閏年。程序功能:輸入一個(gè)年份,顯示其是否為閏年的信息。界面設(shè)計(jì):四個(gè)組件:兩個(gè)文本框Label1和Lable2,分別顯示提示和結(jié)果信息;一個(gè)Edit組件Edit1,用來(lái)輸入要進(jìn)行判斷的年份;一個(gè)Button組件Button1,用來(lái)查詢結(jié)果。如圖2-1所示。2.4語(yǔ)句【例2-3】編寫一個(gè)程序,輸入一個(gè)年份,判斷是否772.4語(yǔ)句圖2-1窗體界面程序代碼:procedureTForm1.Button1Click(Sender:TObject);varyear:Integer;flag:Boolean;2.4語(yǔ)句圖2-1窗體界面782.4語(yǔ)句beginyear:=StrtoInt(Edit1.text);//將字符串轉(zhuǎn)變?yōu)檎?/p>

ifyearmod4=0thenbeginifyearmod100=0thenbeginifyearmod400=0thenflag:=trueelseflag:=false;endelse

flag:=true;endelseflag:=false;ifflagthenLabel2.Caption:='該年份是閏年'elseLabel2.Caption:='該年份不是閏年';end;2.4語(yǔ)句beginflag:=true;792.4語(yǔ)句

2.4.4循環(huán)控制語(yǔ)句循環(huán)語(yǔ)句可以使用戶重復(fù)執(zhí)行一條或多條語(yǔ)句,直到滿足某個(gè)條件時(shí)為止。1.for語(yǔ)句for語(yǔ)句的一般形式為:for循環(huán)變量:=<起始值>to/downto<終止值>do<循環(huán)體>;【例2-4】求1~100所有整數(shù)的累加和。vars,i:Integer;s:=0;fori:=lto100dos:=s+i;2.4語(yǔ)句2.4.4循環(huán)控制語(yǔ)句802.4語(yǔ)句2.while語(yǔ)句while語(yǔ)句的一般形式為:while<表達(dá)式>do<循環(huán)體>while后面的<表達(dá)式>為邏輯表達(dá)式,先計(jì)算表達(dá)式的結(jié)果,如果表達(dá)式為true,while語(yǔ)句將重復(fù)執(zhí)行循環(huán)體。如果表達(dá)式結(jié)果為false,則跳出循環(huán),執(zhí)行while之后的語(yǔ)句。【例2-5】求1~100所有整數(shù)的累加和。vars,i:Integer;i:=1;s:=0;whilei<=100dobegins:=s+i;i:=i+1;end;2.4語(yǔ)句2.while語(yǔ)句【例2-5】求1~100所有整812.4語(yǔ)句3.repeat語(yǔ)句repeat語(yǔ)句的一般形式為:repeat<循環(huán)體>until<表達(dá)式>當(dāng)使用repeat語(yǔ)句時(shí),先執(zhí)行循環(huán)體,再判斷表達(dá)式,只要until后面的表達(dá)式為true,則將再執(zhí)行循環(huán)體。因此,repeat語(yǔ)句下面的循環(huán)體至少執(zhí)行一次?!纠?-6】求1~100所有整數(shù)的累加和。vars,i:Integer;i:=1;s:=0;repeats:=s+i;i:=i+1;untili>100;2.4語(yǔ)句3.repeat語(yǔ)句【例2-6】求1~100所有822.4語(yǔ)句4.break語(yǔ)句功能是強(qiáng)行退出循環(huán),break語(yǔ)句只能用在循環(huán)體內(nèi)?!纠?-7】利用break語(yǔ)句退出一個(gè)while循環(huán)。vars:String;beginwhiletruedo//條件恒為真

beginReadLn(s);//讀入一字符串

ifs=''thenbreak;//不輸入任何字符,則退出循環(huán)

WriteLn(s);//輸出字符串

end;end;2.4語(yǔ)句4.break語(yǔ)句832.4語(yǔ)句5.continue語(yǔ)句continue語(yǔ)句也用在循環(huán)體中,其作用是強(qiáng)行結(jié)束本次循環(huán),轉(zhuǎn)入循環(huán)開始處,開始執(zhí)行下一次循環(huán)操作。【例2-8】使用continue語(yǔ)句,求1~100所有奇數(shù)之和。vari,s:Integer;s=0;beginfori:=1to100dobeginifimod2=0thencontinue;//如果為空,跳過剩余語(yǔ)句,轉(zhuǎn)到下一個(gè)循環(huán)

s:=s+i;end;end;2.4語(yǔ)句5.continue語(yǔ)句842.5函數(shù)和過程函數(shù)和過程是實(shí)現(xiàn)一定功能的語(yǔ)句塊,是程序中的特定功能單元??梢栽诔绦虻钠渌胤奖徽{(diào)用,也可以進(jìn)行遞歸調(diào)用。函數(shù)和過程的區(qū)別在于函數(shù)有返回值,而過程沒有返回值。2.5.1函數(shù)和過程的聲明函數(shù)和過程在使用前必須進(jìn)行聲明。1.函數(shù)的聲明函數(shù)的聲明是在程序的type區(qū),具體形式如下:function<函數(shù)名>([<形式參數(shù)表>]):<函數(shù)返回類型>;[<指令字>;]2.5函數(shù)和過程函數(shù)和過程是實(shí)現(xiàn)一定功能的語(yǔ)句塊,是程序中852.5函數(shù)和過程函數(shù)的定義是在程序的implementation部分,具體形式如下:function<函數(shù)名>([<形式參數(shù)表>]):<函數(shù)返回類型>;[<指令字>;]var<局部變量聲明>begin

<函數(shù)體><函數(shù)名>:=<返回值>//<函數(shù)名>也可以用Result系統(tǒng)保留字代替end;在begin與end之間是在函數(shù)調(diào)用時(shí)實(shí)現(xiàn)特定功能的一系列語(yǔ)句。函數(shù)值的返回有兩種方式:將返回值直接賦給函數(shù)名。將返回值賦給Result。2.5函數(shù)和過程函數(shù)的定義是在程序的implementat862.5函數(shù)和過程【例2-9】求兩個(gè)數(shù)中的最大數(shù)。functionMax(a,b:integer):integer;//兩個(gè)形參為整型值a、b,函數(shù)返回值為整型varm:Integer;beginifa>bthenm:=aelsem:=b;Max:=m;//或result:=m;end;2.5函數(shù)和過程【例2-9】求兩個(gè)數(shù)中的最大數(shù)。872.5函數(shù)和過程2.過程的聲明過程的聲明與函數(shù)類似,所不同的是使用的保留字不同,而且少了一個(gè)返回值類型;過程的聲明是在程序的type區(qū),具體形式如下:procedure<過程名>([<形式參數(shù)表>]):<過程返回類型>;過程的定義是在程序的implementation部分,具體形式如下:procedure<過程名>([<形式參數(shù)表>]);<局部變量聲明>begin<過程體>end;2.5函數(shù)和過程2.過程的聲明882.5函數(shù)和過程【例2-10】顯示一行num個(gè)星號(hào)*。procedureShowStar(num:Integer);vari:Integer;s:String;begins:='';fori:=1tonumdos:=s+'*';ShowMessage(s);end;2.5函數(shù)和過程【例2-10】顯示一行num個(gè)星號(hào)*。892.5函數(shù)和過程2.5.2重載函數(shù)和過程所謂重載,是指在同一個(gè)作用范圍內(nèi)給不同的函數(shù)或過程取同一個(gè)名稱。重載可以方便編程,重載函數(shù)必須用指令字overload來(lái)進(jìn)行說明。下面的兩個(gè)函數(shù)就是重載函數(shù):functionMax(a:Integer;b:Integer):Integer;overload;//求兩個(gè)整數(shù)的最大值functionMax(a:Real;b:Real):Real;overload;//求兩個(gè)實(shí)數(shù)的最大值下面兩條語(yǔ)句就調(diào)用了不同的函數(shù):Max(3.7,4.6);//調(diào)用的是第二個(gè)重載函數(shù)Max(3,4);//調(diào)用的是第一個(gè)重載函數(shù)2.5函數(shù)和過

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(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)論