版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、吉林建筑工程學(xué)院教案用紙第一次課第1章 Delphi基礎(chǔ)知識(shí)本節(jié)學(xué)習(xí)要點(diǎn):² 了解Delphi的特點(diǎn)² 重點(diǎn)熟悉掌握Delphi7的集成開發(fā)環(huán)境² 以實(shí)例說明Delphi7應(yīng)用程序開發(fā)的基本步驟² 對(duì)象樹形查看器(Object Treeviewer)² 對(duì)象監(jiān)視器(Object Inspector) 當(dāng)前對(duì)象的屬性和事件² 屬性(Properties)² 事件(Events)第1章Delphi 基礎(chǔ)知識(shí)Delphi是Borland公司推出的基于對(duì)象Pascal語言的可視化集成開發(fā)工具。§1.1 Delphi的特點(diǎn)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 輸入時(shí)的組件屬性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)境的界面分為四個(gè)部分,分別是主窗
3、口、窗體窗口、代碼編輯器窗口和對(duì)象查看器窗口。如圖1-1所示: 圖1-1 Delphi 集成開發(fā)環(huán)境說明:l 標(biāo)題欄 主窗口頂部水平長條稱為標(biāo)題欄,標(biāo)題欄提供了兩部分信息:“Delphi 7”和項(xiàng)目文件名。如果裝入的是一個(gè)新建的項(xiàng)目,Delphi 會(huì)提供缺省項(xiàng)目名“Project1”,標(biāo)題欄就會(huì)顯示“Delphi 7 - Project1”。l 菜單欄 菜單功能File有新建、打開和保存Delphi應(yīng)用程序中各個(gè)項(xiàng)目和文件的命令Edit提供了編輯代碼和窗體組件的各種命令,如刪除、復(fù)制和粘貼等Search搜索、替換和定位字符串命令View打開Delphi 環(huán)境各個(gè)窗口和項(xiàng)目中的窗體和單元文件等P
4、roject管理、編譯和配置項(xiàng)目文件Run調(diào)試應(yīng)用程序,如設(shè)置斷點(diǎn)、單步執(zhí)行等Component用于建立和安裝組件以及定制自己的組件板Database開發(fā)數(shù)據(jù)庫應(yīng)用程序的各種工具ToolsDelphi 環(huán)境設(shè)置和一些Delphi外掛工具Window切換指定窗口為活動(dòng)窗口HelpDelphi 幫助文件l 工具欄工具欄是把一些常用的菜單命令以圖標(biāo)按鈕的方式顯示出來,以便于快速訪問。!工具欄的快捷按鈕可以由用戶按自己的需要自由添加和刪除。!用戶可以自定義工具欄中的項(xiàng)目,方法如下:選擇【View】/【Toolbars】/【Customizes】出現(xiàn)如下對(duì)話框:圖1-2 自定義工具欄欄目l 組件面板組件
5、板是建立應(yīng)用程序最常用的元素,所以必須掌握各種組件的功能和使用方法。組件板包括許多選項(xiàng)卡,單擊某選項(xiàng)卡就可以看到該選項(xiàng)卡包含的組件,Delphi 7共預(yù)定義了三十多個(gè)選項(xiàng)卡,可以單擊組件板右邊的箭頭按鈕來左右移動(dòng)組件板的選項(xiàng)卡標(biāo)簽。!用戶可以自訂制組件欄的頁面和各頁面所包含的組件。方法如下:選擇【Tools】/【Environment Options】 ,其【Palette】頁面如圖1-3所示:通過對(duì)話框的幾個(gè)按鈕,可以添加(Add)和刪除(Delete)選項(xiàng)卡。圖1-3 系統(tǒng)環(huán)境設(shè)置l 對(duì)象監(jiān)視器(Object Inspector)窗體窗口的左側(cè)為對(duì)象監(jiān)視器,它的功能是編輯設(shè)置窗體、組件的屬
6、性,并為窗體、組件添加事件的響應(yīng)處理過程。由三部分組成:對(duì)象選擇器:為一下拉列表框,列表框中是可供選擇的窗體以及當(dāng)前窗體上放置的所有組件。用戶可從中選擇要設(shè)置屬性或要添加事件的窗體或組件。屬性選項(xiàng)卡:即標(biāo)簽名為“Properties”的選項(xiàng)卡,用于設(shè)置當(dāng)前組件的屬性,隨對(duì)象選擇器中的所選組件而發(fā)生變化。事件選項(xiàng)卡:即標(biāo)簽名為“Events”的選項(xiàng)卡,用于為當(dāng)前組件添加各種響應(yīng)事件(如單擊、拖曳事件等),也隨對(duì)象選擇器中的所選組件而發(fā)生變化。圖1-4 對(duì)象監(jiān)視器窗口!如何設(shè)置屬性?第一種情況是用鼠標(biāo)單擊屬性標(biāo)題后,直接在屬性值編輯框中輸入屬性的數(shù)值或字符串。第二種情況是屬性值由Delphi 提供
7、可選項(xiàng)。這時(shí),用鼠標(biāo)單擊屬性標(biāo)題后,屬性值馬上變成一個(gè)下拉列表框,用戶可單擊下拉按鈕打開列表框,從中選擇所需的是屬性值。第三種情況是通過對(duì)話框來設(shè)置屬性值。單擊屬性標(biāo)題后,屬性值右端會(huì)出現(xiàn)一個(gè)帶“”的按鈕,單擊該按鈕,即可打開一個(gè)相應(yīng)的對(duì)話框,在對(duì)話框中選擇所需值,即可設(shè)置屬性值。第四種情況是屬性帶有子屬性。在這種屬性的屬性標(biāo)題前,一般會(huì)有一個(gè)“+”號(hào),單擊該“+”號(hào),將可以展開子屬性,同時(shí)“+”號(hào)變成“-”號(hào),此時(shí)即可依次對(duì)各子屬性進(jìn)行設(shè)置。!如何添加事件?從窗體上選擇一個(gè)組件,或從對(duì)象選擇器中選擇一個(gè)窗體或組件,使之成為當(dāng)前組件,就可以用對(duì)象查看器的事件選項(xiàng)卡來添加事件了。添加事件的過程一
8、般是選定組件后,單擊對(duì)象查看器的事件選項(xiàng)卡中要添加的事件名稱,再在其右側(cè)輸入事件的響應(yīng)函數(shù)名稱,然后回車即可。提示:如果單擊要添加的事件后,在其右側(cè)編輯框中雙擊鼠標(biāo),將為事件采用缺省事件處理過程名,同時(shí)進(jìn)入代碼編輯窗。l 窗體設(shè)計(jì)器放置組件對(duì)象的地方,程序員可以在窗體中繪制各式各樣的程序界面,用戶通過界面操作與應(yīng)用程序交互。l 對(duì)象樹形查看器(Object Treeview)對(duì)象樹形查看器是以目錄樹的形式顯示整個(gè)工程中使用到的對(duì)象。l 代碼編輯器窗口代碼編輯器窗口是用來編寫應(yīng)用程序的代碼的地方。!代碼編輯器一般隱藏在窗體設(shè)計(jì)器下面,可通過以下幾種方法顯示它:1、 選擇【View】/【Code
9、Explorer】或【View】/【Toggle Form/Unit】2、 單擊快捷工具欄【Form/Unit】按鈕3、 在集成開發(fā)環(huán)境中用鼠標(biāo)單擊代碼編輯器窗口§1.3 實(shí)例Hello,world!Delphi7應(yīng)用程序開發(fā)的基本步驟為:l 建立窗體l 在窗體中添加組件l 檢查和設(shè)定對(duì)象屬性l 編寫響應(yīng)事件處理程序l 保存文件 使用File菜單中Save All命令,保存項(xiàng)目、單元等文件。 l 編譯、運(yùn)行程序 使用Run菜單中Run命令運(yùn)行應(yīng)用程序。 例1-1 Hello,world!程序效果:程序中包含兩個(gè)按鈕,單擊“問候”按鈕,會(huì)出現(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é)們對(duì)Delphi的簡單易用有初步的感性認(rèn)識(shí),認(rèn)識(shí)和理解IDE的組成及各部分的作用。第二次課第2章 Object Pascal 語言基礎(chǔ)(1)本節(jié)學(xué)習(xí)要點(diǎn):² 深入了解Delphi的編程風(fēng)格(3
11、點(diǎn))² 熟練掌握Object Pascal的基本知識(shí)Ø 局部變量和全局變量(在implementation后定義全局變量)Ø 簡單數(shù)據(jù)類型(重點(diǎn)講解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)點(diǎn)。此外,使用編譯器創(chuàng)建的應(yīng)用程序只生成單個(gè)可執(zhí)行文件(.exe)§2.1 Delphi的
12、編程風(fēng)格§2.1.1 注釋語句為了使程序更加易讀,通常,我們要為程序添加注釋。即:對(duì)程序模塊、語句或命令作文字解釋,運(yùn)行時(shí),這些文字不會(huì)作為命令的一部分而被執(zhí)行,因而不會(huì)影響原來的程序。有時(shí),在調(diào)試的過程中,也可以用注釋的方法對(duì)部分命令作暫時(shí)的“刪除”,以縮小調(diào)試范圍。Object Pascal支持3種類型的注釋:l 組合符號(hào)“”與“”的成對(duì)使用表示它們之間的內(nèi)容為注釋部分。l 組合符號(hào)“(*”與“*)”的成對(duì)使用表示它們之間的內(nèi)容為注釋部分。l 符號(hào)“/”的單個(gè)使用表示所在行的該符號(hào)之后的內(nèi)容為注釋。提示:注釋符“”與“”、“(*”與“*)”在使用時(shí)不支持注釋的嵌套,而且必須成對(duì)使
13、用。即不允許形如 或(* (* *) *),但允許形如(* *)的結(jié)構(gòu)。建議:對(duì)于單行和少量幾行的注釋使用符號(hào)“/”,對(duì)于大塊注釋使用“”和“”或“(*”和“*)”。§2.1.2 對(duì)象命名在Object Pascal中,標(biāo)識(shí)符不區(qū)分大小寫,所以因此標(biāo)識(shí)符Myname、MyName、myname、myName、和MYNAME被認(rèn)為是同一個(gè)標(biāo)識(shí)符。為了增加程序的可讀性,建議大家養(yǎng)成良好的命名習(xí)慣:l 用意義明確的英文單詞和詞組命名l 單詞首字母大寫l 若要用多個(gè)單詞命名一個(gè)對(duì)象,單詞之間不能插入空格,且每一個(gè)單詞的首字母均大寫(駝峰格式)§2.1.3代碼縮進(jìn) (ctrl+shi
14、ft+i右移,ctrl+shift+u左移)采用代碼縮進(jìn)的方式即將程序代碼按照所處的級(jí)別不同在代碼行前面添加空格,通常是代碼的每一級(jí)向內(nèi)縮進(jìn)2格。目的是增強(qiáng)程序的可讀性。§2.2 標(biāo)識(shí)符標(biāo)識(shí)符是用來標(biāo)識(shí)(表示)程序、過程、函數(shù)、類型、符號(hào)常量、變量、對(duì)象等的名字的符號(hào)。對(duì)象Pascal語言中規(guī)定,標(biāo)識(shí)符由字母(AZ)、(az)、下劃線和數(shù)字09組成,標(biāo)識(shí)符的命名有以下三條限制:1 首字符必須是字母或下劃線,不能是數(shù)字;2 標(biāo)識(shí)符不能和保留字相同;3 缺省狀態(tài)下,Delphi 只認(rèn)為標(biāo)識(shí)的前255個(gè)組成字符是有意義的。雖然對(duì)象Pascal語言對(duì)大小寫不敏感,但在
15、編程時(shí)要保持一定的風(fēng)格。不要有時(shí)候全部大寫,另一些時(shí)候又大小寫混寫。§2.2.1 變量 變量是一個(gè)特定數(shù)據(jù)實(shí)體,它有預(yù)定義的數(shù)據(jù)類型,并且可在內(nèi)存中某個(gè)唯一的地址放有指定類型的值。 變量可在程序運(yùn)行的過程中動(dòng)態(tài)地修改,這是它與常量的最大區(qū)別。變量具有四個(gè)屬性,每個(gè)變量都有名字、類型、變量值和占用的內(nèi)存地址。變量在使用前必須聲明,聲明變量時(shí)必須指定一種數(shù)據(jù)類型。1、 變量的聲明基本語法: Var 變量名:類型;例: Var Value,Sum:Integer;Line:String2、 局部變量和全局變量全局變量一般在implementation后面聲明基本語法: Var 變量名:類型
16、=常量表達(dá)式;注意:局部變量在聲明時(shí)不能進(jìn)行初始化。但在同時(shí)聲明多個(gè)全局變量時(shí),也不能對(duì)變量進(jìn)行初始化。提示:在程序設(shè)計(jì)時(shí),應(yīng)盡量避免使用全局變量。§2.2.2常量 對(duì)于在程序運(yùn)行期間保持不變的值,Pascal 允許通過常量來聲明。聲明常量不必特定數(shù)據(jù)類型,但需要賦一個(gè)初值。編譯器會(huì)根據(jù)所賦初值自動(dòng)選用合適的數(shù)據(jù)類型?;菊Z法:Const 常量名=常量值;例:Const Pi=3.1415926; MyName=Smith;好處:l 可以更可靠地進(jìn)行修改l 增強(qiáng)了程序的可讀性§2.2.3預(yù)定義類型整型(Integer)、實(shí)型(Single)、布爾型(Boolean)、字符型
17、(Char)、指針型(Pointer)、字符串型(Pchar)§2.3 數(shù)據(jù)類型§2.3.1簡單數(shù)據(jù)類型(Simple)簡單數(shù)據(jù)類型(Simple)包括有序數(shù)據(jù)類型(ordinal)和實(shí)數(shù)數(shù)據(jù)類型(real)。其中有序數(shù)據(jù)類包括整數(shù)類型,字符類型,布爾類型,枚舉類型,子界類型l 整數(shù)類型整數(shù)類型數(shù)值范圍格式Integer-21474836482147483647帶符號(hào)32位Int64-263263-1帶符號(hào)64位Byte0255無符號(hào)8位Word065535無符號(hào)16位l 字符類型基本的字符類型(Character)包括AnsiChar和WideChar兩種。AnsiCha
18、r類型的數(shù)據(jù)具有一個(gè)字節(jié)。與擴(kuò)展的ANSI字符集對(duì)應(yīng)。WideChar類型的數(shù)據(jù)為雙字節(jié),與Unicode字符集對(duì)應(yīng)。Unicode字符集的前256個(gè)字符與ANSI字符集的相同。 通用的字符類型為Char,與AnsiChar類型相同。提示:可以使用函數(shù)Chr返回一個(gè)整型數(shù)對(duì)應(yīng)的字符,也可以使用函數(shù)Ord返回一個(gè)字符的序數(shù)。一般來說,對(duì)字母、數(shù)字或符號(hào),用代表它們的符號(hào)來表示較好;而涉及到特殊字符時(shí)用數(shù)字符號(hào)較好。下面列出了常用的特殊字符: #9 或 chr(9) 跳格 (Tab 鍵) #10 或 chr(10) 換行 #13 或 chr(13) 回車 (Enter 鍵) l 布爾類型布爾類型(
19、Boolean):Boolean對(duì)象Pascal語言預(yù)定義了兩個(gè)常量標(biāo)識(shí)符False和True,可以為Boolean類型的數(shù)據(jù)賦值為False或True,對(duì)應(yīng)的序數(shù)值為0和1l 枚舉類型枚舉類型(enumerated)是一種用戶自定義類型,它的定義是由一組有序的標(biāo)識(shí)符組成。注:類型的聲明使用保留字Type。枚舉類型類型定義形式如下:Type 類型名稱=(值1,值2,值n);例:Type Tdays=(Sunday,Monday,Tuesday,Wednesday,Thursday,Friday,Saturday);l 子界類型(實(shí)數(shù)不是)子界類型(subrange)為某個(gè)有序類型的子集。子界類
20、型也是一種用戶自定義類型,它規(guī)定了值域的上界和下界及取值的類型。子界類型的定義形式如下:Type 類型名稱=值域下界.值域上界;定義子界類型時(shí)應(yīng)注意以下幾點(diǎn): 1) 上界和下界必須屬同一順序類型,上界序號(hào)必須大于下界序號(hào);2) 子界類型的上、下界的類型定義了子界的基類型;3) 如果子界類型的基類型是枚舉類型,則應(yīng)該在定義子界類型之前先定義枚舉類型。 l 實(shí)數(shù)類型實(shí)數(shù)類型定義了一個(gè)能用浮點(diǎn)數(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不同,對(duì)象Pascal專門提供了預(yù)定義的字符串?dāng)?shù)據(jù)類型,可以方便的表示字符串,實(shí)現(xiàn)對(duì)字符串存儲(chǔ)、處理等操作。字符串類型最大長度存儲(chǔ)空間說 明ShortString2552到256字節(jié)為了和以前的版本兼容AnsiString2314字節(jié)到2GB動(dòng)態(tài)分配內(nèi)存WideString2304字節(jié)到2GB使用Unicode字符集一般情況下,當(dāng)我們聲明一個(gè)變量為字符串類型時(shí)使用String保留字。缺省時(shí),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 集合類型一個(gè)集合由集合成員組成,集合的成員元素是無序的。集合的另一個(gè)特點(diǎn)是無重復(fù)元素,集合操作的重點(diǎn)是判定一個(gè)元素是否屬于該集合,而不是元素在集合的次序和出現(xiàn)的頻率。集合類型(set)的類型定義方
23、法如下:Type類型名稱=set of 元素類型;l 數(shù)組類型數(shù)組類型(array)的數(shù)據(jù)為某一類相同類型的元素按一定的順序組成的序列,包括靜態(tài)數(shù)組和動(dòng)態(tài)數(shù)組兩種。1) 靜態(tài)數(shù)組靜態(tài)數(shù)組就是傳統(tǒng)的Pascal中的數(shù)組類型。在程序初始化時(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ù)組時(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 動(dòng)態(tài)數(shù)組 它不需要在聲明時(shí)指定大小,因此,為我們?cè)诔绦蛑袆?dòng)態(tài)地開辟存儲(chǔ)空間提供了方便的途徑。動(dòng)態(tài)數(shù)組的定義方式如下:Type 數(shù)組類型名=array of 基類型; /一維數(shù)組 數(shù)組類型名=array of array of array of 基類型 /多維數(shù)組。l 記錄類型 記錄類型(record)可以由不同類型的元素組成,這些元素稱為域。在記錄類型中為每個(gè)域指定了一個(gè)名稱和數(shù)據(jù)類型。數(shù)據(jù)類
25、型可以是對(duì)象Pascal語言中預(yù)定義的類型,也可以是程序員自定義的類型。記錄類型的定義方式如下: Type 記錄類型名=record 域名1:類型1。 域名2:類型2; . 域名n:類型n; end;記錄類型定義中列出了所有域,每個(gè)域?qū)?yīng)一個(gè)域名,通過域名可以訪問它。例: Type TEmployee=record Name:string20; YearHired:1990.2000; Salary:Double; End;l 指針類型 指針類型(pointer)的變量指向的是內(nèi)存空間的地址。通常我們真正關(guān)心的是某一個(gè)地址存放的數(shù)據(jù),通過指針可以對(duì)所指地址中的數(shù)據(jù)進(jìn)行操作。指針類型的定義形式如
26、下:Type 指針類型名=類型; 其中:a) 指針類型名為任意合法的標(biāo)識(shí)符。b) “”放在類型的前面,表明聲明的類型為一個(gè)指針類型。c) “”后面緊跟的類型確定了指針?biāo)赶虻念愋?,可以是簡單類型。如:整型、?shí)型或枚舉型等,也可以是結(jié)構(gòu)類型,如:數(shù)組、集合或記錄等等。l 可變類型Variant 有時(shí)要對(duì)一些數(shù)據(jù)類型變化的數(shù)據(jù)進(jìn)行操作,并且要到運(yùn)行時(shí)才能根據(jù)實(shí)際情況確定數(shù)據(jù)的類型,這時(shí)就可以使用可變類型的數(shù)據(jù)。這些數(shù)據(jù)的數(shù)據(jù)類型可以在運(yùn)行期間自動(dòng)改變,不過它們比固定類型的數(shù)據(jù)占用更多的空間和更多的操作時(shí)間。Var 變量名:Variant。§2.4 賦值語句 賦值語句的形式如下: 變量:=
27、表達(dá)式; 例:y:=0.5; /將一個(gè)常量賦值給一個(gè)變量。Done:=(I>=1) and (I<100) ;/將邏輯表達(dá)式的結(jié)果賦給一個(gè)變量。Huel:=Blue,Succ(C); /將一個(gè)子集賦值給一個(gè)變量。I:=Sqr(J)-I*K; /將一個(gè)表達(dá)式的結(jié)果賦值給一個(gè)變量。Shortint(MyChar):=122; /給類型轉(zhuǎn)換后的變量賦值。MyStringI:=¡¯A¡¯ /給數(shù)組的一個(gè)元素賦值。TmyObject.SomeProperty:=True; /給對(duì)象的屬性賦值。例2-1 改變編輯框的色彩在system中有時(shí)鐘可拉入 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í)要點(diǎn):²
29、熟練掌握過程與函數(shù)的定義和使用² 函數(shù)與過程的區(qū)別² 如何在事件處理過程中使用Object Pascal編碼² 關(guān)于過程中值形參和變量形參的區(qū)別² 了解Object Pascal控制語句的使用Ø IF語句Ø CASE語句Ø REPEAT語句Ø WHILE語句Ø FOR語句² 熟練掌握WITH語句的使用§2.5 過程與函數(shù) 過程與函數(shù)是實(shí)現(xiàn)一定功能的語句塊,可以在程序的其他地方被調(diào)用,也可以進(jìn)行遞歸調(diào)用。 過程是你要求計(jì)算機(jī)執(zhí)行的操作,函數(shù)是能返回值的計(jì)算。 過程通常作為一個(gè)單獨(dú)的命令語
30、句出現(xiàn)在程序中,而函數(shù)一般作為表達(dá)式的一部分。提示:兩者突出的不同點(diǎn)在于:函數(shù)能返回計(jì)算結(jié)果,即有一個(gè)返回值,而過程沒有。它們都可以帶多個(gè)給定類型的參數(shù)。§2.5.1函數(shù)的聲明和使用函數(shù)的定義包括函數(shù)原型、函數(shù)體的定義。函數(shù)聲明的語法格式: function <函數(shù)名> (<形式參數(shù)列表>):<返回類型> begin語句;end;函數(shù)調(diào)用的語法格式:函數(shù)名(<實(shí)參數(shù)列表>)說明:參數(shù)1參數(shù)的作用 一般將過程、函數(shù)定義時(shí)參數(shù)列表中的參數(shù)稱為形參,將過程、函數(shù)調(diào)用時(shí)參數(shù)列表中的參數(shù)稱為實(shí)參。2值參數(shù) 值參數(shù)可以像過程或函數(shù)的本地變量一樣使用
31、,其初值來自過程調(diào)用時(shí)的實(shí)參數(shù),對(duì)值參數(shù)的修改并不影響實(shí)參數(shù)。3常量參數(shù) 常量參數(shù)可以像局部的只讀變量一樣來使用,其初值來自過程調(diào)用時(shí)的實(shí)參數(shù),實(shí)參數(shù)必須是一個(gè)表達(dá)式。在定義過程(函數(shù))的形參表中的有關(guān)形參前加上保留字CONST。不允許在過程或函數(shù)中給常量參數(shù)賦值,并且常量參數(shù)不能作為實(shí)參數(shù)傳遞給另一個(gè)過程或函數(shù)。4變量參數(shù) 若要將一個(gè)值從過程或函數(shù)傳遞給調(diào)用者,則必須在定義它們時(shí)使用變量參數(shù)。這時(shí)過程或函數(shù)調(diào)用中的實(shí)參數(shù)必須是變量的引用。在過程或函數(shù)執(zhí)行期間,這個(gè)變量參數(shù)就代表了實(shí)參數(shù),改變了變量參數(shù)也就相應(yīng)地改變了實(shí)參數(shù),在被調(diào)用的過程(函數(shù))的形參表中的有關(guān)形參前加上保留字Var。5數(shù)組
32、參數(shù)過程或函數(shù)中也可以使用數(shù)組作為參數(shù),但不能在數(shù)組參數(shù)的定義中包含數(shù)組下標(biāo)類型的定義??梢韵冗M(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;其中: <過程名>為一個(gè)有效的標(biāo)識(shí)符。 <參數(shù)列表>需要指明參數(shù)的個(gè)數(shù)及其數(shù)據(jù)類型。 <局部聲明塊>中定義了該過程中需要使用的一些臨時(shí)變量,通常也叫做本地變量。 在begin與end
34、之間是在過程調(diào)用時(shí)實(shí)現(xiàn)特定功能的一系列語句。過程調(diào)用的語法格式:<過程名>(<實(shí)際參數(shù)列表>) 注意:在過程或函數(shù)原型中,多個(gè)參數(shù)之間用分號(hào)隔開,同一類型的參數(shù)可以放在一起,以逗號(hào)隔開。在過程或函數(shù)調(diào)用的時(shí)候,在過程或函數(shù)原型中,多個(gè)參數(shù)之間用逗號(hào)隔開。一般來說,形參列表和實(shí)參列表完全匹配是指參數(shù)的個(gè)數(shù)一樣,而且順序排列的數(shù)據(jù)類型也完全一致。對(duì)于普通的函數(shù),如果編譯器發(fā)現(xiàn)實(shí)參的數(shù)據(jù)類型與形參的數(shù)據(jù)類型不匹配,會(huì)將實(shí)參的數(shù)據(jù)類型進(jìn)行一次或多次的提升,比如:將Integer類型轉(zhuǎn)換為Double類型。§2.6 控制語句Object Pascal的控制語句包括條件語
35、句、判斷語句、循環(huán)語句。§2.6.1判斷語句 判斷語句通過條件檢測(cè),判斷是否執(zhí)行該條件語句中包含的語句。條件語句可有兩種基本形式:if語句和case語句。1if 語句 if語句主要實(shí)現(xiàn)了判斷的功能。具體形式如下:if 表達(dá)式 then 語句; 或者 if 表達(dá)式 then 語句1 else 語句2; 對(duì)if-then型語句,僅當(dāng)條件滿足時(shí),語句才執(zhí)行。 對(duì)if-then-else型,當(dāng)條件滿足時(shí),執(zhí)行語句1,否則執(zhí)行語句2,在兩條語句中選擇一條執(zhí)行。注意:在第二種情況下,語句1的最后不能有分號(hào)。如果語句1是一個(gè)復(fù)合語句,則該復(fù)合語句的end后面也不能有分號(hào)。2case語句 case語
36、句對(duì)一個(gè)結(jié)果的多個(gè)分支進(jìn)行判斷,具體形式如下: case 選擇器表達(dá)式 of 情況常量表1:語句1; : 情況常量表n:語句n; else 語句; /方括號(hào)內(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語句可以實(shí)現(xiàn)循環(huán)操作的功能。具體形式如下:repeat 語句1;:語句n;until 循環(huán)終止條件表達(dá)式;在<循環(huán)終止條件表達(dá)式>為True之前,循環(huán)執(zhí)行語句<語句1>到<語句n>。例 計(jì)算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語句也可以實(shí)現(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語句可以實(shí)現(xiàn)循環(huán)操作的功能。具體形式如下:for 循環(huán)變量:=初值to 終值 do循環(huán)體語句; 或者:for
39、循環(huán)變量:=初值 downto 終值 do循環(huán)體語句;其中<循環(huán)變量>為一個(gè)有序類型的數(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)合計(jì)數(shù)>1000時(shí),執(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時(shí)
41、,從循環(huán)中強(qiáng)制退出,執(zhí)行until后面的語句。2Continue(強(qiáng)制縮短循環(huán))過程 Continue語句用于從For語句、While語句或Repeat語句中強(qiáng)行結(jié)束本次循環(huán),開始下一次循環(huán)。計(jì)算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時(shí),不執(zhí)行語句與until語句之間的語句(sum:=sum+i),進(jìn)行下一次循環(huán)。 3with語句 在使用記錄類型的變量時(shí),可以通過with語句來簡化記錄中域引用的寫法。具體形式如下:with 記錄型變量 do 語句 多個(gè)屬性從屬于一個(gè)對(duì)象時(shí)可用到with第四次課上機(jī)實(shí)驗(yàn)一實(shí)驗(yàn)題目:隨機(jī)加減法實(shí)驗(yàn)內(nèi)容:要隨機(jī)產(chǎn)生一個(gè)加減法的算式,輸入答案,按回車鍵后,能根據(jù)答案是否正確自動(dòng)給出相應(yīng)的提示對(duì)話框。通過本實(shí)驗(yàn)使學(xué)生了解在Delphi中如何定義變量,如何使用控制語句以及如何使用過程與函數(shù)。從而建立一個(gè)對(duì)于屬性和方法的感
43、性認(rèn)識(shí)。§2.7隨機(jī)加減法測(cè)試?yán)?-3 隨機(jī)加減法測(cè)試隨機(jī)產(chǎn)生一個(gè)加減法的算式:輸入答案:按回車鍵后,能夠根據(jù)答案是否正確給出相應(yīng)的提示對(duì)話框。部分關(guān)鍵源代碼:procedure TForm1.FormCreate(Sender: TObject);varm,n,k:integer; /定義整型變量beginrandomize; /初始化隨機(jī)數(shù)發(fā)生器 m:=random(50); /為變量m賦一個(gè)50以內(nèi)的隨機(jī)值 n:=random(50); /為變量n賦一個(gè)50以內(nèi)的隨機(jī)值 k:=random(2); /為變量k賦一個(gè)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 /如果是加法,就對(duì)兩個(gè)對(duì)象的值求和 answer:=strtoint(label1.Caption)+strtoint(label3.Caption) else /如果不是加法,就對(duì)兩個(gè)對(duì)象的值求差 answer:=strtoint(label1.Caption)-strtoint(label3.Caption); /如果答案與Edit1對(duì)象中的內(nèi)容相同 if answer=strtoint(edit1.Text)
46、 then begin showmessage('回答正確'); /顯示信息框"回答正確" button1.SetFocus ; /將焦點(diǎn)定位于按鈕Button1上 end else /如果答案與Edit1對(duì)象中的內(nèi)容不相同 begin showmessage('回答錯(cuò)誤'); /顯示信息框"回答錯(cuò)誤" edit1.SetFocus ; /將焦點(diǎn)定位于按鈕Edit上 end; edit1.SelectAll ; /選擇Edit1中的內(nèi)容 end;endprocedure TForm1.Button2Click(Sender
47、: TObject);begin close;end;§2.8 小結(jié)本章主要介紹了ObjectPascal的基本語法和語義,是程序設(shè)計(jì)的基礎(chǔ),由于學(xué)生先期修過高級(jí)語言課程,因而在講授過程中可根據(jù)實(shí)際情況調(diào)整進(jìn)度。第五次課第3章 面向?qū)ο缶幊蹋?)本節(jié)學(xué)習(xí)要點(diǎn):² 深入領(lǐng)會(huì)類的基本概念Ø 類的聲明Ø 類的對(duì)象Ø 構(gòu)造函數(shù)Ø 析構(gòu)函數(shù)² 熟練掌握類的封裝技術(shù)(5個(gè)存取控制符的使用)Ø Public類型Ø Private類型Ø Protected類型Ø Published類型第3章 面向?qū)ο?/p>
48、編程面向?qū)ο缶幊蹋∣bject Oriented Programming ,OOP)Borland公司在Pascal中添加了面向?qū)ο蟮奶匦裕瑯?gòu)成了Delphi的程序設(shè)計(jì)語言O(shè)bject Pascal§3.1 OOP基本概念!什么是對(duì)象?對(duì)象是OOP應(yīng)用程序的一個(gè)重要組成部件,這個(gè)組成部件封裝了部分應(yīng)用程序,這部分應(yīng)用程序可以是幾個(gè)過程、數(shù)據(jù)或更抽象的實(shí)體。對(duì)象是從類型中創(chuàng)建的,對(duì)象的類型是類。對(duì)象中的幾個(gè)基本概念:l 字段:對(duì)象中的數(shù)據(jù)成員l 屬性:訪問對(duì)象中包含的數(shù)據(jù),但不能直接訪問數(shù)據(jù)l 方法:用于表示對(duì)象中的過程和函數(shù)l 對(duì)象的生命周期:從使用類定義開始到刪除它為止§
49、3.2 類的基本概念類是一種用戶定義的數(shù)據(jù)類型,通常用來描述一些非常相似的對(duì)象所具有的共同特征和行為。對(duì)象是類的實(shí)例§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;/定義類/定義對(duì)象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類的對(duì)象1、構(gòu)造函數(shù) /對(duì)于類中的對(duì)象進(jìn)行初始化Constructor Create( );2、 析構(gòu)函數(shù)Free方法Destructor綜合實(shí)例(創(chuàng)建對(duì)象,使用對(duì)象,處理對(duì)象,釋放對(duì)象)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個(gè)存取控制符: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的屬性和方法生成自動(dòng)類型信息。自動(dòng)類型信息使得創(chuàng)建OLE自動(dòng)化服務(wù)器成為可能。§3.3.6 類的封裝應(yīng)用練習(xí)例3-1 類的應(yīng)用練習(xí)程序效果:設(shè)計(jì)兩個(gè)窗體,在Form1對(duì)應(yīng)的單元文件中定義一個(gè)類,該類具有Publec和Private兩種類型的方法,在兩個(gè)窗體中分別調(diào)用該類的方法。程序基本畫面如圖所示:完整的源代碼見書P46結(jié)論:由本例我們能夠知道在定義類的單元中,對(duì)私有類型的字段和方法進(jìn)行訪問和調(diào)用是不受限制的;但在不同的單元終究不能使用對(duì)類的私有類型進(jìn)行訪問。第六次課第3章 面向?qū)ο缶幊蹋?)本節(jié)學(xué)習(xí)要點(diǎn):² 掌握類的繼承性,深入領(lǐng)會(huì)代碼重用技術(shù)的重要性² 掌握類的多態(tài)性Ø 靜態(tài)方法Ø 虛擬方法Ø 重載方法Ø 動(dòng)態(tài)
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 帶貨博主合同模板
- 工程配電箱買賣合同范例
- 印刷付款方式合同范例
- 小區(qū)供水改造合同范例
- 住宅銷售合同范例
- 個(gè)人黨性鍛煉總結(jié)
- 做生意欠款合同范例
- 國際快件業(yè)務(wù)合作合同模板
- 《體化監(jiān)護(hù)方案》課件
- 中介招聘項(xiàng)目合同模板
- 人教版(PEP)小學(xué)六年級(jí)英語上冊(cè)全冊(cè)教案
- 2024年木屑購銷合同范本
- 第二章 旅游線路類型及設(shè)計(jì)原則
- 大學(xué)美育學(xué)習(xí)通超星期末考試答案章節(jié)答案2024年
- 項(xiàng)目工作計(jì)劃表模板(共6篇)
- 臨時(shí)食堂施工方案
- 2024年人教版七年級(jí)上冊(cè)地理期中測(cè)試試卷及答案
- 2023-2024全國初中物理競(jìng)賽試題:光的反射及折射(含答案)
- 2024年英語專業(yè)八級(jí)漢譯英試題真題
- 2024年中考英語試題分類匯編:短文填空之選詞填空(解析版)
- 山東省煙臺(tái)市2024年中考英語真題【附真題答案】
評(píng)論
0/150
提交評(píng)論