歡迎來到裝配圖網(wǎng)! | 幫助中心 裝配圖網(wǎng)zhuangpeitu.com!
裝配圖網(wǎng)
ImageVerifierCode 換一換
首頁 裝配圖網(wǎng) > 資源分類 > PPT文檔下載  

《Pascal語言基礎(chǔ)》PPT課件.ppt

  • 資源ID:14458296       資源大?。?span id="0kc0bbp" class="font-tahoma">1.03MB        全文頁數(shù):87頁
  • 資源格式: PPT        下載積分:14.9積分
快捷下載 游客一鍵下載
會(huì)員登錄下載
微信登錄下載
三方登錄下載: 微信開放平臺(tái)登錄 支付寶登錄   QQ登錄   微博登錄  
二維碼
微信掃一掃登錄
下載資源需要14.9積分
郵箱/手機(jī):
溫馨提示:
用戶名和密碼都是您填寫的郵箱或者手機(jī)號(hào),方便查詢和重復(fù)下載(系統(tǒng)自動(dòng)生成)
支付方式: 支付寶    微信支付   
驗(yàn)證碼:   換一換

 
賬號(hào):
密碼:
驗(yàn)證碼:   換一換
  忘記密碼?
    
友情提示
2、PDF文件下載后,可能會(huì)被瀏覽器默認(rèn)打開,此種情況可以點(diǎn)擊瀏覽器菜單,保存網(wǎng)頁到桌面,就可以正常下載了。
3、本站不支持迅雷下載,請(qǐng)使用電腦自帶的IE瀏覽器,或者360瀏覽器、谷歌瀏覽器下載即可。
4、本站資源下載后的文檔和圖紙-無水印,預(yù)覽文檔經(jīng)過壓縮,下載后原文更清晰。
5、試題試卷類文檔,如果標(biāo)題沒有明確說明有答案則都視為沒有答案,請(qǐng)知曉。

《Pascal語言基礎(chǔ)》PPT課件.ppt

