Difference between revisions of "83Plus:Basic:If"

From WikiTI
Jump to: navigation, search
 
(Synopsis: + If...Then...Else...End)
Line 12: Line 12:
 
  End
 
  End
  
If the specified condition evaluates to a real number equal to 0, ''command'' is skipped. If the condition evalutes to a real number not equal to 0, ''command'' is executed. ''command'' may be a single command, or it can be the command '''Then''', in which case all commands until a corresponding '''End''' token are part of ''command''.
+
If ''condition''
 +
Then
 +
''commands''
 +
Else
 +
''commands''
 +
End
 +
 
 +
If the specified condition evaluates to a real number equal to 0, ''command'' is skipped. If the condition evalutes to a real number not equal to 0, ''command'' is executed. ''command'' may be a single command, or it can be the command '''Then''', in which case all commands until a corresponding '''End''' token are part of ''command''. When using '''Else''', one must also use '''Then''' and '''End'''.
  
 
== Comments ==
 
== Comments ==

Revision as of 11:44, 19 July 2005

Synopsis

Token Size: 1 byte

Syntax:

If condition
command
If condition
Then
commands
End
If condition
Then
commands
Else
commands
End

If the specified condition evaluates to a real number equal to 0, command is skipped. If the condition evalutes to a real number not equal to 0, command is executed. command may be a single command, or it can be the command Then, in which case all commands until a corresponding End token are part of command. When using Else, one must also use Then and End.

Comments

Repeated use of a Goto statement within an If:Then statement will cause an increase in memory allocation, leading to program slowdowns and eventually a MEMORY error. For example, the following code will eventually cause an error:

0->X ;-> == STO operator
Lbl 0
If 1
Then
X+1->X
Disp X
Goto 0
End

If you must use a Goto within an If:Then statement, it is possible to trick the 83+ into thinking the block ended by jumping to an otherwise unused label that uses an End statement followed by a jump to the proper label. For example, the above program could be rewritten like so:

0->X
Lbl 0
If 1
Then
X+1->X
Disp X
Goto 2
End
Return

Lbl 2
End
Goto 0

This would avoid the problem by causing the 83+ to terminate the If:Then block prior to jumping.

Since TI-BASIC has no equivalent of what real BASIC calls Select Case, multiple Ifs must be used in cases where a variable needs to be checked against multiple values.

Examples

A particular example is a keyloop. Assuming a keycode was stored in K, a sequence of If statements would compare K to the corresponding integer key value.

If K=21
Disp "2ND"
If K=31
Disp "ALPHA"
If K=22
Disp "MODE"
If K=32
Disp "X,T,θ,n" ;θ == Alpha+0. To get the italic n, switch to Seq mode and press the X,T,θ,n key.