Programming on the TI-84, Nspire and Nspire CAS

The TI-Nspire comes with a great deal of programming tools, but after many updates, it is still crippled by the lack of an input statement.

Without input, what you have is a collection of functions. You have to run and re-run functions with new parameters each time to enter a list.

Of course they provide their spreadsheet, which requires the user to tab to a new cell after each input. Then to go to the first cell of the new row, you need to arrow down then left for several arrow presses until you return to the first cell of the row below. Once all your data is input, TI says you are given two choices: either run your function on your spreadsheet (the output going into a new column), or run your program in calculator mode, using the variables from your spreadsheet as parameters.

Running a TI-84 with an input command, I input data into multiple lists, pressing only the enter key until the end of the list (list length was the first data entered). These lists ended up in the table, namely L1 to L6. To correct my input, I could always return to the table and correct  anything I needed. If the list consisted of multiple items for each row in a table, that was no problem. The program I wrote took care of the tabulation and did the calculations on columns, storing the output in new columns, as the code below illustrates.

I can only see the Nspire becoming most useful after the raw data is fully tabulated. I can see how formerly complex calculations and metadata generation becomes greatly simplified once the table is in place, using the Nspire. I have appreciated how cutting and pasting, and the invocation of spreadsheet-based functions greatly resemble that of Microsoft Excel. Before we appreciate the math power it holds, it is comparatively a slog, with having to navigate back and forth across a spreadsheet.
__________________________
This is a TI-84 Program to input student marks based on 4 categories and calculate statistics on class evaluations. Indentation is for presentation only. You cannot indent code in the TI-84.

VARIABLE DICTIONARY
K: Knowledge out of            A: Application out of
T: Thinking out of             C: Communication out of
N: # of tests                  I: Counts test #
L: Knowledge mark              B: Application mark
U: Thinking mark               D: Communication mark
Z: Used in calculating student's percentage
Y: Amount of mark accounted for so far
L1, L2, L3, ... L6
   ... arrays which hold raw scores or mid-stage calculations,
   each array element accessed through counter I. These are the
   lists stored and tabulated as they appear on the TI-84.

PURPOSE:
This program attempts to convert the 4-mark grade awarded to
students to a percentage overall grade. While many teachers
consider this a "no-no", students appreciate it, and have
a better feel for what the mark means.

If the user chooses not to enter a certain category, then s/he
should enter "0" when prompted at the beginning for what that
category is out of. For example, if the teacher chooses to omit
the category "Application", then s/he should enter "0" in response
to

     AP OUT OF? 0

The user is never prompted for an application mark again.

This program allows for missing sections. Up to 3 of the four
categories can be missing and an adequate percentage will be
calculated, assuming:
     Knowledge 30%
     Application 30%
     Thinking 20%
     Communication 20%
PROGRAM: MARKS

Clear Entries
ClrAllLists
Input "NO OF TESTS? ", N
Input "KN OUT OF? ", K
Input "AP OUT OF? ", A
Input "TH OUT OF? ", T
Input "COMM OUT OF? ", C
For(I, 1, N, 1)
   0->L
   0->B
   0->U
   0->D
   0->Y
   0->Z
   If (K>0)
      Then
         Input "K? ", L
         (L/K)*.3->L1(I)
         L1(I)->Z
         .3->Y
   End
   If (A>0)
      Then
         Input "A? ", B
         (B/A)*.3->L2(I)
         Z+L2(I)->Z
         Y+.3->Y
   End
   If (T>0)
      Then
         Input "T? ", U
         (U/T)*.2->L3(I)
         Z+L3(I)->Z
         Y+.2->Y
   End
   If (C>0)
      Then
         Input "C? ", D
         (D/C)*.2->L4(I)
         Z+L4(I)->Z
         Y+.2->Y
   End
   Disp "MARK: ", (Z/Y)*100
   (Z/Y)->L5(I)
End
(L5*100)->L6
1-Var Stats L6

UPDATE: I had to type in the above code by hand, since no Windows-based editor is available for this coding, and there is no editable file for this code that I am aware of, except through the calculator itself. In the process, I spotted some errors, which have now been corrected.  In the old code, “Y” appeared to be counting a possible total of 1.2 instead of 1. Also, the Communication mark was based on 30% instead of 20%.  Since I have no serious intention to maintain the code on this blog entry, send me a comment if you have any other difficulties with this code.

~~~~~~~~~~~~~~~~~~~~~~
One of the serious disadvantages of programming the TI-84 is the utter lack of syntax structuring for the purposes of readability, such as indentation. Notice also that the IF statement takes up two lines. THEN seems to be treated as though it marks the beginning of a statement block, ended by END.

But, I suppose in the service of reducing the keyword count, END seems to end any statement block, such as a FOR loop. There is also another problem with not being able to move backward to correct data until after the program has finished execution.

While readability was an issue with the TI-84, I am still willing to live with that for the want of an INPUT statement in the NSPIRE. This code allows for efficient keying in of long lists of data.

Visits: 111