fortran读文件教学课件

合集下载

Fortran-第一讲--第一章

Fortran-第一讲--第一章

1.3.1 声明部分


声明由不可执行语句组成 位于程序开头 定义程序名和程序引用的数据以及变量类型
PROGRAM语句用来指定程序的名字 程序名最长可达31个字符 由字母、数字和下划线任意组合而成 第一个字符必须是字母 如果存在PROGRAM语句,它必须是程序的第一个语句行 例:下列程序名是否有效,如无效则说明原因 new_program 3rd
无效的实数表示: -12.0E1.5

下列各组数在计算机里表示的值是否一样 4650. 4.65E+3 -12.71 -1.27E1 0.0001 1.0E4 3.14159E0 314.159E-3
1.5.3 字符类型



字符类型由字符串组成 字符常数是由单引号或双引号括住的字符串 在单引号或双引号之间括起来的部分称为字符文本, 字符文本可以采用任意计算机可以表示的字符,而 不受Fortran字符集限制 如果字符文本中含有单引号该怎么办?

这一转换仅仅是指参与操作的两个操作数类型 分别为实数和整数而言
表达式
1 2 3 1+1/4 1.0+1/4 1+1.0/4
结果
1 1.0 1.25
因为混合运算的情况是如此复杂,所以我们在程序中要尽量避免这种情 况发生
练习
下面的程序段的三个赋值语句是否正确,正 确写结果,错误说明原因 INTEGER :: i,j INTEGER, PARAMETER :: K=4 i = K **2 j = i/K K=i+j
简单地说:学完本章,你应该可以编写除函数以外的简单程序
1.1 Fortran字符集
正如英语的学习从abc开始,Fortran的学习 也是从字符集开始

Fortran-第十一讲55页PPT

Fortran-第十一讲55页PPT

SUBROUTINE localsub1(var1,var2)
...
END SUBROUTINE localsub1
END PROGRAM main
递归过程
RECURSIVE SUBROUTINE sub() RECURSIVE FUNCTION f() 例:
RECURSIVE INTEGER function fact(n) RESULT(answer) IMPLICIT NONE INTEGER :: n IF (n>=1) THEN answer=n*fact(n-1) ELSE answer=1
例如:
REAL,POINTER :: p
REAL,TARGET :: a=3.
p=>a
运行结果称指针p与变量a相关联
p单元内存储的是变量a在内
p=4
存中的地址
修改的是p指向的内存单元的值
等价于
a=4
REAL,POINTER :: p1,p2
REAL,TARGET :: a=3.,b=4. p1=>a p2=>p1 此时p2的值? Pointer1=>Pointer2
用数组的处理方法是有一定的局限性的, 如果向量的每个维度不是同一类型,就不 适合了
下面我们从简单的二维向量的处理开始学 习如何在模块中声明派生数据类型以及使
问题:创建一个包含二维向量数据类型的 模块以及两个完成向量加减法的函数
第一步: 创建一个容纳二维向量的派生数据类型: TYPE :: vector REAL :: x REAL :: y END TYPE vector
声明变量
因为自定义的数据类型是由内置数据类型 组成的,所以,也称之为派生数据类型

01章FORTRAN程序设计基础精品PPT课件

