Delphi教案打印稿new_第1頁
Delphi教案打印稿new_第2頁
Delphi教案打印稿new_第3頁
Delphi教案打印稿new_第4頁
Delphi教案打印稿new_第5頁
已閱讀5頁,還剩116頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、吉林建筑工程學(xué)院教案用紙第一次課第1章 Delphi基礎(chǔ)知識本節(jié)學(xué)習(xí)要點:² 了解Delphi的特點² 重點熟悉掌握Delphi7的集成開發(fā)環(huán)境² 以實例說明Delphi7應(yīng)用程序開發(fā)的基本步驟² 對象樹形查看器(Object Treeviewer)² 對象監(jiān)視器(Object Inspector) 當(dāng)前對象的屬性和事件² 屬性(Properties)² 事件(Events)第1章Delphi 基礎(chǔ)知識Delphi是Borland公司推出的基于對象Pascal語言的可視化集成開發(fā)工具。§1.1 Delphi的特點l

2、 強(qiáng)大的可視化編程環(huán)境l Delphi7是建立在真正面向?qū)ο蟮目蚣芙Y(jié)構(gòu)基礎(chǔ)之上l Code Insight避免了記憶組件種類繁多的方法和屬性l 高效的編譯器l 豐富的VCL(Visual Component Library) 可視化組件庫l CodeInsight 中包括l 1 Codecompletion 輸入時的組件屬性l 2. Code parameters 參數(shù)l 3 Tooltip expression evaluatuion 當(dāng)前變量的值l 4 Code Template 母版§1.2 Delphi 7的集成開發(fā)環(huán)境Delphi 集成開發(fā)環(huán)境的界面分為四個部分,分別是主窗

3、口、窗體窗口、代碼編輯器窗口和對象查看器窗口。如圖1-1所示: 圖1-1 Delphi 集成開發(fā)環(huán)境說明:l 標(biāo)題欄 主窗口頂部水平長條稱為標(biāo)題欄,標(biāo)題欄提供了兩部分信息:“Delphi 7”和項目文件名。如果裝入的是一個新建的項目,Delphi 會提供缺省項目名“Project1”,標(biāo)題欄就會顯示“Delphi 7 - Project1”。l 菜單欄 菜單功能File有新建、打開和保存Delphi應(yīng)用程序中各個項目和文件的命令Edit提供了編輯代碼和窗體組件的各種命令,如刪除、復(fù)制和粘貼等Search搜索、替換和定位字符串命令View打開Delphi 環(huán)境各個窗口和項目中的窗體和單元文件等P

4、roject管理、編譯和配置項目文件Run調(diào)試應(yīng)用程序,如設(shè)置斷點、單步執(zhí)行等Component用于建立和安裝組件以及定制自己的組件板Database開發(fā)數(shù)據(jù)庫應(yīng)用程序的各種工具ToolsDelphi 環(huán)境設(shè)置和一些Delphi外掛工具Window切換指定窗口為活動窗口HelpDelphi 幫助文件l 工具欄工具欄是把一些常用的菜單命令以圖標(biāo)按鈕的方式顯示出來,以便于快速訪問。!工具欄的快捷按鈕可以由用戶按自己的需要自由添加和刪除。!用戶可以自定義工具欄中的項目,方法如下:選擇【View】/【Toolbars】/【Customizes】出現(xiàn)如下對話框:圖1-2 自定義工具欄欄目l 組件面板組件

5、板是建立應(yīng)用程序最常用的元素,所以必須掌握各種組件的功能和使用方法。組件板包括許多選項卡,單擊某選項卡就可以看到該選項卡包含的組件,Delphi 7共預(yù)定義了三十多個選項卡,可以單擊組件板右邊的箭頭按鈕來左右移動組件板的選項卡標(biāo)簽。!用戶可以自訂制組件欄的頁面和各頁面所包含的組件。方法如下:選擇【Tools】/【Environment Options】 ,其【Palette】頁面如圖1-3所示:通過對話框的幾個按鈕,可以添加(Add)和刪除(Delete)選項卡。圖1-3 系統(tǒng)環(huán)境設(shè)置l 對象監(jiān)視器(Object Inspector)窗體窗口的左側(cè)為對象監(jiān)視器,它的功能是編輯設(shè)置窗體、組件的屬

6、性,并為窗體、組件添加事件的響應(yīng)處理過程。由三部分組成:對象選擇器:為一下拉列表框,列表框中是可供選擇的窗體以及當(dāng)前窗體上放置的所有組件。用戶可從中選擇要設(shè)置屬性或要添加事件的窗體或組件。屬性選項卡:即標(biāo)簽名為“Properties”的選項卡,用于設(shè)置當(dāng)前組件的屬性,隨對象選擇器中的所選組件而發(fā)生變化。事件選項卡:即標(biāo)簽名為“Events”的選項卡,用于為當(dāng)前組件添加各種響應(yīng)事件(如單擊、拖曳事件等),也隨對象選擇器中的所選組件而發(fā)生變化。圖1-4 對象監(jiān)視器窗口!如何設(shè)置屬性?第一種情況是用鼠標(biāo)單擊屬性標(biāo)題后,直接在屬性值編輯框中輸入屬性的數(shù)值或字符串。第二種情況是屬性值由Delphi 提供

