我是工科学生,想知道为什么让我们学fortran,而不学其他的c或c++之类的语言,他们各自有什么特点?

作者&投稿:班倩 (若有异议请与网页底部的电邮联系)
最近在学习fortran语言,有的程序看不明白,求高手将下面两个fortran语言写的程序翻译成c语言或者c++!~

文件打开和读写Fotran 和 C 不能直接翻译和读写,特别是2进制文件。Fotran 有“记录”的概念。(另外也可能有大小端编码问题)。需要知道文件的详细结构,另辟思路去读写。
文本文件内容可见,好办点,2进制文件,难办。
(1)
void Fopen(FILE *fp, int *sta, char *fname){
fp = fopen(fname,"w+b");
if (!fp) *sta=0; else *sta = 1;
}
unknown 是文件可能存在也可能不存在(老文件或要建新文件),所以用w+ 可读可写可建。
记录长度不好办。你可以在读写的时候 用 fseek 移动文件读写位置。
(void) Fopen( fp3, &sta1,"rehuo.dat");
(void) Fopen(fp2, &sta2,fname);

(2)2进制文件读写用 fread() 和 fwrite() 函数,你查一下 函数用法。
原型:
fread ( void * ptr, size_t size, size_t count, FILE * stream );
fwrite ( const void * ptr, size_t size, size_t count, FILE * stream );
int x[M][N];
fread(&x[0][0],sizeof(int),M*N,fp1);
fwrite( ....);
------
read(1,rec=j)(x(k,j),k=1,nb) 读记录长度j ,共 nb 个数 到 x[k][j] 里。
FORTRAN 数组 按列排列,C 按行排列。 所以 它是1列1列读入。

VB是脚本语言,脚本语言就是解释执行,不像c语言那样连接,编译,运行;c语言是面向过程的,就是把我们要实现的任务按照一个一个流程逐步完成,而C++和java是面向对象的,面向对象就是依赖对象的各个“行为”来完成任务,不知道我这样说,你能不能懂?需要简单了解一下这两个概念“面向过程”和“面向对象”,C语言就是前者,而java和C++就是后者。

对于工科学生来说学习一种语言主要是用来编制程序进行科学运算的。Fortran语法简明且严谨,易学,最大特性是接近数学公式的自然描述,可以直接对矩阵和复数进行运算,在计算机里具有很高的执行效率。因此Fortran非常适合科学计算,至今仍然是最主要的科学计算语言,你由它的全称:Formula Translator就可以看出它最初本身就是针对科学计算开发的。现在很多的商用工程软件,如著名的有限元软件MSC.Nastran就是用Fortran编制的核心算法。
所以作为工科学生学好Fortran很有用,而C语言语法过于复杂(它实际是中级语言,更接近于底层,而Fortran是高级语言),不易掌握,运算效率不如Fortran,不如Fortran适于科学计算。
其实各种语言的语法都大同小异,只要掌握了一种,再学习其它语言就很容易了,而且语言只是一种工具,更重要的是算法,对于你来说就是你的专业知识。
同时,在科学计算时具体使用哪一种语言也没有规定,应根据需要和问题的特点选取合适的语言,经常会多种语言混编。C和C++,或者C#都是很好的语言,掌握好也很有用处。
现在还有一种更为高级的语言(有人甚至将其成为软件)MATLAB,非常方便好用(几乎是傻瓜式的),是专门针对科学计算开发的,目前在学术界运用非常广,只是运行速度相对慢一些。建议你也学学,非常有用。

PS:我学机械的,主要使用MATLAB和Fortran,偶尔使用C++。

首先,Fortran 适合做计算,特别是矩阵数组计算。
比如数组复制,A =B,而同样的复制,C语言必须通过 for 循环来实现。
正如此,Fortran长久一来,聚集了一大批高效,严格的,经过考验的成熟的函数库,软件包,这是一笔巨大的财富。

其次,Fortran严谨,数组越界,参数不匹配会出现错误。而这些错误如果放过,则可能对科学计算造成极大的错误结果。因此不适合使用像 C/C++ 那样灵活的语言。

同样的道理,Fortran 的指针也不如 C/C++ 那样灵活,事实上,这样的约束对严谨的科学来说,是至关重要的。