01章FORTRAN程序设计基础精品PPT课件
的问题,因此应提供输出结果,否则算法就没有 实际意义。
16
1.2.2 算法的描述
算法的描述有许多方法,常用的有:自然 语言、一般流程图、N-S图等。前面例1.1~ 例1.2的算法是用自然语言──汉语描述的,其 优点是通俗易懂,但它不太直观,描述不够 简洁,且容易产生二义性。在实际应用中常 用流程图表示算法。
17
1. 一般流程图
一般流程图是一种传统的算法描述方法,它用不同 的几何图形来代表不同性质的操作。例如,用矩形框 表示要进行的操作,用菱形框表示判断,用流程线将 各步操作连接起来并指示算法的执行方向。一般流程 图的主要优点是直观性强,初学者容易掌握。缺点是 对流程线的使用没有严格限制,如毫无限制地使流程 任意转来转去,将使流程图变得毫无规律,难以阅读。 为了提高算法可读性和可维护性,必须限制无规则的 转移,使算法结构规范化。
9
什么叫程序设计?
对于初学者来说,往往把程序设计简单地理解 为只是编写一个程序。这是不全面的。“程序设计” 反映了利用计算机解决问题的全过程,包含多方面 的内容,而编写程序只是其中的一个方面。使用计 算机解决实际问题,通常是先要对问题进行分析并 建立数学模型,然后考虑数据的组织方式和算法, 并用某一种程序设计语言编写程序,最后调试程序, 使之运行后能产生预期的结果。这个过程称为程序 设计。
x →max
i+1→i
n
n
输出max
20
2. 程序的三种基本结构
1966年Bohra和Jacopini提出了组成结构化算 法的三种基本结构,即顺序结构、选择结构和循 环结构。
《高级语言程序设计(Fortran)》
Tel: E-mail:
1
计算机是在“程序”的控制下进行自动工作的, 它解决任何实际问题都依赖于解决问题的程序。

fortran第3章2 Fortran语言程序设计初步PPT课件

fortran第3章2 Fortran语言程序设计初步PPT课件

五.如果是需要调用其他语言写的子程序, 而恰好该种语 言(例如C语言)是区分大小写的,这时就需要特别小心。
【例3_1】 如果用C写了两个子程序EIGEN和eigen,然后有如下 的FROTRAN片断:
EXTERNAL EIGEN
...
CALL EIGEN
...
上一页
END
下一页
这时它是该引用EIGEN还是eigen呢?如果所使用的
DATA I, J, K / O’1001’, 23.54, Z’5CA2’ /
上一页 下一页 停止放映
其中第一个为八进制数,第二个为十进制数,第三个为十六进制数。
第6页
七.下划线的涵义:
● 下划线的主要作用就是置于单词之间代替空格, 使得我们在命名时使用清楚的英语词汇。
● 下划线不能置于任意名称的前面,但是可以置 于名称的最后。
特殊符号 :空格 = + - * / ( ) , . ‘:
上一页 下一页 停止放映
" ! % & ; < > $ ? _ (F90中新增的字符)
第2页
上一页 下一页 停止放映
表3-1基本的FORTRAN 90/95字符集
文字字符
英文字母 A B C D E F G H I J K L M N O P Q R小写必须区分的位置
● 作为字符常量的字符串里面;
上一页
下一页
● 输入输出的纪录里面;
停止放映
● 作为编辑描述符的引号或撇号里面。
第4页
四. CVF编译平台接受小写字母。
在 OPEN 或 者 INQUIRE 语 句 里 面 的 FILE= 或 NAME= 后面是否区分大小写,也是由编译平台指定的。

Fortran课件第一章

Fortran课件第一章
当 P 为真(T)时 A A P F T
当型循环传统流程图
当型循环 N——S 图
b) 直到型循环——先执行循环体 A 块一次; P 为假 当 (F) 时,反复执行循环体 A 块;当 P 为真(T)时,退出循环 体 A 块,流程转到下面的语句。注:也可以让 P 为真时, 执行循环,P 为假时,退出循环。
三、结构化程序设计方法 结构化程序设计方法,就是结合计算机语言的特点,把算法结 构化的程序设计方法。具体说来,就是规定一些基本结构,由基 本结构来组织更复杂的算法。 结构化程序设计方法中的三种基本结构:1)顺序结构,2)选 择结构,3)循环结构。 1) 顺序结构——顺序执行 A 块和 B 块。
A B A B
例 fortest101.f90
! Free Format Demo program main writቤተ መጻሕፍቲ ባይዱ(*,*) „Hi‟ write(*,*)& „John‟ write(*,10) 10 format(„Fine!‟) stop end program main
注释:程序 fortest101.f90 中,第一行有感叹号“!,说明“! ” ” 之后且同行的文本为注释部分;第四行程序代码后面的“&” ,说 明第五行“„John‟”是它的继续行;第七行的格式语句的标号“10” 写在前面。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 . . . ... 72 73 C F I X E D F O R M A T p r o g r a m m a i n w r i t e ( * , * ) „ H i „ w r i t e ( * , * ) # „ J o h n „ w r i t e ( * , 1 0 ) 1 0 f o r m a t („ f i n e ! „ ) s t o p e n d Fortran 源程序必须包含且只能包含一个主函数(program 主 函数名…end 或 program 主函数名…end program 主函数名) 。 Fortran 程序由主函数开始执行,由主函数调用其他函数,最后返 回主函数结束。