7、可選項。這時,用鼠標(biāo)單擊屬性標(biāo)題后,屬性值馬上變成一個下拉列表框,用戶可單擊下拉按鈕打開列表框,從中選擇所需的是屬性值。第三種情況是通過對話框來設(shè)置屬性值。單擊屬性標(biāo)題后,屬性值右端會出現(xiàn)一個帶“”的按鈕,單擊該按鈕,即可打開一個相應(yīng)的對話框,在對話框中選擇所需值,即可設(shè)置屬性值。第四種情況是屬性帶有子屬性。在這種屬性的屬性標(biāo)題前,一般會有一個“+”號,單擊該“+”號,將可以展開子屬性,同時“+”號變成“-”號,此時即可依次對各子屬性進(jìn)行設(shè)置。!如何添加事件?從窗體上選擇一個組件,或從對象選擇器中選擇一個窗體或組件,使之成為當(dāng)前組件,就可以用對象查看器的事件選項卡來添加事件了。添加事件的過程一

8、般是選定組件后,單擊對象查看器的事件選項卡中要添加的事件名稱,再在其右側(cè)輸入事件的響應(yīng)函數(shù)名稱,然后回車即可。提示:如果單擊要添加的事件后,在其右側(cè)編輯框中雙擊鼠標(biāo),將為事件采用缺省事件處理過程名,同時進(jìn)入代碼編輯窗。l 窗體設(shè)計器放置組件對象的地方,程序員可以在窗體中繪制各式各樣的程序界面,用戶通過界面操作與應(yīng)用程序交互。l 對象樹形查看器(Object Treeview)對象樹形查看器是以目錄樹的形式顯示整個工程中使用到的對象。l 代碼編輯器窗口代碼編輯器窗口是用來編寫應(yīng)用程序的代碼的地方。!代碼編輯器一般隱藏在窗體設(shè)計器下面,可通過以下幾種方法顯示它:1、 選擇【View】/【Code

9、Explorer】或【View】/【Toggle Form/Unit】2、 單擊快捷工具欄【Form/Unit】按鈕3、 在集成開發(fā)環(huán)境中用鼠標(biāo)單擊代碼編輯器窗口§1.3 實例Hello,world!Delphi7應(yīng)用程序開發(fā)的基本步驟為:l 建立窗體l 在窗體中添加組件l 檢查和設(shè)定對象屬性l 編寫響應(yīng)事件處理程序l 保存文件 使用File菜單中Save All命令,保存項目、單元等文件。 l 編譯、運(yùn)行程序 使用Run菜單中Run命令運(yùn)行應(yīng)用程序。 例1-1 Hello,world!程序效果:程序中包含兩個按鈕,單擊“問候”按鈕,會出現(xiàn)“Hello,world!”的文字;單擊“退

10、出”按鈕,就結(jié)束程序。畫面如圖所示:procedure TForm1.Button1Click(Sender: TObject);beginLabel1.Caption:='Hello,World!'end;procedure TForm1.Button2Click(Sender: TObject);begin close;end;§1.4 小結(jié)通過本章的學(xué)習(xí),希望同學(xué)們對Delphi的簡單易用有初步的感性認(rèn)識,認(rèn)識和理解IDE的組成及各部分的作用。第二次課第2章 Object Pascal 語言基礎(chǔ)(1)本節(jié)學(xué)習(xí)要點:² 深入了解Delphi的編程風(fēng)格(3

11、點)² 熟練掌握Object Pascal的基本知識Ø 局部變量和全局變量(在implementation后定義全局變量)Ø 簡單數(shù)據(jù)類型(重點講解Boolean類型、枚舉類型、子界類型,特別注意字符串的書寫形式及字符串運(yùn)算符的使用)Ø 結(jié)構(gòu)類型的定義(集合類型、數(shù)組類型、記錄類型、指針類型、變體類型)第2章Object Pascal語言基礎(chǔ)Object Pascal是在Pascal的基礎(chǔ)上發(fā)展起來的,繼承了Pascal語言語法結(jié)構(gòu)嚴(yán)謹(jǐn)、編譯代碼效率高的優(yōu)點。此外,使用編譯器創(chuàng)建的應(yīng)用程序只生成單個可執(zhí)行文件(.exe)§2.1 Delphi的

12、編程風(fēng)格§2.1.1 注釋語句為了使程序更加易讀,通常,我們要為程序添加注釋。即:對程序模塊、語句或命令作文字解釋,運(yùn)行時,這些文字不會作為命令的一部分而被執(zhí)行,因而不會影響原來的程序。有時,在調(diào)試的過程中,也可以用注釋的方法對部分命令作暫時的“刪除”,以縮小調(diào)試范圍。Object Pascal支持3種類型的注釋:l 組合符號“”與“”的成對使用表示它們之間的內(nèi)容為注釋部分。l 組合符號“(*”與“*)”的成對使用表示它們之間的內(nèi)容為注釋部分。l 符號“/”的單個使用表示所在行的該符號之后的內(nèi)容為注釋。提示:注釋符“”與“”、“(*”與“*)”在使用時不支持注釋的嵌套,而且必須成對使

