Forcal V8.0 使用说明

 
欢迎访问 Forcal数学软件 主站 副站

Forcal V8.0 使用说明

欢迎使用 FORCAL 开发使用说明 !
借助本说明可以了解 FORCAL V8.0 的全部详细信息。
   

目 录

关于Forcal的声明
 

1、任何人在使用或传播Forcal时,默认完全同意该声明。
2、任何人在传播Forcal时,必须在软件的显著位置包含本声明,并保证本声明的完整性(包括本声明中引用的网址)。
3、免责声明:尽管作者对Forcal32.dll作了极为严格的测试,但仍不能保证没有丝毫错误,由于这些错误或用户判断错误造成的任何后果,本人皆不承担任何法律责任,不支付任何直接和间接的经济赔偿。如果您使用本软件或注册本软件,就默认认同了该“免责声明(disclaimer)”。特此声明。
4、您可以自由使用和传播Forcal32.dll而不受任何限制,但您不能对Forcal32.dll进行仿制、反汇编或逆向工程,或对Forcal32.dll作其他任何形式的更改。
5、作者仅对Forcal32.dll拥有全部版权,由Forcal32.dll支持的实用程序的版权归实用程序的开发者所有。
6、作者仅对涉及Forcal(包括Forcal软件本身及相关资料)的商业性行为收费。注册费会根据情况进行调整,请以注册站或
作者网站公布的最新费用为准。
7、商业软件(包括共享软件)在使用Forcal时须支付费用,以年费形式缴纳。使用Forcal的年费为1套商业软件的费用,若Forcal在该商业软件中所起的作用较小,年费可少于1套商业软件的费用,但最低不少于20元/年(暂定)。若支付Forcal的年费少于1套商业软件的费用,须双方协商后确定,否则默认为1套商业软件的费用。自商业软件开始销售起三个月内,该商业软件的所有者(公司或个人)向Forcal软件的作者缴纳该费用,以后每隔12个月缴纳一次费用,直至该商业软件终止销售。
8、盈利性网站使用Forcal时须支付年费,暂定20元/年。
9、对于以上未提及的、或虽提及但未明确说明的涉及Forcal的商业性行为,行为人应与Forcal作者共同商定所支付的费用,若意见未达成一致,行为人应终止使用Forcal的商业性行为。
10、向Forcal作者支付费用时,可直接支付给作者本人(支付方式见
作者网站),也可以通过网路中国共享软件注册中心(www.softreg.com.cn)天空软件站-共享软件注册中心(Shareware.skycn.com)华军软件商城-共享软件注册中心(www.pcsoft.com.cn)进行注册。注册Forcal之后,可以获得更好的技术支持和服务。
11、使用Forcal的共享软件作者或网站站长在创业初期,若未盈利,可免交费用,但须以邮件或其他方式与作者联系,说明情况。
12、用户设计商业性Forcal扩展动态库(或其他类型的Forcal扩展模块,如工程计算模块、数据库支持模块等)时可免交费用,但须以邮件或其他方式与作者联系,取得Forcal作者的认可。
13、为促进本软件发展,最终用户(非商业性用户)使用Forcal时,可在自愿基础上向Forcal作者提供赞助,作者在此表示感谢!您的赞助将在最大程度上鼓励作者作出更多、更好的软件供大家使用,从而促进国产软件事业的发展。同时感谢以任何形式宣传Forcal的用户(例如向朋友介绍、在论坛发帖、以各种形式发布关于介绍Forcal的文章等)!
14、最终用户(非商业性用户)可永久免费使用Forcal!
15、任何人不能将Forcal32.dll用于任何非法用途。
16、本软件受版权法和国际条约保护。任何人在使用和传播Forcal32.dll时若违反以上条款,将在法律许可的范围内受到最大可能的起诉。

简介
 
通常,使用各种高级语言如C/C++、VB、delphi、FORTRAN等设计的程序,不能对源代码进行动态编译,Forcal可为所有这些应用程序增加对字符串源代码的动态编译功能。Forcal可用于各类数学软件的设计,也可用作报表处理、web、组态软件、游戏等的脚本,具有很高的执行效率。
Forcal32.dll是Forcal的32位ANSI版本,是一个对ANSI字符型表达式进行编译计算的动态库。表达式中可以使用的运算符有+、-、*、/、^、>、>=、<、<=、==、!=、&、|、!、++、--等等,Forcal具有数值计算、逻辑运算、关系运算、字符数据处理、流程控制、函数调用等许多的可编程功能。
Forcal用键树保存和检索数据信息,可以用Forcal保存和检索任意类型的数据,存储效率高,且具有很高的查找效率。
Forcal有许多内置的基本函数(一级函数和二级函数),不过可以使用(C/C++)、Delphi、FORTRAN等编译器方便地扩充这些基本函数(二级函数),你可以让这些函数完成不同凡响的功能。
Forcal支持整数、实数和复数三种类型的表达式,可以使用这些表达式在Forcal中设计自定义的函数。
Forcal在调用扩充的或自定义的函数时,就象调用系统内置的函数一样,没有任何分别。
Forcal对所有的函数都支持递归调用,不管这些函数是系统内置的,扩充的,还是自定义的。
Forcal在调用函数时,既支持传值调用,也支持传址调用(引用调用),当采用后一种方式时,可以从函数返回更多的值。
Forcal对代码进行尽可能的优化,因而运行速度也非常地出色,一级函数的计算速度约为(C/C++)或FORTRAN速度的50%左右,二级函数的速度稍有降低。
Forcal编译系统支持模块化编译,对设计复杂的软件项目很有帮助。
Forcal编译系统可以对编译时出错的位置进行准确定位,排除错误非常方便。
Forcal用Win32标准函数调用方式(stdcall调用协议)输出了动态库函数,可供C/C++、VB、delphi、FORTRAN等程序使用。
很容易对Forcal进行功能扩展, Forcal扩展动态库中仅有一个输出函数 ForcalDll(...),设计和应用都很方便。可用C/C++、delphi、FORTRAN等语言设计Forcal扩展动态库。

关于Forcal用户
Forcal用户有软件用户和编程用户两种。软件用户指使用由Forcal支持的软件的用户;编程用户指使用Forcal编程的用户。若不特别说明,Forcal用户一般指Forcal的软件用户。


Forcal用户指南

从软件使用者的角度介绍Forcal的功能和用法。
所有源代码均可通过测试程序 ForcalTest.exe 进行演示。

Forcal速成教程
 
本文是为有编程经验的朋友准备的,使他们用几个小时甚至更短的时间,能够迅速地掌握Forcal。阅读本文时需要演示程序OpenFc的支持,可以从天空软件站华军软件园或者作者网站下载到该程序。


Forcal编程指南

介绍如何使用Forcal进行软件开发。

Forcal扩展动态库
介绍如何对Forcal进行功能扩展。Forcal扩展动态库中仅有一个输出函数 ForcalDll(...),设计和应用都很方便。可用C/C++、delphi、FORTRAN等语言设计Forcal扩展动态库。

Forcal数据扩展动态库FcData
 
该库对Forcal的数据类型进行了扩展。基本数据类型包括简单数据和数组,可以自定义类。通过FcData32.dll的输出函数接口,可以向FcData添加任意复杂的数据类型。基本操作对象是FcData数据指针。

数据存储和检索
 
数据存储和检索是Forcal的另一特色。可以使用Forcal保存任意类型的数据,且具有很高的查找效率。
相关函数请参考
Forcal编程指南,例子请参考源程序ForcalData.cpp(在文件夹“ForcalData”中)和头文件Forcal32.h。

演示程序及源代码
一些使用Forcal进行计算的例子,演示Forcal的功能和用法。

循序渐进Forcal例程
 
从简单到复杂的一些使用Forcal编程的例子。

FORCAL与C/C++、MATLAB、Python、Lua等各种语言的速度比较
 
很多人反对在各种编程语言之间进行比较,特别是单纯的运算速度比较,从某种意义上说,我也赞成这样的观点。但一个不容置疑的事实是,任何人在选择使用一种语言时,都进行了各种比较。确实,有比较才有选择。多一点了解,就多一种选择。当然,仅比较运算速度,是非常片面的,特别是仅仅选择了一些程序片段做这种比较。如果有人对这些比较有异议,也欢迎畅所欲言。
要演示本文的某些例子,需要下载作者的另一个程序OpenFC V5.0,该程序全面演示了Forcal的应用。可以从作者网站、天空软件站、华军软件园等多家站点下载到该程序。

Forcal中的对象、函数和模块
 
Forcal的核心库Forcal32.dll中没有类和对象的概念,但Forcal32.dll对功能扩展提供了很好的支持,利用Forcal32.dll本身提供的编程功能和Forcal扩展动态库FcData及MForcal,很容易地构造出类及对象的概念。由于动态编译的特点,Forcal完全可以看作是面向对象的。
要全面理解和演示本文的例子,需要下载作者的另外两个程序MForcal和OpenFC,MForcal可对Forcal源代码进行模块化编译,OpenFC全面演示了Forcal的应用。可以从作者网站、天空软件站、华军软件园等多家站点下载到这两个程序。

如何在Forcal中添加对象
 

开发者在软件中添加一些对象,然后通过脚本操作这些对象,这是许多程序员的梦想。像Matlab、VBScript、JScript、Lua、Python等脚本要实现这样的功能,好像是高级程序员才能完成的工作,甚至一些脚本根本就不支持此功能。我对这些脚本知之甚少,胡言乱语的依据是通过网上的资料,不当之处请指正。
在Forcal中添加对象,然后通过Forcal脚本操作这些对象,是很容易的一件事。看完本文后你可能忍不住要尝试一番,只要你用过像C/C++、Delphi等具有指针的语言。你不需要是一个资深的程序员,一个普通的编程者即可。本文将展示Forcal的强大的可扩充性和易扩充性,你大可不必被此句所吓倒,因为这是很容易实现的。


Forcal运行要求
 
Forcal32.dll V8.0 用VS 2008编译生成,动态库版本需要MSVC运行库的支持,静态库版本不需要。软件包中提供了Forcal的两种版本。Forcal动态库版本文件小于100K,静态库版本约200K~300K。 使用Forcal动态库时若程序不能正常运行,需要用户自行安装所需的MSVC运行库,安装方法从网上可以查到,本软件包中不再提供。强烈建议使用Forcal的动态库版本。
由于VS 2008的编译机制所限制,Forcal32.dll V8.0不能在Windows98中运行。

从Forcal V7.0进行升级
 
与Forcal V7.0相比,Forcal V8.0的性能有了很大提升,使用方法也有所不同,如下所示:

软件用户:

1.标识符区分大小写。这是与Forcal V7.0的最大不同。
2.增加了冒号运算符,与逗号运算符完全相同。
3.增加了自动静态变量free,用以支持表达式销毁前的释放工作。
4.可以用const函数定义永久性常量和暂时性常量。
5.整数表达式中增加了求模运算符“%”,取消了乘方运算符“^”,乘方运算用函数pow实现,取消了求模函数mod。
6.单目运算符-(负)与双目运算符^(乘方)需用括号区分计算的先后顺序。如:(-2)^2-(2^2)
7.取消了内置数组,由FcData中的数组代替。
8.增加了转义字符/xNN,支持16进制输入。
9.增加了函数GetCalByte,可以获得调用其他类型表达式或其他类型二级函数时计算结果的按字节拷贝值。
10.增加了类成员运算符(函数参数运算符)。
11.增加模块命名空间

编程用户:

