FORTRAN 90 程序编程规范

合集下载

FORTRAN90第6章子程序

FORTRAN90第6章子程序
INTENT(IN):作为子程序的输入(不得再改变其值) INTENT(OUT):子程序的输出(对应的实元不能是表 达式) INTENT(INOUT):子程序的输入输出 例:REAL,INTENT(IN)::X,Y
Fortran 90
子程序程序体的写法
分为说明部分和执行部分。 1、说明部分应对程序体内一切变量、数组等实体 (包括虚元)作出说明,同时还要说明函数结果 变量名,但不可说明函数名。 2、执行部分中必须对函数结果名至少赋值一次。
例2.计算y=f(x)+g(x)值。
其中
f(x)=x+sin30° x+1,f(x)>0 g(x)= 0, f(x)=0 x-1, f(x)<0 要求用外部函数求g(x)的值。
Fortran 90
PROGRAM MAIN IMPLICIT NONE REAL::X,Y,F,G,GF READ*,X F=X+SIN(30*3.1415926/180) G=GF(X,F) Y=F+G G,GF不能同名 PRINT*,Y END
Fortran 90
最简单的源程序的结构
主程序: 单位定义 说明部分 子程序: 计算或处理
输入
调用子程序 输出 END
Fortran 90
子程序分类
用于完成复杂的计算
1、函数子程序
分为内部函数子程序 外部函数子程序 2、子例行子程序 分为内部子例行子程序 外部子例行子程序
返回 一个或多个值
用于完成复杂计算 ,返回一个或多个 值,或用于其它数 据处理
247.0
4.0
Fortran 90
6.3 完成复杂 计算任务,返回一个或多个值,或用于其它数 据处理

笫十五章 FORTRAN 90

笫十五章  FORTRAN 90
(三) 数组赋值 a(1:9,1:9) a(2:4,5:8)=a(3:5,1:4) 有效 a(1:4,1:3)=a(1:3,1:4) 无效 因形状不同 a(k+1:n,k)=0 给多个元素赋标量,有效 (四) where语句和where结构 where语句可用于为数组赋值,如a和b是两个形状相同的数组,将b中与 a的负元素对应位置上的元素置0,可写成 where(a<0) b=0 where结构 where(c/=0) a=b/c elsewhere a=0 c=1 end where
笫十五章 FORTRAN 90
FORTRAN 90 与FORTRAN 77 不同之处
一、说明语句
(一)固有数据类型 整型、实型、复型,其后都可以接一个下划线_和另一个 整型常量或有名整型常量用来指明种别参数。如 42_2 42_long 0.3_double (3.14_double,_7) ascii_’john Q.public’ 种别参数(kind parameter):当它是一个整数1,2,3…时, 可能表示单精度双精度和四精度,在不同的系统中可能是 4,8,16。 (二)变量 integer (kind=2):: x,y character (len=20,kind=kanji) ::name kinji为一整型常量 real ::a=1.2,b=2.3, 初始化变量的值在执行过程中可变
六、数组
(六) 列表检索 1. 对无序列表的顺序检索 subroutine search_1(lost_card,card_number,found) integer,dimension(:),intent(in) :: lost_card integer,intent(in) ::card_number logcal,intent(out) ::found integer ::I found=.false. do I=1,size(lost_card) if(card_number==lost_card(I)) then found=.trun. exit end if end do end

FORTRAN90第2章

FORTRAN90第2章
字母大小写等价 变量名中字符与字符之间不能有空格 取名时尽量“见名知意”,不使用关键字
2.3 变量
3.变量的类型 变量类型说明一般形式: 变量说明符[ [,属性] … :: ] 变量列表 类型说明符可以是固有的或派生的,基本类型变 量说明符: INTEGER REAL、DOUBLE PRECISION COMPLEX LOGICAL CHARACTER 通常要求::不省略
2.2 常量
主要了解: • 常量的概念 • 固有数据类型及其常量表示
2.2.1 固有数据类型
• 固有数据类型有五种:
– – – – – 整型( INTEGER) 实型(REAL) 复型(COMPLEX) 字符型(CHARACTER) 逻辑型(LOGICAL)
1、整型数据
• – – – – 整型表示: INTEGER INTEGER INTEGER INTEGER
2、实型数据
• 实型表示: – REAL或REAL ( 4 ) 表示单精度实数 – REAL ( 8 ) 或 DOUBLE PRECISION 表示双精度实数
2、实型数据
• 每种实型数据所占的字节和范围:
数据类型 REAL (4 ) REAL (8 ) 或
DOUBLE
字 节
精 度
范 围
负数: -3.40282347E+38~-1.17549435E-38 正数: +1.17549435E-38~+3.40282347E+38 负数: -1.7976931348623158D+308 ~ -2.2250738585072013D-308 正数: +2.2250738585072013D-308 ~+1.7976931348623158D+308