13、用。即不允許形如 或(* (* *) *),但允許形如(* *)的結(jié)構(gòu)。建議:對于單行和少量幾行的注釋使用符號“/”,對于大塊注釋使用“”和“”或“(*”和“*)”。§2.1.2 對象命名在Object Pascal中,標(biāo)識符不區(qū)分大小寫,所以因此標(biāo)識符Myname、MyName、myname、myName、和MYNAME被認(rèn)為是同一個標(biāo)識符。為了增加程序的可讀性,建議大家養(yǎng)成良好的命名習(xí)慣:l 用意義明確的英文單詞和詞組命名l 單詞首字母大寫l 若要用多個單詞命名一個對象,單詞之間不能插入空格,且每一個單詞的首字母均大寫(駝峰格式)§2.1.3代碼縮進(jìn) (ctrl+shi

14、ft+i右移,ctrl+shift+u左移)采用代碼縮進(jìn)的方式即將程序代碼按照所處的級別不同在代碼行前面添加空格,通常是代碼的每一級向內(nèi)縮進(jìn)2格。目的是增強(qiáng)程序的可讀性。§2.2 標(biāo)識符標(biāo)識符是用來標(biāo)識(表示)程序、過程、函數(shù)、類型、符號常量、變量、對象等的名字的符號。對象Pascal語言中規(guī)定,標(biāo)識符由字母(AZ)、(az)、下劃線和數(shù)字09組成,標(biāo)識符的命名有以下三條限制:1  首字符必須是字母或下劃線,不能是數(shù)字;2  標(biāo)識符不能和保留字相同;3 缺省狀態(tài)下,Delphi 只認(rèn)為標(biāo)識的前255個組成字符是有意義的。雖然對象Pascal語言對大小寫不敏感,但在

15、編程時要保持一定的風(fēng)格。不要有時候全部大寫,另一些時候又大小寫混寫。§2.2.1 變量 變量是一個特定數(shù)據(jù)實體,它有預(yù)定義的數(shù)據(jù)類型,并且可在內(nèi)存中某個唯一的地址放有指定類型的值。 變量可在程序運(yùn)行的過程中動態(tài)地修改,這是它與常量的最大區(qū)別。變量具有四個屬性,每個變量都有名字、類型、變量值和占用的內(nèi)存地址。變量在使用前必須聲明,聲明變量時必須指定一種數(shù)據(jù)類型。1、 變量的聲明基本語法: Var 變量名:類型;例: Var Value,Sum:Integer;Line:String2、 局部變量和全局變量全局變量一般在implementation后面聲明基本語法: Var 變量名:類型

16、=常量表達(dá)式;注意:局部變量在聲明時不能進(jìn)行初始化。但在同時聲明多個全局變量時,也不能對變量進(jìn)行初始化。提示:在程序設(shè)計時,應(yīng)盡量避免使用全局變量。§2.2.2常量 對于在程序運(yùn)行期間保持不變的值,Pascal 允許通過常量來聲明。聲明常量不必特定數(shù)據(jù)類型,但需要賦一個初值。編譯器會根據(jù)所賦初值自動選用合適的數(shù)據(jù)類型?;菊Z法:Const 常量名=常量值;例:Const Pi=3.1415926; MyName=Smith;好處:l 可以更可靠地進(jìn)行修改l 增強(qiáng)了程序的可讀性§2.2.3預(yù)定義類型整型(Integer)、實型(Single)、布爾型(Boolean)、字符型

17、(Char)、指針型(Pointer)、字符串型(Pchar)§2.3 數(shù)據(jù)類型§2.3.1簡單數(shù)據(jù)類型(Simple)簡單數(shù)據(jù)類型(Simple)包括有序數(shù)據(jù)類型(ordinal)和實數(shù)數(shù)據(jù)類型(real)。其中有序數(shù)據(jù)類包括整數(shù)類型,字符類型,布爾類型,枚舉類型,子界類型l 整數(shù)類型整數(shù)類型數(shù)值范圍格式Integer-21474836482147483647帶符號32位Int64-263263-1帶符號64位Byte0255無符號8位Word065535無符號16位l 字符類型基本的字符類型(Character)包括AnsiChar和WideChar兩種。AnsiCha

18、r類型的數(shù)據(jù)具有一個字節(jié)。與擴(kuò)展的ANSI字符集對應(yīng)。WideChar類型的數(shù)據(jù)為雙字節(jié),與Unicode字符集對應(yīng)。Unicode字符集的前256個字符與ANSI字符集的相同。 通用的字符類型為Char,與AnsiChar類型相同。提示:可以使用函數(shù)Chr返回一個整型數(shù)對應(yīng)的字符,也可以使用函數(shù)Ord返回一個字符的序數(shù)。一般來說,對字母、數(shù)字或符號,用代表它們的符號來表示較好;而涉及到特殊字符時用數(shù)字符號較好。下面列出了常用的特殊字符: #9 或 chr(9) 跳格 (Tab 鍵) #10 或 chr(10) 換行 #13 或 chr(13) 回車 (Enter 鍵) l 布爾類型布爾類型(

