Из Википедии, бесплатной энциклопедии
Перейти к навигации Перейти к поиску

TI-BASIC является официальным [1] названием BASIC -like языка , встроенным в компании Texas Instruments (TI) «s графических калькуляторы . TI-BASIC - это языковая семья из трех разных и несовместимых версий, выпущенных для разных продуктов:

TI редко ссылается на язык по имени, но имя TI-BASIC использовалось в некоторой документации для разработчиков. [2] [3]

Для многих приложений это наиболее удобный способ программирования любого калькулятора TI, поскольку возможность писать программы на TI-BASIC встроена. Также можно использовать ассемблерный язык (часто называемый «asm»), и существуют компиляторы C для перевода в ассемблер: TIGCC для калькуляторов на базе Motorola 68000 (68k) и SDCC для калькуляторов на базе Zilog 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 функция цикла for работает намного медленнее без закрытия скобок в определенных обстоятельствах. [4]

Выражения используют инфиксную нотацию со стандартным приоритетом операторов . Многие операторы требуют аргументов в круглых скобках, аналогично синтаксису, используемому для математических функций. Синтаксис присваивания (копирования данных в переменную) необычен по сравнению с большинством традиционных языков программирования для компьютеров; вместо использования BASIC-подобного let со знаком равенства или algol- подобного :=оператора, TI-BASIC использует оператор «STO» со стрелкой вправо с синтаксисом: источник → пункт назначения . Это похоже на несколько японских калькуляторов, таких как Casio, Canon и Sharp, которые часто использовали аналогичный синтаксис с тех пор, как первые массовые японские алфавитно-цифровые калькуляторы появились в конце 1970-х - начале 1980-х годов.

Поток управления [ править ]

Flow Control отчетность включает в себя , если-то-иначе блоки , для петель , в то время как петли и повторные циклы , хотя нет заявлений переключателя . Основные операторы потока управления:

 Если условие потом ... Еще ... Конец Для (переменная, начало, остановка, шаг) ... Конец Пока условие ... Конец Повторить условие ... Конец

