TI 베이직
TI-BASIC![]() |
TI-BASIC은 TI(Texas Instruments)의 그래프 계산기에 내장된 BASIC과 유사한 언어의 공식 이름입니다[1].TI-BASIC은 서로 다른 세 가지 버전과 호환되지 않는 버전으로 구성된 언어 패밀리입니다.
- TI-83 시리즈, TI-84 Plus 시리즈용 TI-BASIC 83(Z80 프로세서)
- TI-89 시리즈, TI-92 시리즈, Voyage 200용 TI-BASIC 89(68k 프로세서 탑재)
- TI-Nspire 및 TI-Nspire CAS용 TI-BASIC Nspire(ARM 프로세서)
TI는 언어를 이름으로 지칭하는 경우는 거의 없지만 일부 개발자 [2][3]문서에서 TI-BASIC이라는 이름이 사용되고 있습니다.
TI-BASIC에 프로그램을 작성하는 기능이 내장되어 있기 때문에 많은 어플리케이션에서 TI 계산기를 프로그래밍하는 가장 편리한 방법입니다.어셈블리 언어(종종 "asm"이라고 함)도 사용할 수 있으며 어셈블리로 변환하기 위해 C 컴파일러가 존재합니다.Motorola 68000(68k) 기반 계산기용 TIGCC 및 Zilog Z80 기반 계산기용 SDCC.그러나 둘 다 크로스 컴파일러이므로 계산기 프로그래밍을 사용할 수 없습니다.TI-BASIC은 어셈블리 언어보다 상당히 느리기 때문에(해독이 필요하기 때문에), 프로그래밍 게임이나 그래픽을 많이 사용하는 애플리케이션보다 수학 문제를 빠르게 해결하거나 반복 작업을 수행하는 프로그램 작성에 더 적합합니다.일부 수학 지침서는 TI-BASIC(일반적으로 TI-82/83/84 시리즈에서 사용되는 광범위한 변종용) 프로그램도 제공합니다.
컴퓨터에서 사용되는 프로그래밍 언어에 비해 다소 미니멀리즘적이지만 TI-BASIC은 프로그래밍 커뮤니티에서 중요한 요소입니다.많은 고등학교와 대학의 고급 수학 수업에는 TI 그래프 계산기가 필요하기 때문에, TI-BASIC은 많은 학생들이 프로그래밍의 세계를 처음으로 볼 수 있는 기회를 제공한다.
구문
모든 버전의 TI-BASIC 구문은 일반적인 BASIC 구현과 다소 다릅니다.언어 자체는 몇 가지 기본적인 구조화된 프로그래밍 기능을 가지고 있지만 공백이나 들여쓰기를 사용하거나 허용하지 않습니다.또한 할당용 특정 문자(오른쪽 "STO" 화살표, 대부분의 문자 집합에서 쉽게 사용할 수 없음), 정사각형 및 큐브 루트, 기타 수학 기호 및 키워드의 토큰화된 입력 및 저장 등 다소 비표준적인 문자 집합에도 의존합니다.모든 문장은 콜론으로 시작합니다.콜론은 행 내에서 문 구분 기호로도 기능합니다.TI-83/84 모델에서는 공간을 절약하기 위해 닫는 괄호, 괄호, 중괄호 및 따옴표는 생략할 수 있습니다.단, 경우에 따라서는 유효하게 해 두는 것이 좋습니다.예를 들어 TI 83/84 모델에서는 특정 상황에서 [4]괄호를 닫지 않고 for 루프 기능이 훨씬 느리게 실행됩니다.
식에서는 표준 연산자 우선 순위와 함께 infix 표기법을 사용합니다.많은 문장은 수학 함수에 사용되는 구문과 유사한 괄호 안의 인수를 요구합니다.할당 구문(데이터를 변수에 복사)은 BASIC과 같은 let 문이나 algol과 같은 문구를 사용하는 것이 아니라 대부분의 기존 컴퓨터 프로그래밍 언어에 대해 특이합니다.:=
연산자, TI-BASIC은 오른쪽 화살표를 사용합니다.sto→
source → destination 구문을 가진 연산자.이는 1970년대 후반과 1980년대 초에 처음으로 대중시장에 등장한 이후 비슷한 구문을 채택한 카시오, 캐논, 샤프 등의 일본식 계산기와 유사하다.
흐름 제어
제어 흐름문에는 루프용 if-then-else 블록, 루프 중 및 반복 루프가 포함됩니다.단, switch 문은 없습니다.주요 제어 흐름문은 다음과 같습니다.
조건일 경우...그렇지 않으면...종료 대상(변수, 시작, 중지, 단계)...조건 종료 중...반복 조건 종료...끝.
TI-BASIC의 실장에는, 일반적인 어셈블리 언어에 관련하는 구성인, IS>(증분 및 건너뛰기(Greater Than) 및 DS<(Decrement and Skip if Less Than) 스테이트먼트가 있습니다.프로그램의 섹션은 라벨을 붙일 수 있지만, 특히 Z80 모델에서는 라벨이 Goto 문의 수신처로 기능합니다.Menu(
프로그램 또는 블록 라벨이 아닌 기능.
함수와 서브루틴의 가용성은 구현에 따라 달라집니다.TI-82-descended calculator에서 사용할 수 있는 버전은 서로 내부에서 프로그램을 호출하여 프로그램 간에 변수를 공유할 수도 있지만 GOSUB와 같은 함수를 지원하지 않습니다.TI-89/92 기반 설계에서는 공유 기능, 즉 기본적으로 값을 반환할 수 있는 프로그램에 액세스할 수 있습니다.
데이터형
TI-BASIC은 강력하고 동적으로 입력된 언어입니다.68k 버전과 Z80 버전에 따라 사용 가능한 데이터 유형이 크게 다릅니다.어셈블리에 작성된 라이브러리를 사용하지 않고는 사용자 정의 데이터 유형을 생성할 수 없습니다.리스트는 종종 구조체의 대체품으로 사용됩니다.
TI-83/84 (Z80)
- 다음을 포함한 수치 변수
A
-Z
그리고.θ
(세타)이를 통해 실수 또는 복소수(실수의 쌍으로 구현)를 부동소수점 형식으로 저장할 수 있습니다.값의 범위는 1E-99 ~1E99 입니다.정확도는 최대 10자리입니다.그러나 27개 변수의 한계는 목록, 행렬 및 정수 표기 조작을 사용하여 확장할 수 있습니다.목록 또는 행렬을 사용하여 개별적으로 참조할 수 있는 고유한 실제 변수를 포함할 수 있습니다.정수는 실수의 정수와 소수 반반으로 정의하여 하나의 실변수로 연결할 수 있습니다.그 후 iPart 및 fPart 명령을 사용하여 각각 독립적으로 액세스합니다.2진수 값을 가진 변수는 2진수와 10진수 사이의 변환을 통해 단일 정수로 저장할 수 있습니다. - 다음을 포함한 문자열
Str0
-Str9
사용 가능한 메모리가 있는 한, 임의의 수의 문자나 기능명을 격납할 수 있습니다.이러한 표현은 다음 명령어에서의 표현으로 평가할 수 있습니다.expr()
기능(카탈로그에 있습니다). - 리스트(포함)
L1
-L6
추가 생성 기능이 있습니다.기본적으로 각 요소에 실수 또는 복소수를 저장하는 데 사용되는 1차원 배열입니다.리스트의 치수와 요소의 수는 1 ~999 의 범위에서 사용할 수 있습니다.단, 사용 가능한 메모리가 제한 요인이 될 수 있습니다.리스트의 치수가 기존보다 낮게 설정되면 마지막 요소가 잘립니다.높게 설정하면 끝에 있는 추가 요소가 0으로 채워집니다.치수는 유효한 숫자를 저장함으로써 설정됩니다.dim(
를 참조해 주세요.기본 목록 이름은 L1 ~L6이지만 커스텀목록을 작성할 수 있습니다.이것은, 에서 Ltoken으로 참조되는 리스트의 치수를 설정하는 것으로 실현됩니다.Lists
, 그 뒤에 대문자로 시작하는1 ~ 5 문자의 이름이 붙습니다.A
-Z
그리고.θ
. 목록의 개별 요소에 액세스하려면 목록 이름 뒤의 괄호 안에 요소 번호를 넣어야 합니다. - 매트릭스(포함)
[A]
-[J]
. 해당 요소는 목록과 동일한 제한을 받습니다.치수는 최대 99x99 요소까지 정의할 수 있지만, 다시 말하지만 사용 가능한 메모리로 인해 제한됩니다.사용자 정의 매트릭스를 생성할 수 없으므로 10개의 내장 매트릭스만 사용할 수 있습니다. - 방정식 변수, 다음을 포함합니다.
Y0
-Y9
,r1
-r6
,그리고.u
,v
,w
이것들은 기본적으로 방정식을 저장하는 문자열입니다.식 또는 프로그램에서 사용할 때 값을 반환하도록 평가됩니다.특정 값(상수, C)은 독립 변수(X)에 대해 괄호 안의 상수 값으로 방정식 이름(의존, Y)을 따라 연결할 수 있습니다.다음의 예에서는, (특별한 이유 없이) 「(4)」가 사용되고 있습니다.(Y1
(4)는 다음과 같은 가치를 반환한다.Y1
(X=4)에서)
직접 조작할 수 없는 데이터 유형은 다음과 같습니다.
- 사진(
Pic0
-Pic9
) - 배경 (
Image0
-Image9
) - 프로그램(
prgm
) - 그래프 데이터베이스(
GDB0
-GDB9
) - 색상(
BLUE
,RED
,...,GRAY
) (총 15색)
TI-89(68k)
- 정수 - 대량의 데이터를 저장할 수 있습니다.68k 계산기는 10의 매우 큰 숫자를 완벽한 정확도로 저장할 수 있습니다.
- 소수 부동 소수점을 사용한 실수.계산기 모델에 따라 유효 자릿수가 최대 14자리까지 저장됩니다.
- 복소수, 실수의 쌍으로 구현됩니다.
- 줄들
- 목록 - 요소별 연산을 지원하는 1차원 링크 목록입니다.68k 계산기에서 요소는 정수, 실수, 복소수, 문자열 또는 식일 수 있습니다.
- 행렬, 리스트에서 요소가 동일한 제한을 받습니다.
- 68k 시리즈에 고유한 기호 표현입니다.
직접 조작할 수 없는 데이터 유형은 다음과 같습니다(한 줄에 이름만 입력하면 오류가 발생합니다).
- 사진들
- 데이터.
- 프로그램
- 기능들
변수
변수 사용의 유연성은 계산기 모형에 따라 크게 다릅니다.예를 들어, TI-84 Plus 에서는, 모든 영어 문자와 Theta(δ)를 사용할 수 있습니다.
TI-83/84 (Z80)
TI-83/84 에서는, 프로그래머는, 이름이 최대 5 문자인 리스트를 작성할 수 있습니다.다른 모든 데이터 유형은 27개의 실제 변수 또는 복합 변수와 같이 제한되며, 다른 유형의 사전 정의된 변수 이름(예: 행렬은 10개의 변수 중 하나여야 함)이 있습니다.[A]
-[J]
TI-83/84에서는 다음과 같은 특정 변수가 있습니다.Ans
또한 재무 변수에는 RAM에 주소가 고정되어 있기 때문에 27개의 문자 변수보다 훨씬 빠르게 액세스할 수 있습니다. Ans
는 마지막으로 평가된 코드의 결과를 포함하는 특수 변수로 기능합니다.변수만 있는 행은 계속 평가되며 그 내용은 에 저장됩니다.Ans
결과적으로.왜냐면Ans
는 매우 빈번하게 재평가되기 때문에 매우 일시적인 계산을 저장하거나 목록의 항목 등 접근 속도가 느려질 수 있는 값을 유지하는 데 가장 많이 사용됩니다.모든 변수는 글로벌합니다.
TI-89(68k)
반면 68k 계산기에서는 그리스어를 포함한 모든 변수 이름에 최대 8자의 영숫자를 사용할 수 있습니다.또한 변수를 "폴더"로 그룹화하거나, 변수와 함께 선언함으로써 프로그램에 로컬로 만들 수 있습니다.Local
진술.
평.
TI-83/84 (Z80)
Z80 프로그래머는 코멘트를 나타내기 위해 "(큰따옴표)로 행을 시작하는 경우가 많습니다." 로 시작하는 행은 실제로 실행되며, 이 행은 다음 행의Ans
변수입니다만, 퍼포먼스 이외에는 영향을 주지 않습니다.Ans
그 후에 바로 읽습니다.
TI-89(68k)
68k 계산기를 사용하면 프로그램에서 ©를 설명 기호로 사용하여 한 줄의 설명을 포함할 수 있습니다."Prgm" 문 뒤에 코멘트가 첫 번째 행으로 표시되는 경우 카탈로그에서 프로그램을 선택하면 상태 표시줄에 표시됩니다. 이러한 코멘트는 파라미터의 이름 또는 유형을 문서화하는 데 자주 사용됩니다.68k 인터프리터에는 줄의 선두에 공백 문자 수를 저장하는 기능이 내장되어 있어 들여쓰기가 가능합니다.
기능들
TI-83/84 (Z80)
TI-BASIC의 Z80 버전은 68k와 같은 명시적인 "기능"을 불가능하게 만듭니다.그러나 모든 변수는 글로벌하므로 다른 프로그램을 호출하기 전에 인수와 유사한 변수를 설정하여 함수를 에뮬레이트할 수 있습니다.반환값이 존재하지 않습니다.Return
문은 현재 프로그램을 중지하고 프로그램이 호출된 위치에서 계속합니다.
TI-89(68k)
68k 버전의 TI-BASIC을 사용하면 사용자 정의 함수를 만들 수 있습니다.함수는 프로그램 구문이 같지만Func
...EndFunc
키워드 대신Prgm
...EndPrgm
I/O 실행, 로컬 이외의 변수 변경, 프로그램 호출 등의 명령을 사용할 수 없습니다.그러나 함수는 다음과 같은 내장 함수를 호출할 수 있기 때문에 여전히 순수하지 않을 수 있습니다.getTime()
,getKey()
, 또는. 모든 함수는 반환값을 가집니다.이 값은 명시적이지 않은 경우Return
statement는 마지막으로 평가된 표현입니다.
서드파티 언어 확장자
Omnicicalc,[5] [6]xLIB, Celtic 및 Doors [7]CS의 서드파티 어플리케이션은 추가 언어 기능을 제공하기 위해 Z80 계산기의 TI-BASIC 함수를 오버로드했습니다.서드파티 라이브러리가 과부하로 되어 있다.sum()
,real()
,det()
그리고.identity()
각 어플리케이션에 의해 처리 및 해석되는 기능.추가 기능으로는 빠른 형상 그리기 루틴, 스프라이트 및 타일맵 툴, 프로그램 및 VAT 수정 및 액세스 기능, GUI 구성 기능 등이 있으며, 이들 대부분은 일반적으로 어셈블리 프로그래머에 의해 사용이 제한됩니다.모든 함수는 사용자의 계산기에 Doors CS 7.0과 같은 애플리케이션이 존재해야 하며, 때로는 라이브러리 사용에 대한 방해로 간주되기도 한다.
예
안녕 세계
다음 프로그램이 실행되면 다음과 같은 문구가 표시됩니다.HELLO, WORLD!
".
TI-83/84 (Z80 시리즈)
: "HELLO, WORLD!"를 디스합니다.
TI-89(68k 시리즈)
(P.S. 이 코드는 TI-83/84와 같이 Disp 기능만으로 단축할 수 있으며 hellowld, prgm, endprgm은 자동으로 생성됩니다.)
: hellowld() : Prgm : ClrIO: "HELLO, WORLD!"를 삭제합니다.일시정지: ClrIO: 디스홈 : End Prgm
TI-Nspire
"HELLO, WORLD!"라는 문자!
TI-Nspire CX
"HELLO, WORLD!"라는 문자!
목록 및 루프
TI-83/84 (Z80 시리즈)
프로그램:목록:"변수 수를 묻다: 입력 "VAR 수?", A:"입력 또는 정지 확인: A <1 또는 fPart(A):정지:" 각 값을 목록에 포함하도록 요청하는 루프의 경우: "N",암묵적으로 최종 목록을 반환합니다.L1
TI-89(68k 시리즈)
lists() : Prgm : 로컬 n, i, c © 로컬 변수 n, i 및 c를 선언합니다. : {} → list © 목록을 빈 목록으로 초기화합니다. : "변수 수?" , n : i, 1, n : 문자열로 변환된 후 "변수 번호" & string(i), c → & concontincontinates i 를 입력합니다.: c→list[i] : EndFor : EndPrgm
목록에는 여러 가지 가능한 이름이 있으므로 많은 프로그램에서 이전 데이터를 덮어쓰지 않고 많은 목록을 조작할 수 있습니다.TI-82 의 리스트에는 커스텀명을 사용할 수 없습니다(L1 ~L은6 사전에 프로그램 되어 있습니다).TI-85 및 TI-86에는 첨자가 있는 변수 이름을 처리하는 기능이 없습니다.TI-81은 목록을 전혀 처리할 수 없습니다.목록은 다양한 회귀 분석 [1]등을 포함하여 통계를 계산하기 위해 여러 내장 TI-BASIC 함수에 의해 사용될 수 있습니다.프로그램 내부로 호출할 수 있지만 실행을 일시 중지하는 동안에도 정보가 표시되므로 특정 결과를 변수에 저장할 수 없습니다.
재귀
재귀가 가능합니다.프로그램은 자체 또는 다른 프로그램 내에서 호출할 수 있습니다.
TI-83/84 (Z80 시리즈)
다음 예제는 요인 계산에 사용됩니다.이게 작동하려면X
요인 함수의 모수입니다.A
1이어야 합니다.
프로그램:FACT : X=0인 경우 : Disp A : Stop : End : XA → A : X - 1 → X : prgmFACT
TI-89(68k 시리즈)
factui() : Prgm : 로컬n : fact (x) =Func : if x=0 : Return 1 : Return x*fact (x-1) : EndFunc : 입력 "숫자 입력", n : Disp "n! = " : Disp fact (n) : EndPrgm
기능들
68k 시리즈는 프로그램과 기능을 구분합니다.함수는 로컬이 아닌 변수의 수정을 포함하여 I/O를 수행하는 문을 허용하지 않으며 값을 반환한다는 점을 제외하면 프로그램과 같습니다.Return
statement는 마지막으로 평가된 표현입니다.
fact(x) : Func : if x = 0 : Return 1 : if x < 0 : Return undef : x * fact ( x - 1 ) : End Func
에디터 및 도구
1990년대 취미인 그래프 작성 계산기 커뮤니티의 성장은 TI-BASIC 코드를 메일링 리스트와 토론 포럼에서 공유할 필요성을 포함하여 공유와 협업을 가져왔다.처음에는 계산기 화면에서 컴퓨터로 TI-BASIC 코드를 직접 입력하거나 반대로 프로그램을 계산기에 수동으로 입력하는 방식으로 수행되었습니다.TI-BASIC 프로그램은 토큰화된 형식으로 저장되므로 표준 컴퓨터 텍스트 편집기를 사용하여 편집할 수 없기 때문에 계산기 프로그래밍 커뮤니티가 성숙함에 따라 자동 변환기의 필요성이 대두되었습니다.Texas Instruments의 TI-GraphLink 응용 프로그램에서 생성한 컴퓨터에 저장된 TI-BASIC 프로그램의 형식이 결국 디코딩되었고 이러한 파일을 조작하기 위한 타사 도구가 만들어졌습니다.TI는 TI-GraphLink 링크 프로그램의 특정 릴리스에 포함된 BASIC 에디터를 만들었지만 널리 사용되지 않았습니다.특히 복사하여 Fora에 붙여넣을 때 제대로 표시되지 않는 사용자 지정 문자 집합을 사용했습니다.
2005년에 Joe Penna는 OptiB를 설립했습니다.ASIC: TI-GraphLink 에디터에서 표준 Unicode로 텍스트를 변환하는 번역 도구입니다.이 프로젝트는 곧 regex 기반의 TI-BASIC [8]옵티마이저를 포함하도록 확장되었습니다.Corriptech의 Christopher "Kerm Martian" Mitchell은 토큰화된 TI-BASIC 프로그램에서 [9]평문(그리고 나중에는 HTML 및 BBCode 형식) 콘텐츠를 추출하는 온라인 컨버터를 만들기 시작했고, 이 프로그램은 온라인 프로그램 에디터,[10] 익스포터 및 TI-83 Plus 에뮬레이터로 확장되었습니다.SourceCoder 프로젝트는 OptiB를 흡수했습니다.2005년 말 ASIC.현재 사용되고 있는 주요 TI-BASIC 에디터는 Shaun "Merthsoft" McFall이 만든 TokenIDE(또는 "Tokens")뿐입니다.오프라인 편집기인 토큰은 TI-BASIC 프로그램을 가져오고 편집 및 내보낼 수 있으며, 프로그램 크기 및 정확성을 추적하는 도구를 포함하며, 스프라이트/이미지 편집기와 같은 보조 기능을 제공합니다.XML 파일에 저장된 토큰 정의를 기반으로 구축되어 사용자 지정 토큰 [11]매핑과 함께 작업할 수 있도록 설계되었습니다.
NSprire 시리즈 및 TI 92 Plus 및 Voyage 200 계산기의 프로그램은 플랫 클리어 텍스트(Ansi/ASCII/ISO 8859-*) 형식으로 전송 및 저장할 수 있으며 TI 계산기 프로그래밍용 IDE가 몇 개 있습니다.TI 계산기에는 일련의 TextPad 구문 정의, 코드 스니펫 및 차트를 사용할 수 있으며 구문 정의도 Zeus [12][13]편집기에서 사용하는 형식으로 변환되었습니다.클리어 텍스트 형식은 계산기의 Lua 인터프리터에도 사용됩니다.
TI89-92-Voyage 200 변종 TI Basic용 PC 사이드 인터프리터를 개발하기 위한 독립 프로젝트가 존재하며, 이를 인터프리터라고 하는 다른 언어의 프로그램을 직접 실행할[14] 수 있습니다.인터프리터는 표준 입력, 출력, 오류 및 지정 가능한 로그 및 설정 파일을 Windows에서 콘솔 모드로 사용합니다.계산기에 사용되는 그래픽을 복제하는 두 번째 프로그램은 Tcl, Perl, Rexx, C 및 기타 언어와 통합된 Tk 도구와 동일한 방식으로 관련지어집니다.VBScript에서 사용하는 Tk 종류의 툴을 개발하기 위한 관련 프로젝트가 이 [14]툴의 소스입니다.VBA 및 WSH 엔진을 통해 PC측 TI Basic을 스프레드시트 및 데이터베이스 프로그램과 통합하는 세 번째 툴도 구상되고 있습니다.이 프로젝트에는 계산기 측 Unix 스타일 셸과 Fortran 77 인터프리터인 Rexx 및 Perl 인터프리터 및 다양한 Casio, HP, Sharp 및 Texas Instruments 계산기 프로그래밍 언어 [14]사이를 오갈 수 있는 변환기도 포함됩니다.
「 」를 참조해 주세요.
레퍼런스
- ^ a b "TI-84 Plus". education.ti.com.
- ^ http://education.ti.com/educationportal/sites/US/productDetail/us_ti89ti.html?bid=5 TI-89 (education.ti.com )
- ^ "Lua Scripting". education.ti.com. Retrieved 2011-06-05.
- ^ http://tibasicdev.wikidot.com/timings 다양한 명령어 시간 분석
- ^ ticalc.org 를 참조해 주세요.Omnicalc v1.00 출시
- ^ 에반스, 트래비스xLIB (Patrick Frendergast)
- ^ 서덜랜드, 니키Doors CS 7.0에서 오아시스 찾기
- ^ "Cemetech – United-TI Archives – Project Ideas/Start New Projects – opTI-BASIC [Topic]". Cemetech archive of UnitedTI. Retrieved 2012-08-05.
- ^ Michael Vincent. "Martian Develops SourceCoder; Conquers BASIClings". ticalc.org. Retrieved 2012-08-05.
- ^ Travis Evans. "Cemetech's SourceCoder Updated". ticalc.org. Retrieved 2012-08-05.
- ^ Ryan Boyd. "TokenIDE / Shaun McFall Interview". ticalc.org. Retrieved 2013-01-18.
- ^ 텍스트 패드 사이트
- ^ 프로그래밍 - ticalc.org
- ^ a b c "Calculator Programming Today", 스프레드시트 Vol VI, No 14, 23.2004년 11월 페이지 5