跳轉到內容

TI-Basic Z80 程式設計/迴圈

來自 Wikibooks,開放世界的開放書籍

在編寫程式時,由於計算器記憶體有限,節省空間很重要。為了幫助解決這個問題,可以使用迴圈來重複執行一段程式碼多次。TI-Basic 提供了幾種型別的迴圈While, ForRepeat.

While(PRGM CTL 5) 迴圈在WhileEnd命令之間執行一段命令,只要指定條件為真。條件在迴圈開始時測試(當遇到End命令時),因此,如果條件最初為假,則命令塊將永遠不會執行。

While condition is true
statements
End
  • 其中condition是任何導致真/假/零/非零結果的語句
    • 如果condition返回真或非零,statement繼續執行
    • 如果condition返回假或零,statement將不會執行,並將跳過到End

以下示例演示了一個非常基本的While迴圈,它將顯示 X 直到 Y 等於 0

While Y≠0
Disp X
End

For(PRGM CTL 4) 迴圈在ForEnd命令之間執行 n 次。For在您知道要重複執行一段程式碼的確切次數時很有用。

For(variable,begin,end[,increment])
statements
End
  • 其中variable是一個Real(A-Z & θ)。此變量表示一個計數器。
  • 其中begin是開始計數的數字
  • 其中end是在variable等於end
  • 其中,可選地,increment是每次迴圈後更改variable的量。如果未傳遞此引數,則假定為1.

要使用For迴圈列印數字 1 到 5

For(I,1,5)
Disp I
End

此程式碼將列印

               1
               2
               3
               4
               5

遍歷列表並列印其元素

For(I,1,dim(L1))
Disp L1(I)
End

Repeat(PRGM CTL 6) 迴圈在RepeatEnd命令,直到指定條件為真。條件在迴圈開始時測試(當遇到End命令時),因此,如果條件最初為真,則命令塊將永遠不會執行。

Repeat只是While,其中條件被反轉。

Repeat condition
statements
End
  • 其中condition是任何導致真/假/零/非零結果的語句
    • 如果condition返回假或零,statement繼續執行
    • 如果condition返回真或非零,statement將不會執行,並將跳過到End

以下示例演示了Repeat語句的使用。它將繼續向用戶詢問 X 值,直到 X > 5

0→X
Repeat X>5
Prompt X
End


你試試!

[編輯 | 編輯原始碼]

嘗試這些示例來練習使用迴圈。

從 1 到 n 的求和

[編輯 | 編輯原始碼]

編寫一個程式,要求使用者輸入一個數字 n(必須大於 1),並列印數字 1 到 n 的總和。例如,如果 n = 6,程式將顯示 21 ()。

解決方案
0→N // 清空 n
Repeat N>1 // 直到 n 大於 1,
Prompt N // 詢問 n
End // 結束 repeat 迴圈
0→S // 清空 s(總和)
For(X,1,N) // 從 1 到 n,
S+X→S // 將 X 加到 S
End // 結束 for 迴圈
Disp S // 列印
使用求和的另一種解決方案
0→N // 清空 n
Repeat N>1 // 直到 n 大於 1,
Prompt N // 詢問 n
End // 結束 repeat 迴圈
Disp Σ(X,X,1,N) // 求和 Σ(表示式,變數,開始,結束)

此示例使用以下求和表示式:

斐波那契數列

[編輯 | 編輯原始碼]

斐波那契數列定義為 其中 。因此,該序列的前 10 個元素是0, 1, 1, 2, 3, 5, 8, 13, 21, 34。編寫一個程式,將序列的前 100 個元素儲存到 L1 中,然後顯示它們。記住,您必須先例項化列表。

解決方案
:DelVar L1 // 列表例項化 :100→dim(L1) // 列表例項化 :0→L1(1) // F(1) = 0 :1→L1(2) // F(2) = 1 :For(A,3,100) // 我們從 3 開始,因為 1 和 2 已經設定了 :L1(A-1)+L1(A-2)→L1(A) // F(N) = F(N-1) + F(N-2) :End // 結束 for 迴圈 :ClrHome // 清空螢幕 :For(A,1,100) // 從 1 到 100 :Disp L1(A) // 列印 F(A) :End // 結束 for 迴圈

FizzBuzz 是一個兒童遊戲,如今常被用作程式設計評估程式。原始的遊戲規則是玩家輪流遞增計數,將任何能被 3 整除的數字替換為“fizz”,將任何能被 5 整除的數字替換為“buzz”。在本例中,編寫一個程式,從 1 計數到 100,將能被 3 整除的數字替換為“Fizz”,能被 5 整除的數字替換為“Buzz”,同時能被 3 和 5 整除的數字替換為“FizzBuzz”。

提示:獲取當前值與關鍵數字的餘數,並將其與 0 進行比較。

你需要發揮創意來編寫此程式,因為有很多方法可以實現它。以下解決方案只是眾多解決方案之一。

解決方案

在本例中,我們必須在檢查 3 或 5 的倍數之前檢查 15 的倍數。

:ClrHome :For(X,1,100) :If remainder(X,15)=0:Then :Disp "FIZZBUZZ" :Else :If remainder(X,3)=0:Then :Disp "FIZZ" :Else :If remainder(X,5)=0:Then :Disp "BUZZ" :Else :Disp X :End :End :End :End
沒有餘數
:ClrHome :For(X,1,100) :If fPart(X/15)*15=0:Then :Disp "FIZZBUZZ" :Else :If fPart(X/3)*3=0:Then :Disp "FIZZ" :Else :If fPart(X/5)*5=0:Then :Disp "BUZZ" :Else :Disp X :End :End :End :End


前一篇: 條件語句
後一篇: 高階變數
目錄: TI-Basic Z80 程式設計

華夏公益教科書