В отличие от языков высокого уровня, реализации TI-BASIC включают в себя операторы IS> (увеличение и пропуск, если больше) и DS <(уменьшение и пропуск, если меньше), конструкции, обычно связанные с языками ассемблера . Разделы программ можно пометить ; однако, особенно в моделях Z80, метки действуют как места назначения для операторов или функций Goto,Menu( а не как метки программ или блоков.

Доступность функций и подпрограмм зависит от реализации; Версии, доступные на калькуляторах, произошедших от TI-82, даже не поддерживают функцию, подобную GOSUB , хотя можно вызывать программы изнутри друг друга и совместно использовать переменные между программами. Проекты на основе TI-89/92 могут иметь доступ к общим функциям, по сути к программам, способным возвращать значение.

Типы данных [ править ]

TI-BASIC - это язык со строгой и динамической типизацией . Доступные типы данных значительно различаются между версиями 68k и Z80. Невозможно создать определяемые пользователем типы данных без использования библиотеки, написанной на ассемблере. Списки часто используются вместо структур .

TI-83/84 (Z80) [ редактировать ]

  • Числовые переменные , включая A- Zи Θ(тета). Это позволяет хранить действительные числа или комплексные числа (реализованные как пары действительных чисел ) в формате с плавающей запятой . Значения могут варьироваться от 1 E -99 до 1 E.99 с точностью до десяти знаков. Однако предел в 27 переменных может быть расширен за счет использования списков, матриц и манипуляций с целочисленной нотацией. Список или матрица могут использоваться для хранения уникальных реальных переменных, на которые можно ссылаться индивидуально. Целые числа можно объединить в одну действительную переменную, обозначив их как целые и десятичные половинки действительного числа; затем доступ к каждой половине осуществляется независимо с помощью команд iPart и fPart. Переменные с двоичными значениями могут быть сохранены как одно целое число посредством преобразования между основанием 2 и основанием 10.
  • Струны , в том числе Str0- Str9. Они могут хранить любое количество символов или даже имена функций, пока есть доступная память. Их можно оценить как выражение с expr()функцией, которая находится в каталоге.
  • Списки, в том числе - , с возможностью создания дополнительных. По сути, это одномерные массивы, используемые для хранения действительного или комплексного числа в каждом из своих элементов . Размер списка, его количество элементов, может находиться в диапазоне от 1 до 999, хотя имеется память может быть ограничивающим фактором . Когда размер списка устанавливается ниже, чем было, элементы в конце обрезаются. При установке выше дополнительные элементы в конце заполняются нулями. Размеры устанавливаются путем сохранения действительного числа в имени списка. Списки по умолчанию называются L 1 –L 6.L1L6 dim(, но можно создавать собственные списки. Это делается путем установки размера списка, на который ссылается токен L в , за которым следует имя в диапазоне от 1 до 5 символов, которое начинается с заглавной буквы - и . Доступ к отдельным элементам списков можно получить, поместив номер элемента в круглые скобки после имени списка.ListsAZΘ
  • Матрицы , в том числе [A]- [J]. На их элементы распространяются те же ограничения, что и на списки. Их размеры могут быть определены до 99x99 элементов, хотя, опять же, доступная память ограничит это. Невозможно создать пользовательские матрицы, поэтому можно использовать только десять встроенных матриц.
  • Уравнение переменных, в том числе - , - , и , , . По сути, это строки, в которых хранятся уравнения. Они оцениваются для возврата значения при использовании в выражении или программе. Конкретные значения (константа, C) могут быть вставлены для независимой переменной (X), следуя имени уравнения (зависимая, Y) за постоянным значением в круглых скобках. В приведенном ниже примере используется «(4)» (без особой причины). ( (4) вернет значение при X = 4)Y0Y9r1r6uvwY1Y1

Типы данных, которыми нельзя управлять напрямую, включают:

  • Картинки ( Pic0- Pic9)
  • Программы ( prgm)
  • Базы данных графов ( GDB0- GDB9)

ТИ-89 (68к) [ править ]

  • Целые числа, которые могут хранить большой объем данных. Калькуляторы 68k могут хранить очень большие числа, вплоть до , с идеальной точностью.
  • Действительные числа с использованием десятичных чисел с плавающей запятой . В них хранится до 14 значащих цифр в зависимости от модели калькулятора.
  • Комплексные числа , представленные как пары вещественных чисел.
  • Струны
  • Списки, которые представляют собой одномерные связанные списки, поддерживающие поэлементные операции. На калькуляторах 68k элементы могут быть целыми, действительными, комплексными числами, строками или выражениями.
  • Матрицы с элементами, на которые распространяются те же ограничения в списках
  • Символические выражения , уникальные для серии 68k.

Типы данных, которыми нельзя управлять напрямую (ввод только их имени в строке приведет к ошибке), включают:

  • Фотографий
  • Данные
  • Программ
  • Функции

Переменные [ править ]

Гибкость использования переменных широко варьируется в зависимости от модели калькулятора. Например, на TI-84 Plus доступны все буквы английского языка, а также тета (Θ).

TI-83/84 (Z80) [ редактировать ]

На TI-83/84 программист может создавать списки, имена которых содержат до пяти символов. Все другие типы данных ограничены, например 27 действительных или комплексных переменных, а также ряд предопределенных имен переменных других типов (например, матрицы должны быть одной из десяти переменных [A]- [J]). В TI-83/84 некоторые переменные, такие как Ansи финансовые переменные, имеют фиксированные адреса в ОЗУ, что делает их намного быстрее, чем к 27-буквенным переменным. Ansдействует как специальная переменная, содержащая результат последнего выполненного кода. Строка, содержащая только переменную, все равно будет оцениваться, и ее содержимое будет сохранено в Ansрезультате. Так какAnsпереоценивается так часто, что чаще всего используется для хранения очень временных вычислений или для хранения значений, доступ к которым в противном случае был бы медленным, например, к элементам из списка. Все переменные глобальные.

ТИ-89 (68к) [ править ]

Напротив, калькуляторы 68k позволяют всем именам переменных содержать до восьми буквенно-цифровых символов, включая греческий . Более того, переменные можно сгруппировать в «папки» или сделать локальными для программы, объявив их с помощью Localоператора.

Комментарии [ редактировать ]

TI-83/84 (Z80) [ редактировать ]

Программисты Z80 часто начинают строки с "(двойные кавычки) для обозначения комментария. Строки, начинающиеся с", на самом деле выполняются при изменении Ansпеременной, но это не влияет ни на что, кроме производительности, если они Ansне считываются сразу после этого.

ТИ-89 (68к) [ править ]

Калькуляторы 68k позволяют программам включать однострочные комментарии , используя © в качестве символа комментария. Если комментарий появляется в первой строке после оператора «Prgm», он отображается в строке состояния, когда программа выбрана в каталоге; такие комментарии часто используются для документирования имен или типов параметров. Интерпретатор 68k имеет встроенную функцию для хранения количества пробелов в начале строки, что позволяет делать отступы .

Функции [ править ]

TI-83/84 (Z80) [ редактировать ]

Версия TI-BASIC для Z80 делает невозможными явные «функции», подобные тем, что есть в 68k. Однако все переменные являются глобальными, поэтому функции можно эмулировать, задавая переменные, аналогичные аргументам, перед вызовом другой программы. Возвращаемых значений не существует; Returnоператор останавливает текущую программу и продолжается где называлась программа.

ТИ-89 (68к) [ править ]

Версия TI-BASIC 68k позволяет создавать пользовательские функции. Функции имеют тот же синтаксис, что и программы, за исключением того, что они используют ключевые слова Func... EndFuncвместо Prgm... EndPrgm, и что им не разрешается использовать инструкции, которые выполняют ввод-вывод, изменяют нелокальные переменные или вызывают программы. Однако функции по- прежнему может быть не- чистым , потому что они могут назвать встроенные функции , такие как getTime(), getKey()или rand(). Все функции имеют возвращаемое значение, которое в отсутствие явного Returnоператора является последним вычисленным выражением.

Сторонние языковые расширения [ править ]

Сторонние приложения в хронологическом порядке Omnicalc, [5] xLIB, [6] Celtic и Doors CS, [7] перегружали функции TI-BASIC на калькуляторах Z80 для обеспечения дополнительных языковых функций. Сторонние библиотеки перегружают функции sum () , real () , det () и identity () , которые обрабатываются и интерпретируются соответствующими приложениями. Среди дополнительных функций - быстрые процедуры рисования фигур, инструменты спрайтов и тайловых карт, возможности модификации и доступа к программам и НДС, функции построения графического интерфейса пользователя и многое другое, использование большинства из которых обычно ограничивается программистами сборки. Все функции требуют, чтобы приложение, напримерДвери CS 7.0 присутствуют на калькуляторе пользователя, что иногда считается признаком использования библиотек.

Примеры [ править ]

Привет, мир [ править ]

Следующие программы при выполнении будут отображать фразу " HELLO, WORLD!".

TI-83/84 (серия Z80) [ редактировать ]

: Disp "ПРИВЕТ, МИР!"

ТИ-89 (серия 68к) [ править ]

(PS этот код можно сократить до функции 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):Стоп: "A FOR LOOP, ЧТОБЫ ЗАПРОСИТЬ КАЖДОЕ ЗНАЧЕНИЕ, БУДУЩЕЕ В СПИСКЕ: Для (N, 1, A: Введите "VAR", B: "СОХРАНИТЕ ЦЕННОСТЬ В N-ЭЛЕМЕНТЕ: B → L1 (N):Конец: "НЕОБХОДИМО ВОЗВРАТИТЕ ОКОНЧАТЕЛЬНЫЙ СПИСОК: L1

ТИ-89 (серия 68к) [ править ]

списки (): Prgm: Local n, i, c © Объявить локальные переменные n, i и c.: {} → list © Инициализировать список как пустой список.: Введите «Количество переменных?», N : Для i, 1, n: Введите "Variable #" & string (i), c © & объединяет i после преобразования в строку.: c → list [i]: EndFor: EndPrgm

Списки имеют много возможных имен, это позволяет многим программам управлять множеством списков, не отменяя предыдущие данные. Списки на TI-82 не могут иметь пользовательских имен (с L 1 по L 6 предварительно запрограммированы). TI-85 и TI-86 не имеют возможности обрабатывать имена переменных с нижними индексами. TI-81 полностью не может обрабатывать списки. Списки могут использоваться многочисленными встроенными функциями TI-BASIC для расчета статистики, включая различные регрессионные анализы и многое другое . [1] Их можно вызывать внутри программ, однако они по-прежнему показывают информацию во время приостановки выполнения и не могут сохранять конкретные результаты в переменных.

Рекурсия [ править ]

Возможна рекурсия. Программа может быть вызвана из самой программы или из другой программы.

TI-83/84 (серия Z80) [ редактировать ]

Пример ниже используется для вычисления факториалов . Для того, чтобы он работал, Xэто параметр факториальной функции и Aдолжен быть равен 1.

ПРОГРАММА: ФАКТ: Если X = 0:Потом: Дисплей A:Стоп:Конец: XA → A: Х-1 → Х: prgmFACT

ТИ-89 (серия 68к) [ править ]

factui (): Prgm: Местный n: Определить факт (x) = Func: Если x = 0: Возврат 1: Вернуть x * факт (x-1): EndFunc: Введите «Введите число», n: Disp "n! =": Опровергнуть факт (n): EndPrgm

Функции [ править ]

Серия 68k делает различие между программами и функциями. Функции аналогичны программам, за исключением того, что они не допускают операторов, выполняющих ввод-вывод, включая изменение нелокальных переменных, и возвращают значение, которое в отсутствие явного Returnоператора является последним вычисленным выражением.

факт (х): Func: Если x = 0: Возврат 1: Если x <0: Вернуть undef: x * факт (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]

программы на калькуляторах Nspireseries, а также на калькуляторах TI 92 plus и Voyage 200 можно передавать и сохранять в формате простого текста (Ansi / Ascii / ISO 8859- *), и существует несколько IDE для программирования калькуляторов TI. Для калькуляторов TI доступен ряд определений синтаксиса TextPad , фрагментов кода и диаграмм, а определения синтаксиса также были преобразованы в формат, используемый редактором 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]

См. Также [ править ]

  • Калькулятор игровой
  • Программируемый калькулятор
  • RPL (язык программирования)

Ссылки [ править ]

  1. ^ а б «ТИ-84 Плюс» . education.ti.com .
  2. ^ http://education.ti.com/educationportal/sites/US/productDetail/us_ti89ti.html?bid=5 TI-89 на education.ti.com
  3. ^ http://education.ti.com/nspire/scripting . Проверено 5 июня 2011.
  4. ^ http://tibasicdev.wikidot.com/timings Анализ различного времени выполнения команд.
  5. ^ ticalc.org. Выпущен Omnicalc v1.00
  6. ^ Эванс, Трэвис. xLIB Патрика Прендергаста
  7. ^ Сазерленд, Никки. Найдите оазис в Doors CS 7.0
  8. ^ «Cemetech - Архивы United-TI - Идеи проектов / Начало новых проектов - opTI-BASIC [Тема]» . Cemetech архив UnitedTI . Проверено 5 августа 2012 .
  9. ^ Майкл Винсент. «Марсианин развивает SourceCoder; побеждает BASIClings» . ticalc.org . Проверено 5 августа 2012 .
  10. ^ Трэвис Эванс. «Обновлен исходный код Cemetech» . ticalc.org . Проверено 5 августа 2012 .
  11. ^ Райан Бойд. "TokenIDE / Интервью с Шоном Макфоллом" . ticalc.org . Проверено 18 января 2013 .
  12. ^ Сайт TextPad
  13. ^ Программирование - ticalc.org
  14. ^ a b c «Программирование калькуляторов сегодня», Электронная таблица Том VI, № 14, 23 ноября 2004 г., стр. 5

Внешние ссылки [ править ]

  • Официальный сайт Texas Instruments