FORTRAN90程序设计1[1]

FORTRAN90程序设计1[1]

程序设计举例
算法

算法是计算机软件中的一个基本概念,它是对解决实际问题的方法和步
骤的描述。设计算法是程序设计的核心,也是编写程序的基础。

正确的算法有以下几个显著特点:
(1)有穷性(flniteness)。 (2)确定性(certainty)。 (3)有效性(effcctivencss)。 (4)有零个或多个输入(input)。 (5)有一个或多个输出(output)。
简单的FORTRAN90程序分析

(6)空格并不是随处都可以使用的,一个像关键字、变量和常量名以 及操作符等的字符,其内部是不能使用空格的,空格会使字符失去其原 有的含义。 (7)FORTRAN90的注释语句是以感叹号为标志的,一行中感叹号后的 所有字符都被编译器作为注释语句而忽略。注释语句可以单独占一行, 也可在程序的其他语句后面出现。在FORTRAN90中,空行被作为注释 语句。 (8)如果遇到一条语句的长度超过了FORTRAN90所允许的行最大长度, 需要写成几行,FORTRAN90提供了一个续行符 ( & ) ,通过在语句末尾 添加续行符,编译器就会把下一行作为续行来处理。如果是把一个如关 键字这样的字符分成两行,那么需要在下行语句的开头再加一个续行符。
CHARACTER ( LEN = 10 ) :: STRING 子字符串是字符串中的若干个连续字符的集合。子字符
CHARACTER (LEN = 5 ) :: SUBSTRING 串的表示方法如下: CHARACTER (LEN = 1 ) :: CHAR STRING=’JANEJORDE’ 字符串变量名([FIRST-POSITION] : [END-POSITION]) ! SUBSTRING的值为“JANE” SUBSTRING=STRING ( :5 ) 缺省的开始位置是1,缺省的结束位置是字符串的长度。 SUBSTRING=STRING ( 5:6 ) ! SUBSTRING的值为“J” 如果开始位置大于结束位置则子字符串为空,即它的长 SUBSTRING=STRING ( 3:7 ) ! SUBSTRING的值为“NEJO” N=7 度为0。 CHAR=’ABCDEFGHIJK’ ( N:N ) ! CHAR的值为“G”

Fortran90编程

Fortran90编程

字。以关键词end type结束。
派生类型的声明和使用
n 声明: n 赋值: n 引用结构成员:
例一:派生数据类型
模块(Module)
n 是一种不能直接执行的程序单元,但可以包含
数据声明和过程
n
使不同的过程实现过程和数据的共享 n 可以实现对自定义数据类型的封装
n 相对于program,function,subroutine,是一种特
例三:数据类型的范围
定义符号常量
n 符号常量在程序中不可以改变其值 n 定义符号常量可以增强程序的可读性和可维护
性 n 定义方法:加上parameter属性
real (8) ,parameter :: pi=3.1415926535_8
例四:定义符号常量
三、控制结构
n if语句:if then elseif else endif
n
在Compaq Visual Fortran中调用 CXML
n 第一种方法:在工程中加入cxml.lib
n 第二种方法:使用include
PROGRAM example INCLUDE 'CXML_INCLUDE.F90’
在Compaq Visual Fortran中调用 Intel MKL
n 添加库函数路径 n 在工程中加入mkl_s.lib
总结:Fortran90的新特性
n n n n n n n n
高级的表达能力:数组运算 (例如, X(1:N)=R(1:N)*COS(A(1:N))) 动态存储分配 (ALLOCATE, DEALLOCATE, ...) 导出类型(derived types)与操作符重载(operator overloading) 更好的变量声明方式(parameterized types),提高移植性 模块 更多的现代控制结构 (SELECT CASE,END SELECT,DO, END DO,EXIT...) 更多的内部函数 (date, precision, arrays, ...) 新的源程序书写格式-自由格式(free format) 指针

fortran90整理

fortran90整理

fortran90整理1语句编译1.Build—Compile:编译;Build—Build:连接;Build—Exetuce:运⾏;或单击⼯具栏相应按钮。

注意:a、保存⽂件时将⾃动创建同名的project⽂件,形成*.dsp⽂件;b、同时还将⾃动创建同名的workspace,形成*.opt和*.dsw⽂件;c、编译连接后⾃动形成Debug⽬录,该⽬录中存放编译连接后⽂件。

如:*.obj,*.lnk,*.exe等2.Free Format(⾃由格式)1.!感叹号后⾯的⽂本都是注释。

2.每⾏可以编写132个字符。

3.⾏号放在每⾏程序的最前⾯。

4.⼀⾏程序代码的最后如果是符号&,代表下⼀⾏程序会和这⼀⾏连接。

如果⼀⾏程序代码的开头是符号&,代表它会和上⼀⾏程序连接。

