謝謝該書作者大方分享!
If 判斷式
If 判斷式
...... <-- 符合判斷式
else
...... <-- 不符合判斷式
endif
Value1.l = 10 Value2.l = 5 Value3.l = 1 If Value1 >= 10 And (Value2 / 5) = Value3 Debug "The expression evaluates as true" Else Debug "The expression evaluates as false" EndIf在IF...EndIf用法上,還可以加入ElseIf的方式來增加判斷情況,實際用法如下:
NumberOfBeads.l = 10 If NumberOfBeads < 5 Debug "The variable has a value below '5'" ElseIf NumberOfBeads > 5 Debug "The variable has a value above '5'" Else Debug "The variable has a value of '5'" EndIf
Select判斷式
跟著PureBASIC有種很像C語言中While的判斷式,叫做Select。它的語法如下
Select variable/expression
Case
....
Case
....
Default
....
EndSelect
Weight.l = 12 Select Weight Case 0 Debug "No Weight" Case 1, 2, 3 Debug "Light" Case 4 To 15 Debug "Medium" Case 16 To 30 Debug "Heavy" Default Debug "Massive" EndSelect接下來用一個比較複雜一點,但卻帶有PureBASIC標準人機互動的程式,來說明Select
If OpenConsole() PrintN("1. Official PureBasic Home") PrintN("2. Official PureBasic Forums") PrintN("3. PureArea.net") PrintN("") PrintN("Enter a number from 1 To 3 and press Return: ") Destination.s = Input() Select Destination Case "1" RunProgram("http://www.purebasic.com") Case "2" RunProgram("http://forums.purebasic.com") Case "3" RunProgram("http://www.purearea.net") EndSelect EndIf EndPureBASIC如果要用傳統文字方式來輸出入,就需要用OpenConsole()來打開一個傳統終端機視窗。PrintN則是一個輸出一行後會直接換行的函式。Input()則是讀取標準輸入,接著RunProgram則是會執行外部指令。
For迴圈
接著要介紹的是迴圈(loop),這裡是一個最基本的'For'迴圈語法。
For x.l = 1 To 10 Debug x Next x
而接下來,我們來看看如何利用For迴圈來輕易地叫出陣列中的所有元素
Dim Names.s(3) Names(0) = "Gary" Names(1) = "Sara" Names(2) = "Stella" Names(3) = "MiniMunch" For x.l = 0 To 3 Debug Names(x) Next x從上例我們可以看到,因為陣列因子也是採用數值,所以就可讓For迴圈來使用。因此我們也可以來看看For迴圈的判斷式內如何加入運算過程:
StartVar.l = 5 StopVar.l = 10 For x = StartVar - 4 To StopVar / 2 Debug x Next x當然,如此一來也可以透過巢狀迴圈來支援多維陣列
Dim Numbers.l(2, 2) Numbers(0, 0) = 1 Numbers(0, 1) = 2 Numbers(0, 2) = 3 Numbers(1, 0) = 4 Numbers(1, 1) = 5 Numbers(1, 2) = 6 Numbers(2, 0) = 7 Numbers(2, 1) = 8 Numbers(2, 2) = 9 For x = 0 To 2 For y = 0 To 2 Debug Numbers(x, y) Next y Next x這裡還要補充一個For迴圈的設定值step,它可以決定每次的值要更動多少:
For x.l = 0 To 10 Step 2 Debug x Next x
Foreach 迴圈
這迴圈比較特別,只針對連結串列(Linked List)
NewList Shopping.s() AddElement(Shopping()) Shopping() = "Bunch of bananas" AddElement(Shopping()) Shopping() = "Tea bags" AddElement(Shopping()) Shopping() = "Cheese" ForEach Shopping() Debug Shopping() Next
While迴圈
這是很常見的一種迴圈,以While開頭,進入判斷式,符合者就進入並且一直重複檢查,直到條件被滿足時,就跳到Wend結尾。不過要特別注意的就是,如果一開始條件就不滿足,則迴圈內容就完全不會被執行。
Monkeys.l = 0 While Monkeys < 10 Debug Monkeys Monkeys + 1 WendRepeat迴圈 這跟While迴圈很類似,只是判斷式位置不同。不過它可以配合的關鍵字有until與forever兩種,以下先看until的案例:
Bananas.l = 0 Repeat Debug Bananas Bananas + 1 Until Bananas > 10因為它把判斷式放在最後,所以與while不同的是,縱使一開始條件就不符合,但迴圈內容也至少會被執行過一次才會結束。此外,我們接著來看Forever的案例。不過也正因為它如字面所示,會一直持續執行下去,所以撰寫者要謹記在心,你得另外安排判斷式,以供條件滿足時,可以跳離迴圈。否則只能用強制手段中止整個程式。譬如透過Menu:Debugger裡面的kill program來處理。
Counter.l = 0 Repeat Debug Counter Counter + 1 ForEverPureBASIC有預留兩個關鍵字來預防這種情況,分別是'Break'與'Continue'。接著先來看看Break的案例:
For x = 1 To 10 If x = 5 Break EndIf Debug x Next x這時候你會看到程式迴圈只輸出到4就結束了。而另外一個例子是:
For x.l = 1 To 10 Counter = 0 Repeat If x = 5 Break 2 EndIf Counter + 1 Until Counter > 1 Debug x Next接著來看continue這個關鍵字的範例
For x.l = 1 To 10 If x = 5 Continue EndIf Debug x Next
沒有留言:
張貼留言