另外,Intel 等成熟的 Fortran 编译器,有助于将 Fortran 代码在计算机上高效的优化编译,产生比同样的 C/C++ 更快的执行代码。

最后,现在主流的高性能计算和并行库,大多是基于 Fortran 的。Fortran2003 新语法充分考虑了并行计算的要求,它专门为并行计算设计了若干语法要求,而 C/C++ 需要借助单独的函数库实现。

当然,区别还有很多,我总结的只是一少部分。

有许多模型都是用fortran写的,并且有很多已经成型的库文件与程序。如果要学C语言的话,这些模型就都要重新写过,这是十分不现实的……

大学工科的学习方法
答:找实验员问问吧,说不定别的学生结束了实验有空余时间,能让你玩玩呢?在具体着手做之前,千万不要说“不可能”。“不可能”只能是你做完之后才下的结论,...这是非常困难的——要知道一般都是为了博士资格考试这一个学期都不选课,要充分准备,还不一定能过。 于是有一天晚上我躺在床上想,是不是放弃算了,反正...

我是准大学工科生,想知道工科数学和英语大二以后学不学?大学应该怎么学 ...
答:英语,大一大二都要学,因为有的学生在大二才考四六级。大学学习还是最主要的,不是像有的人说,一到大学就轻松了(我们高三时,老师总这么说),毕竟这里比你的高中大多了,天南海北的人,有学习比你强的,你不学就准备掉队。大学该怎么学?说些理工科通用的吧(你虽然说明了是工科生,但你要...

工科教育的问题不容忽视!
答:工科教育是国家发展的重要基石,但目前却面临着纸上谈兵、理论与实际脱节的困境。本文将深入探讨工科教育的问题所在,并提出解决方案。‍实践教育的缺失我们过于注重理论教学,导致学生缺乏实战经验。这就像学习游泳却从未下水一样,怎么能在职场的大海中游刃有余呢?建议通过与企业合作,开设实习项目,让学生在实际工...

理工科学生需要培养批判性思维和人文素养吗,该如何培养呢?
答:我认为这需要看每个人的个人选择,如果一个人本身是理工科的学生的话,这个人确实可以适当培养批判性思维和人文素养。特别是对于后者来说,我觉得每个人其实都需要主动培养一些人文素养,这个方式可能不会让我们的生活因此而变得越来越好,同时也不会让我们大富大贵,但至少可以让我们用更为高级的方式来...

老师您好,我是一名二本工科学校机械学院大三学生,专业是材料成型与控...
答:所谓幸福就是自己能做自己喜欢的事情,这点我理解,也希望你理解。不能做自己喜欢的事,这是正常的,是无奈的,是你必须接受的。如果你能通过你的努力去改变这个现状,那么恭喜你;如果你什么都改变不了,就请你接受这个现实。我也不喜欢机械这个行业,如果你看过我的空间,你就应该知道我是什么样的...

我现在是一名工科学生,毕业以后想做人力资源管理工作。请问我在大学里...
答:另,不少企业,如机械制造业、计算机等在选拨人力资源人员时会青睐工科背景的,所以个人认为你还是有必要把本专业的知识学好~~~最后,不得不说,人力资源跟工科类、技术方面的人才在待遇、培训发展等差别较大,如果你在这些方面接受的话就坚持自己的想法好好准备 ...

我是一名将要步入大学的高三学生,我想知道什么专业热门,什么方法让我...
答:怎么很快嘛 真的文凭都要四年才能拿到,就算能提前毕业也要三年(这种牛人很少很少)。热门的专业嘛,工科类的专业的都比较热,找工作也好找,比如自动化。工科是应用数学、物理学、化学等基础科学的原理,结合生产实践所积累的技术经验而发展起来的学科。代表性的学科有土建类、水利类、电工类、电子...

为什么现在很多文科生选择学习工科专业?
答:5. 多元发展机会:随着科技的不断进步,工科专业也在不断发展和演变。学习工科专业可以为学生提供更多的多元发展机会,例如参与创业、科研项目、技术创新等。尽管工科专业有很多吸引人的优势,但选择专业应该根据自己的兴趣、能力和目标来决定。重要的是选择一个适合自己的专业,能够让自己感兴趣并有激情去...