19、Boolean):Boolean對象Pascal語言預(yù)定義了兩個常量標(biāo)識符False和True,可以為Boolean類型的數(shù)據(jù)賦值為False或True,對應(yīng)的序數(shù)值為0和1l 枚舉類型枚舉類型(enumerated)是一種用戶自定義類型,它的定義是由一組有序的標(biāo)識符組成。注:類型的聲明使用保留字Type。枚舉類型類型定義形式如下:Type 類型名稱=(值1,值2,值n);例:Type Tdays=(Sunday,Monday,Tuesday,Wednesday,Thursday,Friday,Saturday);l 子界類型(實數(shù)不是)子界類型(subrange)為某個有序類型的子集。子界類

20、型也是一種用戶自定義類型,它規(guī)定了值域的上界和下界及取值的類型。子界類型的定義形式如下:Type 類型名稱=值域下界.值域上界;定義子界類型時應(yīng)注意以下幾點: 1) 上界和下界必須屬同一順序類型,上界序號必須大于下界序號;2) 子界類型的上、下界的類型定義了子界的基類型;3) 如果子界類型的基類型是枚舉類型,則應(yīng)該在定義子界類型之前先定義枚舉類型。 l 實數(shù)類型實數(shù)類型定義了一個能用浮點數(shù)表示的數(shù)字集合。實數(shù)類型范圍有效位數(shù)字節(jié)數(shù)Real482.9×10-9 .1.7×1038116Double+5.0×10-3241.7×10308158Extende

21、d+3.6×10-4951.1.1×1049321910Real+5.0×10-3241.7×10308158§2.3.2 字符串類型和傳統(tǒng)Pascal不同,對象Pascal專門提供了預(yù)定義的字符串?dāng)?shù)據(jù)類型,可以方便的表示字符串,實現(xiàn)對字符串存儲、處理等操作。字符串類型最大長度存儲空間說 明ShortString2552到256字節(jié)為了和以前的版本兼容AnsiString2314字節(jié)到2GB動態(tài)分配內(nèi)存WideString2304字節(jié)到2GB使用Unicode字符集一般情況下,當(dāng)我們聲明一個變量為字符串類型時使用String保留字。缺省時,St

22、ring類型就是AnsiString類型。例如:A string!字符串的運(yùn)算1) 使用+運(yùn)算符(結(jié)果是字符串相連)2) 用concat( )函數(shù)§2.3.2 結(jié)構(gòu)類型結(jié)構(gòu)類型(Struct)包括集合類型(set)、數(shù)組類型(array)、記錄類型(record)、文件類型(fi1e)、類類型(class)、類引用類型(class reference)和接口類型(interface)等。l 集合類型一個集合由集合成員組成,集合的成員元素是無序的。集合的另一個特點是無重復(fù)元素,集合操作的重點是判定一個元素是否屬于該集合,而不是元素在集合的次序和出現(xiàn)的頻率。集合類型(set)的類型定義方

23、法如下:Type類型名稱=set of 元素類型;l 數(shù)組類型數(shù)組類型(array)的數(shù)據(jù)為某一類相同類型的元素按一定的順序組成的序列,包括靜態(tài)數(shù)組和動態(tài)數(shù)組兩種。1) 靜態(tài)數(shù)組靜態(tài)數(shù)組就是傳統(tǒng)的Pascal中的數(shù)組類型。在程序初始化時給靜態(tài)數(shù)組分配內(nèi)存空間,所以靜態(tài)數(shù)組必須具有確定的大小,其元素的數(shù)據(jù)類型也必須是確定的。靜態(tài)數(shù)組的定義方式如下:Type 數(shù)組類型名=array下標(biāo)類型 of 基類型 /一維數(shù)組或 數(shù)組類型名=array 下標(biāo)類型1, 下標(biāo)類型n of 基類型 /多維數(shù)組使用數(shù)組時,經(jīng)常需要編寫的程序代碼就是訪問數(shù)組中的元素。靜態(tài)數(shù)組中元素的訪問是通過數(shù)組的下標(biāo)進(jìn)行的。訪問數(shù)組

24、中元素的一般形式為: 數(shù)組變量名下標(biāo)表達(dá)式 /一維數(shù)組 數(shù)組變量名下標(biāo)表達(dá)式1, 下標(biāo)表達(dá)式n /多維數(shù)組 例: TypeTdou=array1.10 of double; Var Dou:Tdou;l 動態(tài)數(shù)組 它不需要在聲明時指定大小,因此,為我們在程序中動態(tài)地開辟存儲空間提供了方便的途徑。動態(tài)數(shù)組的定義方式如下:Type 數(shù)組類型名=array of 基類型; /一維數(shù)組 數(shù)組類型名=array of array of array of 基類型 /多維數(shù)組。l 記錄類型 記錄類型(record)可以由不同類型的元素組成,這些元素稱為域。在記錄類型中為每個域指定了一個名稱和數(shù)據(jù)類型。數(shù)據(jù)類

