Дополнительные возможности программы TxCalc

Во 2-ой версии программы введены достаточно мощные операторы, которые переводят её на новый уровень. От простой цепочки вычислений, которые остались в неизмененном виде, сделан переход в сторону полноценного программирования. Хорошо известно, что любую блок-схему вычислений можно представить структурной блок-схемой, т.е. такой, которая реализуется с помощью четырех элементарных блок-схем: цепочкой (a), выбором (b) и двумя блок-схемами итераций (c, d):

На самом деле в теореме структурирования, доказанной в 1966 году итальянскими математиками Коррадо Бём (Corrado Bohm) и Джузеппе Якопини (Guiseppe Jacopini), утверждается, что достаточно только двух элементарных блок-схем - цепочки и цикла с предусловием.

Цепочка в программе была реализована изначально, оставалось добавить "совсем немного". В настоящей версии дополнительно прелагаются следущие конструкции:

Оператор выбора

sel(<блок1>, <выражение>, <блок2>)

Оператор обобщенного цикла

loop(<блок1>, <выражение>, <блок2>)

Блок

[<имя блока> <тело блока>]

В предыдущих версиях была введена конструкция:

Вызов внешней подпрограммы

exec(<имя файла>)

ПРИМЕР

{Вычисление определенного интеграла с помощью формулы Симпсона
I=(b-a)/(3*n) *(y[0]/2+y[2n]/2+y[2]+y[4]+..+y[2*(n-1)+] +2*(y[1]+y[3]+..+y[2*n-1]))}

[IA x=x+d func I=I+2*y x=x+d func I=I+y k=k+1][IB]
[simp_int I=0 d=(b-a)/(2*n) x=a func I=y/2 x=b func I=I-y/2 x=a k=0 loop(IA,n-k,IB) I=I*(b-a)/(3*n)]

{Теперь подставляем функцию, задаем пределы интегрирования (a,b) и число отрезков n. Затем вычисляем:}

[func y=1/(1+x^2)] a=0 b=1 n=12 simp_int I=?10

Результат вычислений

 Вычисление определенного интеграла с помощью формулы Симпсона
I=(b-a)/(3*n) *(y[0]/2+y[2n]/2+y[2]+y[4]+..+y[2*(n-1)+] +2*(y[1]+y[3]+..+y[2*n-1])) 

[IA x=x+d func I=I+2*y x=x+d func I=I+y k=k+1][IB]
[simp_int I=0 d=(b-a)/(2*n) x=a func I=y/2 x=b func I=I-y/2 x=a k=0 loop(IA,n-k,IB) I=I*(b-a)/(3*n)]

 Теперь подставляем функцию, задаем пределы интегрирования (a,b) и число отрезков n. Затем вычисляем: 

[func y=1/(1+x^2)] a=0 b=1 n=12 simp_int I=0.7853981633
 
X