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

下載本文檔

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

文檔簡(jiǎn)介

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

一、賦值語(yǔ)句

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

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

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

下面是賦值語(yǔ)句的幾個(gè)簡(jiǎn)單示例:

Address="北京"

TaxRate=.05

Age=30

mle.text="北京歡迎你"

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

下面的語(yǔ)句:A=B=0

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

A=(B=0)

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

二、條件語(yǔ)句

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

1.單行IF...THEN語(yǔ)句

單行IF...THEN語(yǔ)句的格式為:

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

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

例如:IFsle_State.text="BJ"THEN

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

2.多行IF...THEN語(yǔ)句

多行IF...THEN語(yǔ)句的語(yǔ)法格式為:

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

語(yǔ)句1

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

語(yǔ)句2

...

][ELSE

語(yǔ)句n]

ENDIF

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

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

CHOOSECASE測(cè)試表達(dá)式

CASE判斷表達(dá)式

執(zhí)行語(yǔ)句塊

[CASE判斷表達(dá)式

語(yǔ)句塊

...

CASE判斷表達(dá)式

語(yǔ)句塊]

[CASEELSE

語(yǔ)句塊]

ENDCHOOSE

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

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

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

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

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

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

例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ò),請(qǐng)重新輸入!"

ENDCHOOSE

St_1.text=string(S)

三、循環(huán)語(yǔ)句

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