3.书写格式⾏的书写(⾏的长度、分⾏、续⾏)1⼀⾏可以是0~132个字符,空格有意义,2语句最长不超过2640个字符3⼀⾏可以有多个语句,⽤“;”分隔4⼀个语句可分⾏写,读⾏标记为&(放在尾部),但如为关键字,⾸尾均加&。

5最多可有511个续⾏。

4.语句的分类注释语句:!后的所有字符都被编译器忽略1.可独占⼀⾏,可在其它语句之后,a)空⾏为注释⾏(固定格式⽤C和*)2.说明语句:⽤于说明变量的类型、属性等3.可执⾏语句:输⼊、赋值、输出……5.语句有位置规定:说明语句必须出现在可执⾏语句之前,格式说明语句(FORMAT语句)除外。

6.标志符⼩结注释标志符:1⾃由格式:!固定格式:C *2语句分隔符:分号;(仅⾃由格式可以使⽤)3续⾏符:⾃由格式:&4申明标号:1到5位⽆符号整数5空格:关键字、变量、常量内部不能⽤空格,但相邻两者之间须⽤空格6.FORTRA90源程序基本结构1、FORTRAN90程序是⼀种分块结构,由若⼲个程序单元块组成:主程序、外部⼦程序、模块、块数据单元⽆论是主程序单元,还是⼦程序单元,都是独⽴的程序单位,应该独⽴编写,它们的形式相似。

FORTRAN90指导

FORTRAN90指导

FORTRAN90学习指导一、FORTRAN90基础知识1.源程序及其构成书写格式:主程序定义语句、结束语句注意:在没有程序名称的时候,程序开头的PROGRAM也不要出现。

如果使用了程序名称且在END语句中出现,则END语句中的PROGRAM不能省略。

语句行可以是0~132个字符;除赋值语句外,每个语句都要使用关键字开头。

如果希望一行中出现多个语句,语句一定要用分号隔开。

空格不能随便使用,关键字、变量和常量名以及操作符中的空格会使字符失去其原有的含义。

但它们之间一定要加空格。

注释行:以感叹号为标记,或“C”、“*”(FORTRAN90中不提倡此用法)续行标记:在句末尾添加续行符&,如果将关键字分成两行,则下一行开头也要加续行标记。

如果续行符出现在注释语句中,则失去了续行的功能。

2.FORTRAN90字符集126个英文字母(大小写字母等价)210个阿拉伯数字3下划线421个特殊字符:空格= + - * / (), . ‘: !“% & ;< > ? $5其他字符(只可以出现在字符常量、字符串编辑描述符、注释和输入输出记录中)3.基本数据类型1 整型KIND值可以为1、2、4类型说明关键字:INTEGERKIND值决定数据的范围。

对于整数没有误差。

I=3/2=1;I=1/2=0INTEGER(KIND=4)::AINTEGER*4::AINTEGER(4)::A2 实型KIND值可以为4(单精度7位有效数字)、8(双精度15~17位有效数字)类型说明关键字:REAL小数表示形式、指数表示形式(规格化的指数形式)错误表示形式:E34、.E34、0.14E2.38开3次方:8.0**(1.0/3.0)3 复型KIND值为4、8是实数的有序对,将两个实数中间用逗号分隔,然后放在一对括号中类型说明关键字:COMPLEX复数的运算:+、—、*、/4 字符型KIND值为国家语言种类由一对单撇号或一对双撇号之间的字符序列组成。

FORTRAN90程序设计1、2、3

FORTRAN90程序设计1、2、3

[例2-1]
PROGRAM H_TO_C !Given the F temprature,to calculate the Centigrade REAL::TC,TH READ *,TH TC=5*(TH-32)/9 PRINT *,TH,TC END PROGRAM H_TO_C
[例2-2] PROGRAM CAL_M_SUM IMPLICIT NONE INTEGER::N,M REAL::T,A N=0;T=0 PRINT *,'Input number of data:' READ *,M DO READ *,A T=T+A ;N=N+1 IF(N>=M)EXIT END DO PRINT *,T END PROGRAM CAL_M_SUM
输出结果S
[例1-1]N-S图
FORTRAN 语言的发展 源程序及其构成
语言元素
程序单元概念
FORTRAN 是 FORmula TRANslation 的缩写 1954年 1978年 第一个FORTRAN文本的提出 推出FORTRAN77
1991年
FORTRAN90问世
几个简单的FORTRAN90程序 FORTRAN90程序的构成
PROGRAM CAL_FACTOR IMPLICIT NONE INTEGER::FACTOR,S=0,I DO I=4,8 S=S+FACTOR(I) END DO PRINT *,'S=',S END PROGRAM CAL_FACTOR
FORTRAN90程序的构成
1.FORTRAN90是分块形式的程序,一个程序含有 多个程序单元,每个程序有且仅有一个主程序单元。 2.各程序单元由若干行构成。程序行主要有: 说明语句行 可执行语句行 注释行(用!开始)

