气象程序设计及绘图期末复习
R = MAX ( INT ( ( E2 - E1 + E3 ) / E3 ),0 )
DO WHILE (逻辑表达式) 循环体
END DO
可以相互嵌套
print *,输出列表
write(*,*) 输出列表
输出数据
open(文件号,file=‘路径及文件名’)
write(文件号,格式)。。。。
注意:带格式的输入输出方式
外部子例行程序
子例行程序不仅可求一个值,还可求多个值或 不求值而执行某种操作,因此具有更广泛的用途
定义形式:
表示子例行程序定义开始
SUBROUTINE 子例行程序名([虚参1,虚参2,…])
说明语句
执行语句
…
END [SUBROUTINE [子例行程序名]]
表示子例行程序定义结束
调试FORTRAN程序
• 基本程序结构
program main implicit none integer:: real:: character:: complex:: logical::
主程序开始 不采用I-N规则
变量(包括数组)申明 及初始化
注意:character类型的使用方法
赋值语句 data 变量列表/初值列表/ read *,……… open(文件号,file=‘路径及文件名’) read(文件号,格式)。。。。
主程序变量申明
!integer(4) station,nstation
real a(n), b(n), c(160,n),co
open(1,file='d:\aa\test1\h-p.dat',form='formatted')
open(2,file='d:\aa\test1\t1601.txt',form='formatted')
二进制数据:
open(文件号,file=‘路径及文件名’,form=‘binary’ read(文件号,格式)。。。。。 write(文件号,格式)。。。。
End [program main]
主程序结束
程序若 一干 个子 主程 程序 序(prog需ra要m)被调用 程序入口
子程序包括:函数子程序(function) 子例行程序(subroutine)
close(2)
do i=1,160
循
do j=1,60
环
b(j)=c(i,j)
嵌
enddo
套
call COR2 ( n, a, b, co)
调用子程序
write(3,'(f12.5)') co
输出数据
write(4) co !,colev !returns co=0.9548129; colev=0.1952
期末复习
气象程序设计及绘图
• 学习目标
通过学习,了解FORTRAN语言的特点,基本成 份及使用方法,具有阅读程序、编制程序、调试 程序的基本能力。在此基础上,根据气象数据处 理与分析的特点,切实地掌握用GrADS软件对数 据进行图形化显示的基本方法,初步具备编程绘 图的能力。
《气象程序设计及绘图》专业基础课
open(3,file='d:\aa\test1\mh-t-1.dat',form='formatted') open(4,file='d:\aa\test1\mh-t-1.grd',form='binary')
获取数据
read(1,*)(a(i),i=1,n)
close(1)
read(2,*)((c(i,j),i=1,160),j=1,n)
enddo
块3
.
块1 CASE(控制表达式2)
块2
.
.
逻辑if语句 块n
[ELSE
CASE(控制表达式n) 块n
[CASE DEFAULT
块n+1]
END IF
默认块]
END SELECT
可以相互嵌套
DO 循环变量 = E1,E2,E3 循环体
END DO
程序设计
绘图
FORTRAN语言 GrADS
分析
气象数据资料
FORTRAN程序设计
• 基本程序结构
program main implicit none integer real character complex logical
主程序开始 不采用I-N规则
变量(包括数组)申明 及初始化
FORTRAN程序设计
rxy
1
n
n t 1
( xt
x )( yt
y)
1
n
n t 1
( xt
x )2. 1 n
n
(yt
t 1
y )2
1 n (x x)
(y y)
integer,parameter:: n=60,start=1951
!character*10 char1 注释
integer i
子程序又分为:外部子程序和内部子程序
外部函数子程序
由一个实现某种特定功能的子程序组成,调用程 序单元调用它得到一个函数值
定义形式:
表示函数子程序定义开始
[类型说明] FUNCTION 函数名([虚参1,虚参2,…])
说明语句
执行语句
。。。
END [FUNCTION [函数名]]
表示函数子程序定义结束
• 语法错误(syntax error)。如拼写错或标点符号错,在编译时被 编译器检测出来;
• 运行错误(run-time error)。当程序执行时企图做非法运算操作, 则发生运行错误(例如,除以0)。这些错误导致程序执行时异 常中断。
• 逻辑错误(logical error)。程序能够正常编译和运行,但结果是 错误的。
顺序结构 选择结构 循环结构
程序算法
获取数据
单分支
双分支
多分支
IF(条件) THEN IF块
END IF
IF(条件)THEN IF块
ELSE
IF(条件1)THEN 块1
ELSE IF(条件2)THEN
ELSE块
块2
END IF
ELSE IF(条件3)THEN
SELECT CASE (选择表达式) CASE(控制表达式1)
例题:
利用1951-2010年1月蒙古高压强度指数(data/h-p.dat)(备注:需要
标准化以后使用)和1951-2010年1月中国160站气温资料 (data/t1601.dat)(备注:实际存放的资料是61年的,只读60即可, 需要标准化以后使用),根据3.5节计算1月蒙古高压强度与中国160 站气温的相关关系。要求以“*.dat”和“*.grd”两种格式保存19512010年1月蒙古高压强度与我国气温的同期相关数据。