OpenFC是一个实用工具,可以进行各种数学计算、工程计算等,可满足中学生、大学生和各类工程技术人员的大部分需要。OpenFC也是一个编程工具,相信爱好数学的编程爱好者一定会喜欢。
OpenFC是一个开放式的数值计算程序。
OpenFC中的计算采用程序控制方式,其源程序书写格式自由,且具有C++风格的注释。用户可以通过简单的编程方便地实现他们所需的功能,例如:可以使用常规的数学函数进行整数、实数和复数表达式的计算;进行常量定义;使用字符串;使用数组;使用逻辑函数;使用if判断语句、which选择计算语句、for循环、dowhile循环等进行流程控制等等。
借助本系统可以了解OpenFC、Forcal32W.dll和MForcal32W.dll的详细信息。
·一个开放式数值计算工具,可以方便地进行功能扩展。
·演示FORCAL的重要功能。
·演示MForcal的全部功能。
简介:
OpenFC是一个开放式的数值计算程序,由Forcal32W.dll和MForcal32W.dll提供支持。
OpenFC能够编译运行具有固定格式的源程序(字符串表达式),源程序中可以使用C++风格的注释。源程序中可以使用的运算符有+、-、*、/、^、>、>=、<、<=、==、!=、&、|、!、++、--等等,具有数值计算、逻辑运算、关系运算、字符数据处理、流程控制、函数调用等许多的可编程功能。
OpenFC是开放式的,很容易进行功能扩展。OpenFC通过加载Forcal扩展动态库进行功能扩展,这些库可以用VC、Delphi或者Fortran等高级语言进行编写。
OpenFc可以对源程序进行模块化编译,可以打开多个文件同时进行操作,提高了运行效率。
OpenFC允许用户将常用的计算定义为命令,通过命令菜单执行计算。命令菜单是OpenFC提倡的计算方式。
在OpenFC中,用户也可以自定义窗口,用户在窗口中可以使用编辑框、静态文本、普通按钮、单选按钮、复选框、组框、位图等控件。用户自定义命令和用户自定义窗口改善了人机界面,强烈推荐使用。
用户可通过工作区文件对OpenFc的工作环境进行配置,如设置需要加载的扩展动态库、设置模块、设置命令、设置常量等等,一切可按照自己的喜好和实际工作需要进行配置。
目前,通过Forcal扩展动态库为OpenFC增加的功能有:解非线性方程(组)、多元积分、微分方程求解、函数图形绘制(由OpenGL图形库提供支持,可以绘制精美的二维和三维数学函数图形)等等。
最新升级内容:
[2010.02.10] 增加AutoMfc程序。
[2010.01.20] 增加Forcal优化动态库FcOpt。
[2009.11.08] 增加OpenFC的语法高亮功能,可通过工作区文件自定义语法高亮的Forcal关键字。目前的问题:撤消及恢复功能不能用。
[2009.11.01] OpenFC界面由RichEdit提供支持。
[2009.08.01] OpenFC由Forcal32W.dll和MForcal32W.dll提供支持,升级为OpenFC V6.0。
表达式和源程序:
OpenFC由Forcal32W.dll和MForcal32W.dll提供支持,MForcal32W.dll是一个标准的Forcal扩展动态库。MForcal32W.dll可以编译固定格式的Forcal源程序。
使用OpenFC需要先了解FORCAL表达式和MForcal的源程序格式。
OpenFC中使用的表达式格式与标准的Forcal表达式格式完全相同。
OpenFC中使用的源程序格式与标准的MForcal源程序格式完全相同。每一个源程序被编译为一个模块。在MForcal中,源程序和模块几乎是同义词。
1.1 源程序的一般格式
在MForcal源文件中,可以有多个FORCAL表达式,表达式之间用分号“;”隔开。 两个连续的分号“;;”表示前面的表达式在执行时不会输出结果。
由于FORCAL数学表达式有三种,即整数表达式、实数表达式和复数表达式。为便于区分,MForcal将以i:开头的表达式作为整数表达式,以r:开头的表达式作为实数表达式,以c:开头的表达式作为复数表达式,缺省为实数表达式。缺省的表达式类型可以重新设置:若表达式以integer:开头,表示自该表达式开始,后面的缺省表达式为整数表达式;若表达式以real:开头,表示自该表达式开始,后面的缺省表达式为实数表达式;若表达式以complex:开头,表示自该表达式开始,后面的缺省表达式为复数表达式。
同时,在源文件中可以进行注释,注释方法与C++语言相似,即:每行两个//后的内容为注释内容;在一行内或者多行之间/*...*/之间的内容为注释内容。注释不是源程序的有效部分,但可以使程序更易读。
举例如下:
//这是一个例子!灰色部分为注释,不会被执行;
i:2.2+3; //以i:开头是整数表达式;
c:sin(2.2+3.3i); //以c:开头是复数表达式;
2.2+3.3; //这是实数表达式。
2+3;/* 从这里开始,连续几行注释:
333+222;
. . . . . . ;
555-222;
*/ sin(2.5);
exp(2);
integer: //设置缺省表达式为整数表达式;
2.2+3;//这是整数数表达式;
可以用加载MForcal的任何一个程序验证以上代码。
1.2 程序的执行
由于表达式有些带有参数,有些不带参数,MForcal在进行处理时,对于有参数的表达式只进行编译,不进行计算。
MForcal只顺序执行不带参数的表达式。如果该表达式以两个连续的分号“;;”结尾,则该表达式只执行,不输出计算结果。
但是,如果表达式以冒号“ : ”开头,则无论是有参表达式还是无参表达式,都是只编译,不执行,格式如下:
i:: 2+3;//整数无参表达式,只编译,不执行;
i:: f1()=2+3; //整数无参表达式,只编译,不执行;
c:: 2+3i; //复数无参表达式,只编译,不执行;
c:: f2()=2+3i; //复数无参表达式,只编译,不执行;
: 2+3; //实数无参表达式,只编译,不执行;
: f3()=2+3; //实数无参表达式,只编译,不执行。
无参表达式f1、f2和f3可以在其他可执行的表达式中被调用。
另外,如果无参表达式以感叹号“ ! ”开头,则编译后立即执行,且以后执行模块时不再自动执行。格式如下:
i:! 2+3; //整数无参表达式,编译成功,立即执行,以后不再自动执行;
i:! f1()=2+3; //整数无参表达式,编译成功,立即执行,以后不再自动执行;
c:! 2+3i;//复数无参表达式,编译成功,立即执行,以后不再自动执行;
c:! f2()=2+3i; //复数无参表达式,编译成功,立即执行,以后不再自动执行;
! 2+3; //实数无参表达式,编译成功,立即执行,以后不再自动执行;
! f3()=2+3; //实数无参表达式,编译成功,立即执行,以后不再自动执行;
无参表达式f1、f2和f3可以在其他可执行的表达式中被调用。
1.3 源程序的完整格式
编译时,将源程序中的表达式编译为一个或多个模块,MForcal会对每一个模块进行加锁。编译时 首先设置起始模块,也称主模块(并非Forcal的0#模块,恰恰相反,MForcal不会将任何一个表达式编译为0#模块,定义主模块是为了与源程序中的其他模块相区别),以后每当遇到#MODULE#,开始编译为一个新的模块 ,称为子模块,而每当遇到#END#,回到主模块的编译。即#MODULE#和#END#之间的表达式定义为一个子模块,子模块之间不能嵌套定义。注意#MODULE#和#END#必须位于表达式的开头。 在模块中,以~开头的表达式被编译为公有表达式(全局表达式或全局函数),能被其他模块访问到,其余的表达式均被编译为私有表达式(私有函数),其他模块无法访问。所有模块的模块号由MForcal或程序员指定,不会重复,也不会被编译为0#模块。在源程序的任何地方,可用指令#USE#调用另一个模块。
模块源文件的格式如下:
//单行注释:模块名:myModule
/*
多行注释:在同一模块源文件中的所有表达式属于同一个模块;
多行注释:以~开头的表达式可被其他模块的表达式所访问;
多行注释:不以~开头的表达式只能被该模块的表达式所访问。
*/
#MODULE#//定义一个子模块;
i:a(x)=10+x; //私有函数,只能被该模块的表达式所访问;
c:!b()=100+100i; //私有函数,只能被该模块的表达式所访问 ,该表达式是在编译时执行的;
~_c(x)=x-5; //全局函数,任意模块包括本模块均可访问;
~_f(x)=a(x)+b(); //全局函数,任意模块包括本模块均可访问;
~i:g(x)=a(x)+_c(x); //全局函数,任意模块包括本模块均可访问;
#USE# Module1; //使用模块Module1;
~_ff(5)+_gg(6); //函数_ff()和_gg()在模块Module1中定义;
#END# //子模块定义结束,可缺省;
#MODULE# //定义一个子模块;
i:a(x)=10-x; //私有函数,只能被该模块的表达式所访问;
~ff(x)=a(x); //全局函数,任意模块包括本模块均可访问;
#END# //子模块定义结束,不可缺省;
_f(1); //主模块中的表达式。
ff(1); //主模块中的表达式。
integer: //设置缺省表达式为整数表达式;
2.2+3; //这是整数数表达式;
在其他模块中使用该模块的格式如下:
#USE# myModule; //关键字USE必须为大写,myModule是模块名称;
_f(2)+g(3); //调用myModule模块中定义的函数;
1.4 编译指令的位置和次序
在MForcal中使用的#MODULE#、#END#、#USE#、integer:、real:、complex:、~、i:、r:、c:、:、!等称为编译指令,用以确定一个表达式的类型、所在模块、是否私有函数等属性。这些编译指令必须位于表达式的开头,有些指令能同时使用,有些指令不能同时使用,并且在使用时有一定的次序,按先后顺序依次为:
1)编译指令#MODULE#、#END#、#USE#、integer:、real:和complex:之间没有先后顺序,可混合使用,但这些指令必须在表达式的最前面,一般单独成行。
2)~表示该表达式是一个全局表达式,否则是私有表达式。
3)编译指令i:、r:、c:不能混合使用,只能使用其中的一个,强制指定表达式的类型。如果都没有用,表达式按缺省的类型进行编译。
4)编译指令:、!不能混合使用,只能使用其中的一个。:表示该表达式只编译,不执行;!表示该表达式编译后立即执行,但以后执行模块时不再自动执行。
如果表达式前没有使用任何一个编译指令,则按缺省表达式的类型编译为私有表达式,若该表达式是无参表达式,则执行模块时将自动执行。
适合于:
1、初级用户:使用OpenFC命令进行计算、能使用简单的FORCAL表达式进行计算。
2、中级用户:熟练使用FORCAL表达式进行计算。
3、高级用户:能使用C++、Delphi、FORTRAN等高级语言编写Forcal扩展动态库。






















大小: 8KB
大小: 89.5M
终端仿真器 SecureCRTv7.1.1.264 最新版
串口调试小助手1.3 免费版
WinHex 十六进制编辑器v20.2 SR-5 绿色中文注册版
小旋风ASP服务器安装版
16进制转换工具V1.0 中文绿色版
Adobe AIRV33.1.1.932 官方最新版
github离线安装包64位版V2.9.11官方最新版(github desktop)
mysql数据库.net开发驱动(mysql connector net )8.0.11 官方最新版
MSDN Library Visual Studio 6.0(VC、VB、VF、VJ)中文版win32开发人员必备
版本控制软件(SourceTree)v3.4.6 官方最新版
Memory Analyzer (MAT)V1.01 免费绿色版
Delphi Distillerv1.85绿色版
IBM内存检测工具(IBM Thread and Monitor Dump Analyzer for Java)V4.3.3 绿色版
.NETv3.0 可再发行组件包
一键安装JSP环境安装版
slave4j(基于eclipse插件的java代码生成器)V1.0.0 正式版
Auto DebugProfessional 5.6.5.18 中文绿色版
Understand For C++V1.4.319英文安装版