Visual Fortran 90 编译器及代码书写格式

Visual Fortran 90 编译器及代码书写格式
1,插入,改写状态; ,插入,改写状态; 2,文本块的使用,选择(先选择再使用); ,文本块的使用,选择(先选择再使用); 3,语法着色:绿色:注释文本; ,语法着色:绿色:注释文本; 蓝色:关键字; 蓝色:关键字; 黑色:代码. 黑色:代码.
六,出错信息及处理方法
4.0版中:Project工具栏的下拉列表栏中; 版中: 工具栏的下拉列表栏中; 版中 工具栏的下拉列表栏中 Win32 Debug选中,出现调试状态的菜单. 选中,出现调试状态的菜单. 选中 1,出错信息(p.351):在output窗口内显示 ,出错信息( ):在 窗口内显示 ): 窗口 例:一般错误 严重错误 警告 运行错误 逻辑错误 warning FOR4227:…… :
FORTRAN90特性 FORTRAN90特性
1,结构特性更好,易读性与可维护性更好 2,算法功能更强,数组的直接运算,直接赋值 3,关键字参数调用,可选参数调用,类属过程调用 4,运算符超载,赋值号超载功能 5,引进了字符种别概念,给各国文字赋以种别参数 6,语法结构更为严谨,结构统一 7,屏弃了FORTRAN77一些过时的特性
编译器简介
作用:把高级语言翻译成机器码, 作用:把高级语言翻译成机器码,也就是常常可以 看到扩展名为EXE,COM的文件. 的文件. 看到扩展名为 , 的文件 相同的程序代码可用不同厂商的编译器来编译, 相同的程序代码可用不同厂商的编译器来编译, 所生成的文件也不会完全相同. 所生成的文件也不会完全相同.编译器的好坏主要 取决于编译结果. 取决于编译结果.
书写格式
!Free Format
返回目录
program main write(*,*)"Hello" !这也是注释 这也是注释 write(*,*)& "Hello" wri& &te(*,*)"Hello"

总结

总结

(八)字符处理 1.字符串、字符型变量和字符型数组。 2.字符型数据的赋值和运算。
3.字符型数据的输入与输出。
(九)文件
1.文件与记录的概念。 2.文件的打开与关闭。
3.顺序文件的存取方法。
4.直接文件的存取方法。
练习题:
一、填空题: 1.表达式1 / 2 * 3.6 + 1.3的值是 。
2.若A=2,B=7.5,C=-3.6,L1 = .TRUE.,L2 = .FALSE.。
Fortran90 程序设计
课程总结
(一)FORTRAN程序的结构、书写规则 1.FORTRAN程序的构成(主程序和子 程序)。 2.FORTRAN源程序的书写格式。
(二)、数据类型及其运算 1.常量和变量的类型(整型、实型、双精度型、 复型、逻辑型、字符型) 2.定义变量类型的方法(用I——N规则隐式说明 和显示说明)。
则表达式 .NOT. L2 .OR. B – A <= C /2 .AND. C>= -3.6的值 是 。
3.若DO I=1.5, 3.6 , 1.2,计算循环次数是
4.若I=10,J=20,A=12.3,B=156.0,C=846.0, 执行语句PRINT ‘(1X, I3, I4/1X, 3F6.1)’, I, J, A, B, C
3.符号常量及其定义方法(PARAMETER语句)。
4.运算符及运算优先级。 5.表达式(算术表达式、关系表达式、逻辑表 达式和字符表达式)及其求值规则。不同类型 数据的混合运算。
(三)最基本的语句
1.赋值语句(算术、逻辑和字符型赋值语句)。 2.表控格式的输入和输出。 3.格式输入与输出。 (1)格式编辑符(X、H、I、F、E、D、A、L、/ ),Байду номын сангаас式的重复作用。 (2)格式语句与输入输出语句(包括READ, WRITE语句)的相互作用。 (3)在输入输出语句中包括含格式说明的方法。

Visual Fortran90程序设计基础第1、2章

Visual Fortran90程序设计基础第1、2章
0 +456 -123
34_2
34_SHORT
12345678998765432_4
下划线后面的量就是种别参数,没有下划线的数都具 有缺省种别。
为了保证计算机内数的范围够用,就要通过给定种别 参数来约定。种别参数是由内在询问函数KIND送回的。提 供的最小范围是由内在函数Selected_int_kind送回的。表 示十进制幂的范围是由内在函数range送回的。
在记号内部,也不许随意地使用空格。例SIN(X)与S I N(X)不同。 记号与记号之间的空格可以随意地使用。

