Home
News
Products
     uCalc Fast Math Parser
     uCalc Language Builder
     Windows Calculator
     DOS Calculator
Downloads
Message Forums
Satisfaction Survey
FAQ
Contact
Privacy Statement
Testimonials
Purchase

Optional Arguments
 

Here is a one-line function definition using an optional argument:

ucDefineFunction "abc(x, y=10) = x + y"
MsgBox ucEval("abc(5)-abc(3,4)")

In the following example, the last two arguments of the Sum function are defined as optional. Sample #3 explains other features that the Sum function demonstrates.

Visual Basic

Private Sub Form_Load()
   ucDefineFunction _
      "Sum(Expr&,start,finish,step=1,var@=x)", _
      AddressOf ucalcSum
   ucDefineVariable "MyVar = 'z' "
   ucDefineVariable "MyExpression = '2*z^2 +10' "
End Sub

Private Sub Command1_Click()
   Expression$ = InputBox("Enter an expression",, _
                          "Sum(x^2+5, 1, 10)")
   MsgBox ucEvalStr(Expression$)
End Sub

Function ucalcSum() As Double
   Dim ExpressionPtr As Long, VariablePtr As Long
   Dim sstep As Double, Total As Double
   Dim Start As Double, Finish As Double
    
   ExpressionPtr = ucParam(1)
   Start = ucParam(2)
   Finish = ucParam(3)
   sstep = ucParam(4)
   VariablePtr = ucParam(5)
    
   For x = Start To Finish Step sstep
      ucSetVariableValue VariablePtr, x
      Total = Total + ucEvaluate(ExpressionPtr)
   Next

   ucalcSum = Total
End Function

VC++ or C++ Builder

#include <iostream>
#include "ucalc.cpp"

using namespace std;

long double ucalcSum();

int main()
{
  char Expression[80];

  ucDefineFunction(
     "Sum(Expr&,start,finish,step=1,var@=x)",
     reinterpret_cast<long>(ucalcSum));
  ucDefineVariable("MyVar = 'z' ");
  ucDefineVariable("MyExpression = '2*z^2 +10' ");

  while(1)
  {
    cout << "Enter an expression:  " << endl;
    cin.getline(Expression, 80, '\n');
    cout << "Answer: "<< ucEvalStr(Expression) << endl;
  }

  return 0;
}

long double ucalcSum()
{
  long ExpressionPtr, VariablePtr;
  long double x, sstep, Start, Finish, Total;

  ExpressionPtr = ucParam[1];
  Start = ucParam[2];
  Finish = ucParam[3];
  sstep = ucParam[4];
  VariablePtr = ucParam[5];

  Total = 0;
  x = Start;

  while (x <= Finish)
  {
    ucSetVariableValue(VariablePtr, x);
    Total = Total + ucEvaluate(ExpressionPtr);
    x = x + sstep;
  }

  return Total;
}

Delphi

procedure TForm1.FormCreate(Sender: TObject);
begin
  ucDefineFunction(
     'Sum(Expr&,start,finish,step=1,var@=x)',
     Longword( @ucalcSum ));
  ucDefineVariable('MyVar = "z" ');
  ucDefineVariable('MyExpression = "2*z^2 +10" ');
end;

procedure TForm1.Button1Click(Sender: TObject);
var
  Expression: string;
begin
  Expression := InputBox('', 'Enter an expression:',
                         'Sum(x^2+5, 1, 10)');
  Edit1.Text := ucEvalStr(Expression);
end;

function ucalcSum: Extended;
var
  ExpressionPtr, VariablePtr: Longint;
  x, sstep, Start, Finish, Total: Extended;
begin
  ExpressionPtr := Trunc(ucParam[1]);
  Start := ucParam[2];
  Finish := ucParam[3];
  sstep := ucParam[4];
  VariablePtr := Trunc(ucParam[5]);

  Total := 0;
  x := Start;

  while x <= Finish do
  begin
    ucSetVariableValue(VariablePtr, x);
    Total := Total + ucEvaluate(ExpressionPtr);
    x := x + sstep;
  end;

  ucalcSum := Total;
end;

 


 

Download fastmath.zip (~145K)






|Home| |News| |Products| | uCalc Fast Math Parser| | uCalc Language Builder| | Windows Calculator| | DOS Calculator| |Downloads| |Message Forums| |Satisfaction Survey| |FAQ| |Contact| |Privacy Statement| |Testimonials| |Purchase|


Copyright © 2006 by Daniel Corbier