第二章 Object Pascal語言.ppt_第1頁
第二章 Object Pascal語言.ppt_第2頁
第二章 Object Pascal語言.ppt_第3頁
第二章 Object Pascal語言.ppt_第4頁
第二章 Object Pascal語言.ppt_第5頁
已閱讀5頁,還剩41頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、第二章 Object Pascal 語言,授課內(nèi)容: Object Pascal語言基礎(chǔ) 數(shù)據(jù)類型 運(yùn)算符 Object Pascal的語句 過程和函數(shù) Delphi的面向?qū)ο蟪绦蛟O(shè)計(jì) 異常,Delphi7程序設(shè)計(jì)教程,課前導(dǎo)讀,Pascal語言最早由瑞士Dr.Niklaus Wirth教授1971年發(fā)表,并分別于1972和1973年兩度進(jìn)行修改。將該語言取名Pascal是為了紀(jì)念Blaise Pascal(布勒斯 帕斯卡,16231662,法國天才數(shù)學(xué)家、物理學(xué)家、哲學(xué)家)。Pascal語言是一種語法嚴(yán)謹(jǐn)、條理清晰的結(jié)構(gòu)化程序設(shè)計(jì)語言。具有可讀性強(qiáng)、編寫容易、編譯速度快等特點(diǎn)。一直以來,Pa

2、scal語言都是作為計(jì)算機(jī)專業(yè)的教學(xué)語言;用于培養(yǎng)程序員良好的結(jié)構(gòu)化程序設(shè)計(jì)思想。 Object Pascal語言是在傳統(tǒng)的Pascal語言的基礎(chǔ)上發(fā)展擴(kuò)充的,它不僅具有Pascal語言的所有特點(diǎn),而且還具有便于應(yīng)用程序開發(fā)的面向?qū)ο筇卣?。Delphi使用Object Pascal語言作為編程語言。,2.1Object Pascal語言基礎(chǔ),Delphi的編程風(fēng)格 標(biāo)識符 變量 常量 程序模塊 作用范圍,Delphi的編程風(fēng)格,良好的編程風(fēng)格能增強(qiáng)程序的可讀性。因此在編寫程序時(shí)應(yīng)適當(dāng)?shù)靥砑幼⑨?,同時(shí)選擇合適的縮排和分行,這樣會使程序代碼顯得清晰而有層次,容易讀懂。,注釋,在程序代碼中,注釋起解

3、釋和說明作用,能增加程序的可讀性,他對編程者、其他程序員以及程序維護(hù)人員都很重要。注釋對程序的執(zhí)行不會產(chǎn)生任何影響。在Object Pascal語言中,可以使用以下3種形式進(jìn)行注釋。 使用成對大括號“”和“”之間的內(nèi)容為注釋部分,注釋文字可以包括多行。例如: 注釋內(nèi)容 使用成對帶星號的小括號“(*”和“*)”之間的內(nèi)容為注釋部分,也可以包括多行。例如: (* 注釋內(nèi)容 *) 使用雙斜杠“/”表示。其中“/”所在行的該符合之后的內(nèi)容均為注釋內(nèi)容,不可跨行。例如: /注釋內(nèi)容,縮排和分行,使用縮排和分行,可以把程序代碼書寫得錯(cuò)落有致、清晰易讀,是一種良好的編程風(fēng)格,建議在同一復(fù)合語句內(nèi)右縮書寫,在

4、不同復(fù)合語句間空一行。,標(biāo)識符,Object Pascal語言是由多種語法單元構(gòu)成的,包括常量、變量、過程、函數(shù)、類型名、屬性、對象、單元、程序等。標(biāo)識符就是這些語法單元的名字。定義標(biāo)識符一般采用一個(gè)或多個(gè)具有適當(dāng)意義的英文單詞,但需要注意以下5點(diǎn): 標(biāo)識符由字母、數(shù)字或下劃線組成,不能包含空格。 必須以字母或下劃線開始。 不能使用Object Pascal的保留字作為標(biāo)識符。 標(biāo)識符不區(qū)分大小寫。例如sno,Sno,SNO被看成同一個(gè)標(biāo)識符。 標(biāo)識符可以是任意長度,但只有前面255個(gè)字符有效,變量,變量是在程序運(yùn)行過程中,其值可以發(fā)生改變的標(biāo)識符。它表示內(nèi)存的地址,用戶可以通過變量名讀寫內(nèi)存