多个空格在语法上与一个空格的作用相同。
一个记号与相邻关键字、名字、常数或标号之间,应当用一个或多个空格 分开,以避免错误,同时也使结构清晰。
Fortran的数据类型(1)
什么是数据类型?
§1.2程序设计语言 填补了人与计算机交流的鸿沟
程序设计语言 有问题需要计 算机解决的人 交流的鸿沟 计算机硬件仅仅 知道0和1 有问题需要计 算机解决的人 计算机硬件仅仅 知道0和1
程序设计语言的分类
1.机器语言:二进制代码形式,可以被计算机直接执 行,不可移植 2.汇编语言:用助记符来代替机器指令,容易记忆, 不可移植 3.高级语言:接近自然语言(英语)的程序设计语言, 又称算法语言,易学、易用、易维护,可移植性好 例:FORTRAN、BASIC、PASCAL、C、LISP、 PROLOG等
• 例:selected_int_kind(6)可以返回范围在-106~+106
(不包括两端点值)的所有整数的种别值。
•为使程序具有可移植性,可将K6说明成符号常数, 作为种别常数来使用。
INTEGER, parameter::k6=selected_int_kind(6)

FORTRAN90-子程序浅

FORTRAN90-子程序浅
20
100
Program Main REAL MYEXP WRITE(*,*) ‘Enter X:’ READ(*,*)X Y=(MYEXP(X)-MYEXP(-X))/2.0 WRITE(*,100)’Sinh(‘,X,’)=‘,Y FORMAT(1X, A, F5.2, A, E13.6) END

9
f(x) = x * x + 2 * x + 5 x = 3.0 y = x * f(1.0) WRITE(*,*) y END
24.00000
10
四、语句函数的应用
例:利用二分法求方程x3-x2-1=0在[0,3]上的实根。
Real::a=0.0,b=3.0,m Fa=a**3-a*a-1.0; Fb=b**3-b*b-1.0 m=(a+b)/2; Fm=m**3-m*m-1.0 Do while (Fm>1.0e-6) If(fm*fa>0) then a=m;Fa=Fm Else b=m Endif m=(a+b)/2.0; Fm=m**3-m*m-1.0 Enddo Write(*,*)’方程的根为:‘,m End
Program Main
REAL W(5,5)
CALL READIN(W) CALL OPP(W,X1,X2) WRITE(*,100)X1,X2 100 FORMAT(1X, ‘The two sum of opposite angles &
elements:’/1X,’X1=‘,F8.2,’X2=‘,F8.2)
(1)
SUBROUTINE SUB(B) DIMENSION B(-1:5) . . . END
B(-1) B(0) B(1) B(2) B(3) B(4) B(5)

FORTRAN90程序设计教程 第1章 FORTRAN程序设计基础

FORTRAN90程序设计教程 第1章 FORTRAN程序设计基础

例1.1 求
其中
2
x y u x y
2
a b x 2 2 a b
ab ab
a b a b y 4 a b
ab ab
这一题的算法并不难,可写成: (1)从键盘输入a、b的值。 ab x a b ,y (2)如果a<b,则 ab , 4 x a b , y 否则 。 ab (3)计算u的值。 (4)输出u的值。
3. N-S图
由于传统流程图的缺点,1973年美国学者 I.Nassi和B.Shneiderman提出了一种新的流程图工 具─N-S图。N-S图以三种基本结构作为构成算法 的基本元素,每一种基本结构用一个矩形框来表 示,而且取消了流程线,各基本结构之间保持顺 序执行关系。N-S图可以保证程序具有良好的结 构,所以N-S图又叫做结构化流程图。
例1.3的算法:
(1)输入m和n的值。 (2)求m除以n的余数r。 (3) 若r=0 ,则转至第 (6) 步,否则执行第 (4) 步。 (4)n→m,r→n。 (5)转第(2)步。 (6)输出n。
算法的五个特征:
(1) 有穷性。算法中执行的步骤总是有限次数的, 不能无止境地执行下去。 (2) 确定性。算法中的每一步操作必须具有确切 的含义,不能有二义性。 (3) 有效性。算法中的每一步操作必须是可执行 的。 (4) 要有数据输入。算法中操作的对象是数据, 因此应提供有关数据。 (5) 要有结果输出。算法的目的是用来解决一个 给定的问题,因此应提供输出结果,否则算法 就2没有实际意义。
1.2.2 算法的描述
算法的描述有许多方法,常用的有:自 然语言、一般流程图、N-S图等。前面例 1.1~例1.3的算法是用自然语言──汉语描述 的,其优点是通俗易懂,但它不太直观, 描述不够简洁,且容易产生二义性。在实 际应用中常用流程图表示算法。

FORTRAN90程序设计9

FORTRAN90程序设计9

