版權(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 中國(guó)電氣控制器行業(yè)市場(chǎng)現(xiàn)狀分析及競(jìng)爭(zhēng)格局與投資發(fā)展研究報(bào)告(2024-2030版)
- 中國(guó)球籠修理包行業(yè)市場(chǎng)現(xiàn)狀分析及競(jìng)爭(zhēng)格局與投資發(fā)展研究報(bào)告(2024-2030版)
- 中國(guó)煤灰轉(zhuǎn)行業(yè)市場(chǎng)運(yùn)營(yíng)模式及未來發(fā)展動(dòng)向預(yù)測(cè)研究報(bào)告(2024-2030版)
- 青年聲樂班課程設(shè)計(jì)
- 模具設(shè)計(jì)與塑件課程設(shè)計(jì)
- 成都網(wǎng)站建設(shè)課程設(shè)計(jì)
- 課程設(shè)計(jì)簡(jiǎn)要說明
- web課程設(shè)計(jì)項(xiàng)目實(shí)訓(xùn)課題
- 鋼筋混泥土課程設(shè)計(jì)繪圖
- 課程設(shè)計(jì)給了罐壁厚度
- 口袋妖怪黃版隱藏道具
- excel自動(dòng)生產(chǎn)排程(至柔Ⅱ) 最新版
- 湖北某創(chuàng)省優(yōu)質(zhì)安全文明工地實(shí)施方案(楚天杯)_secret
- 案例分折----奇瑞信息化
- 九陽(yáng)真經(jīng)原文
- 企業(yè)有價(jià)證券管理制度
- 機(jī)關(guān)工作人員考勤表Excel模板
- 日照市重點(diǎn)支柱產(chǎn)業(yè)情況
- 兒童過敏性休克ppt課件
- 安全生產(chǎn)文明施工措施費(fèi)用明細(xì)報(bào)表范文
- 腹腔鏡設(shè)備的使用和保養(yǎng)PPT課件
評(píng)論
0/150
提交評(píng)論