FORTRAN 90 程序编程规范(2)

2019-01-27 17:04

不要使用语句函数,如 f(x) = x**2 - 1

可用contain 内部函数子程序来代替。 不要使用假定大小数组

它是作为哑元使用的,它的最后一维无上界,而用*代替,如 DIMENSION a(100,*)。

在Fortran 90 中可用假定形状数组代替,它的每一维都是可调的,并用(:)来声明, 如:

REAL , DIMENSION( 100 , : ) :: a

不要使用FORTRAN 的INCLUDE 行。在多数情况下可用USE 来代替,有些则采用预处 理#include 来代替。

不能使用双精度类型,采用Fortran 90 的种别参数。 不要使用PAUSE 语句;

不要使用ENTRY 语句:一个子程序只能有一个入口点;Fortran90 中避免数组在子程序之间传递时维数的隐式改变。

尽量不要采用经销商扩充的功能。 2.3 在FORTRAN 90 中限制使用的功能

GO TO 语句和语句标号只能在程序出现异常情况需要立即退出时才能使用,即允许使用GO TO 语句的唯一例外,是在出现错误时跳到程序的末尾处,这时用9999 作为Labels (这样可使所有人都知道GO TO 9999 的意思)。 2.4 关于预编译器(Precompilers )的使用

建议在数值预报创新系统中使用预编译器,因为它提供了一种可有选择的对程序系统的某一部分程序进行编译的方法(条件编译);另外,为了提高程序的可移植性,同样也需要使用预编译器。由于超级计算机都是用UNIX 操作系统,C 预编译器(cpp, C language pre-processor)可能是最好的选择。 2.4.1 文件的包含

Fortran 90 提供了利用“INCLUDE ”语句引入文件的功能,但有时需要加入文件的目录结构信息,因此可以改用cpp 中的#include 功能,是程序更加清晰。“include ”后的文件可以是用于变量定义、子程序注释或interface 接口块等的一段程序。如, SUBROUTINE Foo IMPLICIT NONE ...

INTERFACE

#include #include #include ...

CALL TypePackageIni #endif ...

END SUBROUTINE Foo

将视type_package_init 的定义调用子程序TypePackageIni 。

3可读性与可维护性

本节将主要介绍如何使Fortran 90 程序更易读、更易维护。 3.1 空白的使用

空白的使用可以使程序更易读、易维护。加入空白的方法主要有空行、空格。 3.1.1 空行

在程序“段落”之间加入空行,可以使程序的逻辑结构更加清楚,程序段落更加明白。 如

PROGRAM Foo USE module_a USE module_b

IMPLICITE NONE REAL :: time REAl :: value INTEGER loop value = 3.1415926 WRITE(*,*) value END PROGRAM Foo 3.1.2 空格

在一行中加入一些空格,可以使程序更易读,如在赋值号左右至少加一个空格,在逗号后加一个空格。

!Initialize variables X=1

MeaningfulName=3 RealNumber=5 可改写为:

!Initialize variables X = 1 MeaningfulName = 3 RealNumber = 5

3.1.3 缩进

为了能够更加清楚的显示程序的逻辑结构,我们采用四格缩进的方法,即在上一行开始处空三格在第四格开始书写。例如下面是IF 语句块的一个示例: !Example If block IF(...) THEN ! a comment

DO Loop = 1, EndLoop ! another comment ... code statements ... END DO

ELES IF ( ... ) THEN ! another comment

... ... code statements ... ... END IF 3.2 程序文档及注释

程序文档和注释可以帮助读者了解仅看程序不易或无法了解的信息,这有几个层次: 程序外应有科学文档、程序文档及用户指南等软件文档。 在程序头应有程序头文件在程序中应有段落注释及行注释。 3.2.1 软件文档

软件工程中除了要编写工程文档外,还要编写软件文档,这是软件工程必不可少的部分。 多数情况下,程序软件文档提供软件包级的文档,而不是单个程序的文档,它包括: 科学文档:陈述软件包拟解决的问题以及采用方法的基本原理。该文档与代码本身无关。 程序文档:说明在科学文档中描述的方法的实现。所有软件包中的程序都要列出并作简短的功能说明,并列出软件包中各程序的调用关系树(或流程图)。

用户指南:详细描述软件包的输入输出参数和文件。这包括软件包内程序的参数、开关值、可调参数的取值范围,要说明缺省值和敏感值的范围。要对读入的文件和namelist有详细的说明。 3.2.2 程序头文件

每个程序都要有头文件,一般放在程序开头,内容包括本程序模块的功能和目的说明、模块的接口说明(如调用实例、参数描述和子模块清单等)、有关数据的说明(如重要的变量及其用途、约束和限制条件,以及其它有关信息)、开发历史记录(包括模块设计与编程人员名单、复审人员及复审日期、修改日期和有关说明等);头文件还描述程序的函数、引用的外部文档和程序使用的变量,程序中使用的变量都要在头文件中声明并注明用途。

附录A 给出了程序头文件的标准模板。文件头的写法将在第六章中详细讨论。 3.2.3 程序注释

程序内部的注释说明本段或本行程序代码的含义或要进行的操作。

片段注释:把代码分成一些逻辑片段,注释放在定义片段开始的部分,它嵌在程序体内用以描述处理功能,如在函数/子程序/过程语句调用前后,循环语句前后以及重要语句旁边都要加上注释语句。片段注释的目的是说明代码某一部分的功能,它应当放在要注释的代码行上,或者放在要注释的代码行的前一行。注释应当顺序编号,如使用1.0,2.0 等: !---------------------------------------------? ! <片段号> <片段标题>

!---------------------------------------------?

建议:软件文档使用中文编写,并提供相应的英文摘要;程序头和注释全部使用英文编写。 3.3 有意义的名称

给文件、子程序、常量、变量一个有意义的名称。一般的做法是用相应的英文或缩写、习惯名称命名。

选择一个有意义的名称,在程序中始终不变;

当需要缩写时,采用统一的方法,如当给一组与“Data refresher ”有关的函数命名时,可用dr_规定;

缩写应避免误解,如不要用inch 表示input char ,可用in_char 表示;

用下划线使名称更易读;


FORTRAN 90 程序编程规范(2).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:立体几何-圆锥曲线-导数文科答案

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: