




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、FORTRAN与VB程序设计结 课 论 文 论混合编程在土木工程软件设计中的作用FORTRAN与VB的接口专 业 班 级 姓 名 学 号 年 月 日摘 要 土木工程软件的开发语言的选择因人而易,虽然传统的开发语言如PASCAL、C、C+也能够开发工程软件,但土木类软件项目很少涉及到直接访问硬件和操作系统的低级功能、而任何软件项目都受到经费和开发进度的限制,所以选择一种能在较少的时间内完成开发任务的语言非常重要。Fortran是世界上出现最早的高级程序设计语言,最适用于数值计算,所以在数值计算领域大量的程序都是用Fortran所写。但是大部分的Fortran程序都是在dos下运行的,使用很不方便
2、,如果把早期的Fortran程序转换成其他语言,则工作量是巨大的。Visual basic是一门简单易学的面向对象的高级程序设计语言,在界面设计方面功能强大,能够充分满足搭建系统要求。所以,利用不同语言的特点混合变编程在工程软件开发中具有实用价值。关键词:vb,fortran,混合编程绪 论Fortran语言是一门适合科学计算和工程分析的程序设计语言,在结构分析、动力响应、优化设计等方面被广泛应用,积累了大量的Fortran子程序的源代码供大家开放使用。但是Fortran进行可视化编程的难度较大。Visual Basic语言(简称VB)以其迅速有效的编制交互界面设计性能,被
3、越来越多的应用于Windows的环境下的可是化界面设计。近些年随着VisualBasic(以下简称VB),Visual C + +,Visual C等面向对象的编程语言大量出现,其界面设计、图形开发、数据库管理等功能都十分强大,目前已成为计算机编程语言的主流和未来发展方向。而且VB具有简单易学的特点,它所提供的对象链接和嵌入(OLE,Object Linking and Embeding)工具,为利用其它软件进行数据的可视化处理提供了方便。VB的缺点是运算速度慢,不合适进行大型数值计算。用VB与Fortran混合编程可以充分的利用俩种语言的优点,克服他们的不足。本论文将通过
4、实例说明用VB与Fortran的混合编程解决材料力学问题的方法:用VB设计运行界面及控制程序,将Fortran程序编译成动态链接库(DLL文件)并由VB程序调用。整个过程Fortran程序都在后台运行,计算结束后结果显示在VB界面上。一、概述在DOS时代,许多土木专业程序用Fortran语言编制,随着windows时代的来临,面向对象的编程语言如VB、VC等已成为主流,尤其是VB以其简单易学成为许多土木工作者首选工具,而以前大量Fortran程序重新编写,困难重重,充分利用前人程序资源,较好的解决办法是Fortran 与VB混合编程。二、操作平台Visual Fortran 6.0,VB6.0
5、3、 方法说明目前实现VB与Fortran的混合编程主要方法有两种,即VB直接调用可执行文件(利用shell函数直接调用Fortran编译出来的可执行文件)和利用动态链接库Dll(Dynamic Link Library)与Fortran混合编程。(一)调用Fortran编译的可执行文件 采用VB直接调用Fortran可执行文件,VB与Fortran程序之间不能传递参数;但是这种方实现起来很简单。其具体过程是利用Vb编写程序的界面部分,在需要计算时,由Vb应用程序启动这个应用程序,并在计算结束后,将所需的结果显示在Vb的界面上。Fortran与Vb之间的所有数据交
6、换都是通过磁盘文件进行。具体步骤是先在visual Fortran 6.0中编写Fortran的源程序代码,并编译成可执行文件。然后在Vb需要调用时,利用shell函数调用就可以了。Shell函数语法如下:Shell(pathname,windowstyle)pathname是要执行的程序名,以及任何必需的参数或命令行变量、目录或文件夹、驱动器。windowstyle表示在程序运行时窗口的样式。如果windowstyle省略,则程序是以具有焦点的最小化窗口来执行的。这种方法适合于计算量较大而交互操作不多的时候。但是Shell函数是以异步方式执行的,这种执行方式使Vb程序不能等待Fortran程
7、序计算结束,而是继续执行后续的程序,从而容易使最终结果出错。.利用动态链接库方法动态链接库(Dll)是可被其他程序或DLL调用集合组成的可执行文件模块。动态链接库之所以在Windows中被广泛应用,是因为它除了具有静态链接库的功能外,尚有如多个应用程序共享一个动态链接库以节省内存和磁盘空间等许多优点,Visual Fortran 6.0为建立动态链接库提供了全面的支持。建立一个动态链接库包括如何生成动态链接库,如何输出动态链接库中的变量或过程以供其他程序使用以及如何使程序顺利地使用动态链接库。1.创建用于VB应用程序的Fortran动态链接库的方法与步骤如下:.在开发环境下新建一个工程,其类型
8、选为“Dynamic-Link Library”,并命名工程。 编写Fortran源程序并添加到该项目中,建立动态链接库的Fortran源程序必须是子程序或函数,不能有主程序。 编译、建造该源程序或函数,生成动态链接库文件。 在编写Fortran源程序时要声明输出的子程序或函数过程名、子程序或函数的过程别名、接口参数名称与类型,以供VB使用。声明语句形式如下:!DEC$ ATTRIBUTES DLLEXPORT:“子程序或函数过程名” !DEC$ ATTRIBUTES ALIAS:“子程序或函数过程别名”
9、;.VB6.0调用Fortran创建的Dll 由于Fortran动态链接库中的子程序或函数过程相对于VB过程而言是外部过程,在VB的模块级或相应的Form中对被调用的动态链接库进行声明,以便编译器能够找到该过程,并且需要在全局模块或表格级模块中声明正确的调用接口,语法如下: PublicPrivate Declare SubName lib "libname" Alias"aliasname" Declare Sub<动态链接库子过程名> Lib“动态链
10、接库文件名及所在路径”其中:动态链接库子程序或函数过程名是被调用动态链接库中的子程序或函数的名字;libname(动态链接库名)为动态链接库子程序或函数过程所在动态链接库名,需要指明Fortran动态链接库文件所在的全路径名;过程别名用来给动态链接库子程序或函数过程换一个新名字,也可保持原名。 Fortran动态链接库子程序或函数过程的调用在全局模块或表格级模块中声明Fortran动态链接库中子程序或函数过程以后,VB应用程序就可以像调用VB本身函数或例程一样随意调用库中任意子程序或函数过程了。但是需要注意Fortran创建的动态链接库时,形参和实参的数据类型必须匹配,否则会发生错误
11、。在Fortran90中,它的数据类型和VB的并不是完全一一对应的,但我们常用于计算的整型和实型数据类型有着精确的匹配。 VB和Fortran之间参数以文本形式传递,VB的输出参数保存在文本文件中,Fortran运行时读取文本文件,即VB与Fortran共用一个文本来实现参数的传递,只要在读取和保存的过程中注意保存与读取的格式,即可实现参数的传递。 四、 实例程序Fortran 中的程序代码如下:real function Ia_Pb(d,a)!DEC$ ATTRIBUTES DLLEXPORT :IA_PB!DEC$ ATTRIBUTES ALIAS : "I
12、a_Pb" : IA_PB implicit none integer b,f real w,d,a real, parameter : PI = 3.14159 b=d/(d+2*a) w=(pi*(d*4)*(1-b*4)/32)/10000.0 f=int(w*100) Ia_Pb=f/100.0 returnend functionreal function qyl(t,d,i)!DEC$ ATTRIBUTES DLLEXPORT : QYL implicit none real t,i real w,d integer f w=t*(d/2)/i*100 f=int(w*1
13、00) qyl=f/100.0 returnend functionreal function ybn(m,l,g,i)!DEC$ ATTRIBUTES DLLEXPORT : YBN implicit none real m,l,g,i real w integer f w=(m*2)*l*100/2/g/if=int(w*100) ybn=f/100.0 returnend functioninteger function jiaohe(a,b)!DEC$ ATTRIBUTES DLLEXPORT : JIAOHE implicit none real a,b if (a>b) th
14、en jiaohe=0 else jiaohe=1 end if returnend function编好程序后创建,生成33.dll文件将33.Dll文件和VB中建立的工程文件放在同一个文件夹下VB中程序代码如下:Private Declare Function Ia_Pb Lib "33.dll" (d As Single, a As Single) As SinglePrivate Declare Function QYL Lib "33.dll" (t As Single, d As Single, i As Single) As SingleP
15、rivate Declare Function YBN Lib "33.dll" (m As Single, l As Single, g As Single, i As Single) As SinglePrivate Declare Function JIAOHE Lib "33.dll" (a As Single, b As Single) As IntegerDim w As IntegerDim t, q As SinglePrivate Sub Command1_Click()Dim a, d As SingleDim l, m, g, s
16、As Singlea = Val(Text1.Text)d = Val(Text2.Text)l = Val(Text3.Text)g = Val(Text4.Text)m = Val(Text5.Text)t = Val(Text6.Text)Text7.Text = Ia_Pb(d, a)s = Ia_Pb(d, a)Text8.Text = QYL(m, d, s)Text9.Text = YBN(m, l, g, s)q = QYL(m, d, s)End SubPrivate Sub Command2_Click()w = JIAOHE(q, t)If w = 0 ThenLabel14.Caption = "不满足切应力强度要求"ElseLabel14.Caption = "满足切应力强度要求"End IfEnd SubVB界面如下:在VB界面上操作便解决材料力学中的问题,求出空心薄板的最大切应力和应变能并校核强度。结 论 FORTRAN语言与VB语言混合编程中,所做的大部分工作都是在一种语言中调用另一种语言编写的函数和过程,或在一种语言的程序中访问另一种语言的程序中的数据。通过FORTRA
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 乐山辅警考试题库2025(有答案)
- 出血血栓止血课件
- 2025高级导游综合知识考试全真模拟试题及答案
- 企业安全教育培训交警课件
- 出租车加油站安全培训课件
- 出入量与体重的课件
- 2025合同违约的补救策略
- 卫华招聘笔试题库2025
- 2025年LED照明系统合同能源管理合同
- 冲床安全培训课件
- 成都中医药大学辅导员考试真题2022
- 火灾调查第四章-火灾痕迹物证课件
- 中铁四院syadjv423工程测量平差数据处理软件使用教程
- 大型医院耗材管理SPD系统
- 校园一日安全巡查记录表【范本模板】
- GB/T 19960.1-2005风力发电机组第1部分:通用技术条件
- 田英章楷书心经-高清米字格版
- 2021年成都中医药大学辅导员招聘考试题库及答案解析
- 锅炉安全技术规程
- 易制毒化学品岗位责任制度
- 项目检查汇报报告(52张)课件
评论
0/150
提交评论