2015-02-26 3 views
5

На языке программирования TI-BASIC (в частности, TI-84 +), как вы создаете формы ввода, такие как те, которые включены в приложения по умолчанию на TI-84 +.Как создать формы ввода TI-BASIC (TI-84 +)?

изображения включено здесь показан пример того, что я пытаюсь создать: меню, которое вы можете пролистать и ввод нескольких переменных свободно перед выполнением функции

Кроме того, можно сделать это меню динамически обновляющимся при вводе переменных?

ответ

3

На языке программирования TI-BASIC (в частности, TI-84 +), как вы создаете формы ввода, такие как те, которые включены в приложения по умолчанию на TI-84 +.

Есть много способов, чтобы задать для входа в программу:

  • Prompt: Спрашивает для ввода и сохраняет его в переменной. Например, Prompt A. Простейший способ попросить ввода, но не очень визуально привлекателен.

  • Input: Как и команда Prompt, за исключением того, что теперь вы можете включить текст внутри ввода. Например, Input "What is your name?",A.

  • Menu(: множественный выбор ввода, и каждый выбор подключен к маркеру Lbl где-то еще в скрипте. Подобно экрану ошибок с вариантами quit/goto, которые вы, вероятно, видели. Например, Menu("Are you a boy or a girl?","Boy",B,"Girl",G).

  • getKey: Проверяет, нажата ли определенная клавиша, и выдает True (1), если эта клавиша нажата. Например, getKey 105. См. here, для которого соответствуют номера каждой клавиши.

изображения включено здесь показан пример того, что я пытаюсь создать: меню, которое вы можете пролистать и ввод несколько переменных свободно перед выполнением функции http://imgur.com/ulthDRV

I» Я боюсь, что это невозможно в программах. Вы можете либо вводить несколько входов, либо вам может быть интересно изучить приложения.

Кроме того, можно ли это меню динамически обновлять при вводе переменных?

Если вы говорите о тексте в верхней части скриншота, да, вы можете; просто поместите команду Disp или что-то после каждой строки ввода, чтобы она непрерывно перезаписывала текст выше с новым текстом после ввода переменной.

+0

Немного разочаровывает, но спасибо за помощь, особенно с третьим пунктом. – Psifrost

+1

'Prompt' обычно используется при вводе нескольких входов в разные переменные, потому что его можно использовать как' Prompt A, B, C', тогда как 'Input' не может. – Timtech

+0

@Timtech Я предпочитаю «Input» A: «, A'' Input» B: «, B'' Input« C: », C' только потому, что мне нравятся мои дисплеи все красиво и красиво. – user3932000

5

Вы установили довольно высокий заказ для заполнения TI-Basic. user3932000 верен; нет встроенной функции для создания входной формы типа, который вы запрашиваете.

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

ClrHome 
a+bi 
Output(1,1," QUADRATIC 
Output(2,1," AX²+BX+C 
Output(3,1,"ZEROS: 
Output(6,1,"A= 
Output(7,1,"B= 
Output(8,1,"C= 

DelVar YDelVar D 
"    →Str1 

While Y≠105 
getKey→Y 

If Ans 
Then 
Output(X,4,Str1 
Output(3,7,Str1+Str1+Str1+" 
End 

X+(Ans=34)-(Ans=25 
If Ans<6:8 
If Ans>8:6 
Ans→X 

Output(Ans,16,"◄ 

D(Y≠45→D 

If Y=25 or Y=34 
sum({A,B,C}(X={6,7,8→D 

If Y=104:⁻D→D 

10not(Y)+Y(102≠Y)-13int(Y/13(2>abs(5-abs(5-abs(Y-83 
If Ans≤9 
D10+Ans-2Ans(D<0→D 

If X=6:D→A 
If X=7:D→B 
If X=8:D→C 

If A 
Then 
2ˉ¹Aˉ¹(⁻B+{1,⁻1}√(B²-4AC 
Else 
If B 
Then 
⁻C/B 
Else 
If C 
Then 
"No Zeros 
Else 
"All Numbers 
End 
End 
End 

Output(3,7,Ans 
Output(6,3,A 
Output(7,3,B 
Output(8,3,C 
End 
ClrHome 
Ans 

Это GIF того, что он делает для вас.

С немного больше работы. Этот код можно использовать на экране «График» вместо главного экрана, предоставляя больше возможностей с точки зрения макета и дизайна.

+2

Отлично! +10, кстати, вы, кажется, хорошо оптимизируете, но вы можете сохранить байт '16 → X: 0 → D' может быть' Delvar D6 → X' также длинными пробелами, которые вы можете иметь в начале ' → Str1', а затем 'Output (X, 4, Str1: Output (3,7, Str1 + Str1 + Str1 +" "' – Timtech

+0

@Timtech Хороший улов с улучшением 'Delvar'. Что касается улучшения' Str1', он получил меня интересует стоимость конкатенации в TI-basic. Если она будет постоянной, не будет проблемы, но если она будет работать в линейном времени, это может повлиять на скорость. –

+0

Вы правы, я думал то же самое. Кажется, вы не запускаете этот код, если не нажата клавиша Enter, поэтому он не должен влиять на скорость. – Timtech