1 20 50 150 500
欢迎来到哈希软件站,找素材,搜软件,就上哈希软件站!
当前位置 >首页 >软件下载 >电脑软件 >编程开发 >编程软件

开放式计算程序OpenFC V6.0 官方正式版

软件信息
  • 分类:编程软件
  • 大小:3.0M
  • 语言: 中文
  • 环境: WinAll, WinXP
  • 更新:2024-11-12
  • 评级:
  • 系统: Windows Linux Mac Ubuntu
  • 软件类别: 国产软件 / 免费软件 / 编程辅助
  • 插件情况:
  • 相关链接: http://forcal.yeah.net/

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扩展动态库。

下载地址

热门软件

Top