TI-BASIC

计算器百科,非营利的计算器专业知识百科。
跳到导航 跳到搜索
施工中.svg
此条目尚未完工。
此条目尚未完工。原作者将会继续进行编写,而您也可以对该条目进行编辑

TI-BASIC是德州仪器开发并内置在其图形计算器产品中的一种面向过程的采用解释运行方式的高级编程语言。

TI-BASIC有着类似于BASIC语言的语法,因为可以直接调用系统提供的计算函数从而拥有传统BASIC语言所不具备的运算功能。

TI-BASIC具有简单易学,使用灵活的特点。其缺点是运行效率不高,无法执行涉及硬件的操作,以及难以实现复杂的输入输出等。

随着德州仪器计算器的不断改进,TI-BASIC也在不断地演化,然而,无论是哪种德州仪器图形计算器,它们使用的TI-BASIC语法都是基本相同的。

基础格式

TI-BASIC虽然属于BASIC的一种,但它和QBASIC等通用语言有着一些不同。

程序开头

  • 在TI-Z80系列计算器上,一个TI-BASIC程序以
 PROGRAM:程序名

为开头的标志。

  • 在TI-68K系列计算器上,一个TI-BASIC程序以
 储存程序的变量(形式参数1,形式参数2,...,形式参数n)
 :Prgm

为开头;

  • 在TI-Nspire系列计算器上,一个TI-BASIC程序以
 Define 储存程序的变量(形式参数1,形式参数2,...,形式参数n)=
 Prgm

为开头。

程序分行

TI-BASIC语言和QBASIC等BASIC分支不同,它不使用用户输入的行号。

在TI-68K系列计算器和TI-Z80系列计算器上,以一个冒号(:)作为新一行语句开始的标志。因此,屏幕上的一行可以分写多个语句。如果程序非常简短,全部语句甚至可以写在一行中。

在TI-Nspire中,换行符和独立的冒号(:)都可以用于分隔语句。

程序结尾

  • 在TI-Z80系列计算器上,一个程序不需要特殊的结尾标志。只要程序的最后一行执行完毕,程序即宣告结束。
  • 在TI-68K系列计算器和TI-Nspire系列计算器上,以EndPrgm(TI-68K系列计算器为:EndPrgm,包含该冒号)为程序结尾的标志。若没有这一标识程序结束的语句,计算器将发出警告,指示程序中缺失EndPrgm。

程序注释

TI-BASIC的注释符号是非常独特的。

  • TI-Z80系列计算器使用"作为注释记号(不需要另一个引号来成对使用),在"后的内容均会被作为注释,直到该行语句结束,新一行语句开始。注意:这个操作会改动Ans变量内的数据。因此,请不要在调用了Ans的语句的前一行语句中添加注释。
  • TI-68K和TI-BASIC系列计算器使用符号©(版权标志)作为注释符。写在©标志后的内容均作为注释,直到新的一行语句的开始。

第一个©后面的内容将会显示在目录中作为参考。在 TI-Nspire系列机型上,你的程序需要被设置为LibPublic并放置在MyLib中才能在目录中显示。

变量类型和赋值

变量类型

TI-BASIC是一个弱类型的编程语言,用户在向一个变量赋值和程序进行输入输出的时候,不需要指定变量的数据类型,用户也无法指定一个变量的数据类型和进行数据类型的相互转换,与此同时也不能自定义数据类型。这一切完全由计算器自身进行自动控制。

和其他高级语言不同,TI-BASIC的变量中存放的不限于数值,字符,字符串,数组等“常见的数据类型”——矩阵,函数,乃至是图形,文本文档,都可以被存储在变量中。然而并不是所有的变量都能参与运算——一个变量能否参加一个运算取决于这个变量内存储的数据是否为可参加该运算的数据类型。

特别地,对于带有计算机代数系统(CAS)的德州仪器图形计算器,如果一个变量没有被赋予任何值却参加了运算,则它将被当做一个代数式来对待。

TI-BASIC的变量名是大小写无关的。例如,A和a被视为同一个变量,ParaMeter,paraMeter,parameter均被视为同一个变量——因此,不能使用大小写来定义两个不同的变量。

TI-BASIC中的变量在使用之前不需要进行预先定义。

TI-BASIC不使用常量和常变量。然而,可以通过Lock和Unlock命令来对一个变量的数据进行“锁定”和“解锁”,一定程度上起到“常量”的作用。

TI-BASIC允许通过Local命令定义局部变量。

很特殊地,一个TI-BASIC程序实际上也是存储在一个函数变量中的,变量名就是该程序的程序名,编写一个新的程序也就是把一段程序代码作为数据赋给一个变量。因此,可以在一个程序内调用和编写另一个程序(称为“子程序”),便于复杂程序的编写。

变量的赋值

TI-BASIC中有三种给一个变量赋值的方法。

  • 变量名:=数据 。例如:
 a:=3

代表将3这一数值赋给变量a。

  • 数据=:变量名。例如:
 3=:a

代表将3这一数值赋给变量a。

  • 数据→变量名。例如:
 3→a

代表将3这一数值赋给变量a。这是最简单便捷的赋值方式。“→”可以通过STO键输入。
另外,TI-Nspire保存程序时,会将所有的 =: 替换成 → 。

  • Define 变量名=数据。例如:
 Define a=3

代表将3这一数值赋给变量a。这种方式虽然麻烦,然而将一个程序或函数赋给一个变量(实际上就是编写一个新的程序或函数)时,必须采用这种方式。

一些特殊的数据(如图形和文本文档)不能通过语句赋给变量。要把这些数据赋值给一个变量(实际上也就是把一个图形/一段文本文档储存起来),需要在对应的绘图程序/文档编辑器等程序中进行操作。

关系表达式和布尔值

关系表达式

TI-BASIC中有如下几种关系运算符:小于(<),小于等于(≤),大于(>),大于等于(≥),不等于(≠),等于(=)。其中,≤和≥可以通过shift+ >shift+ <打出,也可以通过<=和>=代替。≠可通过shift+ =打出,也可以通过/=代替。

此外要注意的是,TI-BASIC使用一个等号表示等于,而不像C/C++语言那样使用双等号(==)表示等于。

两个关系表达式可以通过and(和),or(或),not(非),xor(异或)等逻辑运算符连接。除关系表达式外,两个数值(或两个布尔值)也可以通过逻辑运算符进行运算,两个数值的运算结果服从逻辑运算的运算法则(而不是像C语言那样将数值视为“真”和“假”来进行逻辑运算)。

一个关系表达式可以被直接进行运算并进行输出。

  • 如果关系表达式能够得出确定结果,则返回结果为一个布尔值。
  • 如果关系表达式无法得出确定结果(比如,其中含有未赋值变量),则返回结果为关系表达式本身。
  • 如果关系表达式无意义(比如,对两个复数比较大小),则可能返回关系表达式本身或导致程序报错。

布尔值

TI-BASIC中有三个布尔值:true(真),false(假)和undef(未定义)。

在很多的时候,布尔值true用于指代“全体实数”,而false用于指代“无解”等信息。

undef是一个TI-BASIC语言特有的布尔值,且仅在TI-68K和TI-Nspire系列计算器上使用。它用于指代一个无意义数学运算产生的结果(如,0/0),在有些场合也指代“±∞”。undef虽然是一个布尔值,但不能参加任何逻辑运算。

循环和跳转

循环语句

TI-BASIC中有三种循环语句:for,while和loop。

For循环

for循环的格式是:

 For (循环变量,初值,终值[,步长])
 循环体
 EndFor

这个语句的含义是,循环变量首先被赋给一个初值,然后执行循环体中的语句,随后循环变量被赋值为“循环变量+步长”,随后再次执行循环体,直到循环变量的值与终止相等,循环结束。

While循环

While循环的格式是:

 While (条件表达式)
 循环体
 Endwhile

这个语句的含义是,只要While后面括号中的表达式成立,就循环执行循环体,直到不满足该表达式为止。

Loop循环

Loop循环的格式是:

 Loop
 循环体
 EndLoop

这个语句的含义是,无条件地循环执行循环体。

Loop语句是没有退出循环的判断的。要使用Loop循环,循环体内必须有stop,exit等流程控制语句来在适当的时候退出循环,否则将造成死循环。