下面介紹PowerScript循環(huán)語(yǔ)句的格式、中途退出循環(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的語(yǔ)法格式為:

DOUNTIL<條件>

語(yǔ)句塊

LOOP

其執(zhí)行過程為:先計(jì)算條件condition,其結(jié)果為False時(shí),執(zhí)行語(yǔ)句塊,接著再檢查條件,直到條件的結(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的語(yǔ)法格式為:

DOWHILE<條件>

語(yǔ)句塊

LOOP

其執(zhí)行過程為:先計(jì)算條件,其結(jié)果為True時(shí),執(zhí)行語(yǔ)句塊,接著再檢查條件,直到條件的結(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的語(yǔ)法格式為:

DO

語(yǔ)句塊

LOOPUNTIL<條件>

其執(zhí)行過程為:先執(zhí)行語(yǔ)句塊,然后計(jì)算條件,如果其結(jié)果為False,則繼續(xù)執(zhí)行語(yǔ)句塊,直到條件的結(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的語(yǔ)法格式為:

DO

語(yǔ)句塊

LOOPWHILE<條件>

其執(zhí)行過程為:先執(zhí)行語(yǔ)句塊,然后計(jì)算條件,如果其結(jié)果為True,則繼續(xù)執(zhí)行語(yǔ)句塊,直到條件的結(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)的語(yǔ)句執(zhí)行規(guī)定的次數(shù),其語(yǔ)法結(jié)構(gòu)為:

FORvarname=startTOend[STEPincrement]

Statementblock

NEXT

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

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

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

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

例:下列程序運(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)語(yǔ)句的循環(huán)體中,遇到CONTINUE語(yǔ)句后,將不執(zhí)行CONTINUE語(yǔ)句后與循環(huán)結(jié)束前的所有語(yǔ)句,而開始新一輪循環(huán)。

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

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

1RETURN語(yǔ)句

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

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

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

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

2HALT語(yǔ)句

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

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

功能

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

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

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

下面分別予以介紹:

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

OpenWithParm(windowvar,parameter{,parent})

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

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

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

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

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

parameter參數(shù)的類型

使用的Message對(duì)象屬性

數(shù)值類型

Message.DoubleParm

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

字符串類型

Message.StringParm

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

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

語(yǔ)法

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

參數(shù)

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

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

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

返回值

Integer。

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

示例1.

下面的代碼從表中選擇要打開窗口的類型,然后打開該窗口,并把單行編輯框sle_location的內(nèi)容放置在消息對(duì)象的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)簡(jiǎn)單語(yǔ)句和復(fù)合語(yǔ)句Pascal簡(jiǎn)單語(yǔ)句中不包含任何別的語(yǔ)句,賦值語(yǔ)句和過程調(diào)用即是簡(jiǎn)單語(yǔ)句的例子。簡(jiǎn)單語(yǔ)句用分號(hào)隔開,如下所示:X:=Y+Z;//assignmentRandomize;//procedurecall用begin和end將簡(jiǎn)單語(yǔ)句括起來即組成復(fù)合語(yǔ)句,復(fù)合語(yǔ)句用法與普通的Pascal語(yǔ)句相同,見下例:beginA:=B;C:=A*2;end;end之前的最后一條語(yǔ)句末尾分號(hào)不是必需的,你可以寫成:beginA:=B;C:=A*2end;這兩種寫法都是正確的。第一種多了一個(gè)無用(但也無害)的分號(hào)。分號(hào)實(shí)際上是一個(gè)空語(yǔ)句,也就是說,是一個(gè)沒有代碼的語(yǔ)句。有時(shí),空語(yǔ)句可用在循環(huán)體或其他特殊情況中。注意:雖然最后一條語(yǔ)句末尾的分號(hào)沒有用,我卻總是加上它,并且建議你也這樣做。因?yàn)橛袝r(shí)你可能需要在末尾添加語(yǔ)句,如果最后沒有加分號(hào),你就必須記著加上它,與其如此不如一開始就加上它。賦值語(yǔ)句在Pascal語(yǔ)言中賦值語(yǔ)句用冒號(hào)-等號(hào)操作符“:=”,對(duì)使用其他語(yǔ)言的編程人員來說這是一個(gè)奇怪的符號(hào)。在其他語(yǔ)言中用作賦值符號(hào)的“=”在Pascal中用作關(guān)系運(yùn)算符,用于判斷是否相等。注意:賦值和相等判斷使用不同的符號(hào),使Pascal編譯器(象C編譯器一樣)能更快解譯源代碼,因?yàn)檫@樣就不需要通過檢查上下文來判斷符號(hào)的意義,此外使用不同操作符也使代碼更易讀。條件語(yǔ)句條件語(yǔ)句通過條件檢測(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á)式建立,這里通過一個(gè)簡(jiǎn)單的Delphi例子來示范如何寫條件語(yǔ)句。首先,創(chuàng)建一個(gè)應(yīng)用程序,在form上面放兩個(gè)復(fù)選框(checkbox)和四個(gè)按鈕(button),不要改變復(fù)選框和按鈕的名字,雙擊按鈕為其OnClick事件添加響應(yīng)程序。下面是第一個(gè)按鈕事件代碼中一條簡(jiǎn)單的if語(yǔ)句: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中最簡(jiǎn)單的短信息顯示函數(shù)。圖5.1:例IfTest顯示的信息如果點(diǎn)擊按鈕后沒有反應(yīng),表明復(fù)選框未被選中。對(duì)于這種情況,最好能交代得更清楚些,為此在第二個(gè)按鈕的代碼中,我用了if-then-else語(yǔ)句:procedureTForm1.Button2Click(Sender:TObject);begin//if-then-elsestatementifCheckBox2.CheckedthenShowMessage('CheckBox2ischecked')elseShowMessage('CheckBox2isNOTchecked');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)接起來),if語(yǔ)句又可以嵌套另一個(gè)if語(yǔ)句,見例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è)簡(jiǎn)單程序,這樣可以幫你學(xué)習(xí)許多東西。你可以再加幾個(gè)復(fù)選框,增加這個(gè)簡(jiǎn)例的復(fù)雜程度,并進(jìn)行各種測(cè)試。Case語(yǔ)句如果你的if語(yǔ)句變得非常復(fù)雜,有時(shí)可以用case語(yǔ)句代替它。case語(yǔ)句包括用來選值的表達(dá)式、可能值序列或一個(gè)取值范圍。這些值應(yīng)該是常量,并且它們必須唯一,而且應(yīng)屬于有序類型。Case語(yǔ)句最后可以帶一個(gè)else語(yǔ)句,當(dāng)沒有一個(gè)標(biāo)簽與選擇器的值一致時(shí),執(zhí)行else語(yǔ)句。下面是兩個(gè)簡(jiǎn)單的例子: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語(yǔ)言中的循環(huán)其它編程語(yǔ)言中使用的循環(huán)語(yǔ)句,Pascal語(yǔ)言中都有,它們包括for、while和repeat語(yǔ)句。如果你用過其他編程語(yǔ)言,你會(huì)發(fā)現(xiàn)Pascal中的循環(huán)語(yǔ)句沒什么特別的,因此這里我只作簡(jiǎn)要的說明。For循環(huán)Pascal中的for循環(huán)嚴(yán)格地建立在計(jì)數(shù)器基礎(chǔ)上,循環(huán)每執(zhí)行一次,計(jì)數(shù)器不是增加一個(gè)值就是減小一個(gè)值。下面是一個(gè)for語(yǔ)句的簡(jiǎn)例,用來將前十個(gè)數(shù)加起來:varK,I:Integer;beginK:=0;forI:=1to10doK:=K+I;同樣的for語(yǔ)句可以用正好相反的計(jì)數(shù)器來寫:varK,I:Integer;beginK:=0;forI:=10downto1doK:=K+I;Pascal中的for循環(huán)語(yǔ)句其靈活性比其他語(yǔ)言?。ㄋ荒苤付?之外的步長(zhǎng)),不過簡(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)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)中的代碼也仍會(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í)行。為此,我不得不在上面代碼中用反向條件來獲得相同的結(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,通過設(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è)簡(jiǎn)單的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ī)增長(zhǎng)的計(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)測(cè)試句,或使計(jì)數(shù)器增加一個(gè)步長(zhǎng),然后繼續(xù)循環(huán)(除非條件為空或計(jì)數(shù)器達(dá)到最大值)。還有兩個(gè)系統(tǒng)過程Exit和Halt,讓你立即從函數(shù)或過程中返回,或者終止程序。With語(yǔ)句我要講的最后一種Pascal語(yǔ)句是With語(yǔ)句,With語(yǔ)句是Pascal編程語(yǔ)言獨(dú)有的語(yǔ)句,不過最近JavaScript和VisualBasic也添加了這種語(yǔ)句,它在Delphi程序設(shè)計(jì)中很有用。With語(yǔ)句是一種用于簡(jiǎn)化代碼的語(yǔ)句。如你要訪問一個(gè)記錄類型變量(或一個(gè)對(duì)象),用With語(yǔ)句就不必每次重復(fù)變量的名字。例如對(duì)于以下的記錄類型代碼:typeDate=recordYear:Integer;Month:Byte;Day:Byte;end;varBirthDay:Date;beginBirthDay.Year:=1997;BirthDay.Month:=2;BirthDay.Day:=14;可以用with語(yǔ)句改進(jìn)后半部分代碼,如下:beginwithBirthDaydobeginYear:=1995;Month:=2;Day:=14;end;在Delphi程序中,這種方法能用于訪問控件和類變量?,F(xiàn)在通過with語(yǔ)句訪問列表框的條目,我們重寫上面循環(huán)例子的最后部分:p

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論