FORTRAN语言第2章(共8章)PPT课件

FORTRAN语言第2章(共8章)PPT课件

Fortran对于关键字不予保留,即允许其关键 字作为其他实体的名称。但是,不主张这样做,因 为使用关键字作为实体名称会到导致程序难以理解 和阅读。
例如:用户可以将自己的变量名、数组名等命 名为read、print、end、integer、program、 print、do等关键字,编译程序会根据上下文来识 别一个字符串究竟是关键字还是实体名称。
型。 Fortran常量包括整型、实型、复型、字符型和逻辑型
五种内部类型常量和一种特殊的常量——符号常量,下面
分别介绍它们的表示方法及其注意事项。
第一节 FORTRAN常量
三、FORTRAN常量 1、整型常量
整型常量由0~9的一系列数字组成,包括正数、负数 和0。如125,-258,+28等。注意:
n代表整数部分,
m代表小数部分,不允许出现非数值 字符(如逗号、顿号和空格等)。
第一节 FORTRAN常量
三、FORTRAN常量 2、实型常量
指数形式:用来表示一个绝对值非常大或非常小的数。 指数形式的实数三部分组成:有效数字、E(或e)和指数。
例如: +0.125E+2、-132.48e-1、243E-3、 .12e+2,1.2e+1
Fortran 95规定:标识符只能由字母、数字、 下划线和美元符号“$”组成,且起始字符必须是 英语字母。
Fortran的关键字
关键字是Fortran95中的一种特定字符串。 如 read*,a,b
read是关键字。 类似的关键字有:print、write、program、 integer、do、if、then、end、subroutine、 function等。 在编译环境中正确的关键字会以蓝色字符显示。 关键字都有特定的含义,在程序中有具体的位置要求, 不能随意改变,否则将产生一个语法错误。

Fortran讲义第二章汇总课件

Fortran讲义第二章汇总课件

优先级(最好加括号) : ①括号 ②函数 ③** ④*、/ ⑤单目+、- 双目+、-
类型转换(向高看齐),int, nint, real, dble, cmplx
复数运算
exam_2_5
表达式和赋值语句
❖ 字符表达式 ①
子字符串 字符串的连接 相关内部函数
exam_2_6

❖ 关系表达式: ②
内部过程或模块过程
END
Fortran源程序的书写格式
❖ 固定格式(*.for或*.f)
Fortran源程序的书写格式
Fortran源程序的书写格式
lists.for
Fortran源程序的书写格式
❖ 自由格式(*.f90)和固定格式的比较
exam_2_1
固定格式
自由格式
每行字符数 80
132(VF 中几乎不限制)
Fortran的名称
❖ 用来标识程序中的实体(变量、子程序、函数…)
❖ <名称>→<英文字母>{<英文字母>|<数字>|_|$}
❖ 名称长度不能超过6(FORTRAN77) 31(Fortran90) 63(Visual Fortran)
Fortran的名称
program X-Y-Z Find_it 1A _program $total
注释
第一列: c *
任意位置: !
73-80列
任意位置:!(第六列除外)
每行语句数 多条,用;隔开
多条,用;隔开
(FORTRAN77只能有1条)
续行
第六列,非0非空格 最多续19行
& 最多续39行
Visual Fortran允许续511行

fortran读文件教学课件

fortran读文件教学课件