5、地址中的內(nèi)容。在使用變量之前必須進(jìn)行變量申明,即對變量進(jìn)行命名,并說明它的數(shù)據(jù)類型。變量聲明的基本語法如下: Var 變量名稱清單:數(shù)據(jù)類型; Var i,j:integer ; 在函數(shù)和過程中聲明的變量,稱之為局部變量;而其他變量就稱為全局變量。,常量,常量是在程序運(yùn)行過程中其值不可改變的標(biāo)識符。常量以保留字const開始。常量的數(shù)據(jù)類型就是常量說明中它所代表的值的類型。常量是只讀的,如果用戶試圖在程序中改變常量的值,Delphi7.0將產(chǎn)生一個(gè)編譯錯(cuò)誤。 Const pi=3.1415926;,程序模塊,一個(gè)應(yīng)用程序就是由若干個(gè)程序模塊構(gòu)成的。程序模塊提供了應(yīng)用程序的結(jié)構(gòu),決定了變量、屬性

6、值的范圍及程序執(zhí)行的過程等。一個(gè)程序模塊有兩個(gè)部分組成:聲明部分和執(zhí)行部分。聲明部分是可選擇的,包括變量聲明、常量聲明、類型聲明、標(biāo)號聲明、程序聲明、過程及函數(shù)聲明等;執(zhí)行部分?jǐn)⑹隽丝蓤?zhí)行的操作。如果有聲明部分,則必須放置在執(zhí)行部分之前。 在Delphi中,最常見的程序模塊是事件處理中的程序模塊。此外,一個(gè)程序模塊還可以是一個(gè)程序單元模塊,或是一個(gè)過程程序模塊。并且,一個(gè)程序模塊中可以包含其他的程序模塊。,一個(gè)完全的PASCAL程序結(jié)構(gòu),PROGRAM 程序名(程序參數(shù)表) LABEL 標(biāo)號說明; CONST 常量說明; TYPE 類型聲明; VAR 變量說明; FUNCTION 函數(shù)說明;

7、PROCEDURE 過程說明; BEGIN 語句; 語句 END.,作用范圍,每一個(gè)常量、變量、方法、類型等標(biāo)識符,都有自己的有效范圍。只有在其有效范圍內(nèi),才能對該標(biāo)識符進(jìn)行操作;超出了范圍之外,它就不能使用了。這個(gè)范圍是由標(biāo)識符定義的位置所決定的。 若要訪問一個(gè)不在當(dāng)前范圍內(nèi)的聲明,應(yīng)在該聲明之前加上其所屬的程序模塊的名稱和一個(gè)“.”,并且把這個(gè)聲明所屬的模塊名稱加入到當(dāng)前模塊的uses子句中去。例如,要在Unit1中調(diào)用Procedure C,那么就需要在Unit1的uses子句中加入U(xiǎn)nit2,再通過“Unit2.Procedure C”語句來完成。,程序模塊包含關(guān)系示意圖,Projec

8、t 1,Procedure A,Procedure B,Unit1,Procedure C,Procedure D,Procedure E,Unit2,2. 2 數(shù)據(jù)類型,基本數(shù)據(jù)類型 整數(shù)(Integer)類型 實(shí)數(shù)(Real)類型 字符(Character)類型 Ord( )函數(shù):返回一個(gè)字符的序號; Chr( )函數(shù):把一個(gè)整型數(shù)轉(zhuǎn)換為相應(yīng)序號的字符; UpCase( )函數(shù):把字符小寫轉(zhuǎn)換為大寫。 布爾(Boolean)類型 字符串(String)類型 可用字符串連接符“”將兩個(gè)字符串組成一個(gè)新的字符串。 指針(Pointer)類型 聲明指針類型的變量分為兩個(gè)步驟(1)先聲明指針類型;

9、(2)再聲明指針變量;,變體(Variant)數(shù)據(jù)類型 變體類型是一種比較特殊的數(shù)據(jù)類型,因?yàn)樽凅w類型和其他數(shù)據(jù)類型結(jié)合使用會產(chǎn)生類型的自動(dòng)轉(zhuǎn)換。它與一些基本數(shù)據(jù)類型如integer、real、string等是賦值相容的。 自定義數(shù)據(jù)類型 枚舉(Enumerated)類型 子界(Subrange)類型 數(shù)組(Array)類型 集合(Set)類型 記錄(Record)類型,有序數(shù)據(jù)類型分為整數(shù)類型、字符類型、布爾類型、枚舉類型和子界類型。,類型相容和強(qiáng)制轉(zhuǎn)換,2. 3 運(yùn)算符,算術(shù)運(yùn)算符 + - * / DIV MOD 邏輯運(yùn)算符 NOT AND OR XOR SHL SHR 關(guān)系運(yùn)算符 = =