第2章 Pascal語言基礎(chǔ),Pascal語言體現(xiàn)了結(jié)構(gòu)化程序設(shè)計(jì)的概念。它簡便易學(xué),具有清晰明了的模塊結(jié)構(gòu),豐富的數(shù)據(jù)類型和語句。Pascal語言編譯、運(yùn)行效率高,便于移植,因此廣泛地應(yīng)用于應(yīng)用軟件的開發(fā)。 2.1 數(shù)據(jù)類型 2.2 常量與變量 2.3 運(yùn)算符和表達(dá)式 2.4 基本程序設(shè)計(jì) 2.5 過程與函數(shù) 2.6 常用內(nèi)部函數(shù),2.1 數(shù)據(jù)類型,Object Pascal的數(shù)據(jù)類型包括一些標(biāo)準(zhǔn)的數(shù)據(jù)類型,例如:整型、實(shí)型、字符型、字符串型和布爾型等等。除此之外,系統(tǒng)還允許用戶自己定義一些較為復(fù)雜的數(shù)據(jù)類型,例如:子界類型、枚舉類型、指針類型、記錄類型以及文件類型等等。 2.1.1 標(biāo)準(zhǔn)數(shù)據(jù)類型 2.1.2 子界類型 2.1.3 枚舉類型 2.1.4 集合類型 2.1.5 指針類型 2.1.6 數(shù)組類型 2.1.7 記錄類型 2.1.8 文件類型,2.1.1 標(biāo)準(zhǔn)數(shù)據(jù)類型,Object Pascal的數(shù)據(jù)類型包括一些基本的簡單數(shù)據(jù)類型,例如:整型、實(shí)型、字符型、字符串型和布爾型等等。下表列出了標(biāo)準(zhǔn)的數(shù)據(jù)類型。 數(shù)據(jù)類型表,如圖所示:,2.1.1 標(biāo)準(zhǔn)數(shù)據(jù)類型,2.1.2 子界類型,子界類型是Pascal允許用戶定義的一個(gè)結(jié)構(gòu)數(shù)據(jù)類型。如果用戶預(yù)先知道一個(gè)變量的范圍,就可以通過定義子界類型和子界類型變量來實(shí)現(xiàn)由系統(tǒng)自動(dòng)檢查變量是否超出了允許的范圍。 子界類型的定義: Type 類型名稱=常量1.常量2; 例如以下代碼: type TMonth=1.12; TScore=A.F;,2.1.2 子界類型,var Month:TMonth; Score:TScore; 如上定義了子界類型變量Month的范圍從112,Score的范圍從AF。,2.1.3 枚舉類型,枚舉類型的定義: Type 類型名稱=(標(biāo)識(shí)符1),標(biāo)識(shí)符2,標(biāo)識(shí)符n); 用戶經(jīng)常要用到這樣的數(shù)據(jù),它是通過列舉出該數(shù)據(jù)所有的可能值來定義的,如下例: type TWeekDay=(Sun, Mon, Tue, Wed, Thu, Fri, Sat); var WeekDay:TweekDay; 需要注意的是,每個(gè)枚舉值只能出現(xiàn)在一個(gè)枚舉類型的定義當(dāng)中,而且在每個(gè)枚舉類型的定義當(dāng)中只能出現(xiàn)一次。,2.1.4 集合類型,集合類型是Pascal允許用戶定義的一個(gè)結(jié)構(gòu)數(shù)據(jù)類型,它使用戶可以運(yùn)用通常集合運(yùn)算,例如:交集、并集和差集。集合類型是一些同類型元素的集合,這些基類型元素可以是整型、實(shí)型、布爾型、字符型、枚舉型或子界類型。它通常的作用是用來檢驗(yàn)?zāi)硞€(gè)元素是否被包含在一個(gè)集合當(dāng)中。 下例用來說明集合類型數(shù)據(jù)的定義方法和運(yùn)用: type TWeekDay=Set of 1.7; var WeekDay:TWeekDay;,2.1.4 集合類型,begin WeekDay:=1,3,5,6; end; 注意Pascal編輯程序限制了集合數(shù)目,所以整型數(shù)據(jù)不能作為集合類型的基類型。而只能是整型子界?;愋捅仨毷怯行蝾愋?,所以實(shí)型、數(shù)組類型不能作為集合類型的基類型。,2.1.5 指針類型,Pascal允許建立動(dòng)態(tài)數(shù)據(jù)結(jié)構(gòu),它采用指針類型數(shù)據(jù),指針類型變量的引入大大增強(qiáng)了程序的靈活性。一個(gè)指針類型變量用于保存一個(gè)內(nèi)存地址,由于該內(nèi)存地址指向的是一個(gè)動(dòng)態(tài)分配的變量,所以,在定義指針類型數(shù)據(jù)時(shí),必須說明它所指向變量的類型。 例如: Type Pbirthday=TBirthday; TBirthday=Record Name:String30; Year:Integer;,2.1.5 指針類型,Month:1.12; Date:1.31; end; var Pbirthday1:Pbirthday; Pint:Integer; begin Pbirthday1.Name:=Smith; Pint:=18; end;,2.1.6 數(shù)組類型,數(shù)組類型數(shù)據(jù)是一種用戶定義的結(jié)構(gòu)數(shù)據(jù)類型,它是一些具有相同數(shù)據(jù)類型的元素的集合。根據(jù)數(shù)組的維數(shù)可以將數(shù)組分為一維數(shù)組、二維數(shù)組以及多維數(shù)組,每一維度的下標(biāo)指明了元素的數(shù)目。其下標(biāo)類型包括了除長整型以外的所有有序類型以及長整型的子界類型。 例如: type TOneArray=Array3.39 of Integer; TdoubleArray=Array125,1.50 of Real; Var OneArray:TOneArray; doubleArray:TdoubleArray;,2.1.7 記錄類型,記錄類型包括了一組元素,但和數(shù)組型數(shù)據(jù)不同的是,記錄類型數(shù)據(jù)可以包括相同的數(shù)據(jù)類型,也可以包括不同的數(shù)據(jù)類型;這些數(shù)據(jù)可以是數(shù)值型的,也可以是非數(shù)值型的。例如:用戶可以使用一個(gè)記錄類型數(shù)據(jù)記錄一個(gè)學(xué)生的名字、出生日期、籍貫以及學(xué)習(xí)成績等。 例如,一個(gè)學(xué)生的記錄類型如下: type TStudent=Record Name:String30; Age:Integer; StudNum:Integer; Score:real; end;,2.1.7 記錄類型,var Student1:TStudent; begin Student1.Name:=Smith; Student1.Age:=20; Student1.StudNum:=950007; Student1.Score:=87.5; end;,2.1.8 文件類型,文件類型是用來對(duì)文件進(jìn)行操作的,它包括同一類元素的線性有序組合。Delphi支持的文件類型有文本文件、記錄文件和無類型文件。定義文件類型實(shí)際上是定義了一個(gè)文件類型的指針。 例如: type TStudent=Record Name:String30; Age:Integer; StudNum:Integer; Score:real; end;,2.1.8 文件類型,Fstudent=File of Tstudent; Fstr=File of String; var Student1:FStudent; Str:Fstr; begin Student1.Name:=Smith; Student1.Age:=20; Student1.StudNum:=950007; Student1.Score:=87.5; Str=I love Delphi 7.0. end;,2.2 常量與變量,常量和變量是學(xué)習(xí)各種編程語言進(jìn)行程序設(shè)計(jì)的基礎(chǔ)概念,分別代表了在程序運(yùn)行過程中兩種不同狀態(tài)的量。常量是指在程序運(yùn)行過程中其值始終不變的量;與之相反,變量則是程序運(yùn)行過程中其值可以改變的量。 2.2.1 常量 2.2.2 變量,2.2.1 常量,在Pascal中用const關(guān)鍵字來聲明常量,就像在C語言中const關(guān)鍵字一樣,C語言跟Object Pascal語言聲明常量的主要差別是,在Object Pascal語言中不需要在對(duì)常量賦值時(shí)聲明常量的類型,跟Visual Basic一樣,編譯器能根據(jù)常量的值自動(dòng)判斷常量的類型并分配內(nèi)存;對(duì)于整型常量,編譯器在運(yùn)行時(shí)跟蹤它的值,并不對(duì)它分配內(nèi)存。 例如: const ADecimalNumber=3.14; i=10; ErrorString=danger,Danger,Danger!;,2.2.1 常量,編譯器根據(jù)如下規(guī)則來對(duì)常量分配內(nèi)存:整型數(shù)被認(rèn)為是最小的Integer類型(10被認(rèn)為是ShortInt,32000被認(rèn)為是SmallInt等);字符串值被認(rèn)為是char類型或string類型(通過$H定義);浮點(diǎn)值被認(rèn)為是extended數(shù)據(jù)類型,除非小數(shù)點(diǎn)位數(shù)小于4位(這種情況被當(dāng)作comp類型);Integer和Char的集合類型被存儲(chǔ)為它們自己。,2.2.2 變量,Object Pascal要求在一個(gè)過程、函數(shù)或程序前在變量聲明段中聲明它們。Object Pascal類似Visual Basic,但不像C和C+,是大小寫不敏感的。采用大小寫只是為了可讀性好。 當(dāng)在Object Pascal中聲明一個(gè)變量時(shí),變量名在類型的前面,中間用冒號(hào)隔開,變量初始化通常要跟變量聲明分開。 Delphi能在var塊中對(duì)全局變量賦初值,這里有一些例子演示: var i:Integer=10;,2.2.2 變量,S:String=Hello World; D:Double=3.141579; 能賦初值的變量僅是全局變量,不是那些在過程或函數(shù)中局部變量,而且Delphi編譯器自動(dòng)對(duì)全局變量賦初值。當(dāng)程序開始時(shí),所有的整型數(shù)賦為0,浮點(diǎn)數(shù)賦為0.0,指針為null,字符串為空等等,因此,在源代碼中不必對(duì)全局變量賦零初值。,2.3 運(yùn)算符和表達(dá)式,運(yùn)算符是在代碼中對(duì)各種數(shù)據(jù)類型進(jìn)行運(yùn)算的符號(hào)。例如,有能進(jìn)行加、減、乘、除的運(yùn)算符,有能訪問一個(gè)數(shù)組的某個(gè)單元地址的運(yùn)算符。表達(dá)式由運(yùn)算對(duì)象和運(yùn)算符兩部分組成。 2.3.1 運(yùn)算符 2.3.2 表達(dá)式,2.3.1 運(yùn)算符,Object Pa s c a l語言中的運(yùn)算符(Operators)有: 、not、*、/、div、mod、and、shl、shr、as、+、or、xor、=、=、in和is等。 按照操作數(shù)數(shù)目的多少來分,運(yùn)算符分為下面兩類:單目運(yùn)算符(Unary Operator)和雙目運(yùn)算符(Binary Operator)。上面的、not和為單目運(yùn)算符,其余的為雙目運(yùn)算符。其中+和-也可以作為單目運(yùn)算符來使用。 單目運(yùn)算符一般放在操作對(duì)象的前面,只有可以放在操作對(duì)象的后面。雙目運(yùn)算符都放在兩個(gè)操作數(shù)之間。,2.3.1 運(yùn)算符,有些運(yùn)算符是根據(jù)給定的操作數(shù)的數(shù)據(jù)類型做相應(yīng)處理的。例如,運(yùn)算符not對(duì)于整型的操作數(shù)說,做的是按位取反;對(duì)于邏輯類型的操作數(shù)來說,它完成的則是邏輯取反。 除了運(yùn)算符、is和in外,其余操作符都可以對(duì)Variant類型的數(shù)據(jù)進(jìn)行操作。 1. 算術(shù)運(yùn)算符 2. 邏輯運(yùn)算符 3. 位運(yùn)算符 4. 字符串運(yùn)算符 5. 指針運(yùn)算符 6. 類運(yùn)算符 7. 運(yùn)算符 8. 集合運(yùn)算符 9. 關(guān)系運(yùn)算符,2.3.1 運(yùn)算符,1. 算術(shù)運(yùn)算符 算術(shù)運(yùn)算符對(duì)浮點(diǎn)數(shù)和整數(shù)進(jìn)行加、減、乘、除和取模運(yùn)算。 。,2.3.1 運(yùn)算符,2. 邏輯運(yùn)算符 Pascal語言用and和or作為邏輯與和邏輯或運(yùn)算符,Pascal的邏輯非的運(yùn)算符是not,它是用來對(duì)一個(gè)布爾表達(dá)式取反。 邏輯運(yùn)算符對(duì)邏輯類型的操作數(shù)進(jìn)行運(yùn)算,數(shù)據(jù)結(jié)果也為邏輯類型,2.3.1 運(yùn)算符,3. 位運(yùn)算符 位運(yùn)算符對(duì)整型的數(shù)據(jù)進(jìn)行按位操作,所得結(jié)果也為整型數(shù)據(jù),如表所示。,2.3.1 運(yùn)算符,4. 字符串運(yùn)算符 加號(hào)(+)還可以作為字符串運(yùn)算符,它可以將兩個(gè)字符串聯(lián)接在一起。如果兩個(gè)字符串都是短字符串,那么在結(jié)果字符串長度超過255個(gè)字符的情況下,只有前面255個(gè)字符有效。,2.3.1 運(yùn)算符,5. 指針運(yùn)算符 表中的運(yùn)算符可以對(duì)指針類型的數(shù)據(jù)進(jìn)行操作。,2.3.1 運(yùn)算符,6. 類運(yùn)算符 類運(yùn)算符as和is對(duì)類或類的實(shí)例進(jìn)行操作。此外,關(guān)系運(yùn)算符=和也可以對(duì)類進(jìn)行操作。 7. 運(yùn)算符 運(yùn)算符返回一個(gè)變量、過程或函數(shù)的地址。,2.3.1 運(yùn)算符,8. 集合運(yùn)算符 集合運(yùn)算符主要對(duì)兩個(gè)集合進(jìn)行操作,判斷兩個(gè)集合之間的關(guān)系,如表所示。,2.3.1 運(yùn)算符,9. 關(guān)系運(yùn)算符 關(guān)系運(yùn)算符可以對(duì)兩個(gè)普通數(shù)據(jù)類型、類、對(duì)象、接口類型或字符串類型的數(shù)據(jù)進(jìn)行比較,結(jié)果數(shù)據(jù)類型為布爾類型,如表2-7所示。,2.3.2 表達(dá)式,一個(gè)表達(dá)式由運(yùn)算對(duì)象和運(yùn)算符兩部分組成。運(yùn)算符可以分為算術(shù)運(yùn)算符、邏輯運(yùn)算符、串運(yùn)算符、字符指針運(yùn)算符、集合運(yùn)算符、關(guān)系運(yùn)算符以及運(yùn)算符。 運(yùn)算符的優(yōu)先順序如表所示。,運(yùn)算符優(yōu)先順序類別1域、指針引用 not2取非* / div mod shl shr and as3乘除法與類型轉(zhuǎn)換 - or xor4加減法= = in is5比較操作 Pascal用and和or作為邏輯與和邏輯或運(yùn)算符,而C語言使用,2.4 基本程序設(shè)計(jì),基本程序設(shè)計(jì)主要包括:程序語句、基本控件、順序結(jié)構(gòu)、選擇結(jié)構(gòu)、循環(huán)結(jié)構(gòu)。 2.4.1 程序語句 2.4.2 基本控件 2.4.3 順序結(jié)構(gòu) 2.4.4 選擇結(jié)構(gòu) 2.4.5 循環(huán)結(jié)構(gòu),2.4.1 程序語句,1. 賦值語句 實(shí)現(xiàn)功能:為變量賦值。 語法形式::=; 實(shí)際舉例:x:=y*z; b:=(x=1) or (y=4) and (z0); t:=sqrt(m)+4*sin(x); 2. GOTO語句 實(shí)現(xiàn)功能:改變程序流程至標(biāo)號(hào)語句處。 語法形式:goto標(biāo)號(hào); 實(shí)際舉例:goto 100;,2.4.1 程序語句,3. IF語句 實(shí)現(xiàn)功能:作條件判斷控制流程。 (1) 單分支語句 語法形式: if 布爾型表達(dá)式 then 語句; 實(shí)際舉例: if x<=100 then y:=x; y:=100; begin 語句組 end;,2.4.1 程序語句,(2) 雙分支語句 語法形式: if 布爾型表達(dá)式 then begin 語句組 end else,2.4.1 程序語句,(3) 多層嵌套語句 語法形式: if then begin end else if then begin end;, else begin end;,2.4.1 程序語句,4. CASE語句 多層嵌套的條件語句可讀性差,實(shí)際編程中常采用case語句。 實(shí)現(xiàn)功能:實(shí)現(xiàn)多條件選擇。 語法形式: Case of 數(shù)值1: begin end; 數(shù)值2:,2.4.1 程序語句,begin end; 5. REPEAT語句 實(shí)現(xiàn)功能:循環(huán)。 語法形式: repeat ; until ;,2.4.1 程序語句,6. WHILE語句 實(shí)現(xiàn)功能:循環(huán)。 語法形式: while do begin end; end; 7. FOR語句 實(shí)現(xiàn)功能:循環(huán)。,2.4.1 程序語句,語法形式: for = to do begin end; 8. WITH語句 實(shí)現(xiàn)功能:引用一個(gè)域或方法。 語法形式: with do begin ,2.4.2 基本控件,組件是可視化編程的基礎(chǔ),開發(fā)人員用它們來設(shè)計(jì)用戶界面以及提供給應(yīng)用程序的一些非可視化性能。對(duì)于應(yīng)用程序開發(fā)者來說,組件就是他們從組件面板上取得的并放到窗口上的某種事物。在這里,用戶可以通過修改組件屬性、建立事件處理過程來決定組件的外觀或作用。從組件編寫者的角度看,組件就是Object Pascal語言中的對(duì)象。這些對(duì)象可以封裝系統(tǒng)提供的行為元素(如標(biāo)準(zhǔn)的Windows 95/98控件)。其他對(duì)象能夠完全引入新的可視化或非可視化組件,這種情況下,一個(gè)組件的代碼構(gòu)成了該組件的全部行為。 Delphi中有四種基本的組件類型供用戶使用或創(chuàng)建:標(biāo)準(zhǔn)控件、自定義控件、圖形控件和非可視組件。,2.4.2 基本控件,在這里應(yīng)注意組件(component)和控件(control)兩個(gè)術(shù)語的交換使用,二者并不完全相同??丶强梢暤挠脩艚缑嬖?。在Delphi中,控件總是組件,因?yàn)樗鼈兌际菑腡Component類派生而來的。組件是一種對(duì)象,它可以出現(xiàn)在組件面板上,也可以被放到窗口設(shè)計(jì)器上。組件是TComponent類型,它不一定是控件,也就是說,它不一定是可視的用戶界面元素。,【例2-1】,設(shè)計(jì)步驟: 建立應(yīng)用程序的用戶界面:選擇“新建”工程,進(jìn)入窗體設(shè)計(jì)器,增加四個(gè)標(biāo)簽Label1Label4,四個(gè)編輯框Edit1Edit4和一個(gè)按鈕Button1,如圖2-1所示。 設(shè)置對(duì)象屬性:如表所示。,輸入長方體的長和寬,然后計(jì)算并輸出長方體的周長和面積。 分析:設(shè)長方體的長和寬分別為a和b,長方體的周長和面積分別為c和s,結(jié)合題義可求出計(jì)算公式:c=2(a+b),s=ab。,【例2-1】, 編寫事件代碼。 Procedure Tform1.Button1Click(Sender:TObject); var a,b,c,s:Real; begin a:=strtofloat(edit1.text); b:=strtofloat(edit2.text); c:=2*(a+b); s:=a*b; edit3.text:=floattostr(c); edit4.text:=floattostr(s); end;,2.4.3 順序結(jié)構(gòu),順序結(jié)構(gòu)是程序中最簡單、最常見的基本結(jié)構(gòu)。在該結(jié)構(gòu)中,各操作模塊(對(duì)應(yīng)于程序中的“程序段”)按照出現(xiàn)的先后順序依次執(zhí)行,它是任何程序的主體基本結(jié)構(gòu),即使在選擇結(jié)構(gòu)或者更為復(fù)雜的循環(huán)結(jié)構(gòu)中,也常以順序結(jié)構(gòu)作為其子結(jié)構(gòu)。 在順序結(jié)構(gòu)中,通常使用基本控件完成輸入及輸出操作,使用賦值語句等簡單的操作語句組成順序結(jié)構(gòu)即可實(shí)現(xiàn)順序結(jié)構(gòu)程序的編寫。,2.4.4 選擇結(jié)構(gòu),選擇結(jié)構(gòu)是計(jì)算機(jī)科學(xué)用來描述自然界和社會(huì)生活中分支現(xiàn)象的重要手段。其特點(diǎn)是:根據(jù)所給定的條件成立(真)或否(假),而決定從實(shí)際可能的不同分支中執(zhí)行某一分支的相應(yīng)操作。 在Delphi中,實(shí)現(xiàn)選擇結(jié)構(gòu)的語句是If語句和Case語句,這兩種語句又稱為條件語句,條件語句的功能就是根據(jù)表達(dá)式的值有選擇地執(zhí)行一組語句。,2.4.4 選擇結(jié)構(gòu),1. If語句 在執(zhí)行一段代碼以前,If語句能讓用戶判斷某個(gè)條件是否滿足。 注意如果在一條if語句中有多個(gè)條件,用戶需要用括號(hào)把這幾個(gè)條件分別用括號(hào)括起來。 在Pascal中的begin和end,就像是C和C+中的“”和“”,例如,下面的代碼是當(dāng)一個(gè)條件滿足時(shí)要執(zhí)行多條語句: if x=6 then begin DoSomething; DoSomethingElse; DoAnotherThing; end;,2.4.4 選擇結(jié)構(gòu),用if.else能組合多個(gè)條件: if x=100 then SomeFunction else if x=200 then SomeOtherFunction else begin SomethingElse; Entirely end;,2.4.4 選擇結(jié)構(gòu),2. case語句 在Pascal中的case語句就像是C和C + +中的switch語句。case語句用來在多個(gè)可能的情況中選擇一個(gè)條件,而不再需要用一大堆if.else if.else if結(jié)構(gòu),下面的代碼是Pascal的case語句:,2.4.4 選擇結(jié)構(gòu),case SomeIntegerVariable of 101: DoSomething; 202: begin DoSomething; DoSomethingElse; end; 303: DoAnotherthing; else DoTheDefault; end; 注意case語句的選擇因子必須是有序類型,而不能用非有序的類型如字符串作為選擇因子。,2.4.5 循環(huán)結(jié)構(gòu),循環(huán)是一種能重復(fù)執(zhí)行某一動(dòng)作的語言結(jié)構(gòu),Pascal中的循環(huán)結(jié)構(gòu)和其他語言中的循環(huán)結(jié)構(gòu)相類似,下面列出了在Pascal中要用到的各種循環(huán)結(jié)構(gòu)。 1. for循環(huán) for循環(huán)適合用在事先知道循環(huán)次數(shù)的情況下,下面的代碼在一個(gè)循環(huán)中把控制變量加到另一個(gè)變量中,共重復(fù)10次: var i,x:Integer; begin x:=0; for i:=1 to 10 do inc(x,i); end;,2.4.5 循環(huán)結(jié)構(gòu),2. while循環(huán) while循環(huán)結(jié)構(gòu)用在先判斷某些條件是否為真,然后重復(fù)執(zhí)行某一段代碼的情況下。while的條件是在循環(huán)體執(zhí)行前進(jìn)行判斷的。用while循環(huán)的典型例子是當(dāng)文件沒有到達(dá)文件結(jié)尾時(shí),對(duì)文件進(jìn)行某一重復(fù)操作。下面的例子演示了每次從文件中讀一行并寫到屏幕上: Program FileIt; $APPTYPE CONSOLE var f:=TextFile; S:=String;,2.4.5 循環(huán)結(jié)構(gòu),begin AssignFile(f,foo.txt); Reset(f); while not EOF(f) do begin readln(f,S); writeln(S); end; CloseFile(f); end. Pascal中的while循環(huán)基本上跟C中的while循環(huán)和Visual Basic中Do While循環(huán)一樣。,2.4.5 循環(huán)結(jié)構(gòu),3. repeat.until repeaat.until循環(huán)與while循環(huán)相似,但考慮問題的角度不同,它在某個(gè)條件為真前一直執(zhí)行給定的代碼。因?yàn)闂l件測試在循環(huán)的結(jié)尾,所以循環(huán)體至少要執(zhí)行一遍。Pascal的repeat.until語句大致上同于C語言中的do.while語句。,2.4.5 循環(huán)結(jié)構(gòu),例如,下面的代碼不斷地把一個(gè)計(jì)數(shù)器加1,直到它大于100為止: var x:Integer; begin x:=1; repeat inc(x); until x100; end;,2.4.5 循環(huán)結(jié)構(gòu),4. Break()過程 在while、for或repeat循環(huán)中調(diào)用Break(),使得程序的執(zhí)行流程立即跳到循環(huán)的結(jié)尾,在循環(huán)中當(dāng)某種條件滿足時(shí)需要立即跳出循環(huán),這時(shí)調(diào)用Break()。Pascal中的Break()類似于C語言中的break和Visual Basic中的Exit語句。下面的代碼演示了在5次循環(huán)后跳出循環(huán)。 var i:Integer; begin for i:=1to 100000 do begin MessageBeep(0); if i=5 then break; end; end;,2.4.5 循環(huán)結(jié)構(gòu),5. Continue()過程 如果想跳過循環(huán)中部分代碼重新開始下一次循環(huán),就調(diào)用Continue()過程。注意下面的例子在執(zhí)行第一次循環(huán)時(shí)continue()后的代碼不執(zhí)行: var i:Integer; begin for i:=1 to 3 do begin writeln(i,.Before Continue); if i=1 then continue; writeln(i,.After continue); end; end;,2.5 過程與函數(shù),過程與函數(shù)是實(shí)現(xiàn)一定功能的語句塊,可以在程序的其他地方被調(diào)用,也可以進(jìn)行遞歸調(diào)用。 過程與函數(shù)的區(qū)別在于:過程沒有返回值,而函數(shù)有返回值。 2.5.1 過程 2.5.2 函數(shù) 2.5.3 參數(shù) 2.5.4 子程序的嵌套與遞歸 2.5.5 變量的作用域 2.5.6 Delphi的程序結(jié)構(gòu),2.5.1 過程,過程的定義包括過程原型、過程體的定義。 過程定義的形式如下: procedure procedureName(parameterList);directives; local Declarations; begin statements end;,2.5.1 過程,其中procedureName是過程名,為一個(gè)有效的標(biāo)識(shí)符。 parameterList為參數(shù)列表,需要指明參數(shù)的個(gè)數(shù)及其數(shù)據(jù)類型。 directives是一些關(guān)于函數(shù)的指令字,可以一次設(shè)置多個(gè),使用分號(hào)隔開。localDeclarations中定義了該函數(shù)中需要使用的一些臨時(shí)變量,通常也叫做本地變量。 在begin與end之間是在函數(shù)調(diào)用時(shí)實(shí)現(xiàn)特定功能的一系列語句。 上面的parameterList、directives、localDeclarations和statements等為可選部分。,2.5.1 過程,procedure NumString(N: Integer; var S: string); var V: Integer; begin V := Abs(N); S := ; repeat S := Chr(V mod 10 + Ord(0) + S; V := V div 10; until V = 0; if N < 0 then S := - + S; end;,2.5.2 函數(shù),函數(shù)的定義與過程非常類似,只是使用的保留字不同,而且多了一個(gè)返回值類型。 具體形式如下: function functionName(parameterList):returnType;directives; localDeclarations; begin statements end;,2.5.2 函數(shù),可以將函數(shù)要返回的數(shù)值賦值給Result。 如果函數(shù)體中存在著一些由于判斷而產(chǎn)生的分支語句時(shí),要在每一個(gè)分支中設(shè)置返回值。通常要根據(jù)函數(shù)的返回值來確定下一步的操作。,2.5.2 函數(shù),function Power(X: Real; Y: Integer): Real; var I: Integer; begin Result := 1.0; I := Y; while I 0 do begin if Odd(I) then Result := Result * X; I := I div 2; X := Sqr(X); end; end;,2.5.3 參數(shù),一般將函數(shù)定義時(shí)參數(shù)列表中的參數(shù)稱為形參,將函數(shù)調(diào)用時(shí)參數(shù)列表中的參數(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.5.3 參數(shù),可以為過程和函數(shù)的參數(shù)指定默認(rèn)數(shù)值。具體方法是在參數(shù)定義后面緊接著一個(gè)等號(hào)“=”,然后是一個(gè)常量。指定默認(rèn)數(shù)值的參數(shù)要放在參數(shù)列表的后部,將沒有指定默認(rèn)數(shù)值的參數(shù)放在參數(shù)列表的前面部分。在函數(shù)調(diào)用的時(shí)候,可以為設(shè)置了默認(rèn)值的參數(shù)指定一個(gè)新值,在函數(shù)體中,各語句使用的是指定的新值;如果沒有指定新值,則使用默認(rèn)值。同樣,如果存在多個(gè)設(shè)置了默認(rèn)值的參數(shù),只有前面的參數(shù)指定了新值,后面的參數(shù)才可以指定新值。,【例2-2】,program Project1; $APPTYPE CONSOLE uses Sysutils; / 為了使用函數(shù)Format /以一定精度顯示一個(gè)浮點(diǎn)數(shù) function ShowNum(Num:Double;Precision:Integer=4):Boolean; var MesStr:string; / 浮點(diǎn)數(shù)顯示輸出的內(nèi)容 begin if Precision<=-1 then / 小數(shù)點(diǎn)后的位數(shù)要大于或等于零 begin Result:=False; Exit; / 退出顯示函數(shù) end else begin,定義一個(gè)函數(shù)ShowNum,可以將一個(gè)浮點(diǎn)數(shù)按指定的精度輸出在屏幕上。,【例2-2】,/ 設(shè)置顯示的格式 MesStr:=Format(%*.*f,10,Precision,Num); Result:=True; end; Writeln(MesStr); / 顯示數(shù)據(jù) end; begin ShowNum(123.456789); / Precision默認(rèn)為4 ShowNum(123,5); / 參數(shù)對(duì)數(shù)據(jù)類型進(jìn)行升級(jí) / 下面一句代碼不正確,故屏蔽掉 / ShowNum(123.456789,9.13);/ 參數(shù)對(duì)數(shù)據(jù)類型不能降級(jí) ShowNum(22 div 7,5);/ 調(diào)用函數(shù) / 可以根據(jù)函數(shù)的返回值確定下一步的操作 if ShowNum(123.456789,-3)=False then Writeln(數(shù)據(jù)格式設(shè)置錯(cuò)誤,輸出失敗。); Writeln(按下回車鍵退出。); Readln; end.,【例2-2】,運(yùn)行結(jié)果如下: 123.4568 123.00000 3.14286 數(shù)據(jù)格式設(shè)置錯(cuò)誤,輸出失敗。 按Enter鍵退出。 說明: 為了使用函數(shù)Format,需要在uses語句中將Sysutils單元包含進(jìn)去。,【例2-2】, 由于小數(shù)點(diǎn)后的位數(shù)不可以設(shè)置為負(fù)數(shù),所以當(dāng)出現(xiàn)負(fù)數(shù)的時(shí)候,ShowNum函數(shù)返回False,并調(diào)用Exit函數(shù)立刻退出ShowNum函數(shù)。 在語句ShowNum(123,5);中,首先將整型常數(shù)123轉(zhuǎn)換為浮點(diǎn)型常數(shù),然后進(jìn)行參數(shù)傳遞。 在語句ShowNum(22 div 7,5);中,22 div 7的結(jié)果為3,然后再轉(zhuǎn)換為浮點(diǎn)型常數(shù)進(jìn)行參數(shù)傳遞。,2.5.4 子程序的嵌套與遞歸,在一個(gè)子程序(過程或函數(shù))中包含另外一個(gè)子程序(過程或函數(shù))的調(diào)用,稱為子程序的嵌套。 子程序的遞歸調(diào)用是指一個(gè)過程直接或間接調(diào)用自己本身,子程序直接調(diào)用自身稱為直接遞歸,子程序間接調(diào)用自己稱為間接遞歸。在遞歸調(diào)用中,一個(gè)過程執(zhí)行的某一步要用到它自身的上一步(或上幾步)的結(jié)果。,2.5.4 子程序的嵌套與遞歸,遞歸調(diào)用在處理階乘運(yùn)算、級(jí)數(shù)運(yùn)算、冪指數(shù)運(yùn)算等方面特別有效。 遞歸函數(shù)論是現(xiàn)代數(shù)學(xué)的一個(gè)重要分支,數(shù)學(xué)上常常采用遞歸的辦法來定義一些概念。例如,自然數(shù)n的階乘可以遞歸定義為: 遞歸在算法描述中有著重要的地位,很多看似非常復(fù)雜的問題,但使用遞歸后可以很輕松地解決。在間接遞歸調(diào)用中,子程序必須超前引用,即在子程序的首部后面加上保留字forward。,n!=,【例2-4】,編寫程序打印菲波拉西(Fibonacci)數(shù)列。 菲波拉西數(shù)列排列如下: 1 1 2 3 5 8 13 21 34 55 分析:形成此數(shù)列的規(guī)律是,它的頭兩個(gè)數(shù)為1,從第三個(gè)數(shù)開始其值是它前面的兩個(gè)數(shù)之和。即: 。,fibo=,【例2-4】,這里只寫出了菲波拉西函數(shù)的代碼,事件代碼用戶可自己設(shè)計(jì)。 Function fact(n:Real):Real; begin if n=1 Or n=2 Then fibo:=1; else fibo:=fibo(n-1)+fibo(n-2); end; 利用遞歸算法能簡單有效地解決一些特殊問題,但是由于遞歸調(diào)用過程比較繁瑣,所以執(zhí)行效率很低,在選擇遞歸時(shí)要慎重,2.5.5 變量的作用域,作用域是指一個(gè)過程、函數(shù)和變量能被編譯器識(shí)別的范圍,例如,一個(gè)全局常量的作用域是整個(gè)程序,而一些過程中的局部變量的作用域是那些過程。,【例2-5】作用域的演示的示例 Program Foo; $APPTYPE CONSOLE const SomeConstant=100; var SomeGlobal:Integer; R:Real;,2.5.5 變量的作用域,procedure SomeProc(var R:Real); var LocalReal:Real; begin LocalReal:=10.0; R:=R-LocalReal; end; begin SomeGlobal:= SomeConstant; R:=4.593; SomeProc(R); end;,2.5.5 變量的作用域,SomeConstant、SomeGlobal和R是全局變量,它們?cè)诔绦虻娜魏蔚胤蕉寄鼙痪幾g器所識(shí)別。過程SomeProc()有兩個(gè)變量R和LocalReal,它們的作用域是這個(gè)過程。如果試圖在SomeProc()過程外訪問LocalReal,編譯器將顯示有未知識(shí)別符的錯(cuò)誤。如果在SomeProc()中訪問R,用的是局部變量的R,如果在這個(gè)過程外用R,則用的是全局變量的R。,2.5.6 Delphi的程序結(jié)構(gòu),一個(gè)Delphi應(yīng)用程序?qū)?yīng)一個(gè)工程,從程序結(jié)構(gòu)的角度來看,它由一個(gè)主程序與若干個(gè)單元組成,而程序段則是構(gòu)成主程序和單元的基本結(jié)構(gòu)要素。 1. 主程序 Delphi工程文件中的代碼即為Delphi應(yīng)用程序的主程序。主程序的結(jié)構(gòu)為: program工程文件名; uses語句 $R*.RES 執(zhí)行部分,2.5.6 Delphi的程序結(jié)構(gòu),Delphi中主程序一般很短,這是因?yàn)槌绦虻膸缀跛泄δ茉趗ses語句所引用的單元中。使用Delphi編程時(shí),主程序由程序由系統(tǒng)自動(dòng)生成,無需程序員編寫主程序的代碼,程序員所編寫的只是程序所引用的單元文件中的代碼。,2.5.6 Delphi的程序結(jié)構(gòu),2. 單元與作用域 Delphi編程強(qiáng)調(diào)單元或模塊的使用。在引入類之前,單元是模塊化編程的基礎(chǔ),而類也是建立在單元概念基礎(chǔ)上的。在Dilphi的應(yīng)用程序中,單元文件可以用來定義一個(gè)窗體,也可以用來定義程序中所使用的子程序、全程變量和常量等。 當(dāng)創(chuàng)建工程時(shí),或是向工程中添加一個(gè)新窗體時(shí),Delphi都將自動(dòng)添加一個(gè)新的單元文件,該單元為新窗體定義類與對(duì)象。使用菜單命令:“File”中的“New”命令,在“New”選項(xiàng)卡中選擇“Unit”圖標(biāo),就能在當(dāng)前工程中添加一個(gè)與窗體無關(guān)的獨(dú)立單元。,2.5.6 Delphi的程序結(jié)構(gòu),(1) 單元的結(jié)構(gòu) 單元文件的結(jié)構(gòu)如下所示: unit 單元名 / 單元首部 interface / 接口部分 implementation / 實(shí)現(xiàn)部分 end / 單元結(jié)束,2.5.6 Delphi的程序結(jié)構(gòu),(2) 作用域 在單元的接口部分聲明的標(biāo)識(shí)符(類型、常量、變量、函數(shù)和過程等)在整個(gè)單元內(nèi)(自聲明處起至單元結(jié)束)有效。其他單元(客戶單元)引用該單元時(shí),則在客戶單元內(nèi)有效。 在實(shí)現(xiàn)部分隱含聲明的標(biāo)識(shí)符,不能在單元外使用,即它們?cè)诳蛻魡卧胁豢梢?。這些標(biāo)識(shí)符在本單元的實(shí)現(xiàn)部分自聲明處起至實(shí)現(xiàn)部分結(jié)束的任何程序段中有效。 在實(shí)現(xiàn)部分的任何子程序段中聲明的標(biāo)識(shí),則遵循程序段中標(biāo)識(shí)符的作用域規(guī)則。,2.5.6 Delphi的程序結(jié)構(gòu),3. 程序段與作用域 一個(gè)程序段是由聲明部分和語句部分構(gòu)成的結(jié)構(gòu),其一般結(jié)構(gòu)為: 聲明部分 begin 語句 End 其中聲明部分用來聲明類型、常量、變量、函數(shù)和過程等,語句則是程序段的執(zhí)行部分,可以是簡單語句、復(fù)合語句或簡單語句與復(fù)合語句的任意組合。在聲明部分聲明的標(biāo)識(shí)符(類型、常量、變量、函數(shù)和過程)其作用范圍僅限于該程序段內(nèi)。 函數(shù)體和過程體就是典型的程序段。,2.6 常用內(nèi)部函數(shù),為了盡可能地減少開發(fā)應(yīng)用程序的難度和工作量,Delphi提供了一個(gè)內(nèi)容十分豐富的程序庫Run-Time Library(RTL),其中包括了大量的基本函數(shù)、過程、常量和變量定義。RTL包含的函數(shù)、過程、常量等都是在System單元中定義的,而System單元會(huì)自動(dòng)地被其他程序單元引用,所以用戶編寫的應(yīng)用程序可以隨時(shí)調(diào)用RTL中可用的函數(shù),而不用在程序的uses語句中引用該單元。 2.6.1 數(shù)學(xué)運(yùn)算函數(shù) 2.6.2 字符處理函數(shù) 2.6.3 時(shí)間和日期函數(shù) 2.6.4 數(shù)據(jù)類型轉(zhuǎn)換函數(shù) 2.6.5 格式輸出函數(shù),