openif: If(status == 0) then
! open was OK. Read values
readloop: do
read(3, *, iostat = status) value
if(status /= 0) Exit
nvals = nvals + 1
write(*, 20) nvals, value
開啟檔案
開啟檔案的設定參數
設定參數說明
a) unit = int_expr
開啟一個檔案時要給定這個檔案一個讀取的編號,以後使用 write, read時使用這個編號就可以對這個檔案來讀寫了 int_expr = 數字 → 最好避開1, 2, 5, 6
2, 6是指內定的輸出位置,也就是螢幕 1, 5則是指內定的輸入位置,也就是鍵盤
8-1 The open statement
範例
a) opening a file for input
<error open (unit = 8, file = ‘a.dat', status = 'OLD', action = 'read', iostat = ierror)
8-1 The open statement
設定參數說明
f) access = char_expr
‘sequential’, ‘direct’設定讀取檔案的方式 char_expr = ‘sequential’ →讀取檔案的動作會以“循序”的方
法 來做讀取
‘direct’ →讀取檔案的動作可以任意指定位置
20 format(1x, 'Line', I6, ': Value = ', F10.4)

fortran经典课件-第七章 文件

fortran经典课件-第七章 文件

23
9.5二进制文件的操作
使用二进制文件来做直接读取时,OPEN命令中的RECL字段所设 置的整数n值所代表的大小会随着编译器不同而改变 Visual Fortran中默认视为n*4bytes,G77会视为n bytes
执行后所生成的LIST.BIN文件
直接访问文件时,默认值就 是unformatted,Form省略 在Visual Fortran中,文件 LIST.BIN的大小应该是 36bytes,因为总共输出9个 浮点数,而每个浮点数占 4bytes
2007-10-21
15
2007-10-21
16
Fortran 90添加的功能
2007-10-21
17
其他文件运行命令
BACKSPACE(UNIT=number,ERR=errlabel,IOSTAT=i ostat)
把文件的读写位置退回一步,其他字段参考前面命令
ENDFILE(UNIT=number,ERR=errlabel,IOSTAT=iostat)
使用这个命令会把目前文件的读写位置变成文件的结尾
REWIND(UNIT=number,ERR=errlabel,IOSTAT=iostat)
把文件的读写位置倒回文件开头
CLOSE(UNIT=number,STATUS=string,ERR=errlabel,I OSTAT=iostat)
把文件关闭,不再进行读写操作 STATUS=‘KEEP’:会在文件关闭后、保留住这个文件,这是默 认的状态 STATUS=‘DELETE’:会在文件关闭后,消除这个文件 2007-10-21 18
FORM='FORMATTED' OR 'UNFORMATTED‘ FORMATTED:表示文件使用“文本文件”格式来保存 UNFORMATTED:表示文件使用“二进制文件”格式来保存 默认值为FORMATTED STATUS='NEW' OR 'OLD' OR 'SCRATCH' OR 'UNKNOWN‘ 用来说明要打开一个新文件或是已经存在的旧文件,默认值为 UNKNOWN NEW:表示这个文件原本不存在、是第一决打开 OLD:表示这个文件原本就存在 REPLACE:文件若存在,会重新创建一次,原本的内容消失。文 件若不存在,则创建新文件 SCRATCH:表示要打开一个暂存盘、这个时候可以不指定文件名 称。程序会自动取一个文件名,暂存盘会在程序结束后自动删除 UNKNOWN:由各编译器自定义。通常会同REPLACE的效果

第一章FORTRAN程序设计基础精品PPT课件

第一章FORTRAN程序设计基础精品PPT课件
第二章
FORTRAN程序设计基础
计算机是在“程序”的控制下进行自动工作 的,它解决任何实际问题都依赖于解决问题的程 序。
学习FORTRAN程序设计的目的,就是要学 会利用FORTRAN语言编写出适合自己实际需要 的程序,让计算机完成自己指定的任务。
本章将介绍:
• 程序设计的基本概念
• FORTRAN 语言的发展
1. 一般流程图
一般流程图是一种传统的算法描述方法,它 用不同的几何图形来代表不同性质的操作。例 如,用矩形框表示要进行的操作,用菱形框表 示判断,用流程线将各步操作连接起来并指示 算法的执行方向。一般流程图的主要优点是直 观性强,初学者容易掌握。缺点是对流程线的 使用没有严格限制,如毫无限制地使流程任意 转来转去,将使流程图变得毫无规律,难以阅 读。为了提高算法可读性和可维护性,必须限 制无规则的转移,使算法结构规范化。
例1.1 求 u x y x y
其中
a2 b2 ab xa2 b2 ab
这一题的算法并不难,可写成:
a b
y
a
4
b
a b
(1)从键盘输入a、b的值。
(2)如果a<b,则 xa2b2,yaa bb,
否则 xa2b2,y 4 。
(3)计算u的值。
ab
(4)输出u的值。
ab ab
例1.2 输入十个数,要求找出其中最大的数。
(3) 有效性。算法中的每一步操作必须是可执行 的。
(4) 要有数据输入。算法中操作的对象是数据, 因此应提供有关数据。
(5) 要有结果输出。算法的目的是用来解决一个 给定的问题,因此应提供输出结果,否则算法 就2没有实际意义。
1.2.2 算法的描述
算法的描述有许多方法,常用的有:自然语言、一般流 程图、N-S图等。前面例1.1~例1.3的算法是用自然语言── 汉语描述的,其优点是通俗易懂,但它不太直观,描述不够 简洁,且容易产生二义性。在实际应用中常用流程图表示算 法。