25、型可以是對象Pascal語言中預(yù)定義的類型,也可以是程序員自定義的類型。記錄類型的定義方式如下: Type 記錄類型名=record 域名1:類型1。 域名2:類型2; . 域名n:類型n; end;記錄類型定義中列出了所有域,每個域?qū)?yīng)一個域名,通過域名可以訪問它。例: Type TEmployee=record Name:string20; YearHired:1990.2000; Salary:Double; End;l 指針類型 指針類型(pointer)的變量指向的是內(nèi)存空間的地址。通常我們真正關(guān)心的是某一個地址存放的數(shù)據(jù),通過指針可以對所指地址中的數(shù)據(jù)進(jìn)行操作。指針類型的定義形式如

26、下:Type 指針類型名=類型; 其中:a) 指針類型名為任意合法的標(biāo)識符。b) “”放在類型的前面,表明聲明的類型為一個指針類型。c) “”后面緊跟的類型確定了指針?biāo)赶虻念愋停梢允呛唵晤愋?。如:整型、實型或枚舉型等,也可以是結(jié)構(gòu)類型,如:數(shù)組、集合或記錄等等。l 可變類型Variant 有時要對一些數(shù)據(jù)類型變化的數(shù)據(jù)進(jìn)行操作,并且要到運(yùn)行時才能根據(jù)實際情況確定數(shù)據(jù)的類型,這時就可以使用可變類型的數(shù)據(jù)。這些數(shù)據(jù)的數(shù)據(jù)類型可以在運(yùn)行期間自動改變,不過它們比固定類型的數(shù)據(jù)占用更多的空間和更多的操作時間。Var 變量名:Variant。§2.4 賦值語句 賦值語句的形式如下: 變量:=

27、表達(dá)式; 例:y:=0.5; /將一個常量賦值給一個變量。Done:=(I>=1) and (I<100) ;/將邏輯表達(dá)式的結(jié)果賦給一個變量。Huel:=Blue,Succ(C); /將一個子集賦值給一個變量。I:=Sqr(J)-I*K; /將一個表達(dá)式的結(jié)果賦值給一個變量。Shortint(MyChar):=122; /給類型轉(zhuǎn)換后的變量賦值。MyStringI:=¡¯A¡¯ /給數(shù)組的一個元素賦值。TmyObject.SomeProperty:=True; /給對象的屬性賦值。例2-1 改變編輯框的色彩在system中有時鐘可拉入 pr

28、ocedure TForm1.Button1Click(Sender: TObject);varm1:integer;m2:integer;m3:integer;beginm1:= random(255);m2:= random(255);m3:= random(255);edit1.color:=rgb(m1,m2,m3)end;end. 部分關(guān)鍵源代碼: procedure TForm1.Button1Click(Sender: TObject);begin edit1.Color:=clRed;end;第三次課第2章 Object Pascal 語言基礎(chǔ)(2)本節(jié)學(xué)習(xí)要點:²

29、熟練掌握過程與函數(shù)的定義和使用² 函數(shù)與過程的區(qū)別² 如何在事件處理過程中使用Object Pascal編碼² 關(guān)于過程中值形參和變量形參的區(qū)別² 了解Object Pascal控制語句的使用Ø IF語句Ø CASE語句Ø REPEAT語句Ø WHILE語句Ø FOR語句² 熟練掌握WITH語句的使用§2.5 過程與函數(shù) 過程與函數(shù)是實現(xiàn)一定功能的語句塊,可以在程序的其他地方被調(diào)用,也可以進(jìn)行遞歸調(diào)用。 過程是你要求計算機(jī)執(zhí)行的操作,函數(shù)是能返回值的計算。 過程通常作為一個單獨(dú)的命令語

30、句出現(xiàn)在程序中,而函數(shù)一般作為表達(dá)式的一部分。提示:兩者突出的不同點在于:函數(shù)能返回計算結(jié)果,即有一個返回值,而過程沒有。它們都可以帶多個給定類型的參數(shù)。§2.5.1函數(shù)的聲明和使用函數(shù)的定義包括函數(shù)原型、函數(shù)體的定義。函數(shù)聲明的語法格式: function <函數(shù)名> (<形式參數(shù)列表>):<返回類型> begin語句;end;函數(shù)調(diào)用的語法格式:函數(shù)名(<實參數(shù)列表>)說明:參數(shù)1參數(shù)的作用 一般將過程、函數(shù)定義時參數(shù)列表中的參數(shù)稱為形參,將過程、函數(shù)調(diào)用時參數(shù)列表中的參數(shù)稱為實參。2值參數(shù) 值參數(shù)可以像過程或函數(shù)的本地變量一樣使用