几点应该注意
(8) 一个辅程序中的接口块不允许含有一个被该辅程序定义的过程的接 口体。一个接口块中可以有多个接口体。
(9) 接口块还可用来说明一个外部过程或虚过程,并为之提供显式的调 用接口,这比EXTERNAL语句提供了更多的信息,因而也提高了程序 的可读性。例如:下面是没有类属说明的接口块:
接口块能将子程序中所需的信息精确的拷贝过来,通过它可 以为主调程序和被调用子程序指明一个显式接口。
几点应该注意
(1) 接口块以INTERFACE语句开始,以END INTERFACE 语句结束,块内只能取被调用过程中的说名部分,不允许出 现任何可执行语句。
(2) 类属说明的形式为:
类属名 或OPERATOR(定义的运算符) 或ASSIGNMENT(=) 其中,类属名用于定义类属过程、OPERATOR用于定义运算
USE语句
USE语句的最简单形式为: USE 模块名1,模块名2,……,模块名N
这条语句提供了对模块的所有公共的有名数据对象、派生类型、接口块、 过程等的访问。
在作用域单位内,USE语句必须出现在其他说明语句之前。 如果需要对两个或两个以上的模块进行访问,可能会在不同的模块中用
到了相同的名字,因此允许USE语句对被访问的对象重新命名,以解决 局部对象和模块中访问对象之间的名字的冲突问题。要重新命名时, USE语句应具有下列形式: USE 模块名,更名表 其中,更名表的形式为: 局部名=>使用名,局部名=>使用名,…… 例如:
END FUNCTION LOG_PLUS_LOG
括号时必须的,因为运算符“+”
END MODULE LOGICAL_PLUS PROGRAM TEST_LOGICAL_PLUS

Visual Fortran90 编译器及代码书写格式

Visual Fortran90 编译器及代码书写格式
1、界面组成:菜单、工具栏——上端
左边:项目工作区窗口 右边:可用于编辑文件和阅读文档的主工作区 下端:输出窗口和状态栏
Developer Studio解题过程



分析问题,设计算法,绘制框图,编写程序。 创建有关工作空间、项目(已建,可省略)。 创建并输入源程序,创建其它辅助文档。 编译源程序。 构建、连接生成目标程序(可执行程序)。 运行目标程序。 调试程序
Visual Fortran 90 程序设计
编译器简介 代码书写格式
编译器简介
作用:把高级语言翻译成机器码,也就是常常可以 看到扩展名为EXE、COM的文件。 相同的程序代码可用不同厂商的编译器来编译, 所生成的文件也不会完全相同。编译器的好坏主要 取决于编译结果。
一、启动和退出Fortran PowerStation
空行为注释行(固定格式用C和*)
说明语句:用于说明变量的类型、属性等 可执行语句: 输入、赋值、输出……
语句有位置规定:
说明语句必须出现在可执行语句之前,格式说明语句
(FORMAT语句)除外。
标志符小结
注释标志符:
自由格式:!
固定格式:C *
语句分隔符:分号;(仅自由格式可以使用) 续行符: 申明标号: 自由格式:& 1到5位无符号整数
书写格式
!Free Format
program main write(*,*)”Hello” !这也是注释
write(*,*)&
”Hello” 6: 7: end 如果把Fortran的关键字分为两行书写,则两行都要 加续行符号。如6、7行。 wri& &te(*,*)”Hello”
书写格式

FORTRAN90程序设计实验指导

FORTRAN90程序设计实验指导

FORTRAN90程序设计实验指导FORTRAN90程序设计实验指导第一节 FORTRAN PowerStation 4.0快速入门1.1 安装FORTRAN PowerStation 4.01.1.1 系统要求安装Microsoft FORTRAN PowerStation 4.0需要具备以下软硬件条件:●80486或以上处理器,运行Windows 95/Windows NT 3.51或以上操作系统。

●如果安装标准版,需要3.5英寸软盘驱动器或光盘驱动器,如安装专业版,则必须具有光盘驱动器。

●16MB或以上内存。

●足够的硬盘空间。

安装程序根据安装选项提示所需的硬盘空间。

标准版和专业版的典型安装分别需要约45MB和70MB硬盘空间。

●VGA显示器(推荐使用SVGA显示器)。

●鼠标。

1.1.2 安装步骤下面以Windows 95操作系统为例,对于Windows NT操作系统,安装过程与此类似。

首先,将含FORTRAN PowerStation 4.0的光盘插入光盘驱动器,在资源管理器中运行Setup程序,屏幕显示MicrosoftFORTRAN PowerStation Setup窗口;安装程序自动搜索已有组件,单击【Continue】(继续)按钮,并按提示输入CD-Key后,安装程序会显示安装选项对话框(图 1.1);如果要改变安装FORTRAN PowerStation 4.0的文件夹,单击【Change Folder...】(改变文件夹)按钮,选择或输入所需的文件夹名;如果输入的文件夹不存在,安装程序会自动生成该文件夹,并生成几个下级文件夹以存放相应的各类文件。

图1.1还显示了各安装选项的简短说明和安装时所需的硬盘空间。

