PB基礎(chǔ)循環(huán)語句和pascal語言中的語句_第1頁
PB基礎(chǔ)循環(huán)語句和pascal語言中的語句_第2頁
PB基礎(chǔ)循環(huán)語句和pascal語言中的語句_第3頁
PB基礎(chǔ)循環(huán)語句和pascal語言中的語句_第4頁
PB基礎(chǔ)循環(huán)語句和pascal語言中的語句_第5頁
已閱讀5頁,還剩28頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

PB基本語句循環(huán)語句PB基本語句

一、賦值語句

賦值語句用于給變量、對象屬性賦值,這是應(yīng)用程序中使用最頻繁的語句,其語法格式為:variablename=expression

其中:⑴variablename是變量名或?qū)ο髮傩裕?/p>

⑵expression是表達(dá)式,其數(shù)據(jù)類型應(yīng)該與variablename的數(shù)據(jù)類型兼容。

下面是賦值語句的幾個(gè)簡單示例:

Address="北京"

TaxRate=.05

Age=30

mle.text="北京歡迎你"

PowerScript的賦值語句不支持多重賦值,也就是說,一條賦值語句只對一個(gè)變量賦值,不能同時(shí)對多個(gè)變量賦值。

下面的語句:A=B=0

在有些編程語言中同時(shí)把A和B均賦值0,但PowerScript中,該語句等價(jià)于:

A=(B=0)

其意義為,檢查B等于0是否成立,成立時(shí)將TRUE賦給變量A,否則把FALSE賦給變量A。如果A不是Boolean類型的變量,則上述語句將引起編譯錯(cuò)誤。

二、條件語句

IF語句有兩種形式,下面我們按照從簡單到復(fù)雜的次序逐一介紹。

1.單行IF...THEN語句

單行IF...THEN語句的格式為:

IF邏輯表達(dá)式THEN語句1[ELSE語句2]

單行IF...THEN語句書寫時(shí)整條語句寫在一行上,當(dāng)邏輯表達(dá)式的結(jié)果為True時(shí)執(zhí)行語句1,否則執(zhí)行語句2(如果有該子句的話)。

例如:IFsle_State.text="BJ"THEN

MessageBox("歡迎","北京")

2.多行IF...THEN語句

多行IF...THEN語句的語法格式為:

IF邏輯表達(dá)式1THEN

語句1

[ELSEIF邏輯表達(dá)式2THEN

語句2

...

][ELSE

語句n]

ENDIF

本語句的執(zhí)行過程為:計(jì)算邏輯表達(dá)式1,如果其結(jié)果為True,則執(zhí)行語句1,然后離開整個(gè)IF語句;否則計(jì)算邏輯表達(dá)式2,如果其結(jié)果為True,則執(zhí)行語句2,然后離開整個(gè)IF語句;...如果邏輯表達(dá)式的結(jié)果都是False,且存在ELSE子句,則執(zhí)行語句3。

例1:從單行編輯框中輸入考分,按“輸入”按鈕再根據(jù)考分顯示及格或不及格。

Integers

s=integer(sle_1.text)

//sle_1text單行編輯框文本

Ifs<60then

St_1.text=“不及格”

//St_1.text靜態(tài)編輯框文本

Else

St_1.text=“及格”

Endif

例2:從單行編輯框中輸入考分,按“輸入”按鈕后,再根據(jù)考分顯示優(yōu)、良、中、及格或不及格。

Integers

s=integer(sle_1.text)

//sle_1text單行編輯框文本

ifs>=90then

St_1.text=“優(yōu)”

elseifs>=80then

St_1.text=“良”

elseifs>=70then

St_1.text=“中”

elseifs>=60then

St_1.text=“及格”

else

St_1.text=“不及格”

endif

3.CHOOSECASE語句

根據(jù)測試表達(dá)式的值選擇不同的操作,其語法格式為:

CHOOSECASE測試表達(dá)式

CASE判斷表達(dá)式

執(zhí)行語句塊

[CASE判斷表達(dá)式

語句塊

...

CASE判斷表達(dá)式

語句塊]

[CASEELSE

語句塊]

ENDCHOOSE

判斷表達(dá)式可以使用如下的形式:

1.用逗號分隔的一組數(shù)據(jù),例如:2,4,7

2.用TO表示一個(gè)區(qū)間范圍,例如:2TO15

3.用IS代表測試值,后跟關(guān)系操作符和比較值,例如:IS>30

4.組合運(yùn)用上述三種方法,并用逗號進(jìn)行分隔,例如:5,6,8TO12,IS>20

執(zhí)行CHOOSECASE語句時(shí),PowerBuilder將逐條查找CASE,如果找到與測試值相匹配的判斷表達(dá)式,就執(zhí)行該CASE后的語句塊,然后執(zhí)行ENDCHOOSE后的第一條語句。如果CHOOSECASE語句中包含CASEELSE子句,則未找到任何匹配的CASE條件時(shí),執(zhí)行CASEELSE子句中的語句塊。

例3:從單行編輯框中輸入考分,按“輸入”按鈕后,再根據(jù)考分顯示優(yōu)、良、種、及格或不及格。(用choosecase重寫例2)

integerf

Strings

f=integer(sle_1.text)

CHOOSECASEf

CASEIS>=90

//改進(jìn)90to100

S="優(yōu)"

CASE80TO89

S="良"

CASE70TO79

S="中"

CASE60TO69

S="及格"

CASE0TO59

S="不及格"

CASEELSE

S="輸入錯(cuò),請重新輸入!"

ENDCHOOSE

St_1.text=string(S)

三、循環(huán)語句

各種語言都提供了自己的循環(huán)語句,PowerScript也不例外,它的循環(huán)語句有三種形式:DO…LOOP、FOR…NEXT、GOTO,將前兩種形式與EXIT和CONTINUE語句配合使用,可以完全拋棄GOTO語句,而且DO…LOOP本身有四種格式,豐富多采的表達(dá)方式為我們編寫清晰流暢的程序提供了有效手段。

下面介紹PowerScript循環(huán)語句的格式、中途退出循環(huán)或中途開始下次循環(huán)的方法、以及循環(huán)嵌套的概念。

1DOLOOP循環(huán)

DOLOOP結(jié)構(gòu)提供了一種基于某個(gè)條件的靈活的循環(huán)方法,它有四種形式,分別為:

DOUNTILu<條件>…LOOP

DOWHILEu<條件>…LOOP(類似c)

DO…LOOPUNTILu<條件>

uDO…LOOPWHILE<條件>(類似c)

DO表示循環(huán)的開始,LOOP表示循環(huán)的結(jié)束,condition表示循環(huán)條件,是個(gè)邏輯表達(dá)式,其值為True或False。

(1)DOUNTIL…LOOP的語法格式為:

DOUNTIL<條件>

語句塊

LOOP

其執(zhí)行過程為:先計(jì)算條件condition,其結(jié)果為False時(shí),執(zhí)行語句塊,接著再檢查條件,直到條件的結(jié)果為True時(shí)退出循環(huán)。

例:按計(jì)算按鈕求s=1+2+3+…+10。

解1:

integeri=1,s=0

DOUNTILi>10

s+=i

i++

LOOP

st_1.text=string(s)

(2)DOWHILE…LOOP的語法格式為:

DOWHILE<條件>

語句塊

LOOP

其執(zhí)行過程為:先計(jì)算條件,其結(jié)果為True時(shí),執(zhí)行語句塊,接著再檢查條件,直到條件的結(jié)果為False時(shí)退出循環(huán)。

例:按計(jì)算按鈕求s=1+2+3+…+10。

解2:

integeri=1,s=0

DOWHILEi<=10

s+=i

i++

LOOP

st_1.text=string(s)

(3)DO…LOOPUNTIL的語法格式為:

DO

語句塊

LOOPUNTIL<條件>

其執(zhí)行過程為:先執(zhí)行語句塊,然后計(jì)算條件,如果其結(jié)果為False,則繼續(xù)執(zhí)行語句塊,直到條件的結(jié)果為True時(shí)退出循環(huán)。

例:按計(jì)算按鈕求s=1+2+3+…+10。

解3:解1與解3完全等價(jià)

integeri=1,s=0

DO

s+=i

i++

LOOPUNTILi>10

st_1.text=string(s)