31、,其初值來自過程調(diào)用時的實參數(shù),對值參數(shù)的修改并不影響實參數(shù)。3常量參數(shù) 常量參數(shù)可以像局部的只讀變量一樣來使用,其初值來自過程調(diào)用時的實參數(shù),實參數(shù)必須是一個表達(dá)式。在定義過程(函數(shù))的形參表中的有關(guān)形參前加上保留字CONST。不允許在過程或函數(shù)中給常量參數(shù)賦值,并且常量參數(shù)不能作為實參數(shù)傳遞給另一個過程或函數(shù)。4變量參數(shù) 若要將一個值從過程或函數(shù)傳遞給調(diào)用者,則必須在定義它們時使用變量參數(shù)。這時過程或函數(shù)調(diào)用中的實參數(shù)必須是變量的引用。在過程或函數(shù)執(zhí)行期間,這個變量參數(shù)就代表了實參數(shù),改變了變量參數(shù)也就相應(yīng)地改變了實參數(shù),在被調(diào)用的過程(函數(shù))的形參表中的有關(guān)形參前加上保留字Var。5數(shù)組

32、參數(shù)過程或函數(shù)中也可以使用數(shù)組作為參數(shù),但不能在數(shù)組參數(shù)的定義中包含數(shù)組下標(biāo)類型的定義。可以先進(jìn)行數(shù)組類型的定義,然后利用該類型來定義數(shù)組參數(shù)。 procedure swap( var a,b:integer); 傳值,無var是傳地址 var t:integer; begin t:=x;x:=y;y:=t; end;例2-2 數(shù)值求和部分關(guān)鍵源代碼:function total(x,y:integer):integer;begin total:=x+y;end;procedure TForm1.Button1Click(Sender: TObject);var x,y,z:integer;b

33、egin x:=2; y:=3; z:=total(x,y);、 z:=total(2,3); label1.Caption:=inttostr(z);end;§2.5.2過程的聲明和使用(過程無返回值)過程的定義包括過程原型、過程體的定義。過程聲明的語法格式:procedure <過程名>(<形式參數(shù)列表>)局部聲明塊;begin語句;end;其中: <過程名>為一個有效的標(biāo)識符。 <參數(shù)列表>需要指明參數(shù)的個數(shù)及其數(shù)據(jù)類型。 <局部聲明塊>中定義了該過程中需要使用的一些臨時變量,通常也叫做本地變量。 在begin與end

34、之間是在過程調(diào)用時實現(xiàn)特定功能的一系列語句。過程調(diào)用的語法格式:<過程名>(<實際參數(shù)列表>) 注意:在過程或函數(shù)原型中,多個參數(shù)之間用分號隔開,同一類型的參數(shù)可以放在一起,以逗號隔開。在過程或函數(shù)調(diào)用的時候,在過程或函數(shù)原型中,多個參數(shù)之間用逗號隔開。一般來說,形參列表和實參列表完全匹配是指參數(shù)的個數(shù)一樣,而且順序排列的數(shù)據(jù)類型也完全一致。對于普通的函數(shù),如果編譯器發(fā)現(xiàn)實參的數(shù)據(jù)類型與形參的數(shù)據(jù)類型不匹配,會將實參的數(shù)據(jù)類型進(jìn)行一次或多次的提升,比如:將Integer類型轉(zhuǎn)換為Double類型。§2.6 控制語句Object Pascal的控制語句包括條件語

35、句、判斷語句、循環(huán)語句。§2.6.1判斷語句 判斷語句通過條件檢測,判斷是否執(zhí)行該條件語句中包含的語句。條件語句可有兩種基本形式:if語句和case語句。1if 語句 if語句主要實現(xiàn)了判斷的功能。具體形式如下:if 表達(dá)式 then 語句; 或者 if 表達(dá)式 then 語句1 else 語句2; 對if-then型語句,僅當(dāng)條件滿足時,語句才執(zhí)行。 對if-then-else型,當(dāng)條件滿足時,執(zhí)行語句1,否則執(zhí)行語句2,在兩條語句中選擇一條執(zhí)行。注意:在第二種情況下,語句1的最后不能有分號。如果語句1是一個復(fù)合語句,則該復(fù)合語句的end后面也不能有分號。2case語句 case語

36、句對一個結(jié)果的多個分支進(jìn)行判斷,具體形式如下: case 選擇器表達(dá)式 of 情況常量表1:語句1; : 情況常量表n:語句n; else 語句; /方括號內(nèi)內(nèi)容可省略 end;如果<選擇器表達(dá)式>的數(shù)值等于<情況常量表1>,則執(zhí)行<語句1>,執(zhí)行完畢后就退出case語句;如果<選擇器表達(dá)式>的數(shù)值不等于<情況常量表1>,則依次向下判斷;如果所有羅列出來的數(shù)值都不滿足,就執(zhí)行else語句后面的<語句>,else及其后面的<語句>可以不要。§2.6.2循環(huán)語句Object Pascal的控制語句包括re

37、peat語句、while語句和for語句1repeat語句 repeat語句可以實現(xiàn)循環(huán)操作的功能。具體形式如下:repeat 語句1;:語句n;until 循環(huán)終止條件表達(dá)式;在<循環(huán)終止條件表達(dá)式>為True之前,循環(huán)執(zhí)行語句<語句1>到<語句n>。例 計算1+2+3+¡­+nprogram Project2_8; $APPTYPE CONSOLEvar i,n,sum:Integer;begin readln(n); sum:=0; i:=0; repeat /repeat語句開始行 i:=i+1;sum:=sum+i; until

