Jump to content

ТИ-БЕЙСИК

(Перенаправлено с TI-BASIC (калькуляторы) )

TI-BASIC является официальным [ 1 ] название языка, похожего на BASIC, встроенного в Texas Instruments графические калькуляторы . 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 часто дает многим студентам возможность впервые познакомиться с миром программирования.

Викикниги
Wikibooks

В Wikibooks есть учебники по программированию TI-BASIC:

Синтаксис

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

Синтаксис всех версий TI-BASIC несколько отличается от типичных реализаций BASIC. Сам язык имеет некоторые базовые возможности структурного программирования , но не допускает использования пробелов или отступов. Это также зависит от несколько нестандартного набора символов с определенными символами для назначения (правая стрелка «STO», недоступная в большинстве наборов символов), квадратными и кубическими корнями и другими математическими символами, а также токенизированной записью. и хранилище для ключевых слов. Все операторы начинаются с двоеточия, которое также выполняет функцию разделителя операторов внутри строк. В моделях TI-83/84 закрывающие скобки, скобки, фигурные скобки и кавычки при желании можно опустить в конце строки или перед токеном STO, чтобы сэкономить место, хотя иногда их лучше оставить. Например, в моделях TI 83/84 функция цикла for работает намного медленнее без закрытия круглых скобок в определенных обстоятельствах. [ 4 ]

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

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

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

Операторы потока управления включают блоки if-then-else , циклы for , циклы while и циклы повторения , но не содержат операторов переключения . Основные операторы потока управления:

 If condition
 Then
 ...
 Else
 ...
 End

 For(variable,start,stop,step)
 ...
 End

 While condition
 ...
 End

 Repeat condition
 ...
 End

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

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

Типы данных

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

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

ТИ-83/84 (З80)

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

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

  • Картинки ( Pic0 - Pic9)
  • Фон ( Image0 - Image9)
  • Программы ( prgm)
  • Графовые базы данных ( GDB0 - GDB9)
  • Цвет ( BLUE, RED,..., GRAY) (всего 15 цветов)
  • Целые числа, которые могут хранить большой объем данных. Калькуляторы 68k могут хранить очень большие числа, вплоть до , с идеальной точностью.
  • Действительные числа с использованием десятичной дроби с плавающей запятой . Они хранят до 14 значащих цифр в зависимости от модели калькулятора.
  • Комплексные числа , реализованные как пары действительных чисел.
  • Струны
  • Списки — одномерные связанные списки , поддерживающие поэлементные операции. В калькуляторах 68k элементами могут быть целые, действительные, комплексные числа, строки или выражения.
  • Матрицы с элементами, на которые распространяются те же ограничения в списках.
  • Символические выражения , уникальные для серии 68k.

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

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

Переменные

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

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

ТИ-83/84 (З80)

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

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

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

Комментарии

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

ТИ-83/84 (З80)

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

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

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

ТИ-83/84 (З80)

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

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

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

Сторонние языковые расширения

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

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

Привет, мир

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

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

ТИ-83/84 (серия Z80)

[ редактировать ]
:Disp "HELLO, WORLD!"

ТИ-89 (серия 68к)

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

(PS этот код можно сократить до функции Disp, как в TI-83/84, при этом hellowld, prgm и endprgm генерируются автоматически.)

:hellowld()
:Prgm
:ClrIO
:Disp "HELLO, WORLD!"
:Pause
:ClrIO
:DispHome
:EndPrgm

ТИ-Энспайр

[ редактировать ]
text "HELLO, WORLD!"
text "HELLO, WORLD!"

Списки и циклы

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

ТИ-83/84 (серия Z80)

[ редактировать ]
PROGRAM:LISTS
:"ASK FOR THE NUMBER OF VARIABLES
:Input "NUMBER OF VARS? ",A
:"VALIDATE INPUT OR STOP
:If A<1 or fPart(A)
:Stop
:"A FOR LOOP TO ASK FOR EACH VALUE TO BE IN THE LIST
:For(N,1,A)
:Input "VAR ",B
:"STORE THE VALUE INTO THE NTH ELEMENT
:B→L1(N)
:End
:"IMPLICITLY RETURN THE FINAL LIST
:L1

ТИ-89 (серия 68к)

[ редактировать ]
lists()
:Prgm
:  Local n,i,c © Declare local variables n, i, and c.
:  {}→list © Initialize list as an empty list.
:  Input "Number of variables?",n 
:  For i,1,n
:    Input "Variable #"&string(i),c © & concatenates i after it is converted to a string.
:    c→list[i]
:  EndFor
:EndPrgm

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

Рекурсия

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

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

ТИ-83/84 (серия Z80)

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

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

PROGRAM:FACT
:If X=0
:Then
:Disp A
:Stop
:End
:XA→A
:X-1→X
:prgmFACT

ТИ-89 (серия 68к)

[ редактировать ]
factui()
:Prgm
:  Local n
:  Define fact(x)=Func
:    If x=0
:      Return 1
:    Return x*fact(x-1)
:  EndFunc
:  Input "Input a number", n
:  Disp "n! = "
:  Disp fact(n)
:EndPrgm

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

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 (или «Tokens»), созданный Шоном «Merthsoft» Макфоллом. Автономный редактор Tokens может импортировать, редактировать и экспортировать программы TI-BASIC, включает в себя инструменты для отслеживания размера и правильности программы, а также предлагает вспомогательные функции, такие как редактор спрайтов/изображений. Построенный на основе определений токенов, хранящихся в файлах XML , он должен быть расширяемым для работы с любым сопоставлением токенов, заданным пользователем. [ 11 ]

Программы серии NSprire, а также калькуляторов 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 ]

См. также

[ редактировать ]
  1. ^ Перейти обратно: а б «ТИ-84 Плюс» . Education.ti.com .
  2. ^ https://education.ti.com/educationportal/sites/US/productDetail/us_ti89ti.html?bid=5 TI-89 на education.ti.com
  3. ^ «Lua-скрипты» . Education.ti.com . Проверено 5 июня 2011 г.
  4. ^ https://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. ^ Трэвис Эванс. «Обновление SourceCoder Cemetech» . ticalc.org . Проверено 5 августа 2012 г.
  11. ^ Райан Бойд. «TokenIDE / Интервью с Шоном Макфоллом» . ticalc.org . Проверено 18 января 2013 г.
  12. ^ Сайт TextPad
  13. ^ Программирование - ticalc.org
  14. ^ Перейти обратно: а б с «Программирование калькуляторов сегодня», Электронная таблица, том VI, № 14, 23. Ноябрь 2004 г., стр. 5.
[ редактировать ]
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: 2856b7e7e5131dc55f6800ab0897d783__1722532440
URL1:https://arc.ask3.ru/arc/aa/28/83/2856b7e7e5131dc55f6800ab0897d783.html
Заголовок, (Title) документа по адресу, URL1:
TI-BASIC - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)