pascal語言中的語句.doc_第1頁
pascal語言中的語句.doc_第2頁
pascal語言中的語句.doc_第3頁
pascal語言中的語句.doc_第4頁
pascal語言中的語句.doc_第5頁
已閱讀5頁,還剩6頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

簡單語句和復合語句 Pascal 簡單語句中不包含任何別的語句,賦值語句和過程調(diào)用即是簡單語句的例子。簡單語句用分號隔開,如下所示:X := Y + Z; / assignmentRandomize; / procedure call用begin 和end 將簡單語句括起來即組成復合語句,復合語句用法與普通的Pascal 語句相同,見下例:begin A := B; C := A * 2;end;end之前的最后一條語句末尾分號不是必需的,你可以寫成:begin A := B; C := A * 2end;這兩種寫法都是正確的。第一種多了一個無用(但也無害)的分號。分號實際上是一個空語句,也就是說,是一個沒有代碼的語句。有時,空語句可用在循環(huán)體或其他特殊情況中。注意:雖然最后一條語句末尾的分號沒有用,我卻總是加上它,并且建議你也這樣做。因為有時你可能需要在末尾添加語句,如果最后沒有加分號,你就必須記著加上它,與其如此不如一開始就加上它。賦值語句 在Pascal 語言中賦值語句用冒號-等號操作符“:=”,對使用其他語言的編程人員來說這是一個奇怪的符號。在其他語言中用作賦值符號的“=”在Pascal 中用作關系運算符,用于判斷是否相等。注意:賦值和相等判斷使用不同的符號,使Pascal 編譯器(象C編譯器一樣)能更快解譯源代碼,因為這樣就不需要通過檢查上下文來判斷符號的意義,此外使用不同操作符也使代碼更易讀。條件語句 條件語句通過條件檢測,判斷是否執(zhí)行該條件語句中包含的語句。條件語句可有兩種基本形式:if語句和case語句。If語句 對if-then型語句,僅當條件滿足時,語句才執(zhí)行;對if-then-else型,if語句在兩條語句中選擇一條執(zhí)行。條件用布爾表達式建立,這里通過一個簡單的Delphi 例子來示范如何寫條件語句。首先,創(chuàng)建一個應用程序,在form上面放兩個復選框(check box)和四個按鈕(button),不要改變復選框和按鈕的名字,雙擊按鈕為其OnClick 事件添加響應程序。下面是第一個按鈕事件代碼中一條簡單的if語句:procedure TForm1.Button1Click(Sender: TObject);begin / simple if statement if CheckBox1.Checked then ShowMessage (CheckBox1 is checked)end;當點擊button1,如果第一個復選框中有復選標記,那么這個程序將顯示一條消息(見圖5.1)。我用了ShowMessage 函數(shù),因為它是Delphi中最簡單的短信息顯示函數(shù)。圖 5.1: 例IfTest顯示的信息 如果點擊按鈕后沒有反應,表明復選框未被選中。對于這種情況,最好能交代得更清楚些,為此在第二個按鈕的代碼中,我用了if-then-else 語句: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 關鍵詞之前加分號,否則編譯器將告知語法錯誤。實際上,if-then-else 語句是單純的一條語句,因此不能在語句中間加分號。if 語句可以很復雜,句子中的條件部分可以是一系列條件(用and、 or 、 not等布爾操作符聯(lián)接起來),if語句又可以嵌套另一個if語句,見例IfTest中其它兩個按鈕的示范代碼: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;仔細閱讀代碼并執(zhí)行程序,看看你能不能理解整個程序。當你搞不清某種編程結構時,可以先寫一個簡單程序,這樣可以幫你學習許多東西。你可以再加幾個復選框,增加這個簡例的復雜程度,并進行各種測試。Case語句 如果你的if語句變得非常復雜,有時可以用case語句代替它。case語句包括用來選值的表達式、可能值序列或一個取值范圍。這些值應該是常量,并且它們必須唯一,而且應屬于有序類型。Case語句最后可以帶一個else 語句,當沒有一個標簽與選擇器的值一致時,執(zhí)行else語句。下面是兩個簡單的例子: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語言中的循環(huán) 其它編程語言中使用的循環(huán)語句,Pascal語言中都有,它們包括 for、 while 和 repeat 語句。如果你用過其他編程語言,你會發(fā)現(xiàn)Pascal中的循環(huán)語句沒什么特別的,因此這里我只作簡要的說明。For循環(huán) Pascal 中的for循環(huán)嚴格地建立在計數(shù)器基礎上,循環(huán)每執(zhí)行一次,計數(shù)器不是增加一個值就是減小一個值。下面是一個for語句的簡例,用來將前十個數(shù)加起來:var K, I: Integer;begin K := 0; for I := 1 to 10 do K := K + I;同樣的for語句可以用正好相反的計數(shù)器來寫:var K, I: Integer;begin K := 0; for I := 10 downto 1 do K := K + I;Pascal 中的for循環(huán)語句其靈活性比其他語言小(它不能指定1之外的步長),不過簡單也容易理解。如果需判斷的條件比較復雜,或想自定義計數(shù)器,你可以用while語句或 repeat 語句,而不是for循環(huán)語句。注意:for循環(huán)計數(shù)器不必非是數(shù)字,它可以是任何有序類型的值,例如一個字符或一個枚舉類型值。while語句和repeat語句 while-do 循環(huán)語句和 repeat-until 語句的不同點在于repeat 循環(huán)語句的代碼至少要執(zhí)行一次。從下面的簡例很容易理解這一點:while (I = 100) and (J 100) or (J 100);從上可見即使 I 或 J 的初始值大于100,repeat-until循環(huán)中的代碼也仍會執(zhí)行一次。注意:兩種循環(huán)另一個關鍵的不同點是,repeat-until 循環(huán)的條件是反向的條件,只要不滿足這個條件,循環(huán)就執(zhí)行;當條件滿足時,循環(huán)終止。這正好與while-do 循環(huán)相反,while-do 循環(huán)當條件是真值時才執(zhí)行。為此,我不得不在上面代碼中用反向條件來獲得相同的結果。一個循環(huán)語句例子 為了探究循環(huán)的細節(jié),讓我們看一個Delphi 簡例,這個循環(huán)例子表現(xiàn)了固定計數(shù)器循環(huán)和隨機計數(shù)器循環(huán)之間的差別。建一個新的工程,在主窗體上放一個listbox和兩個button,通過設置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按鈕后顯示的結果 現(xiàn)在,我們分別給兩個button 添加OnClick 事件代碼。第一個button用一個簡單的for循環(huán)來顯示一列數(shù)字,結果如圖5.2。這個循環(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;第二個button的事件代碼稍微復雜點。本例中讓while 循環(huán)基于一個隨機增長的計數(shù)器。為實現(xiàn)它,我調(diào)用了Randomize 過程, 用它來重置隨機數(shù)發(fā)生器,還調(diào)用了Random 函數(shù), 其取值范圍為100, 即函數(shù)返回0至99之間的隨機數(shù),隨機數(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;每次點擊While按鈕,出現(xiàn)的數(shù)字都不同,因為這些數(shù)字取決于隨機數(shù)發(fā)生器。圖5.3顯示了兩次點擊的結果,可看到不僅每次產(chǎn)生的數(shù)字不同,而且數(shù)據(jù)項數(shù)也不同。也就是說,這個while循環(huán)執(zhí)行的次數(shù)是隨機的。 圖 5.3: 按While按鈕后顯示的結果 注意:用 Break 和 Continue 系統(tǒng)過程可以改變循環(huán)執(zhí)行的標準流程。Break 中斷循環(huán);Continue直接跳至循環(huán)測試句,或使計數(shù)器增加一個步長,然后繼續(xù)循環(huán)(除非條件為空或計數(shù)器達到最大值)。還有兩個系統(tǒng)過程 Exit 和 Halt,讓你立即從函數(shù)或過程中返回,或者終止程序。With語句 我要講的最后一種Pascal 語句是With語句,With語句是Pascal編程語言獨有的語句,不過最近JavaScript 和Visual Basic也添加了這種語句,它在Delphi程序設計中很有用。With語句是一種用于簡化代碼的語句。如你要訪問一個記錄類型變量(或一個對象),用With語句就不必每次重復變量的名字。例如對于以下的記錄類型代碼:type Date = record Year: Integer; Month: Byte; Day: Byte; end;var BirthDay: Date;begin BirthDay.Year := 1997; BirthDay.Month := 2; BirthDay.Day := 14;可以用with語句改進后半部分代碼,如下:begin with BirthDay do begin Year := 1995; Month := 2; Day := 14; end;在Delphi程序中,這種方法能用于訪問控件和類變量。現(xiàn)在通過with語句訪問列表框的條目,我們重寫上面循環(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;當你使用控件或類時,with語句通常能簡化你的代碼,尤其對嵌套域。例如,你要改變窗體畫筆的寬度和顏色,你可以寫代碼如下:Form1.Canvas.Pen.Width := 2;Form1.Canvas.Pen.Color := clRed;但如果用With語句代碼會更簡單: with Form1.Canvas.Pen dobegin Width := 2; Color := clRed;end;當編寫的代碼很復雜時,with語句會很有用,也可省去一些臨時變量。但是這樣做也有缺點,因為這樣將使代碼的可讀性變差,特別對有相似或相同屬性的對象。更嚴重的是,使用with語句可能會在代碼中融入微妙的邏輯錯誤,甚至連編譯器都難以發(fā)現(xiàn)。例如:with Button1 dobegin Width := 200; Caption := New Caption; Color := clRed;end;這段代碼改變了按鈕的C

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論