注意事項(xiàng)

本文(《Pascal語言基礎(chǔ)》PPT課件.ppt)為本站會(huì)員(za****8)主動(dòng)上傳,裝配圖網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)上載內(nèi)容本身不做任何修改或編輯。 若此文所含內(nèi)容侵犯了您的版權(quán)或隱私,請(qǐng)立即通知裝配圖網(wǎng)(點(diǎn)擊聯(lián)系客服),我們立即給予刪除!

溫馨提示:如果因?yàn)榫W(wǎng)速或其他原因下載失敗請(qǐng)重新下載,重復(fù)下載不扣分。




關(guān)于我們 - 網(wǎng)站聲明 - 網(wǎng)站地圖 - 資源地圖 - 友情鏈接 - 網(wǎng)站客服 - 聯(lián)系我們

copyright@ 2023-2025  zhuangpeitu.com 裝配圖網(wǎng)版權(quán)所有   聯(lián)系電話:18123376007

備案號(hào):ICP2024067431號(hào)-1 川公網(wǎng)安備51140202000466號(hào)


本站為文檔C2C交易模式,即用戶上傳的文檔直接被用戶下載,本站只是中間服務(wù)平臺(tái),本站所有文檔下載所得的收益歸上傳人(含作者)所有。裝配圖網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)上載內(nèi)容本身不做任何修改或編輯。若文檔所含內(nèi)容侵犯了您的版權(quán)或隱私,請(qǐng)立即通知裝配圖網(wǎng),我們立即給予刪除!