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
|