跳转到内容

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 编程

华夏公益教科书