2015-01-05 2 views
1

Я только начал пытаться разработать газовый кодекс для химии сегодня. Я не совсем понимаю синтаксис TI basic. Он будет работать после первого оператора If. Даже если введенные числа относятся только к первому оператору if, он все равно будет иметь синтаксическую ошибку сразу же после вычисления ответа для первого оператора. Благодаря!Ошибка основного синтаксиса TI в случае утверждений

Input "Temp(k):",T 
Input "Pressure(atm):",P 
Input "Volume(L):",V 
Input "mol:",N 

If T=0 
Then 
(P*V)/(N*0.0821)→T 
Disp "Temp(k):",T 

If P→0 
Then 
(N*0.0821*T)/V→P 
Disp "Pressure(atm)":,P 


If V→0 
Then 
(N*0.0821*T)/P→V 
Disp "Volume(L):",V 


If N→0 
Then 
(P*V)/(0.0821*T)→N 
Disp "mol:",N 
+0

'Disp "Давление (атм)" :, P' должно быть' Disp "Давление (атм):", P' – Timtech

ответ

2
If P→0 

?

Я думаю, что это должно быть If P=0 (и то же, что и для следующих двух if утверждений).

Оператор является назначением, так как в (P*V)/(N*0.0821)→T помещает значение (P*V)/(N*0.0821) в T. С другой стороны, = является оператором сравнения.

Кроме того, я подумал (хотя это немного растягивает мою память), что then вариант if должен был иметь end.

0

Помимо ответа paxdiablo, я считаю, что Then s должен быть на той же линии, что и If с и каждый If нужен сопровождающий EndIf заявление, чтобы закончить блок, он должен выполнить.

Как так:

If T=0 Then 
(P*V)/(N*0.0821)→T 
Disp "Temp(k):",T 
EndIf 

If P=0 Then 
(N*0.0821*T)/V→P 
Disp "Pressure(atm)":,P 
EndIf 

If V=0 Then 
(N*0.0821*T)/P→V 
Disp "Volume(L):",V 
EndIf 

If N=0 Then 
(P*V)/(0.0821*T)→N 
Disp "mol:",N 
EndIf 
+0

Примечание: только для 68k калькуляторы (т.е. ТИ-89) – user3932000

1
  1. Это должно быть P=0, не P→0. (Хотя это может быть опечатка)

  2. If заявления должны сопровождаться командой закрытия End, который обозначает конец If блока.

1

Поскольку вы используете TI-83/84 BASIC, вот правильный код для вас.

"Temp(k):→Str1 
"Pressure(atm):→Str2 
"Volume(L):→Str3 
Input Str1,T 
Input Str2,P 
Input Str3,V 
Input "mol:",N 
If not(T 
Then 
PV/(N.0821→T 
Disp Str1,T 
End 
If not(P 
Then 
N.0821T/V→P 
Disp Str2,P 
End 
If not(V 
Then 
N.0821T/P→V 
Disp Str3,V 
End 
If not(N 
Then 
PV/(.0821T→N 
Disp "mol:",N 
End 
2

Проблема в том, что вы путаете оператор присваивания с равным оператором. Оператор равенства, который является знаком равенства, который показывает равенство с оператором присваивания (->), сохраняет значение в левой части в переменной справа. Вы хотели показать равенство, поэтому вы должны были использовать = вместо -->.

Кроме того, если у вас есть несколько операций в блоке оператора if-then, вы должны закрыть его с помощью операции «END».

0

Единственное, что нужно добавить, это заявление End в конце. Также необходимо изменить оператор If.

If T≠0 
Then 
(P*V)/(N*0.0821)→T 
Disp "Temp(k):",T 
End