(4)DO…LOOPWHILE的語法格式為:

DO

語句塊

LOOPWHILE<條件>

其執(zhí)行過程為:先執(zhí)行語句塊,然后計(jì)算條件,如果其結(jié)果為True,則繼續(xù)執(zhí)行語句塊,直到條件的結(jié)果為False時(shí)退出循環(huán)。

例:按計(jì)算按鈕求s=1+2+3+…+10。

解4:解2與解4完全等價(jià)

integeri=1,s=0

DO

s+=i

i++

LOOPWHILEi<=10

st_1.text=string(s)

這四種循環(huán)結(jié)構(gòu)中,前兩種結(jié)構(gòu)可以一次也不執(zhí)行,后兩種結(jié)構(gòu)則至少執(zhí)行一次。

實(shí)際上,只需要從前兩種和后兩種結(jié)構(gòu)中各取其一就能表達(dá)所有的邏輯關(guān)系,但為了更清晰地表達(dá)條件,PowerScript還是提供了四種結(jié)構(gòu)。

2FORNEXT循環(huán)

FOR…NEXT是個(gè)循環(huán)次數(shù)確定的循環(huán)結(jié)構(gòu),它使循環(huán)體內(nèi)的語句執(zhí)行規(guī)定的次數(shù),其語法結(jié)構(gòu)為:

FORvarname=startTOend[STEPincrement]

Statementblock

NEXT

其中,varname是循環(huán)變量,可以是任意的數(shù)值類型,start、end分別是循環(huán)變量的初值和終值,increment是每次循環(huán)后循環(huán)變量的步長增量(缺省值為1),statementblock是一組語句,稱做循環(huán)體,方括號表示該子句可以省略。

FOR…NEXT語句的執(zhí)行過程為:循環(huán)變量varname從start開始,到end為止,重復(fù)執(zhí)行循環(huán)體,每執(zhí)行一次,varname被重新賦值,新值為:varname+increment。另外,如果start和/或end在循環(huán)體內(nèi)被修改,將影響循環(huán)次數(shù)。

例:按計(jì)算按鈕求s=1+2+3+…+10。

解5:

integeri,s=0

fori=1to10

s+=i

next

st_1.text=string(s)

3EXIT(退出循環(huán))

在循環(huán)語句的循環(huán)體中,當(dāng)我們想在中途退出循環(huán)時(shí),使用EXIT語句是個(gè)好辦法,執(zhí)行該語句后,程序的控制權(quán)轉(zhuǎn)至循環(huán)語句后的語句,執(zhí)行該語句后,程序的控制權(quán)轉(zhuǎn)至循環(huán)語句后的語句。

在嵌套循環(huán)的情況下,EXIT語句退出當(dāng)前層循環(huán),而不是所有循環(huán)。

功能:執(zhí)行該語句后,程序的控制權(quán)轉(zhuǎn)至循環(huán)語句后的語句。

例:下列程序運(yùn)行后,變量s中的值是多少?

integeri,j,s=0

fori=1to10

forj=1to10

ifj>6then

exit

endif

next

s=s+i

next

4CONTINUE(繼續(xù)循環(huán))

功能:在循環(huán)語句的循環(huán)體中,遇到CONTINUE語句后,將不執(zhí)行CONTINUE語句后與循環(huán)結(jié)束前的所有語句,而開始新一輪循環(huán)。

四、返回語句與終止程序運(yùn)行

在編寫事件處理程序或函數(shù)時(shí),使用RETURN語句返回控制給用戶或調(diào)用函數(shù)的地方。當(dāng)希望終止應(yīng)用程序的運(yùn)行時(shí),使用HALT語句。

1RETURN語句

RETURN語句立即終止事件處理程序或函數(shù)的執(zhí)行,把控制返回到調(diào)用程序。

語法格式:RETURN[表達(dá)式]

功能:RETURN語句立即終止事件處理程序或函數(shù)的執(zhí)行,把控制返回到調(diào)用程序。

表達(dá)式值作為事件處理程序或函數(shù)的返回值返回。

2HALT語句

HALT語句用于終止應(yīng)用程序的運(yùn)行,其語法為:HALT{CLOSE}