跳转语句

TI-BASIC中使用Goto语句进行跳转。

Goto命令和Lbl命令是配套使用的。Lbl用于在程序中做一个“标记”。用法为:

 Lbl(名称)

随后,使用语句:

 Goto(名称)

程序在执行到Goto时,就会跳转到对应的Lbl处,然后程序继续向下执行。

使用过多的和不必要的Goto语句会导致程序的结构混乱,增加程序设计错误的概率,也不利于程序的阅读和修改。因此,请不要滥用Goto语句。

输入和输出

输入

TI-BASIC具有这样几种在程序中输入数据的方式:

通过形式参数输入

TI-BASIC中,即便是一个程序(而不是一个函数),也可以带有形式参数。这时就可以通过形式参数进行数据输入。例如,编写如下的程序:

 Define sum(a,b,c)=
 Prgm
 d:=a+b+c
 EndPrgm

在运行时输入:

 sum(1,2,3)

则程序运行后d的值为6,因为此时a,b,c分别被赋值了1,2,3。

通过弹出窗口输入

TI-BASIC程序中可以弹出一个用于输入数据的弹出窗口。其命令是:

 Request 提示语字符串,变量

例如:

 Request "Input A=?",a

当程序运行到此处时就会弹出一个输入框,提示Input A=? 。当输入数据并点击“确认”时,这一数据就会被赋给变量a。

另有一个命令是RequestStr。这一命令的使用方法与Request相同,与Request不同的是,通过这一命令输入的所有内容都被视为是字符串。

输出

通过返回值输出

TI-BASIC中,除了函数以外,一个程序也可以返回一个值。返回的值将显示在计算区里面。所返回的只能是一个变量的值。

要返回一个变量的值,使用的命令是:

 Return 变量

例如:

 Define sum(a,b,c)=
 Prgm
 d:=a+b+c
 Return d
 EndPrgm

则在计算器输入sum(1,2,3)并按enter运行程序后,计算区会显示6。

通过Disp命令进行输出

Disp是程序中用于进行输出的最常用的命令。其用法为:

 Disp 字符串1或变量1,[字符串2或变量2,...]

例如:

 Disp "Hello world!"

在执行之后就会在计算区输出Hello world!字样。

要注意的是,Disp输出的内容不是计算结果的一部分。它不能被调用来参加其他运算,也不能存储到变量。此外,一些特殊数据类型的变量(如程序,图形等)是不能通过Disp输出的。

有时会需要输出类似“第X名”这种由变量和字符串共同组成的内容。这时候,可以通过逗号来将要输出的内容“拼接”在一起。

例如:

 score:=95
 name:="Randname"
 Disp "该学生的姓名为",name,",","考试成绩为:",score,"分。"

则运行结果为:

 该学生的姓名为Randname,考试成绩为95分。

通过Text命令进行输出

Text命令可以弹出一个对话框。使用方法为:

 Text 字符串

这样会弹出一个内容为该字符串的窗口。

Text命令只能输出字符串。要使用Text弹出一个变量的内容,可以套用string()命令,具体用法如下:

 Text string(变量)

要注意的是:

  • 有些数据类型的变量不能通过Text输出。
  • 通过Text和string输出的表达式会失去书面显示特性。

函数

TI-BASIC中也使用“函数”这个概念,但仅有TI-68K系列计算器和TI-Nspire系列计算器才支持自定义函数。

除了操作系统中定义的函数之外,用户可以自定义函数(就像C语言和其他编程语言中的函数那样)。

一个函数和一个程序并没有本质上的不同。但是能在函数中使用的 I/O 语句只有 Disp , 类似于 Request,RequestStr,Text 的需要弹出一个输入或确认框的语句在函数中无效。

在TI-68K系列计算器上,定义一个函数的方法如下:

 函数名(形式参数1,形式参数2,...,形式参数n)
 :Func
 函数体
 :EndFunc

在TI-Nspire系列计算器上,定义一个函数的方法如下:

 Define 函数名(形式参数1,形式参数2,...,形式参数n)=Func
 函数体
 EndFunc

此外,和C/C++等编程语言不同的是,一个函数可以在计算区中被直接使用,而不是只能在程序中被调用。

外部链接