已閱讀5頁(yè),還剩6頁(yè)未讀, 繼續(xù)免費(fèi)閱讀
版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
簡(jiǎn)單語(yǔ)句和復(fù)合語(yǔ)句 Pascal 簡(jiǎn)單語(yǔ)句中不包含任何別的語(yǔ)句,賦值語(yǔ)句和過(guò)程調(diào)用即是簡(jiǎn)單語(yǔ)句的例子。簡(jiǎn)單語(yǔ)句用分號(hào)隔開(kāi),如下所示:X := Y + Z; / assignmentRandomize; / procedure call用begin 和end 將簡(jiǎn)單語(yǔ)句括起來(lái)即組成復(fù)合語(yǔ)句,復(fù)合語(yǔ)句用法與普通的Pascal 語(yǔ)句相同,見(jiàn)下例:begin A := B; C := A * 2;end;end之前的最后一條語(yǔ)句末尾分號(hào)不是必需的,你可以寫成:begin A := B; C := A * 2end;這兩種寫法都是正確的。第一種多了一個(gè)無(wú)用(但也無(wú)害)的分號(hào)。分號(hào)實(shí)際上是一個(gè)空語(yǔ)句,也就是說(shuō),是一個(gè)沒(méi)有代碼的語(yǔ)句。有時(shí),空語(yǔ)句可用在循環(huán)體或其他特殊情況中。注意:雖然最后一條語(yǔ)句末尾的分號(hào)沒(méi)有用,我卻總是加上它,并且建議你也這樣做。因?yàn)橛袝r(shí)你可能需要在末尾添加語(yǔ)句,如果最后沒(méi)有加分號(hào),你就必須記著加上它,與其如此不如一開(kāi)始就加上它。賦值語(yǔ)句 在Pascal 語(yǔ)言中賦值語(yǔ)句用冒號(hào)-等號(hào)操作符“:=”,對(duì)使用其他語(yǔ)言的編程人員來(lái)說(shuō)這是一個(gè)奇怪的符號(hào)。在其他語(yǔ)言中用作賦值符號(hào)的“=”在Pascal 中用作關(guān)系運(yùn)算符,用于判斷是否相等。注意:賦值和相等判斷使用不同的符號(hào),使Pascal 編譯器(象C編譯器一樣)能更快解譯源代碼,因?yàn)檫@樣就不需要通過(guò)檢查上下文來(lái)判斷符號(hào)的意義,此外使用不同操作符也使代碼更易讀。條件語(yǔ)句 條件語(yǔ)句通過(guò)條件檢測(cè),判斷是否執(zhí)行該條件語(yǔ)句中包含的語(yǔ)句。條件語(yǔ)句可有兩種基本形式:if語(yǔ)句和case語(yǔ)句。If語(yǔ)句 對(duì)if-then型語(yǔ)句,僅當(dāng)條件滿足時(shí),語(yǔ)句才執(zhí)行;對(duì)if-then-else型,if語(yǔ)句在兩條語(yǔ)句中選擇一條執(zhí)行。條件用布爾表達(dá)式建立,這里通過(guò)一個(gè)簡(jiǎn)單的Delphi 例子來(lái)示范如何寫條件語(yǔ)句。首先,創(chuàng)建一個(gè)應(yīng)用程序,在form上面放兩個(gè)復(fù)選框(check box)和四個(gè)按鈕(button),不要改變復(fù)選框和按鈕的名字,雙擊按鈕為其OnClick 事件添加響應(yīng)程序。下面是第一個(gè)按鈕事件代碼中一條簡(jiǎn)單的if語(yǔ)句:procedure TForm1.Button1Click(Sender: TObject);begin / simple if statement if CheckBox1.Checked then ShowMessage (CheckBox1 is checked)end;當(dāng)點(diǎn)擊button1,如果第一個(gè)復(fù)選框中有復(fù)選標(biāo)記,那么這個(gè)程序?qū)@示一條消息(見(jiàn)圖5.1)。我用了ShowMessage 函數(shù),因?yàn)樗荄elphi中最簡(jiǎn)單的短信息顯示函數(shù)。圖 5.1: 例IfTest顯示的信息 如果點(diǎn)擊按鈕后沒(méi)有反應(yīng),表明復(fù)選框未被選中。對(duì)于這種情況,最好能交代得更清楚些,為此在第二個(gè)按鈕的代碼中,我用了if-then-else 語(yǔ)句:procedure TForm1.Button2Click(Sender: TObject);begin / if-then-else statement if CheckBox2.Checked then ShowMessage (CheckBox2 is checked) else ShowMessage (CheckBox2 is NOT checked);end;要注意的是,不能在第一句之后、else 關(guān)鍵詞之前加分號(hào),否則編譯器將告知語(yǔ)法錯(cuò)誤。實(shí)際上,if-then-else 語(yǔ)句是單純的一條語(yǔ)句,因此不能在語(yǔ)句中間加分號(hào)。if 語(yǔ)句可以很復(fù)雜,句子中的條件部分可以是一系列條件(用and、 or 、 not等布爾操作符聯(lián)接起來(lái)),if語(yǔ)句又可以嵌套另一個(gè)if語(yǔ)句,見(jiàn)例IfTest中其它兩個(gè)按鈕的示范代碼:procedure TForm1.Button3Click(Sender: TObject);begin / statement with a double condition if CheckBox1.Checked and CheckBox2.Checked then ShowMessage (Both check boxes are checked)end;procedure TForm1.Button4Click(Sender: TObject);begin / compound if statement if CheckBox1.Checked then if CheckBox2.Checked then ShowMessage (CheckBox1 and 2 are checked) else ShowMessage (Only CheckBox1 is checked) else ShowMessage ( Checkbox1 is not checked, who cares for Checkbox2?)end;仔細(xì)閱讀代碼并執(zhí)行程序,看看你能不能理解整個(gè)程序。當(dāng)你搞不清某種編程結(jié)構(gòu)時(shí),可以先寫一個(gè)簡(jiǎn)單程序,這樣可以幫你學(xué)習(xí)許多東西。你可以再加幾個(gè)復(fù)選框,增加這個(gè)簡(jiǎn)例的復(fù)雜程度,并進(jìn)行各種測(cè)試。Case語(yǔ)句 如果你的if語(yǔ)句變得非常復(fù)雜,有時(shí)可以用case語(yǔ)句代替它。case語(yǔ)句包括用來(lái)選值的表達(dá)式、可能值序列或一個(gè)取值范圍。這些值應(yīng)該是常量,并且它們必須唯一,而且應(yīng)屬于有序類型。Case語(yǔ)句最后可以帶一個(gè)else 語(yǔ)句,當(dāng)沒(méi)有一個(gè)標(biāo)簽與選擇器的值一致時(shí),執(zhí)行else語(yǔ)句。下面是兩個(gè)簡(jiǎn)單的例子:case Number of 1: Text := One; 2: Text := Two; 3: Text := Three;end;case MyChar of + : Text := Plus sign; - : Text := Minus sign; *, /: Text := Multiplication or division; 0.9: Text := Number; a.z: Text := Lowercase character; A.Z: Text := Uppercase character;else Text := Unknown character;end;Pascal語(yǔ)言中的循環(huán) 其它編程語(yǔ)言中使用的循環(huán)語(yǔ)句,Pascal語(yǔ)言中都有,它們包括 for、 while 和 repeat 語(yǔ)句。如果你用過(guò)其他編程語(yǔ)言,你會(huì)發(fā)現(xiàn)Pascal中的循環(huán)語(yǔ)句沒(méi)什么特別的,因此這里我只作簡(jiǎn)要的說(shuō)明。For循環(huán) Pascal 中的for循環(huán)嚴(yán)格地建立在計(jì)數(shù)器基礎(chǔ)上,循環(huán)每執(zhí)行一次,計(jì)數(shù)器不是增加一個(gè)值就是減小一個(gè)值。下面是一個(gè)for語(yǔ)句的簡(jiǎn)例,用來(lái)將前十個(gè)數(shù)加起來(lái):var K, I: Integer;begin K := 0; for I := 1 to 10 do K := K + I;同樣的for語(yǔ)句可以用正好相反的計(jì)數(shù)器來(lái)寫:var K, I: Integer;begin K := 0; for I := 10 downto 1 do K := K + I;Pascal 中的for循環(huán)語(yǔ)句其靈活性比其他語(yǔ)言?。ㄋ荒苤付?之外的步長(zhǎng)),不過(guò)簡(jiǎn)單也容易理解。如果需判斷的條件比較復(fù)雜,或想自定義計(jì)數(shù)器,你可以用while語(yǔ)句或 repeat 語(yǔ)句,而不是for循環(huán)語(yǔ)句。注意:for循環(huán)計(jì)數(shù)器不必非是數(shù)字,它可以是任何有序類型的值,例如一個(gè)字符或一個(gè)枚舉類型值。while語(yǔ)句和repeat語(yǔ)句 while-do 循環(huán)語(yǔ)句和 repeat-until 語(yǔ)句的不同點(diǎn)在于repeat 循環(huán)語(yǔ)句的代碼至少要執(zhí)行一次。從下面的簡(jiǎn)例很容易理解這一點(diǎn):while (I = 100) and (J 100) or (J 100);從上可見(jiàn)即使 I 或 J 的初始值大于100,repeat-until循環(huán)中的代碼也仍會(huì)執(zhí)行一次。注意:兩種循環(huán)另一個(gè)關(guān)鍵的不同點(diǎn)是,repeat-until 循環(huán)的條件是反向的條件,只要不滿足這個(gè)條件,循環(huán)就執(zhí)行;當(dāng)條件滿足時(shí),循環(huán)終止。這正好與while-do 循環(huán)相反,while-do 循環(huán)當(dāng)條件是真值時(shí)才執(zhí)行。為此,我不得不在上面代碼中用反向條件來(lái)獲得相同的結(jié)果。一個(gè)循環(huán)語(yǔ)句例子 為了探究循環(huán)的細(xì)節(jié),讓我們看一個(gè)Delphi 簡(jiǎn)例,這個(gè)循環(huán)例子表現(xiàn)了固定計(jì)數(shù)器循環(huán)和隨機(jī)計(jì)數(shù)器循環(huán)之間的差別。建一個(gè)新的工程,在主窗體上放一個(gè)listbox和兩個(gè)button,通過(guò)設(shè)置Object Inspector中的name屬性分別命名button為BtnFor 和BtnWhile。你還可以把Caption 屬性中的Btn 去掉,或甚至加上 & ,讓跟在 & 后面的字母成為快捷鍵。下面是該窗體文本描述:object Form1: TForm1 Caption = Loops object ListBox1: TListBox . object BtnFor: TButton Caption = &For OnClick = BtnForClick end object BtnWhile: TButton Caption = &While OnClick = BtnWhileClick endend圖 5.2: 單擊For按鈕后顯示的結(jié)果 現(xiàn)在,我們分別給兩個(gè)button 添加OnClick 事件代碼。第一個(gè)button用一個(gè)簡(jiǎn)單的for循環(huán)來(lái)顯示一列數(shù)字,結(jié)果如圖5.2。這個(gè)循環(huán)向listbox中的Items 屬性添加一系列字符串。在執(zhí)行循環(huán)之前,需要清除listbox 中的內(nèi)容。程序如下:procedure TForm1.BtnForClick(Sender: TObject);var I: Integer;begin ListBox1.Items.Clear; for I := 1 to 20 do Listbox1.Items.Add (String + IntToStr (I);end;第二個(gè)button的事件代碼稍微復(fù)雜點(diǎn)。本例中讓while 循環(huán)基于一個(gè)隨機(jī)增長(zhǎng)的計(jì)數(shù)器。為實(shí)現(xiàn)它,我調(diào)用了Randomize 過(guò)程, 用它來(lái)重置隨機(jī)數(shù)發(fā)生器,還調(diào)用了Random 函數(shù), 其取值范圍為100, 即函數(shù)返回0至99之間的隨機(jī)數(shù),隨機(jī)數(shù)序列控制while 循環(huán)的執(zhí)行次數(shù)。procedure TForm1.BtnWhileClick(Sender: TObject);var I: Integer;begin ListBox1.Items.Clear; Randomize; I := 0; while I 1000 do begin I := I + Random (100); Listbox1.Items.Add (Random Number: + IntToStr (I); end;end;每次點(diǎn)擊While按鈕,出現(xiàn)的數(shù)字都不同,因?yàn)檫@些數(shù)字取決于隨機(jī)數(shù)發(fā)生器。圖5.3顯示了兩次點(diǎn)擊的結(jié)果,可看到不僅每次產(chǎn)生的數(shù)字不同,而且數(shù)據(jù)項(xiàng)數(shù)也不同。也就是說(shuō),這個(gè)while循環(huán)執(zhí)行的次數(shù)是隨機(jī)的。 圖 5.3: 按While按鈕后顯示的結(jié)果 注意:用 Break 和 Continue 系統(tǒng)過(guò)程可以改變循環(huán)執(zhí)行的標(biāo)準(zhǔn)流程。Break 中斷循環(huán);Continue直接跳至循環(huán)測(cè)試句,或使計(jì)數(shù)器增加一個(gè)步長(zhǎng),然后繼續(xù)循環(huán)(除非條件為空或計(jì)數(shù)器達(dá)到最大值)。還有兩個(gè)系統(tǒng)過(guò)程 Exit 和 Halt,讓你立即從函數(shù)或過(guò)程中返回,或者終止程序。With語(yǔ)句 我要講的最后一種Pascal 語(yǔ)句是With語(yǔ)句,With語(yǔ)句是Pascal編程語(yǔ)言獨(dú)有的語(yǔ)句,不過(guò)最近JavaScript 和Visual Basic也添加了這種語(yǔ)句,它在Delphi程序設(shè)計(jì)中很有用。With語(yǔ)句是一種用于簡(jiǎn)化代碼的語(yǔ)句。如你要訪問(wèn)一個(gè)記錄類型變量(或一個(gè)對(duì)象),用With語(yǔ)句就不必每次重復(fù)變量的名字。例如對(duì)于以下的記錄類型代碼:type Date = record Year: Integer; Month: Byte; Day: Byte; end;var BirthDay: Date;begin BirthDay.Year := 1997; BirthDay.Month := 2; BirthDay.Day := 14;可以用with語(yǔ)句改進(jìn)后半部分代碼,如下:begin with BirthDay do begin Year := 1995; Month := 2; Day := 14; end;在Delphi程序中,這種方法能用于訪問(wèn)控件和類變量?,F(xiàn)在通過(guò)with語(yǔ)句訪問(wèn)列表框的條目,我們重寫上面循環(huán)例子的最后部分:procedure TForm1.WhileButtonClick(Sender: TObject);var I: Integer;begin with ListBox1.Items do begin Clear; / shortcut Randomize; I := 0; while I 1000 do begin I := I + Random (100); / shortcut: Add (Random Number: + IntToStr (I); end; end;end;當(dāng)你使用控件或類時(shí),with語(yǔ)句通常能簡(jiǎn)化你的代碼,尤其對(duì)嵌套域。例如,你要改變窗體畫筆的寬度和顏色,你可以寫代碼如下:Form1.Canvas.Pen.Width := 2;Form1.Canvas.Pen.Color := clRed;但如果用With語(yǔ)句代碼會(huì)更簡(jiǎn)單: with Form1.Canvas.Pen dobegin Width := 2; Color := clRed;end;當(dāng)編寫的代碼很復(fù)雜時(shí),with語(yǔ)句會(huì)很有用,也可省去一些臨時(shí)變量。但是這樣做也有缺點(diǎn),因?yàn)檫@樣將使代碼的可讀性變差,特別對(duì)有相似或相同屬性的對(duì)象。更嚴(yán)重的是,使用with語(yǔ)句可能會(huì)在代碼中融入微妙的邏輯錯(cuò)誤,甚至連編譯器都難以發(fā)現(xiàn)。例如:with Button1 dobegin Width := 200; Caption := New Caption; Color := clRed;end;這段代碼改變了按鈕的C
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年粵人版七年級(jí)物理上冊(cè)月考試卷
- 2025年度住宅裝修木工支模施工合同協(xié)議4篇
- 2025年浙教新版選擇性必修3歷史上冊(cè)月考試卷
- 二零二五版門窗行業(yè)綠色供應(yīng)鏈管理合同7篇
- 二零二五年度幕墻節(jié)能診斷與改進(jìn)合同4篇
- 二零二五年度寧波廣告?zhèn)髅狡髽I(yè)勞動(dòng)合同與知識(shí)產(chǎn)權(quán)保護(hù)協(xié)議4篇
- 二零二五版定制門窗設(shè)計(jì)制作與售后服務(wù)合同3篇
- 公共管理理論專題知到智慧樹(shù)章節(jié)測(cè)試課后答案2024年秋武漢科技大學(xué)
- 二零二五年度農(nóng)藥生產(chǎn)許可證延續(xù)及變更服務(wù)合同3篇
- 二零二五年度電子信息產(chǎn)業(yè)農(nóng)民工勞動(dòng)合同參考文本4篇
- 中級(jí)半導(dǎo)體分立器件和集成電路裝調(diào)工技能鑒定考試題庫(kù)(含答案)
- 2024年江西生物科技職業(yè)學(xué)院?jiǎn)握新殬I(yè)技能測(cè)試題庫(kù)帶解析答案
- 橋本甲狀腺炎-90天治療方案
- (2024年)安全注射培訓(xùn)課件
- 2024版《建設(shè)工程開(kāi)工、停工、復(fù)工安全管理臺(tái)賬表格(流程圖、申請(qǐng)表、報(bào)審表、考核表、通知單等)》模版
- 部編版《道德與法治》六年級(jí)下冊(cè)教材分析萬(wàn)永霞
- 粘液腺肺癌病理報(bào)告
- 酒店人防管理制度
- 油田酸化工藝技術(shù)
- 上海高考英語(yǔ)詞匯手冊(cè)列表
- 移動(dòng)商務(wù)內(nèi)容運(yùn)營(yíng)(吳洪貴)任務(wù)五 其他內(nèi)容類型的生產(chǎn)
評(píng)論
0/150
提交評(píng)論