Есть ли команда ΔList() для TI-86?

Какая команда в TI-86 соответствует команде ΔList() в TI-83?

В инструкции к TI-86 написано: Deltalst(list) Returns a list containing the differences between consecutive elements for all elements in a real or complex list (стр. 160).

Инструкцию к TI-86 (на английском http://diplodocs.ru/jim/TEXAS%20INSTRUMENTS/TI-86-_E) и другим калькуляторам можно бесплатно скачать на www.diplodocs.ru

Спасибо! Глядел-глядел и не заметил. И чего надо было так коверкать язык... Они так над каждым калькулятором постарались?

Уже три диалекта. Очуметь. Посмотрел язык для TI-89, так там еще один вариант языка. Это уже три диалекта бейсика: 83, 86 и 89. И все несовместимые. А ведь они сделали после них еще три калькулятора... наверное, придумав еще три диалекта.

HPПоэтому из зарубежных ПМК мне больше по душе HP. Они понимают необходимость совместимости, и многие программы кочуют из поколения в поколение.

Понятно в чем я ошибся. Надо HP тогда купить))))

Покупайте «Электронику МК-161», не ошибётесь. Будете с разработчиком на одном языке разговаривать — такой роскоши даже HP не предоставит. Заодно и новые «Лунолёты» переводить не придётся. ;-)

Тоже вариант. И по-лучше. Пока у меня сейчас Casio 9950 и TI-86... В общем не то купил))) Но если бы не купил, то и не узнал бы это!

Потому что TI "заточены" для обучения школьников, это их основной рынок. А там вопросы совместимости не на первом месте. Скорее наоборот, несовместимость вынуждает потребителя купить новую модель для младшего ребенка, а не использовать оставшуюся от старшего.

А как перевести выражение Δlist(Ans={25,34}) на язык TI-86?
В калькуляторе TI-86 курсор ставится на знаке = и сообщает о синтаксической ошибке.

Возможно перевод вот этого Δlist(Ans)={25,34} выражения имелся ввиду, т.к. судя по инструкциям обоих калькуляторов аргументом указанной функции может служить только список или его имя, а равенство Ans={25,34} не является допустимым аргументом. Переводом выражения Δlist(Ans)={25,34} тогда является Deltalst(Ans)={25,34}.

Если я правильно понял, то требуется найти разностный список значений списка сохранённого в ячейке памяти последнего ответа ?

PROGRAM:MOVEЯ ввел в калькулятор в обычном режиме следующую строку:

Deltalst(Ans)={25,34}

И в итоге получил ошибку "Error 10 Data Type".

Да и собственно это выражение для меня не очень понятно. Что оно делает-то?

А программа, которую я на свою голову решил перевести на язык TI-86 (с 83-го), находится тут: tibasicdev.wikidot.com.

Вот ее текст:

PROGRAM:MOVE
:4→A
:8→B
:Repeat K=21
:getKey→K
:If Ans
:Output(A,B," ")
:min(8,max(1,A+sum(ΔList(Ans={25,34→A
:min(16,max(1,B+sum(ΔList(K={24,26→B
:Output(A,Ans,"X")
:End

Думаю что будет проще разобраться с первоисточником этой проблемы.

Теперь действительно проще. У меня этого калькулятора нет, но на эмуляторе TI-86 "перевод" работает:
(символ "->" обозначает присваивание)

PROGRAM:MOVE
:4->A
:10->B
:Repeat K==21
:getKy->K
:If Ans
:Outpt(A,B," ")
:min(8,max(1,A+sum Deltalst(Ans=={25,34})))->A
:min(21,max(1,B+sum Deltalst(K=={24,26})))->B
:Outpt(A,Ans,"X")
:End

P.S. Я бы ещё в начале программы добавил :ClLCD и, возможно, после :Outpt(A,B,"X"), чтобы после очистки экрана передвигаемый значок было видно без предварительного нажатия на стрелки.

Так, а почему вы вместо одного равно = поставили там два равно ==?

Два значка равно "==" обозначают в TI-86 тест на равенство, результатом которого может быть "истина" или "ложь" (т.е. равно/неравно или 1/0).

В инструкции к TI-86 написано следующее:
(см. Chapter 20: A to Z Function and Instuction Reference, стр.291)

The == operator is used to
compare arguments, while
= is used to assign a value
or expression to a variable.

В инструкции к TI-83 написано:
(см. Appendix A: Tables and Reference Information, стр. A-35)

Equal: valueA=valueB
Returns 1 if valueA = valueB.
Returns 0 if valueAƒ ≠ valueB.
valueA and valueB can be real
or complex numbers,
expressions, lists, or matrices.

В некоторых языках программирования (не только "калькуляторных") для проверки равенства используется двойной символ равенства "==", а не "=".Это одно из отличий TI-83 от TI-86.

Без инструкции быстро и осознанно освоить TI-86 сложновато. Языки этих калькуляторов почти одинаковы, но чтобы уяснить некоторые различия в написании команд необходимо хотя бы ознакомиться с содержанием указанных выше в скобках разделов.

Можно также использовать следующий "перевод" программы:

PROGRAM:MOVE
:4->A
:10->B
:Repeat K==21
:getKy->K
:If K
:Outpt(A,B," ")
:min(8,max(1,A+sum Deltalst(K=={25,34})))->A
:min(21,max(1,B+sum Deltalst(K=={24,26})))->B
:Outpt(A,B,"X")
:End

P.S. Поправка: строка :Outpt(A,B,"X"), которую я хотел добавить в пердыдущем комментарии не требуется.

Вон в чем дело. В 83 используется =, а в 86-ом уже два ==. Забавно, однако.

Спасибо за разъяснения! Жаль, что здесь свой профиль не расписать, иначе вы могли бы и короче объяснить с учетом того, что я занимаюсь веб-программированием. А и из опыта с калькуляторами у меня только есть опыт МК-52, и то давно уже.

И без Ans программа намного понятней стала. Насколько помню в МК-52 было нечто подобное.

Верно я понял, что выражение K=={24,26} это тоже самое, что написать (K==24 or К==26)?
Хотя что-то не то выходит...
Ведь на вход функции Deltalst нужно подать по идее список. А это не список, а булево значение.
Запутанный язык какой-то.

В руководстве не смог найти описание сравнения числа со списком: number==list.

Хотя путем догадок, если {1,2,3}+10 выдает {11 12 13}, то наверное K=={24,26} выдает список {K==24, К==26}...
Так что-ли?

Список, это практически одномерный массив. Поэтому оператор сравнения К=={24,26} означает примерно K[1]==24 and K[2]==26. Возможны варианты синтаксиса в зависимости от версии.

Мои программируемые калькуляторы:
Б3-21, Б3-34, МК-61, МК-52, МК-85
CASIO: cfx-9850GB+, fx-9750G+, fx-9750GII, fx-9860G, Algebra fx-2.0, fx-5800P, fx-7400G+
HP: 50G, 48G, 35s
TI: Nspire-CAS, Voyage-200, 89Titanium
SHARP EL-9600G

А язык интернесный у него, оказывается.