选择下列四个安装选项之一继续安装:Typical(典型)Custom/Complete(定制/完全)Compact(紧凑)图1.1 Setup程序的安装选项对话框Run from CD-ROM(从光盘运行) Typical(典型)安装选项将安装最常用的部分,约需70MB硬盘空间。

FORTRAN90实验

FORTRAN90实验

2.1 FORTRAN90的编程环境一、实验目的1. 掌握FORTRAN90的集成开发环境——Fortran PowerStation 4.0。

2.熟悉Fortran PowerStation 4.0的安装、启动和退出。

3.熟悉Fortran PowerStation4.0的各工具图标和菜单的作用。

4. 熟练掌握FORTRAN90程序上机实验过程。

二、实验要求1. 掌握进入Fortran PowerStation 4.0集成开发环境的方法。

2. 分别掌握用菜单、快捷键和工具栏图标进行编译和连接的方法。

3. 理解程序设计的概念,掌握FORTRAN90程序结构与书写规范。

4. 熟悉FORTRAN 90程序从输入到运行的全部操作。

5. 按照题目的要求,认真实验上机实验,并对结果进行分析。

三、实验内容1.进入Fortran PowerStation 4.0集成开发环境:开始→程序→Fortran PowerStation 4.0→Microsoft Developer Studio,单击后,进入如图2-1-1所示的FORTRAN90集成开发环境。

2. 熟悉Fortran PowerStation 4.0集成开发环境及菜单的使用: ⑴ 建立项目工作间:选择File →New →Project Workspace ,点击OK ,出现如图2-1-2所示的界面。

在Name 栏目中输入工程名SX ,点击Create ,出现如图2-1-3所示的界面。

图2-1-1 进入Fortran PowerStation 4.0图2-1-2 建立项目工作间的界面⑵ 编辑源程序:①选择菜单Insert →Files into Project ,出现如图2-1-4所示的界面。

②在File Name 栏目里键入源程序文件名EX.F90,点击OK 按钮,出现如图2-1-5所示的界面。

图2-1-3 建立项目名为SX 的工作间界面图2-1-4 插入文件的界面③单击“是”按钮,出现如图2-1-6所示的界面。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

FORTRAN 90 程序编程规范Fortran 90 编程规范,使程序代码高度组织化,更加易读、易懂、易于维护,程序更加高效。

使编出的程序更易懂、易于维护。

1 语言选择数值预报创新系统软件开发应避免使用Fortran77 的某些过时特征以Fortran 90不一致的特征。

选择Fortran 90 作为开发语言,并采用Fortran 90 的新功能,如动态内存的分配(dynamic memory allocation)、递归(recursion ), 模块(modules)、POINTER 、长变量名、自由格式等。

Fortran 77其中某些只是一些冗余的功能,这些功能已经过时,另外,还有一些在Fortran90 中被证明是不好的用法,建议不要使用。

2 Fortran 90 的新特性2.1.1 建议使用的Fortran 90 新特性建议使用Fortran 90 提供的模块(module ),并用Use ONLY 指定module 中哪些变量或派生类型定义可用于调用程序。

尽量使用数组下标三元组,这样可优化并减少所需的代码行数。

为提高可读性,要在括号内表明数组的维数,例如:1dArrayA(:) = 1dArrayB(:) + 1dArrayC(:)2dArray(: , :) = scalar * Another2dArray(: , :) 当访问数组的子集时,例如在有限差分等式中,可以通过使用下标三元组实现。

例如:2dArray(: , 2:len2) = scalar *( &Another2dArray(:, 1:len2 -1) &- Another2dArray(:, 2:len2) &)对程序单元(program units )命名,并使用End program ,Endsubroutine ,End interface ,End module 等结构再次指定“program unit ”的名称。

在逻辑表达式中使用>、 >=、 ==、 <、 <=、 /=,它们分别代替.gt.、.ge.、.eq.、.lt.、.le.、.ne. 。

新的表示方法更接近标准的数学符号在变量定义中始终使用“::”;始终用“DIMENSION ”定义数组形状;始终用(len=)的语法格式声明字符变量的长度。

从效率的角度考虑,除递归定义的数据结构外,应尽量避免使用递归程序(它在使用内存和cpu 上会降低效率)。

建议定义新的操作符,而不要重载已有的操作符,这样可以清晰地表明功能,避免降低代码的可读性和可维护性。

2.1.2 关于Interface使用Interface 接口块。

在FORTRAN 语言中,主调程序与被调程序是分别编译的。

由于Fortran 90 对过程的许多功能做了扩充,有些功能单靠简单的调用语句已无法反映,因而系统也就无法进行正确的编译。

这时需要在主调程序中加入interface 接口块,通过它为主调程序与被调程序指明一个显式的接口。

如果被调用程序中哑元含有假定形状(assumed-shape )数组,或含可选变元,或含键盘输入的参数,就需要interface 接口块说明。