10、 IN 布爾運(yùn)算符 NOT AND OR XOR 字符串運(yùn)算符 + 集合運(yùn)算符 +(并)、(差)及*(交) 地址運(yùn)算符 運(yùn)算符的優(yōu)先級,運(yùn)算符的優(yōu)先級,優(yōu)先級有3個(gè)基本原則: 在兩個(gè)不同優(yōu)先級的運(yùn)算中,先進(jìn)行較高優(yōu)先級的運(yùn)算。 在兩個(gè)同優(yōu)先級的運(yùn)算中,依從左至右的順序進(jìn)行運(yùn)算。 括號中的表達(dá)式優(yōu)先計(jì)算,計(jì)算之后視為一個(gè)單獨(dú)的運(yùn)算對象。 一元運(yùn)算符、乘與邏輯運(yùn)算符、加法運(yùn)算符、關(guān)系和比較運(yùn)算符,2.4 Object Pascal的語句,賦值語句 goto語句 過程語句 復(fù)合語句 條件語句 循環(huán)語句,賦值語句,賦值語句是任何一種語言中最基本、最常用的語句。任何變量在使用之前都應(yīng)該賦值,如果沒有賦值

11、,則全局變量的值為0,局部變量的值可以為任何數(shù)。賦值語句的語法格式為: 變量標(biāo)識符:=表達(dá)式; 使用賦值語句時(shí),需注意以下3點(diǎn): 賦值號左邊的變量必須是已經(jīng)用變量聲明語句聲明過的。 賦值號是由冒號和等號組合而成的(:=),而不是等號()。 賦值號兩邊的數(shù)據(jù)類型必須兼容。,goto 語句,goto語句的作用是將程序的執(zhí)行流程轉(zhuǎn)移到指定標(biāo)號代表的語句處。其語法格式為: goto 標(biāo)號; 使用goto語句時(shí),需注意以下3點(diǎn): goto語句的轉(zhuǎn)向?qū)ο?,即?biāo)號所指向的語句與goto語句本身要在同一程序塊內(nèi)(例如同一過程、函數(shù)段內(nèi))。也就是說,不能用goto語句轉(zhuǎn)入或轉(zhuǎn)出一個(gè)過程(函數(shù))。 從結(jié)構(gòu)語句外部

12、跳轉(zhuǎn)到結(jié)構(gòu)語句內(nèi)容(例如,從for循環(huán)外部用goto語句轉(zhuǎn)入for循環(huán)之中),雖然不產(chǎn)生編譯錯(cuò)誤,但會產(chǎn)生不確定的結(jié)果。 Goto語句雖然增加了程序執(zhí)行的靈活性,但是由于goto語句的任意性,破壞了程序的良好結(jié)構(gòu),不符合現(xiàn)代程序設(shè)計(jì)思想(結(jié)構(gòu)化程序設(shè)計(jì)思想)。因此,原則上,編程時(shí)應(yīng)盡量少用goto語句。,過程語句,過程語句實(shí)現(xiàn)對過程標(biāo)識符(或函數(shù)標(biāo)識符)所規(guī)定的過程(或函數(shù))的調(diào)用。其語法格式為: 過程標(biāo)識符(實(shí)際參數(shù)表); 函數(shù)標(biāo)識符(實(shí)際參數(shù)表); 一個(gè)過程語句可以是一個(gè)過程調(diào)用或函數(shù)調(diào)用。如果被調(diào)用的過程或函數(shù)的說明中帶有形式參數(shù)表(簡稱形參表),則在調(diào)用該過程或函數(shù)時(shí),必須在過程或函數(shù)

13、標(biāo)識符后加上實(shí)際參數(shù)表(簡稱實(shí)參表),并且,實(shí)參表中參數(shù)的個(gè)數(shù)、類型和順序必須與形參表一致。,復(fù)合語句,復(fù)合語句是由保留字Begin和End以及其間的多個(gè)語句組成。其語法格式為: Begin 語句1; 語句2; 語句n; End; 說明: Begin和End之間的各語句結(jié)尾有一個(gè)分號,并且End結(jié)尾也有一個(gè)分號,注意不要漏寫了。 復(fù)合語句雖然包含多個(gè)語句,語法上卻與一個(gè)簡單語句功能相同,即復(fù)合語句可以出現(xiàn)在語法上要求單個(gè)語句的任何地方。,條件語句,所謂條件語句就是根據(jù)一些判斷條件,決定要執(zhí)行的任務(wù)。Object Pascal的條件語句有兩種基本形式:if語句和case語句。,if 語句,if語