(完整版)fortran文件操作

(完整版)fortran文件操作

fortran文件操作From: 《Fortran 95 程序设计》彭国伦1.文件读取的概念:读取:“顺序读取”和“直接读取”。

保存:“文本文件”和“二进制文件”。

二进制文件:读取快,因为保存格式和数据在内存中的保存方法一样,同时也节省空间。

----------------------------------2. 文件的操作:----------------------------------open的使用:使用open命令打开文件之后,就可以对文件来做输入输出。

example:program ex0901impicit noneopen(unit=10, file='hello.txt') ! 打开hello.txt文件, unit指定文件代码,file 指定文件名称。

write(10, *) "hello" !在代码为10的文件中写入hellostopend program ex0901open中有很多参数可以使用,详细如下:OPEN(UNIT=number, FILE='filename', FORM='...', STATUS='...', ACCESS='...', RECL=length, ERR=label, IOSTAT=iostat, BLANK='...', POSITION='...', ACTION=action, PAD='...', DELIM='...')UNIT='number': number必须是一个正整数,它可以使用变量或是常量来赋值。

number最好避开1,2,5,6。

因为2,6是默认的输出位置,也就是屏幕。

1,5则是默认的输入位置,键盘。

FILE='filename':指定要打开的文件名称,文件名要符合系统规定。

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

