爱气象,爱气象家园! 

气象家园

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博登陆

只需一步, 快速开始

搜索
查看: 8247|回复: 9

[参考资料] Code::Blocks+gcc : 比intelVisualFortran小很多,但功能强大的Fortran编辑+编译器

[复制链接]

新浪微博达人勋

发表于 2015-2-28 10:57:05 | 显示全部楼层 |阅读模式

登录后查看更多精彩内容~

您需要 登录 才可以下载或查看,没有帐号?立即注册 新浪微博登陆

x
本帖最后由 wheelar 于 2015-2-28 11:11 编辑

要用IntelVisualFortran,必须安装visual studio,至少要装C++,但是VS实在太大了...

IVF由于本身没有IDE,就得集成到VS中,可是遗憾的是,对于Fortran代码的编辑,除了少数的比如语法高亮之外,辅助编辑功能几乎少的可怜。VB,C#等程序,动辄成百上千行,可是很大部分都是IDE辅助编辑的,但是Fortran,却几乎全部是手工敲进去的。

在网上找了很长时间,终于找到了这样的一款IDE,Code::Blocks, 对于编辑Fortran支持的很好,费了些力气终于安装成功,可是后来才发现“气象家园”里早有仁兄“平流层的萝卜”介绍过这样的好东西http://bbs.06climate.com/forum.php?mod=viewthread&tid=15464。具体的安装就参照上面的连接,这里就不多说了。
由于Code::Blocks纯粹是代码编辑器,支持多种语言,(C/C++,FORTRAN,java,etc),但是它本身没有编译器,编译器选择著名的GNU的gcc里gfortran的Windows版本。编辑器Code::Blocks和编译器gcc加起来都不到200M,gcc里面带有调试器gdb.exe,可以实现断点调试。

这里不对gfortran和IntelFortran的编译功能(比如哪个代码执行效率更高)作比较,我只是单纯的介绍Code::Blocks的编辑功能。
1.Intellisense功能:在程序开头定义了某个变量,如果输入这个变量的前几个字符,系统就会自动提示,按下enter键(不是空格键)就会自动补全,这对于习惯写长变量名的人来说绝对是大大的方便。
cb-intellisense001.png
2.自动提示系统函数
cb_intellisense002.png

IVF则不会自动提示
ivf-intellisense.png
3.自动提示自定义函数,subroutine,以及参数的内容
cb_intellisense003.png
4.代码折叠,if do function等关键字都可以折叠
cb_plus.png


5.代码段,按下ctrl+j,就会出现选项,比如选择dw
ctrlj01.png
就会出现

do while ()
end do
ctrlj02.png

代码段可以自己定义添加

等等,编辑功能确实比IVF要强大得多

但是调试功能则不如IVF,由于IVF是集成到VS中的,调试功能和VB,C#等相似,只要鼠标放在变量哪里,就自动出现变量的值,
IVF_DEBUG.jpg

可是Code::Blocks则是compaq visual Fortran那样的调试模式,而且gdb在Windows平台下,有时不太稳定
CB_DEBUG.png

另外,关于“平流层的萝卜”里介绍的gfortran可以处理360*181*1464这样的大数组,
parameter(nx=360,ny=181,nt=1464)
real:: u(nx,ny,nt)
integer :: i,j,recl1
recl1=nx*ny*nt*4
open(11,file='2007_2012_Jun_Jul_u.grd',form='unformatted',access='direct',status='old',recl=recl1)
!open(12,file='text.txt',form='formatted')
read(11,rec=1) (((u(i,j,k),i=1,nx),j=1,ny),k=1,nt)
open(12,file='u11.txt')
do k=1,2
    do j=1,ny
        write(12,100) (u(i,j,k),i=1,nx)
    enddo
enddo
close(11)
100 format(360f8.2)
end program
个人不建议这样作。360*181*1464这样的数组,会占用360*181*1464*4/1024/1024=363M的内存,虽然现在电脑的内存都很大,但也不是这样的用法。如果一个程序中有几个这样的巨型数组,估计PC内存就要哭了。



密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2019-2-26 14:26:06 | 显示全部楼层
铅笔削你 发表于 2018-11-7 14:26
请问怎么用code blocks找出所编写的Fortran程序当中的错误? 只能自己慢慢用肉眼找吗,能不能像visual Fort ...

查找代码错误,要用编译器,visual Fortran 是编译编辑组合在一起,可以直接找错,但Code::Blocks只是单纯编辑器,就类似ultraedit一样,是不能找错的,找错要用编译器。编译器推荐gfortran的Windows版本,安装也很方便,然后把gfortran集成到Code::Blocks里面

错误提示

错误提示
比如 s=s+i 写成了C语言那样的 s+=i,就提示错了!
密码修改失败请联系微信:mofangbao
回复 支持 1 反对 0

使用道具 举报

新浪微博达人勋

发表于 2015-2-28 12:11:12 | 显示全部楼层
这个比 eclipse 好吗?
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2015-2-28 12:55:06 | 显示全部楼层
不错不错!
密码修改失败请联系微信:mofangbao
回复

使用道具 举报

新浪微博达人勋

发表于 2015-3-2 11:25:21 | 显示全部楼层
不错不错哦,棒
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2015-5-3 13:15:26 | 显示全部楼层
这个非常好,非常感谢,很好用!
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2018-8-2 17:14:43 | 显示全部楼层
真的0超级好用 强烈推荐
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2018-8-2 17:15:33 | 显示全部楼层
学妹推荐的 比cvf好用
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2018-11-7 13:53:28 | 显示全部楼层
请问怎么样用code blocks找出Fortran代码中的错误啊?也就是怎么用它来找bug?
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2018-11-7 14:26:25 | 显示全部楼层
请问怎么用code blocks找出所编写的Fortran程序当中的错误? 只能自己慢慢用肉眼找吗,能不能像visual Fortran那样自动给找出来呢?
密码修改失败请联系微信:mofangbao
您需要登录后才可以回帖 登录 | 立即注册 新浪微博登陆

本版积分规则

Copyright ©2011-2014 bbs.06climate.com All Rights Reserved.  Powered by Discuz! (京ICP-10201084)

本站信息均由会员发表,不代表气象家园立场,禁止在本站发表与国家法律相抵触言论

快速回复 返回顶部 返回列表