c语言和fortran语言的比较

c语言和fortran语言的比较

ID:8794399

大小:16.00 KB

页数:2页

时间:2018-04-08

c语言和fortran语言的比较_第1页
c语言和fortran语言的比较_第2页
资源描述:

《c语言和fortran语言的比较》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库

1、C语言和Fortran语言的差异本文详细介绍C语言和Fortran语言的差异1.C++语言和Fortran语言的发展背景在程序设计语言的发展过程中,FORTRAN语言被认为是科学计算的专用语言。后来推出的FORTRAN90和FORTRAN95版本也不例外,它们虽然可以完全实现C++语言同样的功能,然而其软件开发环境和软件的集成性等方面都远不如C++语言。近年来,随着计算机软硬件技术的发展,数据结构、数据库管理技术、可视化与计算机图形学、用户接口系统集成以及人工智能等领域的成果被逐渐应用到结构分析软件中,结构分析软件的设计并不仅仅局限于单一的科学计算需要涉及众多的

2、软件开发领域。C++语言可以提供这类软件开发所需的功能,而用FORTRAN90却很难实现,另一方面从软件的编程环境来看,目前FORTRAN90的编译器极少,而C++语言的编译系统相当普及,可以运行在各种机型上,便于实现跨平台的软件系统集成。2.C语言和Fortran语言的差异由于两者产生的背景不同,它们是存在差异的,在比较了几组源代码之后,主要有以下体会:C最大的优点在于灵活,不但可以藉由struct来定义新的数据结构,同时C的pointer更可以让我们自由而且有效率地处理大数据。而在UNIX系统中,由于整个操作系统绝大部分就是C写出来的,故我们也有方便的C函数

3、库,直接使用系统资源与享受系统带来的服务,以做到一些低阶、快速的动作。而FORTRAN从一开始就用于科学计算,它与C的差异主要表现为:*复数运算的速度*程序参数与字串*内存的动态管理*多维阵列的处理*函数调用与参数传递2.1.复数运算的速度在进行复数运算的时候,C++可以定义复数的class,还可以重新定义所有的四则运算式,复杂的算式也可以做到由一个表达式来解决。但它的重新定义复数四则运算是用函数来做的,使用函数来调用其速度很慢,除非采用inlinefunction的方式,但会遇到以下的问题:要先将这个算式拆解,分别算过后再重组结果,故表面上程序代码很简洁,但实

4、际上是compiler做了很多工作,还是要付出相当的计算时间代价的。至于Fortran,最大的优点在于复数(complexnumber)的运算,复数是Fortran的基本数据类型之一,这正是C所缺乏的(C基本上只有实型与整型类型而已)。虽然C也可以由struct的定义,达到复数四则运算的目的,但却很可能牺牲了程序效能,或者是程序写起来相当繁杂降低可读性。因此,在大量而且要求高速的复数运算场合,Fortran实际上比C还要适合。然而既然复数已是Fortran基本数据类型之一,则Fortrancompiler在设计上可以做到对复数特别的optimization,例如

5、如果遇到较短的复数运算式,它可以用“心算”直接得出real_part与imag_part的expression,像这样:real(a)=……;imag(a)=…….如此只需两步就得到结果。直到遇到太长太复杂的算式,才去做拆解的动作。这样使用C来做复数运算可能需要绕圈圈,而且绕出来的圈圈可能还不小。不过如果程序中需要复合的数据结构,如一个自定义的数据结构中既有浮点数、整数、还有字符串时,Fortran只有举白旗投降了。当然,Fortran如果要做还是可以做,只是不太方便,而且可能也需要绕圈圈。但如果使用Fortran90则不成问题了,因为Fortran90也有类似

6、C的struct结构以定义复合的数据类型。2.2.程序参数与字串C程序可以有参数串列,Fortran则没有。例如,当程序执行时,必须输入a,b,c三个参数,在C可以这样写:intmain(intargc,char**argv){inta,b,c;a=atoi(argv[1]);b=atoi(argv[2]);c=atoi(argv[3]);}而程序执行时,参数就是这样传入:a.out121518

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。