Viktor的Fortran手记之二 从FORTRAN到Fortran
(接上回……)
话说搞到了编译器之后,才发现全是F90的编译器。而且在科学界使Fortran的人也不少。据说Fortran在数值算法里也比C快一点。从77改成90吧。大字的FORTRAN也改成了小字的Fortran.
编译器嘛,是IFC和CFC。CFC太老了,95年的,很怀旧,但是在Vista下好歹还能正常工作,除了没办法运行和调试之外。IFC要嵌入到VS里用。Compaq也出过一版VFC,那个要嵌到VS 6里的,偶没装VS 6,当然要报错啦……
续行一律用&。什么第6列用+的办法,恐怕已经土偶了吧……
所谓Vector Subscription和Segment很有意思。然则CFC对Segment的处理不是很好。
do 9, **** 之类的文法已经obsolute了……同样还有character*9之类。
比C省事的地方是数组可以整个处理。还有Implied DO,也是个很好的特性。
其实VB的一些特性和Fortran是相通的。比如块结构的IF。
做C太久了,写if的时候总是忘then.
还有C里{}搞定的东西在Fortran中却要有专门的符号……
搞来了编译器,做了课本上的几个题目。要尝试一下Windows开发。
Viktor的FORTRAN手记之一 引子
Viktor其实也刚刚入门……要不是做科学,纯开发的话Viktor一辈子也不会碰这东西……先说说FORTRAN和C不一样的几个地方吧……目前Viktor还停留在纸上谈兵的阶段,因为暂时找不到Vista下好用的FORTRAN编译器……最近几天也在一直找。经典的Visual Fortran就是不和Vista兼容……总不能因为这点破事开个虚拟机吧……卡到在其次,怕的主要是发热。
- 不用打;以结束语句。
- 实用的语句要空六格。也就是说,得打上六个空格才能开门见山……好像也不要写到70列还是什么的……续行怎么续来着?
- 行首打*表示注释。
- 程序的第一行一定是
program ooxx - 做完的时候还得
stop再
end - 调用子程序要
call xxoo
- 子程序还得写成
subroutine xxoo
...
return
end - 打印居然要加个"*,",还得用print,而且更神奇的是自动换行。
- 名字不许超过6个字母。
- 传统中的I~N规则……I,J,K,L,M,N打头的是整数……
- 有乘方运算符……然则要写成**……
- 除法取整时一律向下取整。
- DO循环要写出CONTINUE的行号……DO 100 I=1,5
- 整数叫integer
- 字符串和字符居然一样……声明要写
character*5 ooxxx - 更强大的是居然用单引号围住字符串(而不是C中的双引号)……
Viktor的FORTRAN手记之一 引子
Viktor其实也刚刚入门……要不是做科学,纯开发的话Viktor一辈子也不会碰这东西……先说说FORTRAN和C不一样的几个地方吧……目前Viktor还停留在纸上谈兵的阶段,因为暂时找不到Vista下好用的FORTRAN编译器……最近几天也在一直找。经典的Visual Fortran就是不和Vista兼容……总不能因为这点破事开个虚拟机吧……卡到在其次,怕的主要是发热。
- 不用打;以结束语句。
- 实用的语句要空六格。也就是说,得打上六个空格才能开门见山……好像也不要写到70列还是什么的……续行怎么续来着?
- 行首打*表示注释。
- 程序的第一行一定是
program ooxx - 做完的时候还得
stop再
end - 调用子程序要
call xxoo
- 子程序还得写成
subroutine xxoo
...
return
end - 打印居然要加个"*,",还得用print,而且更神奇的是自动换行。
- 名字不许超过6个字母。
- 传统中的I~N规则……I,J,K,L,M,N打头的是整数……
- 有乘方运算符……然则要写成**……
- 除法取整时一律向下取整。
- DO循环要写出CONTINUE的行号……DO 100 I=1,5
- 整数叫integer
- 字符串和字符居然一样……声明要写
character*5 ooxxx - 更强大的是居然用单引号围住字符串(而不是C中的双引号)……