1.获得和设置FORCAL运行错误的函数GetRunErr和SetRunErr有变化,以支持更详细的出错信息。
2.增加模块加锁函数LockModule,支持更健壮的大型程序设计。
3.编译表达式函数RealCom、RealCom和ComplexCom的第二个参数的意义有变化,与增加模块加锁功能有关。
4.删除表达式函数DeleteFor的功能有变化,与自动静态变量free配合,支持表达式销毁前的释放工作。
5.取消了获得数组信息函数GetArray,由FcData中的数组代替。
6.键树操作函数InsertKey、SearchKey、DeleteKey和DeletePrivateKey的第二个参数意义有变化,可支持含NULL字符的数据存储查询操作。函数EnumKeyTypeValue的最后一个参数回调函数的参数有变化,可以返回含NULL字符的数据。
7.信息交换函数ExMsgWithForcal的参数意义有变化。
8.增强了获得表达式信息函数GetFor的功能


Forcal近期计划
 

近期将在Forcal中增加以下功能 (向下兼容,增强Forcal当前版本的功能):

软件用户:

1.增加二级函数GetForHandle("f"),用于获得表达式句柄(也称为表达式指针、函数指针),可用作函数的参数。仍然保留将表达式的名称作为字符串传给函数的方法。新方法的优点是速度快,旧方法的优点是使用简单。
2.可在自定义表达式之间通过表达式句柄和字符串地址传递Forcal字符串。扩展了Forcal字符串的适用范围。 涉及字符串的二级函数命名将按以下约定:函数名中含有NStr(近程静态Forcal字符串地址),表示需要一个Forcal字符串地址参数;函数名中含有FStr(远程静态Forcal字符串地址),表示需要表达式句柄和一个Forcal字符串地址参数;函数名中含有Str(动态Forcal字符串地址),表示需要一个FcData字符串指针参数。

编程用户:

1.修改判断一个表达式是否有效的函数IsFor, 当ForName=NULL时,也可以根据表达式句柄(该句柄虽然与编译表达式时的句柄完全相同,但须在Forcal代码中由二级函数GetForHandle获得)进行判断。添加该功能可加快IsFor的速度。
2.修改获得表达式信息的函数GetFor, 当ForName=NULL时,也可以根据表达式句柄hFor
(该句柄与编译表达式时的句柄完全相同,但须在Forcal代码中由二级函数GetForHandle获得)获得表达式的信息。添加该功能可简化二级函数的编写,速度也快。
3.修改获得表达式信息的函数GetFor,当从二级函数获得的表达式句柄hFor
=NULL时,可以获得全局表达式的句柄,或者获得表达式名称中包含模块命名空间访问符::的任意表达式句柄。这在主程序查找一个函数时特别有用。
4.在与Forcal交换信息函数ExMsgWithForcal
中增加查询一个模块是否已使用 的功能,增强Forcal的模块化编译功能。
5.在与Forcal交换信息函数ExMsgWithForcal中增加通过
表达式句柄获得表达式中的字符串的功能,使用编译表达式得到的表达式句柄。
6.修改获得表达式中的字符串函数GetForStr,当hFor=NULL,ForStr=由二级函数GetForHandle获得的表达式句柄,StrMax=表达式类型时,可获得表达式中的字符串。


Forcal 后续版本计划
 
1.Forcal V9.0:与Forcal V8.0功能基本相同,但为Unicode版本,很可能增加支持汉字等多国语言的标识符。预计在2009年夏天或较晚些时候完成该版本,最晚不迟于2009年年底。

2.Forcal V10.0:与Forcal V8.0功能基本相同,仍是ANSI版本,但升级为Forcal V8.0的64位版本。预计将在更晚些时候完成。

3.Forcal V11.0:与Forcal V8.0功能基本相同,但为Unicode版本,且升级为Forcal V8.0的64位版本,很可能增加支持汉字等多国语言的标识符。预计将在更晚些时候完成。

4.Forcal的Linux版本,预计将在更晚些时候完成。


Forcal 其他开发设想
 