8-3 reads and writes to disk files
< Ex. 完成程式>
“兄弟象”在一場棒球比賽中的打擊者打擊率依棒次順 序列表在檔案List中如下: 3.12 2.98 3.34 2.86 2.54 2.78 2.23 2.56 請寫一個可以由棒次來查尋打者打擊率的程式。
<接下頁>
開啟檔案
開啟檔案的設定參數
設定參數說明
a) unit = int_expr
開啟一個檔案時要給定這個檔案一個讀取的編號,以後使用 write, read時使用這個編號就可以對這個檔案來讀寫了 int_expr = 數字 → 最好避開1, 2, 5, 6
2, 6是指內定的輸出位置,也就是螢幕 1, 5則是指內定的輸入位置,也就是鍵盤
8-1 The open statement
設定參數說明
b) file = char_expr
用來指定開啟檔案的名稱。 char_expr = 字串 →包括主檔名與副檔名 Ex. "a.dat"
c) status = char_expr
‘New’, ‘Oid’, ‘Scratch’ or ‘unknown’用來標示是要開啟一個新檔 或是已經存在的舊檔 char_expr = ‘New’ →這個檔案原本不存在,是第一次開啟
‘Oid’ →這個檔案原本就已經存在
8-1 The open statement
設定參數說明
d) action = char_expr
‘read’, ‘write’, ‘readwrite’ 表示檔案用來讀取還是寫入 char_expr = ‘readwrite’ → 表示所開啟的檔案可以用來讀取及
8-1 The open statement
範例
c) opening a scratch file
< Ex. 程式片段>
open (unit = 12, status = 'scratch', iostat= ierror)
8-3 reads and writes to disk files
程式說明
8-1 The open statement
範例
a) opening a file for input
< Ex. 程式片段>
integer :: ierror open (unit = 8, file = ‘a.dat', status = 'OLD', action = 'read', iostat = ierror)
40 format(1x, 'End of file reached. There were ', I6, 'values in the file.')
end if readif
<接下頁>
8-3 reads and writes to disk files
< Ex. 完成程式>
else openif write(*, 50) status 50 format(1x, 'Error opening file: IOSTAT = ',I6)
end if openif close(3) end program read
< Ex. 執行結果>
沒有input.dat的檔案 Please enter input file name:
input.dat <輸入input.dat [ENTER] >
The input file name is : input.dat Error opening file: IOSTAT = 2
openif: If(status == 0) then
! open was OK. Read values
readloop: do
read(3, *, iostat = status) value
if(status /= 0) Exit
nvals = nvals + 1
write(*, 20) nvals, value
20 format(1x, 'Line', I6, ': Value = ', F10.4)
end do readloop
<接下頁>
8-3 reads and writes to disk files
< Ex. 完成程式>
! The while loop has terminated. Was it because of a read error or
8-3 reads and writes to disk files
< Ex. 完成程式>
program ex0801
implicit none
在DOS作業系統中,文件檔中每一行的行尾都有兩個看不見的 符號用來代表一行文字的結束。所以真正一行的長度就是"一行 文字字元的數量再加上2"。在List檔中每行長度 = 4 + 2 = 6
寫入,這是內定值 ‘read’ →表示所開啟的檔案只能用來讀取資料 ‘write’ →表示所開啟的檔案只能用來寫入資料
e) iostate = int_var
表示檔案開啟的狀態,int_var為一個整數變數,lostate會給變數 一個值 Int_var > 0 →表示讀取動作發生錯誤
= 0 →表示讀取動作正常 < 0 →檔案終了
範例
1) read the values of variables x, y and z from the file “input.dat”
< Ex. 程式片段>
open(unit = 8, file = 'input.dat', status = 'old', iostat = ierror) read(8, *) x, y, z
8-3 reads and writes to disk files
直接存取檔的操作
把檔案的空間、內容事先加以分割成一個個同樣大小的小 區塊,並且把這些區塊按順序加以編號。而讀寫檔案時, 要先指定檔案讀寫位置要在那一個區塊上,才能進行讀寫 的工作。 直接存取檔可以任意在檔案的任何一個地方來進行讀寫的 工作。
1) 文字檔:
把所有的資料都用我們人眼可以明白理解的字元符號來做 儲存。優點:易懂,可直接修改。
2) 二進位檔:
直接把資料在電腦記憶中的儲存情形(也就是二進位碼)直接 寫入檔案中。優點:讀取較快速、省空間。
8-1 The open statement
程式說明
OPEN(unit = int_expr, file = char_expr, status = char_expr, action = char_expr, iostat = int_var)
character(len = 20), parameter :: input = 'List'
integer, parameter :: players = 9 integer :: player integer, parameter :: rec_length = 6
在unix中,每一行的行尾只需一個結 束符號,所以一行的長度就是"一行文 字字元的數量再加1"
8-2 The close statement
程式說明
close (close_list)
要關閉檔案的編號 關閉檔案
8-3 reads and writes to disk files
< Ex. 完成程式>
program read implicit none character (len =20) :: filename integer :: nvals = 0 integer :: status real :: value
! because of the end of the input file?
readif: if(status > 0) then
write(*, 30) nvals + 1
30 format(1x, 'An error occurred reading line', I6)
else
write(*, 40) nvals
! Get the file name and echo it back to the user. write(*,*) 'Please enter input file name:' read(*,*) filename write(*,10) filename
10 format(1x, 'The input file name is : ', A) <接下頁>
read(3, *, iostat = status) value
表示檔案開啟的狀態,status為一個 整數變數,iostat會給變數一個值 status > 0表示讀取動作發生錯誤 status = 0表示讀取動作正常 status < 0表示檔案終了
要輸入檔案的編號
8-3 reads and writes to disk files
8-3 reads and writes to disk files
< Ex. 完成程式>
! Open the file and check for errors on open
open(3, file = filename, status = 'old', action = 'read', iostto disk files
相关文档
最新文档