38、 i>=n; /repeat語句結(jié)束行 writeln(sum); readln;end.2while語句 while語句也可以實現(xiàn)循環(huán)操作的功能。具體形式如下: while 循環(huán)條件表達(dá)式 do 循環(huán)體語句; 在<循環(huán)條件表達(dá)式>為False之前,循環(huán)執(zhí)行<循環(huán)體語句>。將循環(huán)部分的代碼改寫如下: while i<n do /while語句開始行 begin i:=i+1; sum:=sum+i; end; /while語句結(jié)束行3for語句for語句可以實現(xiàn)循環(huán)操作的功能。具體形式如下:for 循環(huán)變量:=初值to 終值 do循環(huán)體語句; 或者:for

39、循環(huán)變量:=初值 downto 終值 do循環(huán)體語句;其中<循環(huán)變量>為一個有序類型的數(shù)據(jù),<初值>為<循環(huán)變量>的初始值。 在第一種形式中,使用的是保留字to,<循環(huán)變量>從初始值開始逐一增加到<終值>。 在第二種形式中,使用的是保留字downto,<循環(huán)變量>從初始值開始逐一遞減到<終值>。每次執(zhí)行一次<循環(huán)體語句>。改寫循環(huán)部分的代碼如下:for i:=1 to n do /for語句開始行 begin sum:=sum+i; end; /for語句結(jié)束行§2.6.3其他控制語句和過

40、程1Break(強(qiáng)制退出循環(huán))過程 Break語句用于從For語句、While語句或Repeat語句中強(qiáng)行退出。例:當(dāng)合計數(shù)>1000時,執(zhí)行停止。 program Project2_9; $APPTYPE CONSOLEvar i,n,sum:Integer;begin readln(n); sum:=0; i:=0; repeat /repeat語句開始行 i:=i+1; sum:=sum+i; if (sum>1000) then break; until i>=n; /repeat語句結(jié)束行 writeln(sum); readln;end.當(dāng)sum>1000時

41、,從循環(huán)中強(qiáng)制退出,執(zhí)行until后面的語句。2Continue(強(qiáng)制縮短循環(huán))過程 Continue語句用于從For語句、While語句或Repeat語句中強(qiáng)行結(jié)束本次循環(huán),開始下一次循環(huán)。計算1+2+4+5+7+n,( 除去3的倍數(shù))program Project2_10; $APPTYPE CONSOLEvar i,n,sum:Integer;begin readln(n); sum:=0; i:=0; repeat /repeat語句開始行 i:=i+1; if (i mod 3=0) then continue; sum:=sum+i; until i>=n; /repeat語

42、句結(jié)束行 writeln(sum); readln;end. 當(dāng)i mod 3=0時,不執(zhí)行語句與until語句之間的語句(sum:=sum+i),進(jìn)行下一次循環(huán)。 3with語句 在使用記錄類型的變量時,可以通過with語句來簡化記錄中域引用的寫法。具體形式如下:with 記錄型變量 do 語句 多個屬性從屬于一個對象時可用到with第四次課上機(jī)實驗一實驗題目:隨機(jī)加減法實驗內(nèi)容:要隨機(jī)產(chǎn)生一個加減法的算式,輸入答案,按回車鍵后,能根據(jù)答案是否正確自動給出相應(yīng)的提示對話框。通過本實驗使學(xué)生了解在Delphi中如何定義變量,如何使用控制語句以及如何使用過程與函數(shù)。從而建立一個對于屬性和方法的感

43、性認(rèn)識。§2.7隨機(jī)加減法測試?yán)?-3 隨機(jī)加減法測試隨機(jī)產(chǎn)生一個加減法的算式:輸入答案:按回車鍵后,能夠根據(jù)答案是否正確給出相應(yīng)的提示對話框。部分關(guān)鍵源代碼:procedure TForm1.FormCreate(Sender: TObject);varm,n,k:integer; /定義整型變量beginrandomize; /初始化隨機(jī)數(shù)發(fā)生器 m:=random(50); /為變量m賦一個50以內(nèi)的隨機(jī)值 n:=random(50); /為變量n賦一個50以內(nèi)的隨機(jī)值 k:=random(2); /為變量k賦一個2以內(nèi)的隨機(jī)值label1.Caption :=inttostr

44、(m); /在Label1中顯示變量m的值label3.Caption :=inttostr(n); /在Label3中顯示變量n的值if k=1 then /如果k的值等于1label2.Caption :='+' /在Label1中顯示""else /如果k的值不等于1label2.Caption :='-' /在Label1中顯示""end;procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);varanswer:integer; /定義變量an

45、swerbegin if key=chr(VK_RETURN)then /如果按下的鍵是Enter鍵begin if label2.Caption='+' then /如果是加法,就對兩個對象的值求和 answer:=strtoint(label1.Caption)+strtoint(label3.Caption) else /如果不是加法,就對兩個對象的值求差 answer:=strtoint(label1.Caption)-strtoint(label3.Caption); /如果答案與Edit1對象中的內(nèi)容相同 if answer=strtoint(edit1.Text)