Forcal致力于发展成为一个通用的跨平台的脚本语言,既支持嵌入式开发,又自成体系,成为一个功能不断完善的动态语言。目前,Forcal主体结构(Forcal32.dll)已基本完成,支持嵌入式开发方面可发挥地淋漓尽致,但要成为一个功能完善的动态语言,还有大量的工作要做,这不是依靠个人能力所能完成的。根据Forcal的声明,Forcal鼓励用户设计商业性的Forcal扩展动态库或其他类型的扩展模块,期待有志者的关注和参与。
以下是Forcal已经完成或正在进行的一些工作,包括一些需要用户参与的开发设想。
 
项目描述类型支持库
(dll)
难易程度Forcal动态语言系统移植性开发者完成情况项目性质其他
FcData扩展Forcal数据类型。Forcal扩展动态库Forcal32作者正在完善免费 
MForcal对Forcal进行模块化编译。 动态语言系统将基于此库而构建。Forcal扩展动态库Forcal32一般易移植作者基本完成免费 
QuitFc退出Forcal运行时的无限循环。Forcal扩展动态库Forcal32易移植作者完成免费,将开源 
AutoMfc自动运行AFC文件。程序Forcal32
MForcal32
一般易移植作者完成免费,将开源 
OpenFcForcal演示程序,将增加语法高亮功能。程序Forcal32
MForcal32
较难作者基本完成免费,将开源 
OpenFcGl基于OpenGL的进行图形绘制的动态库,将尽可能全面封装OpenGL函数。Forcal扩展动态库Forcal32
FcData32
较难 作者或爱好者正在完善免费,已开源 
FcFunWin一个窗口库,用户可在窗口中自定义多个控件。Forcal扩展动态库Forcal32
FcData32
较难作者正在完善免费,将开源 
FcScript脚本控件,用于网络编程。COM/ATLForcal32
MForcal32
较难  作者或爱好者正在进行已开源 
PortMaster通用端口(RS232、GPIB)数据采集程序。其中FcPort.dll可适应任意端口。程序 FcPort
Forcal32
QuitFc32
一般  作者基本完成免费尚未对外发布
 一元函数绘图程序、实验数据处理程序。程序Forcal32一般  作者正在进行免费,将开源 
FcString字符串库。Forcal扩展动态库Forcal32
FcData32
一般作者或爱好者正在构思免费,将开源 
 标准输入输出系统。支持FcData扩展数据类型,但FcData32不是必须的支持库。Forcal扩展动态库Forcal32较难作者或爱好者正在构思免费,将开源 
 基于Windows的输入输出系统。支持FcData扩展数据类型,但FcData32不是必须的支持库。Forcal扩展动态库Forcal32较难作者或爱好者 免费,将开源 
 数据库系统。Forcal扩展动态库Forcal32
FcData32
较好或好爱好者或商业用户 未知 
  正则表达式。可并入FcString
可直接封装C++正则表达式库。
Forcal扩展动态库Forcal32
FcData32
较难作者或爱好者 免费,将开源 
 封装IMSL等数学库。 已根据徐士良算法封装了一些数学库函数,如:CALCULAS、SPEFUN等。Forcal扩展动态库Forcal32
FcData32
较易作者或爱好者或商业用户 未知工作量大
 封装矩阵运算库。Forcal扩展动态库Forcal32
FcData32
较易作者或爱好者或商业用户 未知工作量大,需要矩阵运算库源程序
 封装任意可由C/C++、delphi等调用的函数。Forcal扩展动态库Forcal32
FcData32
一般作者或爱好者或商业用户 未知工作量取决于所封装的函数多少
 ... ...         

说明1:项目难易程度仅仅是根据作者的感觉给出的,仅作参考。Forcal封装各种数学库函数较容易,因而此类项目难度较小。
说明2:移植性好表示是纯C/C++代码,移植性差表示包含大量Windows函数,以此类推。未开发项目的移植性表示一种期望。

版权所有© Forcal数学软件 2002-2009,保留所有权利
E-mail: forcal@sina.com QQ:630715621

最近更新:
<!--webbot bot="Timestamp" S-Type="EDITED" S-Format="%Y年%m月%d日" startspan -->2009年05月01日<!--webbot bot="Timestamp" i-checksum="1280" endspan -->
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值