Как остановить кнопку включения от прерывания программы в TI-BASIC

Поэтому я сделал программу на TI-BASIC, которая имитирует главный экран калькулятора, но намеренно дает неправильный ответ на математические уравнения. Это код:

:ClrHome
:Lbl 1
:Input "",A
:Disp rand
:Goto 1

Он отлично работает и все такое, и с его помощью весело обманывать друзей, но я хотел бы сделать его более изощренным. Например:
1) Как мне обойти автоматическое прерывание работы программы при нажатии кнопки "ВКЛ" и
2) Есть ли другие способы лучше имитировать домашний экран (например, когда кто-то нажимает операцию без номера перед ним автоматически подделывается переменная «ANS»), и как я могу написать их в программе.

Заранее спасибо.


person Private Caller    schedule 05.07.2015    source источник
comment
1) Нет возможности предотвратить поломку программы ПО на чистом TI-BASIC. Вам нужно будет использовать программу сборки, которую не так просто запрограммировать.   -  person lirtosiast    schedule 05.07.2015
comment
2) В TI-BASIC нет практического способа вставить Ans перед операцией.   -  person lirtosiast    schedule 05.07.2015
comment
Как насчет полусложной операции getkey   -  person Moshe Goldberg    schedule 05.07.2015
comment
@ThomasKwa, есть ли способ найти индекс строки? Если это так, вы можете использовать getkey, если перед операцией ничего нет, и disp 'ANS'   -  person Moshe Goldberg    schedule 05.07.2015
comment
@JediPythonClone Есть inString(, но это очень хакерски — и это не сработает, потому что Ans обычно отображается сразу после ввода операции, а не после нажатия ENTER. Поскольку вы не можете одновременно выполнять getKey и Input, вы нужно будет отображать каждый токен, введенный вручную.   -  person lirtosiast    schedule 05.07.2015
comment
@ThomasKwa вначале вы можете использовать getkey для перехвата первой нажатой клавиши, и если это оперант, disp ANS перед ним   -  person Moshe Goldberg    schedule 05.07.2015
comment
@JediPythonClone Да, но тогда вы не можете использовать Input для ввода строки.   -  person lirtosiast    schedule 05.07.2015
comment
@ThomasKwa единственная цель ввода - подделать домашний экран, вы можете сделать это с помощью getkey, нет?   -  person Private Caller    schedule 05.07.2015
comment
@PrivateCaller Вы можете использовать getKey, но вам нужно будет отслеживать целую кучу вещей вручную: все различные токены, которые можно ввести, клавиши со стрелками, отображение меню, таких как MATH, 2-й и ALPHA-клавиши и т. д. Это слишком много дел на TI-BASIC, и даже если бы вы могли, это был бы неверный путь. Сборка - единственный практичный способ.   -  person lirtosiast    schedule 05.07.2015
comment
@ThomasKwa да, но вся цель - шутка над ti-basic, поэтому вы не можете использовать сборку   -  person Private Caller    schedule 05.07.2015
comment
@PrivateCaller Тогда ваш запрос практически невыполним.   -  person lirtosiast    schedule 05.07.2015
comment
@Правда, но на уроке математики мне теперь есть о чем подумать. в конце концов я что-нибудь придумаю   -  person Private Caller    schedule 05.07.2015
comment
Я использую эту же программу, это весело!   -  person Douglas - 15 year old Pythoner    schedule 11.01.2016


Ответы (3)


Хорошо, чтобы избежать синтаксической ошибки

например, когда кто-то нажимает операцию без цифры перед ней

Вы можете сохранить ввод как STR1 вместо A

person Moshe Goldberg    schedule 05.07.2015

Способ 1:

(может быть или не быть ответом на ваш вопрос)

На следующем веб-сайте показано, как вы можете использовать SortA, чтобы кнопка ON не работала:

http://tibasicdev.wikidot.com/bunny-virus

Использование SortA в списке из 999 элементов на какое-то время заставит калькулятор работать, а кнопка «вкл» не будет работать. Код на веб-сайте можно использовать для шуток, но не используйте его для чего-то деструктивного, например, для удаления чужого кода.

Способ 2:

(вероятно, отвечая на ваш вопрос)

Если вы хотите отключить кнопку ON, когда калькулятор действительно что-то делает, попробуйте установить на свой калькулятор следующую программу и обязательно прочтите файл README:

http://www.ticalc.org/archives/files/fileinfo/330/33039.html

person Douglas - 15 year old Pythoner    schedule 11.01.2016
comment
для метода 2, как мне объединить его с моей базовой программой и при этом продолжать зацикливать программу? - person Moshe Goldberg; 04.11.2016

Нет возможности отключить прерывание. Это делается для того, чтобы любители не загоняли калькулятор в бесконечный цикл.

Что касается Ans, то, что я сделал (хотя и не очень реалистично), сохранил входные данные в str1, а затем использовал

sub(str1,1,1) -> str1
if str2 = "+" or str2 = "/" or str2 = "*" or str2 = "-"
then
expr(str1)
Else
Disp "Cannot begin function with an operation"
end

expr() можно найти в той же области, что и струны.
После выполнения этой операции она теперь обрабатывается как число, а не как строка, поэтому вы больше не сможете использовать строковые команды.

Я не использовал TIBASIC в течение длительного времени, поэтому, если есть синтаксическая ошибка в expr(str1) или она не отображается, просто сохраните ее в переменной, а затем используйте Disp <variable> для отображения ответа.

Также я обнаружил, что почти все функции TIBASIC можно найти здесь.

person Confederate 3320    schedule 03.10.2015