The basic idea behind Calculations part is the ability to write and store a number of codes (or algorithms, or computations) and then use them to do calculations. To do this we create and store two kind of items in two separate lists.

**Expression items** are stored in a list named Expressions List.
Expression items have the task to store the knowledge of how to do a
calculation. This knowledge is "expressed" with the use of a special
language. When an Expression is stored CalcIt analyses it and finds all the
variables (or symbolic data) used in it. This is the main job of an Expression
item. These variables are the Expression's parameters.

**Calculations items** are stored in a list named Calculation list.
Calculation items are based in Expression items and have the task to execute
Expressions code and return their result. Calculation item asks from the user to
enter the values for the parameters which an Expression item provides to it.

Expressions List and Calculations List store items. The user has the ability to manage them: That is to create new items, modify existed or delete whatever not needed any more.

Calculations list can contain many Calculations with no relation to each other. But it is possible a number of calculations to be related, and one to be dependent of the result of another in the list. One
Calculation it is possible to have, as a value in its parameters, a reference to the result of another
Calculation. Because every created Calculation has a unique name in the list, this reference can be done with the use of this name.
*In many cases a group of related Calculations can also be considered as a logical entirety and every calculation is a visual step of this entirety.*

So it is possible to store, in Calculations list, a group of cooperative
Calculations that serve a specific purpose. We don't want to put another group of
Calculations for a different purpose together. So there is the need to maintain a number of completely different
Calculation lists. To control all these different lists there is another helpful list in CalcIt:
** Problems list**. Every element in this
list points in a completely different Calculations list. Through Problems list every
Calculations list is named appropriately from its purpose by the user, and gives the user the ability to create an arbitrary number of such lists or to delete some of them if doesn't needs them any more.

The mean to "express" the knowledge of a kind of calculation is the CalcIt Language. Its target is the simple user with High school knowledge of how we can "express" the way to calculate something (expression) and also the advanced user with programming skills. The later it is possible to write "complete" programs and use CalcIt standard functions (like trigonometry functions) or expand the standard set writing his/her own functions. A fourth list is maintained (User Defined Functions List) where the advanced user can add his/her functions using the full strength of CalcIt Language.

Calculations list has three columns. One is the name of the calculation. It is user defined and modified at any time. Permits reference to the result of this Calculation item. The second is the calculated value, the result after the Calculation is executed. The third is a description of the Calculation item. The name of the calculation already serves as a kind of description but this column permits a more specific and detailed description and of course is defined by the user and modified at any time. Also can be changed with specific commands and be dependent by the result of the calculation. Changing the values the result is changed also and the description column can be used to comment it adaptively. Generally any calculation object has only one result and this is usually a number. The description column is also a way to output additional result info if one numeric value is not enough. I think the advanced user can find many uses to this column.

Calculations list is the place to store Calculations. To enter values for
Calculation's parameters/variables we pick a calculation with mouse and activate a
special window where we enter values.
* Actually every such window can be considered as a separate calculator.* It is possible to hide any other part of the program and keep one such window on the screen changing all the time the values and recalculating again
and again.