14、句可分為3種不同的形式: 簡化的if語句。其語法格式為: if 表達(dá)式 then 語句 標(biāo)準(zhǔn)的if語句。其語法格式為: if 表達(dá)式 then 語句1 else 語句2 嵌套的if語句。其語法格式為: if 表達(dá)式1 then 語句1 else if 表達(dá)式2 then 語句2 else if 表達(dá)式 n-1 then 語句n-1 else 語句n;,case 語句,語法格式為: case 表達(dá)式 of 常數(shù)1:語句1; 常數(shù)2:語句2; 常數(shù)n:語句n else 語句n+1 end;,Case語句8點(diǎn)說明,表達(dá)式必須是序數(shù)類型,不能是實(shí)型值或字符串。 常數(shù)1,常數(shù)2,常數(shù)n稱作case常數(shù)。

15、case常數(shù)的類型必須與表達(dá)式的類型一致。 case語句的執(zhí)行過程是:當(dāng)表達(dá)式的值與某一case常數(shù)相同時(shí),就去執(zhí)行該常數(shù)后面的語句。 case常數(shù)冒號右邊的語句可以是函數(shù)、過程調(diào)用、條件語句、復(fù)合語句等,這為程序員提供了極大的靈活性。 case常數(shù)可以是一個(gè)常數(shù)區(qū)間,在下界與上界之間用兩個(gè)連續(xù)的圓點(diǎn)分開。 應(yīng)注意各case常數(shù)不能互相覆蓋。 在case語句中也可包含else部分。 多個(gè)case常數(shù)可以共用一條公共語句,各case常數(shù)間用逗號分開。,循環(huán)語句,當(dāng)需要多次執(zhí)行某一個(gè)(或某一組)語句或一個(gè)程序段時(shí),Object Pascal提供了3種可供選擇的循環(huán)語句: repeat語句 whil

16、e語句 for語句,Repeat語句,Repeat語句的語法格式為: repeat 語句1; 語句2; 語句n; until 表達(dá)式,While語句,While語句的語法格式為: while 表達(dá)式 do 語句1; 語句2; 語句n;,For 語句,For 語句的語法格式為: 1)For 循環(huán)變量:=初值 to 終值 do 語句; 2)For 循環(huán)變量:=初值 downto 終值 do 語句;,For語句說明7點(diǎn),循環(huán)變量用來控制循環(huán)次數(shù)。在程序的開頭,需要聲明該變量,其類型一般為整型。 初值及終值可以是常數(shù)或表達(dá)式。在執(zhí)行for語句的過程中,初值及終值的表達(dá)式都只計(jì)算一次。 For語句的執(zhí)行

17、過程是:開始時(shí),令循環(huán)變量等于初值,如果在初值后面的保留字是to,而且循環(huán)變量的值小于或等于終值,則執(zhí)行do后語句一次,同時(shí),循環(huán)變量的值加1。如果循環(huán)變量的值仍小于終值,就再執(zhí)行一次循環(huán)體,直到循環(huán)變量的值大于終值時(shí)為止。 For語句中的to也可以用downto取代。此時(shí),首先是循環(huán)變量的初值與終值比較。如果初值大于或等于終值,則執(zhí)行循環(huán)體一次,同時(shí),循環(huán)變量的值減1。如果循環(huán)變量的值仍大于或等于終值,就再執(zhí)行一次循環(huán)體,直到循環(huán)變量的值小于終值時(shí)為止。 For語句可以嵌套使用,即一個(gè)for語句的循環(huán)體中又包含一個(gè)for語句,這樣可以構(gòu)成多重循環(huán)語句。 使用for語句時(shí),應(yīng)注意不要在循環(huán)體內(nèi)

