




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、Delphi 7 程序設計與實驗指導第一章 Delphi概述Delphi被稱為是第四代編程語言,它采用基于窗體和面向對象的方法,具有高速的編譯器,功能強大的數據庫支持,與Windows編程緊密結合,成熟的組件技術等特點。 Delphi是全新的可視化編程環境,為用戶提供了一種方便、快捷的Windows應用程序開發工具;除此之外,還允許用戶掛接其它的應用程序開發工具。Delphi適應于多種數據庫結構,從客戶機/服務器模式到多層數據結構模式,而且具有高效率的數據庫管理系統和新一代更先進的數據庫引擎,同時采用最新的數據分析手段和提供大量的企業組件。本章主要介紹Delphi 7的功能特點以及Delphi
2、 7的安裝和集成開發環境(IDE)。1.1 Delphi的發展Delphi是Windows系統下的可視化集成開發工具,提供了強大的可視化組件VCL(Visual Component Library)功能,為快速、高效地開發出Windows系統下的應用程序提供了方便。Delphi從最初的Delphi 1.0、Delphi 2.0發展到了現在的Delphi 7.0。Delphi 7.0是Windows環境下進行交叉平臺快速應用開發的軟件,無論是企業級用戶,還是個人開發者,都能夠利用Delphi 7.0輕松、快捷地構建各類應用。1.2 Delphi 7的功能特點1.2.1 Delphi 的主要特點
3、1可視化開發環境 2豐富的可視化組件VCL 3面向對象特性 4高效的編譯器 5強大的數據庫開發功能 6良好的分布式應用開發支持 1.2.2 Delphi 7的新特性 1集成開發環境方面 2Web技術(僅限于專業版和企業版)方面 3數據庫技術方面 4COM方面 5對開發Linux平臺應用程序支持方面1.2 Delphi 7的功能特點1.3 Delphi的安裝1.3.1 Delphi 7的安裝要求Delphi 7有3個版本,分別是標準版(Standard)、專業版(Professional)和企業版(Enterprise),適用于一般用途開發、較高層次開發和進行多層數據庫及分布式應用的開發。在安裝
4、Delphi 7之前,請先檢查一下軟硬件配置是否符合以下要求: Pentium 166以上的CPU,推薦Pentium350以上。 32MB以上的內存,推薦64MB以上。 Windows9x、Windows NT/2000或更高版本的操作系統。 Delphi 7的壓縮安裝需100MB以上的硬盤空間。 VGA或更高分辨率的顯示器。1.3 Delphi的安裝1.3.2 Delphi 7的安裝步驟 (1) 啟動Windows 98,將Delphi 7安裝盤放入光驅,系統會自動彈出Delphi 7的歡迎界面,如圖1-1所示。圖1-1 安裝歡迎界面1.3 Delphi的安裝(2) 單擊Next按鈕,進入
5、下一步,安裝向導提示用戶輸入序列號以及授權碼,如圖1-2所示。用戶可以在說明書或軟件包裝上找到所需信息,也可在根目錄下的有關文件中找到。圖1-2 輸入序列號1.3 Delphi的安裝(3) 輸入正確的序列號后,單擊Next按鈕,將顯示安裝所需的軟件許可協議,如果用戶同意,單擊Next按鈕進入下一步。(4) 安裝向導提示用戶選擇安裝形式,如圖1-3所示。圖1-3 選擇安裝類型1.3 Delphi的安裝(5) 安裝向導詢問是否需要VisiBroker/CORBA支持,用戶可根據實際情況自由選擇。(6) 單擊Next按鈕以后,安裝向導提示系統將安裝三種版本的微軟Office組件,但只有一種會被注冊,
6、作為默認Office組件,用戶可根據需要選擇,如圖1-4所示。 圖1-4 選擇微軟Office組件1.3 Delphi的安裝(7) 根據安裝機器當中的Office的類型選擇對應的選項,然后單擊Next按鈕,此時將出現安裝附加組件窗口,如圖1-5所示,一般情況下建議用戶選擇默認設置。圖1-5 安裝附件組件1.3 Delphi的安裝(8) 單擊Next按鈕,安裝向導提示輸入Delphi 7安裝路徑,默認路徑如圖1-6所示。單擊Change按鈕可改變安裝目錄,在此建議使用默認路徑以免引起混亂。圖1-6 選擇安裝路徑1.3 Delphi的安裝(9) 單擊Next按鈕,安裝向導詢問是否將安裝數據庫保存到
7、本地硬盤,如圖1-7所示。圖1-7 保存安裝數據庫1.3 Delphi的安裝(10) 單擊Next按鈕,彈出準備安裝窗口,如圖1-8所示。如果用戶發現存在遺漏之處,還可以單擊Back按鈕回到上一對話框進行修改。圖1-8 準備安裝1.3 Delphi的安裝(11) 單擊Install按鈕正式開始安裝,如圖1-9所示。在此過程中用戶可隨時單擊Cancel按鈕終止安裝過程。圖1-9 正式安裝1.3 Delphi的安裝(12) 安裝完畢后,系統將自動進行程序各個部分的配置,配置完成以后,將提示安裝過程完畢,如圖1-10所示。圖1-10 安裝完畢1.3 Delphi的安裝(13) 單擊Finish按鈕,
8、彈出一個對話框,如圖1-11所示,提示是否重新啟動計算機以替代在安裝過程中鎖定的文件,用戶可根據提示繼續進行。圖1-11 提示重新啟動計算機1.4 Delphi的集成開發環境Delphi 7系統安裝完成后,單擊“開始程序Borland Delphi 7Delphi 7”即可啟動Delphi 7。Borland Delphi 7程序組包含以下部分:即Help、BDE Administrator、Database Desktop、Datapump、Delphi 7、Image Editor、Register Now、SQL Explorer、SQL Monitor、WinSight 32和XML
9、Mapper。Delphi 7系統的集成開發環境由7個部分構成,如圖1-12所示。這7個部分是:主菜單、快捷工具欄、組件面板、窗體設計器、代碼編輯器、對象樹狀查看器(Object TreeView)和對象查看器(Object Inspector)。它們分布在Delphi 7主菜單、窗體設計器、代碼編輯和瀏覽窗口、對象樹狀查看窗口和對象查看窗口等窗口中。1.4 Delphi的集成開發環境圖1-12 Delphi 7集成開發環境1.4 Delphi的集成開發環境1.4.1 Delphi 7主窗口 Delphi 7主窗口位于集成開發環境的頂端,如圖1-13所示。圖1-15 Delphi 7集成開發環
10、境的主窗口 主窗口包含主菜單、工具欄和組件面板,是Delphi 7集成開發環境的核心。通過主窗口,開發者可控制從工程(又稱項目)創建、界面設計、程序編制、調試到運行的整個應用開發過程。1.4 Delphi的集成開發環境1主菜單 主菜單及其下拉菜單提供了Delphi 7集成開發環境的所有功能。Delphi 7主菜單除包括通常Windows應用程序都具有的File、Edit、View、Window及Help等菜單項外,還有與Delphi 7工程、運行及配置等相關的菜單項。2.快捷工具欄(Speed ToolBar) 快捷工具欄位于Delphi 7主窗口的左下方它提供了與主菜單的常用菜單項相對應的命
11、令按鈕,可以在不打開主菜單的情況下快速執行這些功能。各按鈕的功能見書表1-9所示。 1.4 Delphi的集成開發環境3.組件面板Delphi 7主窗口的另一部分是組件面板,位于主窗口的右下方(如圖1-26)。組件按功能、基類或特性進行了分類,用一個具有多頁面的組件面板進行管理,為用戶使用組件進行應用設計帶來了很大的方便。組件面板的布局如圖1-16所示。圖1-16 組件面板每一組件選項卡都是以鼠標箭頭開始的,它表明該選項卡當前處于初始狀態,用戶尚未選擇任何組件。當用戶單擊選擇某個組件后,即可將該組件添加到窗體。1.4 Delphi的集成開發環境1.4.2 窗體設計器用戶界面是應用系統與用戶直接
12、交互的界面。設計用戶界面是設計應用程序的重要部分。Delphi的用戶界面由窗體構成,窗體的設計是在窗體設計器中完成的。Delphi 7提供了一個功能強大的、所見即所得的窗體設計器。用戶只要從組件面板中選擇需要的組件添加到窗體,就可獲得所需的應用程序界面。在窗體設計器中還可對窗體中所包含的組件進行刪除或編輯操作。在Delphi 7中創建一個新的應用程序時,系統將自動在當前工程中添加1個新窗體,默認名為Form1。1.4 Delphi的集成開發環境1.4.3 對象樹狀查看器對象樹狀查看器以樹狀結構顯示當前工程所包含的所有對象,就像在Windows系統的文件管理器中顯示各文件夾及文件的樹狀結構一樣,
13、如圖1-17所示。圖1-17 對象樹狀查看器 1.4 Delphi的集成開發環境1.4.4 對象查看器對象查看器的主要功能是對對象進行設計和管理,它是聯系界面各組件和程序編碼的媒介。對象查看器由對象列表框、屬性選項卡和事件選項卡三個部分組成,如圖1-18所示。對象查看器有兩項主要功能:(1) 設置或修改窗體以及包含于窗體的對象屬性。(2) 設置對象響應的事件處理程序。 圖1-18 對象查看器1.4 Delphi的集成開發環境1.4.5 代碼編輯和瀏覽窗口代碼編輯和瀏覽窗口包括兩部分,其外觀如圖1-19所示。左邊是代碼樹狀瀏覽器,右邊是代碼編輯器,標題欄顯示的是正處于當前單元文件的名稱。代碼編輯
14、器是進行源程序的編輯窗口。可以同時對多個單元文件進行編輯,此時各單元文件以多個標簽頁的形式出現,選擇相應的標簽頁即可對該單元文件進行編輯,底部的狀態欄有當前行列、改寫/插入等編輯狀態提示。代碼瀏覽器以樹狀圖方式顯示單元文件的信息。圖1-19 代碼編輯和瀏覽窗口1.4 Delphi的集成開發環境習題1Delphi 7有哪些主要特點?2Delphi 7有哪些新功能?3簡述Delphi 7的安裝要求。4Delphi 7集成開發環境由哪幾部分組成?簡述各部分的功能。Delphi 7 程序設計與實驗指導第二章 面向對象的PascalDelphi的編程語言即Object Pascal是在Pascal的基礎
15、上發展起來的,它繼承了Pascal語言語法結構嚴謹和編譯代碼高效優化等優點。本章將介紹Object Pascal的數據類型、常量、變量、運算符、語句、函數和過程等。2.1 數據類型2.1.1 簡單數據類型簡單類型包括有序類型和實型兩種。1有序類型有序類型包括整型、字符型、布爾型、枚舉型和子界型。有序類型是一種線性的數據結構,每個值都有唯一的前驅(除第一個)和唯一的后繼(除最后一個)。(1) 整型整型的表示范圍及存儲格式見表2-1。類型取值范圍存儲格式Integer-21474836482147483647有符號32位整數Cardinal04294967295無符號32位整數Shortint-1
16、28127有符號8位整數Smallint-3276832767有符號16位整數Longint-21474836482147483647有符號32位整數Int64-263263-l有符號64位整數Byte0255無符號8位整數Word065535無符號16位整數Longword04294967295無符號32位整數表2-1 整型的取值范圍和存儲格式2.1 數據類型2.1 數據類型(2) 字符型字符型的類型標識符是Char。字符型的數據只能是單個字符,不能是一串字符。例如ABC,x=? 等都不是字符型的數據,而是字符串。(3) 布爾型通常用到的布爾類型是Boolean,一個Boolean類型的變量
17、占一個字節,它只有兩種取值:true和false。定義變量i,ch,t分別為整型、字符型、布爾型。var i: Interge; ch: Char; t: Boolean;2.1 數據類型(4) 枚舉類型枚舉類型是用一些標識符來表示一系列有序數,即由一些標識符組成的一個線性表。定義枚舉類型的語法是:typetypeName=(val1,.,valn)(5) 子界類型子界類型指的是某個有序類型(稱為基類)的一個子集。定義子界類型的語法是:typetypeName=Low.High;2.1 數據類型2實型表2-2給出了實型的表示范圍和存儲格式。類型范圍有效位所占位數Real2.9*10-241.7
18、*1030811-28Real482.9*10-391.7*103811-26Single1.510-453.4*1038784Double5.0*10-3241.7*1030815168Extended3.6*10-49511.1*104932192010Comp-263+l263-l19208Currency-922337203685477.5808922337203685477.580719208表2-2 實型的表示范圍和存儲格式2.1 數據類型2.1.2 字符串類型字符串類型是用一對單引號括起來的一系列字符。字符串類型的表示范圍和存儲格式見表 2-3。 類型最多字符字節數字符集Shor
19、tString2552256BANSI向后兼容AnsiString23142GBSBCS,MBCSLongString23142GBUnicodeWideString23042GB等價于AnsiChar表2-3 字符串類型的表示范圍和存儲格式2.1 數據類型2.1.3 結構類型結構數據類型是一種復合數據類型,由多個數據組成。結構類型包括集合類型、數組類型、記錄類型、文件類型等。1集合類型集合類型是一組相同類型元素的組合。定義集合類型:typeName=set of BaseType2數組數組是一些具有相同類型元素的有序組合。 (1) 靜態數組 靜態數組的聲明格式為:typeName=array
20、indexType1,.,indexTypen of BaseType;2.1 數據類型(2) 動態數組動態數組沒有固定的大小或長度。當賦值或使用某些函數(如SetLength)時,動態數組在內存中重新分配。動態數組的聲明格式為:type Name=array of BaseType;定義動態數組不需聲明元素的個數。例如:typeDynamicarray=array of Real;vara1,a2:Dynamicarry;a1:=a2; /a1和a2指向相同的內存單元。2.1 數據類型3記錄類型記錄類型(有的語言中被稱為結構)是一個不同種類元素的集合,每個元素稱為字段(field)。在聲明時
21、,指定記錄的名字和每個字段。聲明格式為:typeRecordTypeName=recordFieldList 1:type1;FieldList 2:type2; FieldList n:type n;end;2.1 數據類型4文件類型文件類型是由相同類型的元素組成的有序集合。文件類型的聲明格式為:typefileTypeName = file of type例:聲明一個文件類型RecordList,以上面已定義的TdateRec為數據類型。typeRecordList = file of TdateRec;var Myrecordlist:RecordList;2.1 數據類型2.1.4 可
22、變類型有時要對一些數據類型變化的數據進行操作,并且在編譯期間不能確定數據的類型,這時就可以使用可變類型的數據。可變類型可以使用除記錄、集合、靜態數組、文件等結構類型、指針類型及長整型外的所有類型。可變類型有一個特殊的值Null,表示不明的或丟失的數據。可變類型變量的聲明格式為:varv1:Variant;2.2 常量與變量2.2.1 標識符標識符是描述Object Pascal程序各個部分的名稱,這些部分包括標記、對象、過程、類型、單元、變量及程序。標識符的大小寫無關(即它不區分大小寫),并且遵循以下規則:可為任意長度,但只有前255個字符有效。標識符的第1個字符必須是字母或下劃線。跟在第1個
23、字符后面的字符必須是字母、數字或下劃線。標識符中不允許出現空格。 2.2.2 常量常量是一個在程序的運行過程中具有不變值的標識符,常量的聲明格式如下:Const 常量名=表達式; 變量不能在一個常量聲明中使用,但算術和邏輯運算符可以,下面的函數可以在常量聲明中使用。Abs Low Round Chr Odd SizeOf Hi OrdSucc High Pred Swap Length Ptr Trunc Lo2.2 常量與變量2.2 常量與變量2.2.3 變量變量是程序代碼中代表一個內存地址的標識符,而此地址中的內容在程序執行過程中可以改變。在變量使用之前必須先聲明,變量聲明格式如下:var
24、 變量名表:類型名; 例:var s:string; i:integer;flag:Boolean;2.3 表達式與運算符2.3.1 表達式表達式就是變量、常量、字符串、運算符及函數按照一定規則的組合。例:Peoples Republic Of +ChinaGross/12Max(x,y)-Min(x,y)2.3.2 運算符1賦值運算符(:=)賦值運算符“:=”是先計算賦值運算符右邊表達式的值,再將結果賦給左邊的變量。2.3 表達式與運算符2算術運算符 表2-4 算術運算符運算符作用操作數類型結果類型+表示正值Integer或RealInteger或Real算術加Integer或RealInt
25、eger或Real表示負值Integer或RealInteger或Real算術減Integer或RealInteger或Real*算術的乘運算Integer或RealInteger或Real/浮點數的除運算Integer或RealRealDiv整型數的除運算IntegerIntegerMod模運算IntegerInteger2.3 表達式與運算符3關系運算符關系運算符是對兩個類型相容且可以比較大小的數據進行比較,結果為布爾類型,見表2-5。 表2-5 關系運算符運算符作用結果類型=等于Bealoon不等于Bealoon大于Bealoon=大于或等于BealoonIn屬于Bealoon2.3 表
26、達式與運算符4邏輯運算符邏輯運算符對邏輯類型的操作數進行運算,結果為布爾型,見表2-6。 表2-6 邏輯運算符運算符作用操作數類型結果類型not邏輯非BealoonBealoonand邏輯與BealoonBealoonor邏輯或BealoonBealoonxor邏輯異或BealoonBealoon2.3 表達式與運算符5集合運算符 表2-7 集合運算符運算符作用操作數類型結果類型+集合的并集集合類型集合類型-集合的差集集合類型集合類型*集合的交集集合類型集合類型=A=A=B,B是否是A的子集集合類型Bealoon=兩個集合是否相等集合類型Bealoon兩個集合是否不相等集合類型Bealooni
27、ns in A,s是否屬于集合A有序類型,集合類型Bealoon2.3 表達式與運算符6運算符的優先級運算符優先級not1(最高)*,/,div ,mod,and2+, ,or,xor3關系運算符4(最低)表2-8 Object Pascal各運算符的優先級2.4 語句2.4.1 注釋注釋是添加在程序中用來說明代碼功能的語句,它是非執行語句,對程序的執行部分不會產生任何影響,有助于提高程序的可讀性。在Object Pascal中,有三種注釋標記:花括號“”注釋:位于 “”中的內容為注釋。雙斜杠“/”注釋: “/”之后到本行結束的內容為注釋。圓括號及星號對“(*)”注釋:(*)中的內容為注釋。例
28、如以下語句都是注釋:The first kind Of comment./The secondkind Of comment.(*The third kind Of comment.*)2.4 語句2.4.2 簡單語句和復合語句簡單語句是Object Pascal中最簡單也最常用的語句,簡單語句用分號分隔。賦值語句、函數、過程調用語句等是簡單語句,例如下面的語句都是簡單語句:r:=m+n; /兩個值相加并賦值ShowMessage(Im a student.);復合語句是多個簡單語句的組合,復合語句以begin表示開始,以end表示結束。例如: begini:=1;j:=i+1;s:=abc;
29、end;2.4 語句2.4.3 條件語句條件語句是Object Pascal語言提供的選擇結構語句,主要有如下兩種:1if語句if語句的表示形式:if then else 2.4 語句【例2-1】求兩個數中的最大值。if ab thenmax:=a /在變量a之后不能加“;”Elsemax:=b;【例2-2】符號函數。 -1 (x0)用if語句的嵌套實現,如下:if x0 then y:=1else y:=0;2.4 語句2case語句case語句的表示形式:case of : : else end;2.4 語句【例2-3】編寫一個程序,輸入一個年份,判斷是否是閏年。閏年的條件是滿足下面條件之
30、一:(1) 能被4整除,但不能被100整除的年份;(2) 能被100整除,也能被400整除的年份。對這兩個條件都不符合的年份不是閏年。程序功能:輸入一個年份,顯示其是否為閏年的信息。界面設計:四個組件:兩個文本框Label1和Lable2,分別顯示提示和結果信息;一個Edit組件Edit1,用來輸入要進行判斷的年份;一個Button組件Button1,用來查詢結果。如圖2-1所示。2.4 語句圖2-1 窗體界面程序代碼:procedure TForm1.Button1Click(Sender: TObject);var year:Integer; flag:Boolean;2.4 語句begi
31、n year:=StrtoInt(Edit1.text); /將字符串轉變為整型 if year mod 4 = 0 then begin if year mod 100 =0 then begin if year mod 400=0 then flag:=true else flag:=false; end else flag:=true; end else flag:=false; if flag then Label2.Caption:=該年份是閏年 else Label2.Caption:= 該年份不是閏年;end;2.4 語句 2.4.4 循環控制語句 循環語句可以使用戶重復執行一條
32、或多條語句,直到滿足某個條件時為止。 1for語句 for語句的一般形式為: for 循環變量:= to/downto do ; 【例2-4】求1100所有整數的累加和。 var s,i: Integer; s:=0; for i:=l to 100 do s:=s+i;2.4 語句2while語句while語句的一般形式為:while dowhile后面的為邏輯表達式,先計算表達式的結果,如果表達式為true,while語句將重復執行循環體。如果表達式結果為false,則跳出循環,執行while之后的語句。【例2-5】求1100所有整數的累加和。vars,i: Integer;i:=1;s:
33、=0;while i=100 dobegins:=s+i; i:=i+1; end;2.4 語句3repeat語句repeat語句的一般形式為:repeat until 當使用repeat語句時,先執行循環體,再判斷表達式,只要until后面的表達式為true,則將再執行循環體。因此,repeat語句下面的循環體至少執行一次。【例2-6】求1100所有整數的累加和。vars,i: Integer;i:=1;s:=0;repeats:=s+i;i:=i+1;until i100;2.4 語句4break語句 功能是強行退出循環,break語句只能用在循環體內。【例2-7】利用break語句退出一
34、個while循環。vars: String;beginwhile true do /條件恒為真 begin ReadLn(s); /讀入一字符串 if s= then break; /不輸入任何字符,則退出循環 WriteLn(s); /輸出字符串 end;end;2.4 語句5continue語句continue語句也用在循環體中,其作用是強行結束本次循環,轉入循環開始處,開始執行下一次循環操作。【例2-8】使用continue語句,求1100所有奇數之和。vari,s: Integer;s=0;beginfor i:=1 to 100 do begin if i mod 2=0 then
35、continue; /如果為空,跳過剩余語句,轉到下一個循環 s:=s+i; end;end;2.5 函數和過程函數和過程是實現一定功能的語句塊,是程序中的特定功能單元。可以在程序的其他地方被調用,也可以進行遞歸調用。函數和過程的區別在于函數有返回值,而過程沒有返回值。2.5.1 函數和過程的聲明函數和過程在使用前必須進行聲明。1函數的聲明函數的聲明是在程序的type區,具體形式如下:function ():;2.5 函數和過程函數的定義是在程序的implementation部分,具體形式如下:function ():;varbegin := /也可以用Result系統保留字代替end;在be
36、gin與end之間是在函數調用時實現特定功能的一系列語句。函數值的返回有兩種方式:將返回值直接賦給函數名。將返回值賦給Result。2.5 函數和過程【例2-9】求兩個數中的最大數。function Max(a,b: integer):integer; /兩個形參為整型值a、b,函數返回值為整型varm: Integer;beginif ab thenm:= aelsem:= b;Max:= m; /或result := m;end;2.5 函數和過程2過程的聲明過程的聲明與函數類似,所不同的是使用的保留字不同,而且少了一個返回值類型; 過程的聲明是在程序的type區,具體形式如下:proce
37、dure ():;過程的定義是在程序的implementation部分,具體形式如下:procedure (); begin end;2.5 函數和過程【例2-10】顯示一行num個星號*。procedure ShowStar(num:Integer);var i: Integer; s:String; begin s:= ; for i:=1 to num do s:= s+*; ShowMessage(s); end;2.5 函數和過程2.5.2 重載函數和過程所謂重載,是指在同一個作用范圍內給不同的函數或過程取同一個名稱。重載可以方便編程,重載函數必須用指令字overload來進行說明。
38、 下面的兩個函數就是重載函數: function Max(a:Integer;b:Integer):Integer;overload; /求兩個整數的最大值 function Max(a:Real;b:Real):Real;overload; /求兩個實數的最大值下面兩條語句就調用了不同的函數: Max(3.7,4.6); /調用的是第二個重載函數Max(3,4); /調用的是第一個重載函數2.5 函數和過程2.5.3 參數1形參與實參函數或過程的聲明和定義時參數列表中的參數稱為形式參數,簡稱形參;而函數或過程調用時參數列表中的參數稱為實在參數,簡稱實參。2數值參數、變量參數和常量參數(1)
39、數值參數在調用函數或過程時,數值參數在運行過程中只改變其形參的值,不改變其實參的值,即形參不會影響原來實參的值。(2) 變量參數如果用戶想改變傳遞的參數值,就需要使用變量參數,即在被調用程序的參數表中的形參前加上保留字var。2.5 函數和過程(3) 常量參數如果當過程或函數執行時要求不改變形參的值,最保險的辦法是使用常量參數。在參數表的參數名稱前加上保留字const可以使一個形參成為常量參數。使用常量參數代替數值參數可以保護用戶的參數,使用戶在不想改變參數值時不會意外地將新的值賦給這個參數。 2.5.4 作用域在Object Pascal中,根據變量的作用域,可將變量分為:全局變量和局部變量
40、。所謂變量的作用域,是指變量的有效范圍。全局變量在整個程序中都有效,其作用域為整個程序;局部變量只在聲明它的函數和過程中有效,其作用域只限于該函數或過程本身。 2.5 函數和過程例:typevarForm1: TForm1; /全局變量Form1implementation$R *.dfmprocedure TForm1.FormCreate(Sender: TObject);var m,n:Integer; /局部變量m,nForm1:Tform1;(*局部變量Form1,與上面的全局變量同名,在過程TForm1.FormCreate中局部變量起作用。*)2.5 函數和過程2.5.5 函數和
41、過程的調用1函數和過程的調用(1) 函數的調用函數調用的一般形式為:()函數的調用往往是將返回值賦給某個變量或參與運算。例如調用例2-9,將其返回值賦給變量x的語句為:x:=Max(3,6);(2) 過程的調用過程的調用的一般形式為: ();其中的實參可以是常量、變量或表達式,但實參的個數和類型與形參完全匹配,即個數相同、類型一致。例如:調用例2-10的過程ShowStar的語句為:ShowStar(20);2.5 函數和過程2函數和過程的遞歸調用所謂遞歸調用,是指函數A調用函數B,而函數B又調用函數A的情況,或是指一個函數調用自身的特殊情況。 【例2-11】遞歸調用program Proje
42、ct1;($SappTypeConsole)varalpha:Integer;procedure Test2(var A:Integer):forword;(*Test2被說明為前置過程*)procedure Testl(Var A:Integer);begina:=a-1;if a0 thenTest2(a);Writeln(a);end;procedure Test2(var a:Integer); 經前置說明的Test2的執行部分begin a:=a div 2; if a0 thenTest1(a); 在Test2中調用已執行的過程Test1end; begina1pha:=15; /
43、給a1pha賦初值Test1(a1plla);(*第一次調用Test1,遞歸開始*)end;習題1Object Pascal語言中有哪些常用的數據類型?變量在使用前必須先定義,如何定義各種數據類型的變量?簡述Object Pascal中標識符的命名應遵循哪些規則。Object Pascal中提供了哪些類型運算符,在表達式中其優先級從高到低如何排列。4注釋語句有哪幾種形式?5條件語句有哪幾種形式?它們在什么情況下適用。6循環語句有哪幾種形式?break語句與continue語句有何異同。7如何聲明、定義和調用函數和過程。8什么是重載?如何進行重載函數和過程。9什么是變量的作用域?根據變量的作用域
44、,可將變量分為哪幾類。習題10分析下列程序段的運行結果。 a:=False; b:=False; c:=True; d:=20; if a then d:=d-12 else if not b then if c then begin x:=10; d:=d+3; endelse x:=34;運行后,d,x的值分別是 、 。 習題 s:=0; for i=3 to 14 do s:=s+i;運行后,s的值是 。 Function Fun(x:Integer):Integer; begin if x=0 then y=0 else if x0 then y:=x+4 else y:=x-5;en
45、d;則函數調用Fun(0)、Fun(4)、Fun(-7)的值分別是 、 、 。11編程實現:輸入兩個整數,求這兩個數之間的所有奇數之和。Delphi 7 程序設計與實驗指導第三章 面向對象程序設計 面向對象程序設計(Object-oriented Programming,簡稱OOP)方法是一種以模擬現實世界的概念來組織程序的全新方法,其立意于創建軟件重用代碼,具備更好地模擬現實世界環境的能力。能夠支持面向對象程序設計的語言稱之為面向對象的程序設計語言。Delphi是完全面向對象的,具有真正OOP擴展的可視化編程環境,將可視化編程與面向對象的開發框架緊密地結合起來。本章主要介紹面向對象的程序設計
46、方法。3.1 面向對象的可視化編程步驟面向對象的可視化編程一般包括以下步驟:l創建應用程序。l設計應用程序的界面,添加各窗體的組件對象。l設置主窗體組件對象的屬性。l編寫程序代碼(主要是按鈕的事件處理代碼)。l保存文件。l編譯、運行程序。【例3-1】創建一個工程,其中有一個窗體InputForm,用于輸入教師基本信息。下面以例3-1為例,介紹面向對象的可視化編程的步驟。3.1 面向對象的可視化編程步驟3.1.1 建立新工程在Delphi 7集成環境下選擇FileNewApplication菜單項,或使用工具條上New按鈕,然后在New Items窗口中選擇Application,若此前未打開任
47、何工程,確認后,Form Designer窗口中會出現一個空白窗體Forml,在Code Edit窗口中還會出現與Forml對應的代碼單元Unitl。若先前已打開了工程并且沒有對修改過的工程進行保存,則系統會提示是否保存等信息,處理完畢后系統將關閉該工程,然后新建一個應用程序。3.1 面向對象的可視化編程步驟3.1.2 設計程序界面InputForm窗體設計界面如圖3-1所示,界面上包含五個標簽(Label),用于顯示輸入提示信息,兩個文本框(Edit),分別用于輸入姓名、工齡;二個組合列表框(ComboBox),分別用于選擇職稱和部門的輸入內容;三個按鈕(Button),分別用于清除、顯示和
48、退出程序。InputForm窗體及其包含的組件屬性見書表3-1。3.1 面向對象的可視化編程步驟圖3-1 InputForm窗體設計界面3.1 面向對象的可視化編程步驟3.1.3 編寫程序代碼本例所要設計的是按鈕組件對象的事件處理程序。雙擊窗體上的按鈕,將打開代碼編輯器,在begin和end之間輸入如下各按鈕的事件處理代碼。(*“清除”按鈕事件處理代碼*)procedure TInputForm.BtnClearClick(Sender:TObject)begin(*清空各文本框*) Edit1.Text:= ; Edit2.Text:= ;end;3.1 面向對象的可視化編程步驟(*“顯示”
49、按鈕事件處理代碼*)procedure TInputForm.BtnShowClick(Sender:TObject);begin MessageDlg(這是顯示教師基本信息的窗體, mtInformation, mbOk, 0);end;(*“退出”按鈕事件處理代碼*)procedure TInputForm.BtnExitClick(Sender:TObject);beginTInputForm.Close; /關閉TInputForm窗體end; 3.1 面向對象的可視化編程步驟3.1.4 保存所有文件選擇FileSave All選項,由于這個新建的工程還沒有命名,所以首先會出現一個Sa
50、ve As對話框,默認的單元名是Unitl,用戶可以用更具描述意義的名字代替它。在這里,使用InputUnit.pas進行命名。保存完單元文件后,又會出現Save As對話框,要求為工程文件命名,在這里,把它命名為InputPrj.dpr。注意:在進行程序設計前,應該先建立一個目錄,用來存放工程文件,便于管理。3.1 面向對象的可視化編程步驟3.1.5 運行程序運行程序的方法主要有以下幾種:l 打開Run菜單,選擇Run子菜單。l 快捷鍵:F9。l 單擊工具欄的按鈕。其他的程序運行方式在本章第五節程序調試中將詳細介紹。其運行后,在文本框中分別輸入姓名(張紅)、工齡(19),并選擇職務(副教授)
51、和部門(外語系)的值,如圖3-2所示。按下“退出”按鈕,將關閉“教師基本信息”窗口,結束程序的運行。3.1 面向對象的可視化編程步驟3.1.6 生成exe文件打開工程文件,選擇菜單項ProjectBuild ,生成可執行文件,文件名與工程文件名同名,擴展名為.exe。可以通過雙擊.exe文件圖標啟動應用程序。例如:由工程文件InputPrj.dpr生成exe文件的過程是:選擇菜單項ProjectBuild InputPrj,生成InputPrj.exe文件,雙擊InputPrj.exe文件圖標,即可運行應用程序。圖3-2 InputForm運行界面3.1 面向對象的可視化編程步驟3.1.7 制
52、作安裝包在完成了應用程序的設計后,就要將最終的產品打包發送給用戶。目前一般使用安裝程序InstallShield來制作安裝盤。1創建新的項目(1) 進入Delphi 7集成開發環境,編譯并執行應用程序InputPrj.exe。(2) 單擊 開始程序InstallShieldExpress,打開InstallShield Express Borland Limited Edition窗口。 (3) 選擇FileNew命令,將彈出如圖3-3所示的New Project對話框。3.1 面向對象的可視化編程步驟(4) 單擊按鈕,彈出“Select a File Name”對話框。輸入安裝程序名為“人事
53、管理”,然后選擇保存位置為C:Documents and SettingsAdministratorMy documentsMysetups,單擊“保存”按鈕,返回到圖3-3所示的界面,單擊“OK”按鈕。圖3-3 New Project對話框3.1 面向對象的可視化編程步驟這樣就在C:Documents and SettingsAdministratorMy documentsMysetups路徑下創建一個名為“人事管理”的安裝項目,如圖3-4所示。圖3-4 制作新安裝項目的界面3.1 面向對象的可視化編程步驟2制作安裝程序的步驟整個安裝程序的制作分為以下6個步驟。(1) 組織安裝項目。安裝制
54、作的第1步是配置項目中常見的設置,可再細分為以下幾步。 General Information:配置整個項目的一些基本信息。選擇Organize Your SetupGeneral Information,可以在屏幕的右方設置項目的基本信息。在這些基本信息中以下幾個是必須設置的。 Subject:項目名。 Product Name:產品名。 Installdir:安裝的目標文件夾。安裝項目的基本信息的設定如圖3-5所示3.1 面向對象的可視化編程步驟圖3-5 基本信息的設定 Features:使整個項目中需要安裝的文件按不同的用途分組。 Setup Types:安裝類型設置,用戶根據不同的需求
55、選擇不同的安裝類型。3.1 面向對象的可視化編程步驟(2) 指定項目文件。安裝制作的第2步工作是向安裝項目中添加文件。選擇Specify Application DataFiles,可以在屏幕右方的幾個窗口向安裝項目中添加文件,如圖3-6所示。 在“Source computers folders”窗口中定位到F:Delphi61第三章,此時“Source computers files”列表中顯示了該文件夾下的文件。 鼠標單擊“Source computers files”列表中的“InputPrj.exe”文件,將其拖到“Destination computers folders”的“Pr
56、ogramFilesFolderINSTALLDIR”上松開鼠標,這樣在該文件夾中就多了一個名為“InputPrj.exe”的文件。若系統有數據庫文件,用同樣的方法將數據庫文件拖動到“DatabaseDATABASEDIR”文件夾中,本例中沒有數據庫文件。3.1 面向對象的可視化編程步驟圖3-6 向安裝項目中添加文件窗口 (3) 配置目標系統(Configure the Target System)。是讓安裝程序在安裝過程中能夠自動配置目標系統的一些參數,如桌面快捷方式、ODBC數據源(若有數據庫文件)等。 選擇Configure the Target SystemShortcuts/Fold
57、ers,將顯示如圖3-7所示的視圖。3.1 面向對象的可視化編程步驟圖3-7 創建快捷方式的窗口 鼠標右擊中間窗口的“ Desktop”,選擇彈出式菜單中的New Shortcuts命令,創建名為“InputPrj”的快捷方式(如圖3-7所示)。 若有數據庫文件,則還需要配置ODBC數據源:選擇Configure the Target SystemODBCresources,系統顯示了本機上存在的ODBC數據源,可以通過選擇決定是否將其中的某些數據源安裝到目標機器上。3.1 面向對象的可視化編程步驟(4) 設置安裝界面(Customize the Setup Appearance)。安裝制作的
58、第4步工作是選擇安裝過程中將要顯示的界面。選擇Customize the Setup AppearanceDialogs,將顯示如圖3-8所示的界面。選中需要顯示的對話框前面的復選框。(5) 設定安裝所需的前提條件(Define Setup Requirements and Actions)。安裝制作的第5步工作主要是定義安裝的前提條件,包含以下幾個步驟: Requirements:選擇安裝的軟硬件環境。 Custom Action:選擇需進行的安裝操作。 Support Files:選擇所支持的文件。3.1 面向對象的可視化編程步驟圖3-8 安裝過程中顯示對話框的設置(6) 制作安裝程序的最
59、后階段(Prepare for Release)。 選擇Prepare for ReleaseBuild Your Release,編譯安裝項目。 選擇Prepare for ReleaseTest Your Release,測試安裝程序。3.1 面向對象的可視化編程步驟 選擇Prepare for ReleaseDistribute Your Release,發布安裝程序。至此應用程序InputPrj的安裝程序就制作完成。最后,測試安裝程序,如圖3-9所示。圖3-9 安裝程序運行界面3.2 對象和類的概念3.2.1 對象對象是一種數據結構,是類的實例。了解對象,最關鍵的是掌握對象的特性。一個
60、對象最突出的三個特征是封裝性、繼承性、多態性。定義了類之后,就可以創建該類的實例,即對象,通過對象來訪問類的成員。對象聲明的語法格式如下:var ObjectName:Classname;其中Classname是已定義過的類名。例如:聲明Tstudent類(已定義過)的對象Classmate可以用以下語句,var Classmate:Tstudent; 3.2.2 類在Object Pascal語言中,類和記錄比較相似,也是一個構造類型,并且由屬性和方法構成。其中屬性又包括類的內部屬性和外部屬性,也就是供內部使用的一些數據變量和供外部使用的一些數據變量;方法則是該類或其實例可以操作的過程和函數
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 人機交互在交通中的應用試題及答案
- 焊接行業內的技術交流與合作試題及答案
- 2024年酒店經營管理師考試動態適應策略試題及答案
- 學習小組電氣工程師試題及答案
- 商務禮儀師考試的速度感意識培養試題及答案
- 把握機會電氣工程師資格證書考試試題及答案
- 交通項目管理的科學方法研究試題及答案
- 簡單快遞運輸合同書范文二零二五年
- 設計師如何在2024年Adobe考試中運用創意思維試題及答案
- 工程合同書終止情況說明
- 廣東高考:數學必考知識點總結
- 宗教政策法規知識課件
- 七下生物考試試卷及答案
- 財產險試題庫及答案
- 湖南新高考教學教研聯盟暨長郡二十校聯盟2025屆高三年級第二次聯考物理試題及答案
- 《跨境電商美工實務》完整版課件全套ppt教學教程-最全電子講義(最新)
- 藍海華騰變頻器說明書
- 空氣質量連續監測系統日常巡檢維護記錄表
- 第二套全國中小學校園集體舞圖解
- 工具式懸挑防護棚安全專項施工方案
- 中醫體質辨識量表33-簡版
評論
0/150
提交評論