46、 then begin showmessage('回答正確'); /顯示信息框"回答正確" button1.SetFocus ; /將焦點定位于按鈕Button1上 end else /如果答案與Edit1對象中的內(nèi)容不相同 begin showmessage('回答錯誤'); /顯示信息框"回答錯誤" edit1.SetFocus ; /將焦點定位于按鈕Edit上 end; edit1.SelectAll ; /選擇Edit1中的內(nèi)容 end;endprocedure TForm1.Button2Click(Sender

47、: TObject);begin close;end;§2.8 小結(jié)本章主要介紹了ObjectPascal的基本語法和語義,是程序設(shè)計的基礎(chǔ),由于學(xué)生先期修過高級語言課程,因而在講授過程中可根據(jù)實際情況調(diào)整進(jìn)度。第五次課第3章 面向?qū)ο缶幊蹋?)本節(jié)學(xué)習(xí)要點:² 深入領(lǐng)會類的基本概念Ø 類的聲明Ø 類的對象Ø 構(gòu)造函數(shù)Ø 析構(gòu)函數(shù)² 熟練掌握類的封裝技術(shù)(5個存取控制符的使用)Ø Public類型Ø Private類型Ø Protected類型Ø Published類型第3章 面向?qū)ο?/p>

48、編程面向?qū)ο缶幊蹋∣bject Oriented Programming ,OOP)Borland公司在Pascal中添加了面向?qū)ο蟮奶匦?,?gòu)成了Delphi的程序設(shè)計語言O(shè)bject Pascal§3.1 OOP基本概念!什么是對象?對象是OOP應(yīng)用程序的一個重要組成部件,這個組成部件封裝了部分應(yīng)用程序,這部分應(yīng)用程序可以是幾個過程、數(shù)據(jù)或更抽象的實體。對象是從類型中創(chuàng)建的,對象的類型是類。對象中的幾個基本概念:l 字段:對象中的數(shù)據(jù)成員l 屬性:訪問對象中包含的數(shù)據(jù),但不能直接訪問數(shù)據(jù)l 方法:用于表示對象中的過程和函數(shù)l 對象的生命周期:從使用類定義開始到刪除它為止§

49、3.2 類的基本概念類是一種用戶定義的數(shù)據(jù)類型,通常用來描述一些非常相似的對象所具有的共同特征和行為。對象是類的實例§3.2.1類的聲明類有封裝在一起的數(shù)據(jù)和方法構(gòu)成,其語法格式如下:Type類名=class : :End例:Typetmember=className:String;Age:Integer;Male:Boolean;Procedure SetId(Vname:String;Vage:Integer;Vmale:Boolean);Function IsAdult:Boolean;End;/定義類/定義對象Var Aman:Tmember;Begin Aman.Name:

50、=John; Aman.Age:=28; Aman.Male=true;Function IsAdult:Boolean;Begin If (Age>=18) thenIsAdult:=trueElse IsAdult:=false;End;End;§3.2.1類的對象1、構(gòu)造函數(shù) /對于類中的對象進(jìn)行初始化Constructor Create( );2、 析構(gòu)函數(shù)Free方法Destructor綜合實例(創(chuàng)建對象,使用對象,處理對象,釋放對象)VarAman:Tmember BeginAman.Create;Aman.SetId(John,28,true);If Aman.I

51、sAdult then Showmessage(An adult);Aman.free;End;§3.3 類的封裝Object Pascal使用了5個存取控制符:public, private, protected, published和automated§3.3.1 public類型能被類外部的程序訪問§3.3.2 private類型私有的成員不能被類所在的單元以外的程序訪問。§3.3.3 protected類型可以被該類的所有派生類訪問,并且成為了派生類的私有成員。注意:使用派生類的用戶無法訪問保護(hù)成員。§3.3.4 published類型

52、從成員的可見性來說,發(fā)行成員是最高的§3.3.5 automated類型與public基本相同。唯一的區(qū)別是聲明為automated的屬性和方法生成自動類型信息。自動類型信息使得創(chuàng)建OLE自動化服務(wù)器成為可能。§3.3.6 類的封裝應(yīng)用練習(xí)例3-1 類的應(yīng)用練習(xí)程序效果:設(shè)計兩個窗體,在Form1對應(yīng)的單元文件中定義一個類,該類具有Publec和Private兩種類型的方法,在兩個窗體中分別調(diào)用該類的方法。程序基本畫面如圖所示:完整的源代碼見書P46結(jié)論:由本例我們能夠知道在定義類的單元中,對私有類型的字段和方法進(jìn)行訪問和調(diào)用是不受限制的;但在不同的單元終究不能使用對類的私有類型進(jìn)行訪問。第六次課第3章 面向?qū)ο缶幊蹋?)本節(jié)學(xué)習(xí)要點:² 掌握類的繼承性,深入領(lǐng)會代碼重用技術(shù)的重要性² 掌握類的多態(tài)性Ø 靜態(tài)方法Ø 虛擬方法Ø 重載方法Ø 動態(tài)

溫馨提示

  • 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論