一般来讲,在Fortran 90 程序之间需要提供的interface 块,建议将interface 接口块明确写入调用程序,并复制被调用程序的参数列表。

这种方法简单易用,但也相应增加了维护代码的工作量,因为只要被调用程序的参数列表发生变化就必须相应改变interface 接口块和调用(call )语句。

2.1.3 关于动态内存的使用并行程序中存在着动态内存使用不充分的情况,合理使用动态内存可提高效率。

在Fortran90 中常采用下列方法获取动态内存。

自动数组(automatic arrays):这种数组的大小在子程序中指定,其大小取决于运行时的变量,例如,可通过参数列表向子程序传递实元变量。

使用自动数组优先于其它形式的动态内存分配方法。

可分配数组(allocatable arrays):声明为ALLOCATABLE 属性的数组变量可在运行时通过ALLOCATE 命令分配空间。

与指针不同的是ALLOCATABLE 属性不能用于派生数据类型中。

这种方法申请的空间要使用DEALLOCATE 命令释放。

在一个程序中,不要重复进行“ALLOCATE—DEALLOCATE-然后再ALLOCATE 一个更大的空间”这样的操作,这样会导致大量不可利用的碎片空间产生。

应在程序中对要开辟的动态数组空间进行连续分配,或连续释放。

在使用ALLOCATE 和DEALLOCATE 命令之后,要利用ALLOCATE 和DEALLOCATE 命令参数中的返回值来判断操作是否成功;不建议使用指针数组。

2.2 Fortran 90 中不建议使用的过时的特性不要使用固定书写格式,采用Fortran 90 的自由书写格式。

不要使用旧式的DO 循环和CONTINUE 语句。

在以前的DO 循环中,关键字之后大多有一个标号,循环在该标号处结束,如:DO 10 I = 1, 10DO 20 j= 1, 20A(i,j)=0.20 CONTINUE˜10 CONTINUE˜建议采用统一的DO 结构,如:DO i = 1, 10DO j = 1, 20A(i, j) = 0.END DOEND DO不能使用实循环变量˜在DO 循环中若用实数作循环变量,由于截断误差的存在,会导致得不到预期的循环次数,如应将下面的DO 循环DO r = 0.1 ,0.9 ,0.1...END DO改写为:DO i = 1 , 9r = i * 0.1...END DO不要使用DO WHILE 语句,可用不带循环变量的DO 语句配合exit 替代,如:不要使用选择性返回。

例如:CALL Foo( x, y, *100, *200, *300 )在执行完该子程序后程序根据Foo 的返回语句后的表达式值选择从标号为100 、200 、300 处继续执行。

可将上述子程改写为结构化CASE 语句:CALL Foo(x, y, return_code)SELECT CASE(return_code)...不要使用算法IF 语句:使用块IF 结构来代替;不要使用计算GO TO 语句,如GO TO (10,20,30) i ;不要使用标号赋值语句,如ASSIGN 300 iGO TO i不要使用除IMPLICIT NONE 之外的任何implicit 语句,如IMPLICIT REAL(a-z)不要使用DATA 语句,对变量赋初值可在声明时进行,或在程序中进行。

DATA 语句是唯一可用于对变量赋二进制、八进制、十六进制初值的语句,但它很可能造成程序的不可移植,因此除非必须这样做,一般建议不要采用。

不要使用COMMON 公共块:使用Modules 参数列表代替公共块向子程序传递数据;不要使用EQUIVALENCE 等价语句:Fortran90 中,由于模块、动态存储、指针、数据结构以及固有函数transfer 的引用,没有必要继续使用EQUIVALENCE 语句;不要使用数据块程序单元DATABLOCK ,在FORTRAN 77 中它用于给公用块内数据赋初值。

不要使用FORMAT 语句。

不要使用err= ,end= 及eor= 等描述符。

在输入输出语句中,这些描述符后面跟语句标号,指示如果出现错误则程序转向执行标号所标识的语句。

我们可用检查iostat 来替代,如:READ ( * , ”(A)” , iostat=status ) line不要使用语句函数,如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 FooIMPLICIT NONE...INTERFACE#include <type_package1.int>#include <type_package2.int>#include <type_package3.int>...CALL TypePackageIni#endif...END SUBROUTINE Foo将视type_package_init 的定义调用子程序TypePackageIni 。

3可读性与可维护性本节将主要介绍如何使Fortran 90 程序更易读、更易维护。

3.1 空白的使用空白的使用可以使程序更易读、易维护。

加入空白的方法主要有空行、空格。

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

如PROGRAM FooUSE module_aUSE module_bIMPLICITE NONEREAL :: timeREAl :: valueINTEGER loopvalue = 3.1415926WRITE(*,*) valueEND PROGRAM Foo3.1.2 空格在一行中加入一些空格,可以使程序更易读,如在赋值号左右至少加一个空格,在逗号后加一个空格。

相关文档
最新文档