其中CLOSE是個(gè)可選項(xiàng)。當(dāng)HALT語句不帶CLOSE選項(xiàng)時(shí),該語句立即終止應(yīng)用程序的運(yùn)行;當(dāng)HALT語句帶CLOSE選項(xiàng)時(shí),執(zhí)行到該語句后,應(yīng)用程序先執(zhí)行應(yīng)用對象的Close事件處理程序,之后再終止應(yīng)用程序的運(yùn)行。OpenWithParm()

功能

帶參數(shù)打開窗口,與打開窗口的Open()函數(shù)相似,OpenWithParm()有兩種語法格式:

語法一、帶參數(shù)打開編程時(shí)已知數(shù)據(jù)類型的窗口對象;

語法二、帶參數(shù)打開程序運(yùn)行后才能確定數(shù)據(jù)類型的窗口對象。

下面分別予以介紹:

語法一、帶參數(shù)打開編程時(shí)已知數(shù)據(jù)類型的窗口對象語法

OpenWithParm(windowvar,parameter{,parent})

參數(shù)windowvar:要打開窗口的窗口名,可以使用窗口畫筆定義的窗口對象名,也可以使用該窗口對象的某個(gè)變量。

Open()函數(shù)把打開窗口的引用放置到windowvar變量中

parameter:指定要傳遞給打開窗口的數(shù)據(jù),該數(shù)據(jù)保存在Message對象的屬性中,parameter參數(shù)的數(shù)據(jù)類型必須是下述三種類型之一:String、Numeric、PowerObjectparent:可選項(xiàng),指定要打開窗口的父窗口,要打開窗口成為父窗口的子窗口,只有當(dāng)要打開窗口需要成為某個(gè)窗口的子窗口時(shí)才需要指定該參數(shù)。如果應(yīng)用程序使用Open()函數(shù)打開某個(gè)子窗口或彈出窗口而又省略了該參數(shù),那么當(dāng)前活動窗口成為被打開窗口的父窗口返回值Integer。

函數(shù)執(zhí)行成功時(shí)返回1,發(fā)生錯(cuò)誤時(shí)返回-1。如果任何參數(shù)的值為NULL,OpenWithParm()函數(shù)返回NULL。

用法消息對象Message有三個(gè)屬性用于存儲OpenWithParm()函數(shù)傳遞給打開窗口的數(shù)據(jù)。根據(jù)parameter參數(shù)數(shù)據(jù)類型的不同,該參數(shù)的值保存在Message對象的不同屬性中。parameter參數(shù)的類型與使用的Message對象屬性的對應(yīng)關(guān)系為:

parameter參數(shù)的類型

使用的Message對象屬性

數(shù)值類型

Message.DoubleParm

PowerObject(比如結(jié)構(gòu))Message.PowerObjectParm

字符串類型

Message.StringParm

應(yīng)用程序根據(jù)OpenWithParm()函數(shù)parameter參數(shù)的數(shù)據(jù)類型,從Message對象的不同屬性中提取該函數(shù)傳送給被打開窗口的值。

語法二、帶參數(shù)打開程序運(yùn)行后才能確定數(shù)據(jù)類型的窗口對象

語法

OpenWithParm(windowvar,parameter,windowtype{,parent})

參數(shù)

windowvar:指定窗口變量名,Open()函數(shù)把打開窗口的引用放置到該變量中parameter:指定要傳遞給打開窗口的數(shù)據(jù),該數(shù)據(jù)保存在Message對象的屬性中,parameter參數(shù)的數(shù)據(jù)類型必須是下述三種類型之一:String、Numeric、PowerObjectwindowtype:string類型,指定要打開窗口的數(shù)據(jù)類型,該參數(shù)指定的窗口數(shù)據(jù)類型必須與windowvar參數(shù)的類型相同或是windowvar類型的后繼對象

parent:可選項(xiàng),指定要打開窗口的父窗口,要打開窗口成為父窗口的子窗口,只有當(dāng)要打開窗口需要成為某個(gè)窗口的子窗口時(shí)才需要指定該參數(shù)。如果

應(yīng)用程序使用Open()函數(shù)打開某個(gè)子窗口或彈出窗口而又省略了該參數(shù),那么當(dāng)前活動窗口成為被打開窗口的父窗口

返回值

Integer。

函數(shù)執(zhí)行成功時(shí)返回1,發(fā)生錯(cuò)誤時(shí)返回-1。如果任何參數(shù)的值為NULL,OpenWithParm()函數(shù)返回NULL。

示例1.

下面的代碼從表中選擇要打開窗口的類型,然后打開該窗口,并把單行編輯框sle_location的內(nèi)容放置在消息對象的Message.StringParm屬性中:

window

w_to_open

string

s_w_name,

e_location

e_location

=

sle_location.Text

SELECT

next_window

INTO

:s_w_nameFROM

routing_tableWHERE

...

;

OpenWithParm(w_to_open,

e_location,

s_w_name)簡單語句和復(fù)合語句Pascal簡單語句中不包含任何別的語句,賦值語句和過程調(diào)用即是簡單語句的例子。簡單語句用分號隔開,如下所示:X:=Y+Z;//assignmentRandomize;//procedurecall用begin和end將簡單語句括起來即組成復(fù)合語句,復(fù)合語句用法與普通的Pascal語句相同,見下例:beginA:=B;C:=A*2;end;end之前的最后一條語句末尾分號不是必需的,你可以寫成:beginA:=B;C:=A*2end;這兩種寫法都是正確的。第一種多了一個(gè)無用(但也無害)的分號。分號實(shí)際上是一個(gè)空語句,也就是說,是一個(gè)沒有代碼的語句。有時(shí),空語句可用在循環(huán)體或其他特殊情況中。注意:雖然最后一條語句末尾的分號沒有用,我卻總是加上它,并且建議你也這樣做。因?yàn)橛袝r(shí)你可能需要在末尾添加語句,如果最后沒有加分號,你就必須記著加上它,與其如此不如一開始就加上它。賦值語句在Pascal語言中賦值語句用冒號-等號操作符“:=”,對使用其他語言的編程人員來說這是一個(gè)奇怪的符號。在其他語言中用作賦值符號的“=”在Pascal中用作關(guān)系運(yùn)算符,用于判斷是否相等。注意:賦值和相等判斷使用不同的符號,使Pascal編譯器(象C編譯器一樣)能更快解譯源代碼,因?yàn)檫@樣就不需要通過檢查上下文來判斷符號的意義,此外使用不同操作符也使代碼更易讀。條件語句條件語句通過條件檢測,判斷是否執(zhí)行該條件語句中包含的語句。條件語句可有兩種基本形式:if語句和case語句。If語句對if-then型語句,僅當(dāng)條件滿足時(shí),語句才執(zhí)行;對if-then-else型,if語句在兩條語句中選擇一條執(zhí)行。條件用布爾表達(dá)式建立,這里通過一個(gè)簡單的Delphi例子來示范如何寫條件語句。首先,創(chuàng)建一個(gè)應(yīng)用程序,在form上面放兩個(gè)復(fù)選框(checkbox)和四個(gè)按鈕(button),不要改變復(fù)選框和按鈕的名字,雙擊按鈕為其OnClick事件添加響應(yīng)程序。下面是第一個(gè)按鈕事件代碼中一條簡單的if語句:procedureTForm1.Button1Click(Sender:TObject);begin//simpleifstatementifCheckBox1.CheckedthenShowMessage('CheckBox1ischecked')end;當(dāng)點(diǎn)擊button1,如果第一個(gè)復(fù)選框中有復(fù)選標(biāo)記,那么這個(gè)程序?qū)@示一條消息(見圖5.1)。我用了ShowMessage函數(shù),因?yàn)樗荄elphi中最簡單的短信息顯示函數(shù)。圖5.1:例IfTest顯示的信息如果點(diǎn)擊按鈕后沒有反應(yīng),表明復(fù)選框未被選中。對于這種情況,最好能交代得更清楚些,為此在第二個(gè)按鈕的代碼中,我用了if-then-else語句:procedureTForm1.Button2Click(Sender:TObject);begin//if-then-elsestatementifCheckBox2.CheckedthenShowMessage('CheckBox2ischecked')elseShowMessage('CheckBox2isNOTchecked');end;要注意的是,不能在第一句之后、else關(guān)鍵詞之前加分號,否則編譯器將告知語法錯(cuò)誤。實(shí)際上,if-then-else語句是單純的一條語句,因此不能在語句中間加分號。if語句可以很復(fù)雜,句子中的條件部分可以是一系列條件(用and、or、not等布爾操作符聯(lián)接起來),if語句又可以嵌套另一個(gè)if語句,見例IfTest中其它兩個(gè)按鈕的示范代碼:procedureTForm1.Button3Click(Sender:TObject);begin//statementwithadoubleconditionifCheckBox1.CheckedandCheckBox2.CheckedthenShowMessage('Bothcheckboxesarechecked')end;procedureTForm1.Button4Click(Sender:TObject);begin//compoundifstatementifCheckBox1.CheckedthenifCheckBox2.CheckedthenShowMessage('CheckBox1and2arechecked')elseShowMessage('OnlyCheckBox1ischecked')elseShowMessage('Checkbox1isnotchecked,whocaresforCheckbox2?')end;仔細(xì)閱讀代碼并執(zhí)行程序,看看你能不能理解整個(gè)程序。當(dāng)你搞不清某種編程結(jié)構(gòu)時(shí),可以先寫一個(gè)簡單程序,這樣可以幫你學(xué)習(xí)許多東西。你可以再加幾個(gè)復(fù)選框,增加這個(gè)簡例的復(fù)雜程度,并進(jìn)行各種測試。Case語句如果你的if語句變得非常復(fù)雜,有時(shí)可以用case語句代替它。case語句包括用來選值的表達(dá)式、可能值序列或一個(gè)取值范圍。這些值應(yīng)該是常量,并且它們必須唯一,而且應(yīng)屬于有序類型。Case語句最后可以帶一個(gè)else語句,當(dāng)沒有一個(gè)標(biāo)簽與選擇器的值一致時(shí),執(zhí)行else語句。下面是兩個(gè)簡單的例子:caseNumberof1:Text:='One';2:Text:='Two';3:Text:='Three';end;caseMyCharof'+':Text:='Plussign';'-':Text:='Minussign';'*','/':Text:='Multiplicationordivision';'0'..'9':Text:='Number';'a'..'z':Text:='Lowercasecharacter';'A'..'Z':Text:='Uppercasecharacter';elseText:='Unknowncharacter';end;Pascal語言中的循環(huán)其它編程語言中使用的循環(huán)語句,Pascal語言中都有,它們包括for、while和repeat語句。如果你用過其他編程語言,你會發(fā)現(xiàn)Pascal中的循環(huán)語句沒什么特別的,因此這里我只作簡要的說明。For循環(huán)Pascal中的for循環(huán)嚴(yán)格地建立在計(jì)數(shù)器基礎(chǔ)上,循環(huán)每執(zhí)行一次,計(jì)數(shù)器不是增加一個(gè)值就是減小一個(gè)值。下面是一個(gè)for語句的簡例,用來將前十個(gè)數(shù)加起來:varK,I:Integer;beginK:=0;forI:=1to10doK:=K+I;同樣的for語句可以用正好相反的計(jì)數(shù)器來寫:varK,I:Integer;beginK:=0;forI:=10downto1doK:=K+I;Pascal中的for循環(huán)語句其靈活性比其他語言?。ㄋ荒苤付?之外的步長),不過簡單也容易理解。如果需判斷的條件比較復(fù)雜,或想自定義計(jì)數(shù)器,你可以用while語句或repeat語句,而不是for循環(huán)語句。注意:for循環(huán)計(jì)數(shù)器不必非是數(shù)字,它可以是任何有序類型的值,例如一個(gè)字符或一個(gè)枚舉類型值。while語句和repeat語句while-do循環(huán)語句和repeat-until語句的不同點(diǎn)在于repeat循環(huán)語句的代碼至少要執(zhí)行一次。從下面的簡例很容易理解這一點(diǎn):while(I<=100)and(J<=100)dobegin//useIandJtocomputesomething...I:=I+1;J:=J+1;end;repeat//useIandJtocomputesomething...I:=I+1;J:=J+1;until(I>100)or(J>100);從上可見即使I或J的初始值大于100,repeat-until循環(huán)中的代碼也仍會執(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í)行。為此,我不得不在上面代碼中用反向條件來獲得相同的結(jié)果。一個(gè)循環(huán)語句例子為了探究循環(huán)的細(xì)節(jié),讓我們看一個(gè)Delphi簡例,這個(gè)循環(huán)例子表現(xiàn)了固定計(jì)數(shù)器循環(huán)和隨機(jī)計(jì)數(shù)器循環(huán)之間的差別。建一個(gè)新的工程,在主窗體上放一個(gè)listbox和兩個(gè)button,通過設(shè)置ObjectInspector中的name屬性分別命名button為BtnFor和BtnWhile。你還可以把Caption屬性中的Btn去掉,或甚至加上&,讓跟在&后面的字母成為快捷鍵。下面是該窗體文本描述:objectForm1:TForm1Caption='Loops'objectListBox1:TListBox...objectBtnFor:TButtonCaption='&For'OnClick=BtnForClickendobjectBtnWhile:TButtonCaption='&While'OnClick=BtnWhileClickendend圖5.2:單擊For按鈕后顯示的結(jié)果現(xiàn)在,我們分別給兩個(gè)button添加OnClick事件代碼。第一個(gè)button用一個(gè)簡單的for循環(huán)來顯示一列數(shù)字,結(jié)果如圖5.2。這個(gè)循環(huán)向listbox中的Items屬性添加一系列字符串。在執(zhí)行循環(huán)之前,需要清除listbox中的內(nèi)容。程序如下:procedureTForm1.BtnForClick(Sender:TObject);varI:Integer;beginListBox1.Items.Clear;forI:=1to20doListbox1.Items.Add('String'+IntToStr(I));end;第二個(gè)button的事件代碼稍微復(fù)雜點(diǎn)。本例中讓while循環(huán)基于一個(gè)隨機(jī)增長的計(jì)數(shù)器。為實(shí)現(xiàn)它,我調(diào)用了Randomize過程,用它來重置隨機(jī)數(shù)發(fā)生器,還調(diào)用了Random函數(shù),其取值范圍為100,即函數(shù)返回0至99之間的隨機(jī)數(shù),隨機(jī)數(shù)序列控制while循環(huán)的執(zhí)行次數(shù)。procedureTForm1.BtnWhileClick(Sender:TObject);varI:Integer;beginListBox1.Items.Clear;Randomize;I:=0;whileI<1000dobeginI:=I+Random(100);Listbox1.Items.Add('RandomNumber:'+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ù)也不同。也就是說,這個(gè)while循環(huán)執(zhí)行的次數(shù)是隨機(jī)的。圖5.3:按While按鈕后顯示的結(jié)果注意:用Break和Continue系統(tǒng)過程可以改變循環(huán)執(zhí)行的標(biāo)準(zhǔn)流程。Break中斷循環(huán);Continue直接跳至循環(huán)測試句,或使計(jì)數(shù)器增加一個(gè)步長,然后繼續(xù)循環(huán)(除非條件為空或計(jì)數(shù)器達(dá)到最大值)。還有兩個(gè)系統(tǒng)過程Exit和Halt,讓你立即從函數(shù)或過程中返回,或者終止程序。With語句我要講的最后一種Pascal語句是With語句,With語句是Pascal編程語言獨(dú)有的語句,不過最近JavaScript和VisualBasic也添加了這種語句,它在Delphi程序設(shè)計(jì)中很有用。With語句是一種用于簡化代碼的語句。如你要訪問一個(gè)記錄類型變量(或一個(gè)對象),用With語句就不必每次重復(fù)變量的名字。例如對于以下的記錄類型代碼:typeDate=recordYear:Integer;Month:Byte;Day:Byte;end;varBirthDay:Date;beginBirthDay.Year:=1997;BirthDay.Month:=2;BirthDay.Day:=14;可以用with語句改進(jìn)后半部分代碼,如下:beginwithBirthDaydobeginYear:=1995;Month:=2;Day:=14;end;在Delphi程序中,這種方法能用于訪問控件和類變量?,F(xiàn)在通過with語句訪問列表框的條目,我們重寫上面循環(huán)例子的最后部分:p

溫馨提示

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

評論

0/150

提交評論