TI-Basic Z80 程式設計/迴圈
在編寫程式時,由於計算器記憶體有限,節省空間很重要。為了幫助解決這個問題,可以使用迴圈來重複執行一段程式碼多次。TI-Basic 提供了幾種型別的迴圈While, For和Repeat.
該While(PRGM CTL 5) 迴圈在While和End命令之間執行一段命令,只要指定條件為真。條件在迴圈開始時測試(當遇到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) 迴圈在For和End命令之間執行 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) 迴圈在Repeat和End命令,直到指定條件為真。條件在迴圈開始時測試(當遇到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
嘗試這些示例來練習使用迴圈。
編寫一個程式,要求使用者輸入一個數字 n(必須大於 1),並列印數字 1 到 n 的總和。例如,如果 n = 6,程式將顯示 21 ()。
解決方案
| ||
|---|---|---|
|
斐波那契數列定義為 其中 和 。因此,該序列的前 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
|