18、改變循環(huán)變量的值,以免造成不確定性。 當(dāng)for循環(huán)結(jié)束后,一般不應(yīng)直接使用循環(huán)變量的值。,2.6過程和函數(shù),過程和函數(shù)都是能夠完成某個(gè)或某些特定功能的程序段,它們在語法功能上相當(dāng)于一個(gè)簡單語句,即凡是語法要求簡單語句的地方,都可以使用過程或函數(shù)。所不同的是,過程與函數(shù)都是獨(dú)立的程序模塊。過程與函數(shù)是Object Pascal語言的核心部分,它們讓程序員把應(yīng)用程序分成很多小的模塊,再分別編寫并測試獨(dú)立的模塊,最后組合成具有完整功能的應(yīng)用程序。,過程的聲明與調(diào)用,所有的過程在使用前都必須先聲明。根據(jù)有無參數(shù),過程可分為無參過程和有參過程。 過程是以保留字procedure開頭的,接下來是這個(gè)過程的

19、名稱和過程體部分。過程體部分是位于begin和end之間的語句序列。 應(yīng)當(dāng)注意,聲明過程時(shí),在過程名的結(jié)尾處有一個(gè)分號(;)。 對于自定義的過程,則必須在Delphi單元文件的實(shí)現(xiàn)(implementation)部分定義該過程。,無參數(shù)過程,無參數(shù)過程聲明的一般語法格式為: procedure 標(biāo)識符; begin 過程體 end; 聲明了過程之后,只有當(dāng)程序中調(diào)用了該過程,才能激活該程序塊。過程調(diào)用是由過程語句來完成的,對于無參過程來說,過程語句就是該過程的標(biāo)識符。即調(diào)用形式為: 過程名;,有參過程,帶有參數(shù)的過程叫做有參過程。有參過程的聲明格式是: procedure 標(biāo)識符(形參表);

20、過程中變量的定義 begin 過程體 end; 注意 (1)形參表包括一個(gè)或多個(gè)形式參數(shù),各形式參數(shù)都必須有類型說明。 (2)如果有多個(gè)形式參數(shù),則同類形式參數(shù)之間用逗號相隔,不同類形式參數(shù)之間用分號相隔。 調(diào)用格式為: 過程名(實(shí)際參數(shù));,函數(shù)的聲明與調(diào)用,與過程相似,函數(shù)也是一個(gè)能夠完成某種特定功能的程序塊。函數(shù)的聲明與過程非常相似,只是使用的保留字不同,并且多了一個(gè)“返回值”的類型。函數(shù)的聲明格式如下: function 標(biāo)識符(形參表):返回值類型; 函數(shù)中變量的定義 begin 函數(shù)體 end;,要注意以下5點(diǎn): 標(biāo)識符用于給函數(shù)命名。 關(guān)于形參表的規(guī)定與過程相同。 函數(shù)可以沒有形

21、參表,即定義無參函數(shù)。但在大多數(shù)情況下,函數(shù)都是有參數(shù)的。 函數(shù)中變量的定義用于定義函數(shù)中的局部變量,即在此處定義的變量只在這個(gè)函數(shù)中有效。 函數(shù)都具有返回值,定義函數(shù)時(shí),必須指定該函數(shù)返回值的數(shù)據(jù)類型。每一個(gè)Object Pascal語言的函數(shù)都有一個(gè)隱含的本地變量稱為Result,它包含了函數(shù)的返回值。也可以在函數(shù)體內(nèi)把值賦給函數(shù)名來返回一個(gè)值,這是Pascal的標(biāo)準(zhǔn)用法。,參數(shù)的傳遞,過程和函數(shù)聲明時(shí)形參表中的參數(shù)稱為形式參數(shù),過程和函數(shù)調(diào)用時(shí)實(shí)參表中的參數(shù)稱為實(shí)際參數(shù)。如果形參表和實(shí)參表能完全匹配是指它們中參數(shù)的個(gè)數(shù)一樣,而且順序排列的數(shù)據(jù)類型也完全一致。 值參數(shù) 即將參數(shù)以值的形式傳遞,這是Delphi默認(rèn)的方式。以值的方式傳遞參數(shù)值傳遞的是參數(shù)的一個(gè)副本,在過程和函數(shù)體中是對參數(shù)的副本進(jìn)行處理。 變量參數(shù) 如果希望被調(diào)用的過程(或函數(shù))能夠改變傳遞的參數(shù)值,就要使用變量參數(shù)。 常量參數(shù) 如果在調(diào)用一個(gè)過程(或函數(shù))時(shí),希望傳遞參數(shù)值的形參值保持不變,可以使用常量參數(shù)。在被調(diào)用的過程(或函數(shù))的

溫馨提示

  • 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)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論