TI-BASIC - TI-BASIC
Было предложено, чтобы эта статья была Трещина в статьи под названием TI-BASIC 83 (Z80), TI-BASIC 89 (68к) и TI-BASIC Nspire (ARM). (Обсудить) (Февраль 2019 г.) |
TI-BASIC официальный[1] имя БАЗОВЫЙ -подобный язык, встроенный в Texas Instruments (TI) с графические калькуляторы.TI-BASIC - это языковая семья из трех разных и несовместимых версий, выпущенных для разных продуктов:
- TI-BASIC 83 (на Z80 процессор) для Серия ТИ-83, Серия TI-84 Plus
- TI-BASIC 89 (на 68 тыс. процессор) для Серия ТИ-89, Серия ТИ-92, Вояж 200
- TI-BASIC Nspire (на ARM процессор ) для TI-Nspire и TI-Nspire CAS
TI редко ссылается на язык по имени, но имя TI-BASIC использовалось в некоторой документации для разработчиков.[2][3]
Для многих приложений это самый удобный способ программа любой калькулятор TI, так как возможность писать программы на TI-BASIC встроена. язык ассемблера (часто называемый "asm") также может использоваться, и C компиляторы существуют для перевода в сборку: TIGCC для Motorola 68000 (68k) калькуляторы и SDCC для Зилог Z80 калькуляторы на основе. Однако оба они кросс-компиляторы, не позволяя программировать на калькуляторе. TI-BASIC значительно медленнее, чем язык ассемблера (потому что он должен быть интерпретированный ), что делает его более подходящим для написания программ для быстрого решения математических задач или выполнения повторяющихся задач, а не для программирования игр или приложений с интенсивной графикой. Некоторые учебники по математике даже предоставляют программы на TI-BASIC (обычно это широко распространенный вариант, используемый в серии TI-82/83/84).
Хотя он несколько минималистичен по сравнению с языками программирования, используемыми на компьютерах, TI-BASIC, тем не менее, является важным фактором в сообществе программистов. Поскольку графические калькуляторы TI требуются на курсах продвинутой математики во многих школах и университетах, TI-BASIC часто дает первое представление о мире программирования для многих студентов.
Синтаксис
Синтаксис всех версий TI-BASIC несколько отличается от типичных реализаций BASIC. В самом языке есть некоторые базовые структурное программирование возможностей, но ограничивает использование или учет белое пространство или отступ. Это также зависит от несколько нестандартных набор символов, с определенными символами для назначения (правая стрелка «STO», недоступна в большинстве наборов символов), квадрат и кубические корни, и другие математические символы, а также токенизированный ввод и хранение ключевых слов. Все операторы начинаются с двоеточия, которое также служит разделителем операторов внутри строк. В моделях TI-83/84 закрывающие круглые скобки, скобки, фигурные скобки и кавычки могут при желании опускаться в конце строки или перед токеном STO для экономии места, хотя иногда их лучше оставить. Например, на моделях TI 83/84 для цикла функция работает намного медленнее без закрытия круглых скобок в определенных обстоятельствах.[4]
Выражения используют инфиксная запись, со стандартным приоритет оператора. Многие инструкции требуют аргументов в круглых скобках, аналогично синтаксису, используемому для математических функций. Синтаксис присваивания (копирования данных в переменную) необычен по сравнению с большинством традиционных языков программирования для компьютеров; вместо использования BASIC-подобного оператора let со знаком равенства или Алгол -любить :=
оператор TI-BASIC использует оператор STO со стрелкой вправо с синтаксисом: источник → пункт назначения. Это похоже на несколько японских калькуляторов, таких как Casio, Canon и Sharp, которые часто использовали аналогичный синтаксис с тех пор, как первые массовые японские буквенно-цифровые калькуляторы появились в конце 1970-х - начале 1980-х годов.
Поток управления
Поток управления заявления включают блоки if-then-else, для петель, пока петли, и повторить петли хотя нет операторы переключения. Основные операторы потока управления:
Если условие Then ... Else ... End For (переменная, начало, остановка, шаг) ... End While условие ... End Repeat condition ... End
В отличие от языков высокого уровня, реализации TI-BASIC включают в себя операторы IS> (увеличение и пропуск, если больше) и DS <(уменьшение и пропуск, если меньше), конструкции, обычно связанные с языки ассемблера. Разделы программ могут быть маркированный; однако, особенно на моделях Z80, метки служат для Перейти к заявления или Меню(
функции, а не как метки программы или блока.
Доступность функций и подпрограмм зависит от реализации; версии, доступные на калькуляторах, предшествующих TI-82, даже не поддерживают GOSUB -подобная функция, хотя можно вызывать программы друг из друга и совместно использовать переменные между программами. Проекты на основе TI-89/92 могут иметь доступ к общим функциям, по сути к программам, способным возвращать значение.
Типы данных
TI-BASIC - это сильно и динамически типизированный язык. Доступные типы данных значительно различаются между версиями 68k и Z80. Невозможно создать определяемые пользователем типы данных без использования библиотеки, написанной на ассемблере. Списки часто используются как замена структуры.
ТИ-83/84 (Z80)
- Числовой переменные, в том числе
А
-Z
иΘ
(тета). Это позволяет действительные числа или сложные числа (реализованные как пары вещественных чисел) для хранения в плавающая точка формат. Значения могут варьироваться от 1E-99 к 1E99 с точностью до десяти знаков. Однако предел в 27 переменных может быть расширен за счет использования списков, матриц и манипуляций с целочисленной нотацией. Список или матрица могут использоваться для хранения уникальных реальных переменных, на которые можно ссылаться индивидуально. Целые числа можно объединить в одну действительную переменную, обозначив их как целые и десятичные половинки действительного числа; затем доступ к каждой половине осуществляется независимо через команды iPart и fPart. Переменные с двоичными значениями могут быть сохранены как одно целое число посредством преобразования между основанием 2 и основанием 10. - Струны, в том числе
Str0
-Ул. 9
. Они могут хранить любое количество символов или даже имена функций, если есть доступная память. Их можно оценить как выражение сexpr ()
функция, которая находится в каталоге. - Списки, в том числе
L1
-L6
, с возможностью создания дополнительных. По сути, это одномерный массивы используется для хранения действительного или комплексного числа в каждом из элементы. В измерение списка, его количество элементов может варьироваться от 1 до 999, хотя имеется в наличии объем памяти может быть ограничивающий фактор. Когда размер списка установлен ниже, чем было, элементы в конце обрезаются. При установке выше дополнительные элементы в конце заполняются нулями. Размеры устанавливаются путем сохранения действительного числа втусклый (
названия списка. Списки по умолчанию называются L1–L6, но можно создавать собственные списки. Это делается путем установки размера списка, на который ссылается L жетон вСписки
, за которым следует имя от 1 до 5 символы который начинается с заглавной буквыА
-Z
иΘ
. Доступ к отдельным элементам списков можно получить, поместив номер элемента в скобки после названия списка. - Матрицы, в том числе
[A]
-[J]
. На их элементы распространяются те же ограничения, что и на списки. Их размеры могут быть определены до 99x99 элементов, хотя, опять же, доступная память ограничит это. Невозможно создать пользовательские матрицы, поэтому можно использовать только десять встроенных матриц. - Переменные уравнения, включая
Y0
-Y9
,р1
-р6
, иты
,v
,ш
. По сути, это строки, в которых хранятся уравнения. Они оцениваются как возвращающие значение при использовании в выражении или программе. Конкретные значения (константа, C) могут быть вставлены в независимую переменную (X), следуя имени уравнения (зависимая, Y) за постоянным значением в круглых скобках. В приведенном ниже примере используется «(4)» (без особой причины). (Y1
(4) вернет значениеY1
при X = 4)
Типы данных, которыми нельзя управлять напрямую, включают:
- Фотографий (
Pic0
-Рис9
) - Программы (
prgm
) - Базы данных графов (
GDB0
-GDB9
)
ТИ-89 (68к)
- Целые числа, которые могут хранить большой объем данных. Калькуляторы 68k могут хранить очень большие числа, вплоть до , с идеальной точностью.
- Реальные числа, используя десятичная с плавающей запятой. Они хранят до 14 значащих цифр в зависимости от модели калькулятора.
- Сложные числа, реализованные как пары вещественных чисел.
- Струны
- Списки, которые одномерные связанные списки которые поддерживают поэлементные операции. На калькуляторах 68k элементы могут быть целыми, действительными, комплексными числами, строками или выражениями.
- Матрицы, с элементами, на которые распространяются те же ограничения в списках
- Символические выражения, уникальный для серии 68k.
Типы данных, которыми нельзя управлять напрямую (ввод только их имени в строке приведет к ошибке), включают:
- Фотографий
- Данные
- Программы
- Функции
Переменные
Гибкость использования переменных широко варьируется в зависимости от модели калькулятора. Например, на TI-84 Plus, доступны все буквы английского языка, а также тета (Θ).
ТИ-83/84 (Z80)
На TI-83/84 программист может создавать списки, имена которых содержат до пяти символов. Все другие типы данных ограничены, например 27 действительных или комплексных переменных, а также ряд предопределенных имен переменных других типов (например, матрицы должны быть одной из десяти переменных. [A]
-[J]
). На TI-83/84 некоторые переменные, такие как Ans
а финансовые переменные имеют фиксированные адреса в ОЗУ, что делает их доступными гораздо быстрее, чем 27-буквенные переменные. Ans
действует как специальная переменная, содержащая результат последнего выполненного кода. Строка, содержащая только переменную, все равно будет оцениваться, и ее содержимое будет сохранено в Ans
как результат. Потому что Ans
переоценивается так часто, что он чаще всего используется для хранения очень временных вычислений или для хранения значений, доступ к которым в противном случае был бы медленным, например, элементы из списка. Все переменные глобальные.
ТИ-89 (68к)
Напротив, калькуляторы 68k позволяют всем именам переменных содержать до восьми буквенно-цифровых символов, включая Греческий. Кроме того, переменные можно сгруппировать в «папки» или сделать местный в программу, объявив их с помощью Местный
заявление.
Комментарии
ТИ-83/84 (Z80)
Программисты Z80 часто начинают строки с "(двойные кавычки) для обозначения комментария. Строки, начинающиеся с", фактически выполняются с изменением Ans
переменная, но это не влияет ни на что, кроме производительности, если только Ans
читается сразу после этого.
ТИ-89 (68к)
Калькуляторы 68k позволяют программам включать однострочные Комментарии, с помощью © как символ комментария. Если комментарий появляется в первой строке после оператора «Prgm», он отображается в строке состояния, когда программа выбрана в каталоге; такие комментарии часто используются для документирования имен или типов параметров. Интерпретатор 68k имеет встроенную функцию для хранения количества пробелов в начале строки, это позволяет отступ.
Функции
ТИ-83/84 (Z80)
Версия TI-BASIC для Z80 делает невозможными явные «функции», подобные тем, что есть в 68k. Однако все переменные являются глобальными, поэтому функции можно эмулировать, устанавливая переменные, аналогичные аргументам, перед вызовом другой программы. Возвращаемых значений не существует; то Вернуть
Оператор останавливает текущую программу и продолжает работу с того места, где она была вызвана.
ТИ-89 (68к)
Версия 68k TI-BASIC позволяет создавать пользовательские функции. Функции имеют тот же синтаксис, что и программы, за исключением того, что они используют Func
...EndFunc
ключевые слова вместо Prgm
...EndPrgm
, и что им не разрешено использовать инструкции, которые выполняют ввод-вывод, изменяют нелокальные переменные или вызывают программы. Однако функции по-прежнему могут бытьчистый потому что они могут вызывать встроенные функции, такие как getTime ()
, getKey ()
, или rand ()
. Все функции имеют возвращаемое значение, которое при отсутствии явного Вернуть
оператор - последнее вычисленное выражение.
Сторонние языковые расширения
Сторонние приложения в хронологическом порядке Omnicalc,[5] xLIB,[6] Celtic и Doors CS,[7] перегружены функции TI-BASIC на калькуляторах Z80 для обеспечения дополнительных языковых функций. Сторонние библиотеки перегружают сумма (), реальный (), det () и личность () функции, которые обрабатываются и интерпретируются соответствующими приложениями. Среди дополнительных функций - быстрые процедуры рисования фигур, инструменты спрайтов и тайловых карт, возможности модификации и доступа к программам и НДС, функции построения графического интерфейса и многое другое, большинство из которых обычно ограничено для использования программистами на сборке. Все функции требуют, чтобы приложение, подобное Двери CS 7.0 присутствовать на калькуляторе пользователя, что иногда считается ограничением использования библиотек.
Примеры
Привет мир
Следующие программы при выполнении будут отображать фразу "ПРИВЕТ МИР!
".
TI-83/84 (серия Z80)
: Disp "ПРИВЕТ, МИР!"
ТИ-89 (серия 68к)
(P.S. этот код можно сократить до функции Disp, как в TI-83/84, а hellowld, prgm и endprgm генерируются автоматически.)
: hellowld (): Prgm: ClrIO: Disp «ПРИВЕТ, МИР!»: Пауза: ClrIO: DispHome: EndPrgm
TI-Nspire
текст "ПРИВЕТ, МИР!"
TI-Nspire CX
текст "ПРИВЕТ, МИР!"
Списки и петли
TI-83/84 (серия Z80)
ПРОГРАММА: СПИСКИ: «СПРОСИТЕ КОЛИЧЕСТВО ПЕРЕМЕННЫХ: введите» КОЛИЧЕСТВО ПЕРЕМЕННЫХ? ", A:" ПРОВЕРЬТЕ ВВОД ИЛИ СТОП: Если A <1 или fPart (A): Stop: "A FOR LOOP, ЧТОБЫ ЗАПРОСИТЬ КАЖДОЕ ЗНАЧЕНИЕ, БУДУЩЕЕ В СПИСКЕ: Для (N, 1, A: введите" VAR ", B: «СОХРАНИТЬ ЗНАЧЕНИЕ В N-Й ЭЛЕМЕНТЕ: B → L1 (N): End:» НЕОБХОДИМО ВОЗВРАТИТЕ ОКОНЧАТЕЛЬНЫЙ СПИСОК: L1
ТИ-89 (серия 68к)
lists (): Prgm: Local n, i, c © Объявить локальные переменные n, i и c .: {} → list © Инициализировать список как пустой список .: Введите «Количество переменных?», n: Для i, 1, n: введите «Variable #» и строку (i), c © & объединяет i после преобразования в строку .: c → list [i]: EndFor: EndPrgm
Списки имеют много возможных имен, это позволяет многим программам управлять множеством списков, не отменяя предыдущие данные. Списки на TI-82 не могут иметь произвольных имен (L1 через L6 запрограммированы заранее). TI-85 и TI-86 не имеют возможности обрабатывать имена переменных с нижними индексами. TI-81 совершенно не может обрабатывать списки. Списки могут использоваться многочисленными встроенными функциями TI-BASIC для расчета статистики, включая различные регрессионный анализ и Больше.[1] Их можно вызывать внутри программ, однако они по-прежнему показывают информацию при приостановке выполнения и не могут сохранять конкретные результаты в переменных.
Рекурсия
Возможна рекурсия. Программа может быть вызвана из самой программы или из другой программы.
TI-83/84 (серия Z80)
Пример ниже используется для вычисления факториалы. Чтобы он работал, Икс
- параметр факториальной функции и А
должно быть равно 1.
ПРОГРАММА: ФАКТ: Если X = 0: То: Дисплей A: Стоп: Конец: XA → A: X-1 → X: prgmFACT
ТИ-89 (серия 68к)
factui (): Prgm: Local n: Определить fact (x) = Func: Если x = 0: Return 1: Вернуть x * fact (x-1): EndFunc: Введите «Введите число», n: Disp «n! = ": Disp fact (n): EndPrgm
Функции
Серия 68k делает различие между программами и функциями. Функции похожи на программы, за исключением того, что они не допускают операторов, выполняющих ввод-вывод, включая изменение нелокальных переменных, и возвращают значение, которое в отсутствие явного Вернуть
оператор - последнее вычисленное выражение.
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 хранятся в токенизированный формата, их нельзя редактировать с помощью стандартных компьютерных текстовых редакторов, поэтому по мере развития сообщества программистов-калькуляторов возникла потребность в автоматическом конвертере. Формат компьютерных программ TI-BASIC, сгенерированных приложением TI-GraphLink от Texas Instruments, в конечном итоге был декодирован, и для работы с этими файлами были созданы сторонние инструменты. TI создала редактор BASIC, который они включили в определенные выпуски программы связывания TI-GraphLink, но он не получил широкого распространения. В частности, он использовал специальный набор символов, который не отображался должным образом при копировании и вставке на форумы.
В 2005 году, Джо Пенна создал OptiBASIC, инструмент-переводчик для преобразования текста из редактора TI-GraphLink в стандартный Unicode. Вскоре проект расширился за счет включения оптимизатора TI-BASIC на основе регулярных выражений.[8] Независимо, Кристофер «Керм Марсианин» Митчелл из Cemetech начал создавать онлайн-конвертер для извлечения простого текста (а затем HTML и BBCode -форматированный) содержимое токенизированных программ TI-BASIC,[9] который был расширен за счет включения онлайн-редактора программ, экспортера и эмулятора TI-83 Plus.[10] Проект SourceCoder поглотил OptiBASIC в конце 2005 года. Единственный другой крупный редактор TI-BASIC, который в настоящее время используется, - это TokenIDE (или «Токены»), созданный Шоном «Merthsoft» Макфоллом. Автономный редактор, Tokens может импортировать, редактировать и экспортировать программы TI-BASIC, включает инструменты для отслеживания размера и правильности программы, а также предлагает дополнительные функции, такие как редактор спрайтов / изображений. Построен на основе определений токенов, хранящихся в XML файлы, он предназначен для расширения для работы с любым заданным пользователем отображением токенов.[11]
Программы на калькуляторах серии NSprire, а также на калькуляторах TI 92 plus и Voyage 200 можно передавать и сохранять в формате простого текста (Ansi / Ascii / ISO 8859- *), и существует несколько IDE для программирования калькуляторов TI. Серии TextPad определения синтаксиса, фрагменты кода и диаграммы доступны для калькуляторов TI, а определения синтаксиса также были преобразованы в формат, используемый Редактор Zeus.[12][13] Формат открытого текста также используется интерпретатором Lua на калькуляторе.
Существует независимый проект по разработке интерпретатора на стороне ПК для варианта TI Basic TI89-92-Voyage 200, который позволит запускать программы для калькулятора напрямую.[14] а также комбинированные программы других языков, которые вызывают этот интерпретатор. Интерпретатор использует стандартные файлы ввода, вывода, ошибок, а также настраиваемые файлы журнала и конфигурации в режиме консоли под Windows, а вторая программа для репликации графики, используемой в калькуляторе, будет связана с ним так же, как инструменты Tk, которые интегрированы с Tcl, Perl, Rexx, C и другие языки. Связанный проект по разработке инструмента типа Tk для использования в VBScript является источником этого инструмента.[14] Также предполагается третий инструмент, который интегрирует TI Basic на стороне ПК с программами электронных таблиц и баз данных через механизмы VBA и WSH. Этот проект также включает в себя оболочку в стиле Unix на стороне калькулятора и интерпретаторы Rexx и Perl, интерпретатор Fortran 77, а также преобразователи для переключения между различными языками программирования калькуляторов Casio, HP, Sharp и Texas Instruments, а также между из тех и различных языки сценариев.[14]
Смотрите также
использованная литература
- ^ а б «ТИ-84 Плюс». education.ti.com.
- ^ http://education.ti.com/educationportal/sites/US/productDetail/us_ti89ti.html?bid=5 TI-89 на education.ti.com
- ^ http://education.ti.com/nspire/scripting. Проверено 5 июня 2011.
- ^ http://tibasicdev.wikidot.com/timings Анализ разного времени команд.
- ^ ticalc.org. Выпущен Omnicalc v1.00
- ^ Эванс, Трэвис. xLIB Патрика Прендергаста
- ^ Сазерленд, Никки. Найдите оазис в Doors CS 7.0
- ^ «Cemetech - United-TI Archives - Идеи проектов / Начало новых проектов - opTI-BASIC [Тема]». Cemetech архив UnitedTI. Получено 2012-08-05.
- ^ Майкл Винсент. «Марсианин разрабатывает SourceCoder; побеждает BASIClings». ticalc.org. Получено 2012-08-05.
- ^ Трэвис Эванс. "Обновлен исходный код Cemetech". ticalc.org. Получено 2012-08-05.
- ^ Райан Бойд. "TokenIDE / Интервью с Шоном Макфоллом". ticalc.org. Получено 2013-01-18.
- ^ Сайт TextPad
- ^ Программирование - ticalc.org
- ^ а б c «Программирование калькуляторов сегодня», Электронная таблица Том VI, № 14, 23 ноября 2004 г., стр. 5