《FORTRAN 95程序设计》学习笔记
FORTRAN 95 语法速查
![FORTRAN 95 语法速查](https://img.taocdn.com/s3/m/9855ee26bd64783e08122b02.png)
FORTRAN 95 语法速查----------白云、李学哲、陈国新、贾波编著《FORTRAN95程序设计》读书笔记目录:一、应用程序的创建与运行/FORTRAN 95所用的字符/ 变量类型及其声明,常量声明/表达式与运算符二、输入与输出:表控、有格式三、选择语句与结构:IF语句、CASE结构四、DO循环结构五、数组:数组的声明,数组的引用,数组的算术运算,数组的输入、输出,给数组赋初值,动态数组,WHERE、FORALL语句六、子程序:语句函数,内部子程序,调用子程序时的虚实结合:形参为数组、非定界数组、子程序名、星号,递归子程序,外部子程序,纯子程序,逐元子程序七、派生数据类型与结构体八、指针与动态链表九、文件:存取方式,基本操作语句,各类文件的读写操作十、接口、模块十一、公用区、存储关联、数据块子程序十二、绘图:坐标系、设置图形颜色、创建图形程序/ 常用过程:设置线型、绘一像素点、设置当前位置、绘直线、绘弧线、绘矩形、绘多边形、绘制扇形(圆、椭圆)/ 文字信息的显示附/录:标准函数与标准子例行程序一、基础部份1-1 FORTRAN 95 应用程序的创建与运行创建或运行FORTRAN 95程序必须在Microsoft Developer Studio平台上进行。
尽管程序文本及相关文件的编辑可以在任一文本编辑器上进行,然后再拷到Studio的文档窗口中。
但最好还是一开始就进入Studio环境。
创建FORTRAN 95 程序的步骤大致如下:1)启动Microsoft Developer Studio可以通过不同方式运行dfdev.exe程序以启动Microsoft Developer Studio[开始] \ Compaq Visual Fortran 6 \ Developer Studio \ dfdev.exe:或……\CVF66 \\MSDEV98\dfdev.exeMicrosoft Developer Studio的界面如下图所示:文档窗口工作空间窗口输出窗口2)建立工作空间(WorkSpace)工作空间(WorkSpace)对应着windows资源管理器的一个文件夹。
FORTRAN95第二章 分支程序设计
![FORTRAN95第二章 分支程序设计](https://img.taocdn.com/s3/m/cc0eedc10b4c2e3f5627630d.png)
2.1.2 顺序结构 这是一种最简单、最基本的结构。它的特点是:结构内的
各个功能模块是按照它们出现的顺序依次执行的,且只有一个 入口和一个出口,如图2-1所示。其中的每个功能块可以是一 条或多条非转移类的可执行语句,即一个顺序结构可由一条或 多条顺序执行的语句组成。
a
b
图2-1 顺序结构
┋
n
2.1.3 分支(选择)结构 在这种结构中,要对给定的条件进行判断,根据判
2.2.2 IF…ELSE…ENDIF结构 IF…ELSE…ENDIF结构是FORTRAN程序中常用的选择结
构,它主要由块IF语句、ELSE语句和ENDIF语句共同构成, 这 三个语句都不能单独使用。其一般形式为:
IF(逻辑表达式)THEN IF块
ELSE ELSE块
ENDIF 该结构的执行过程是:先计算逻辑表达式的值并加以判断, 若此值为真,则执行IF块中的语句,然后执行ENDIF语句结 束该结构,继续执行其后继语句;若此值为假,则跳过IF块 中的语句,直接执行ELSE块中的语句,然后执行ENDIF语 句结束该结构,并继续执行其后继语句。
量, 而且必须和select case中的变量有相同的类型。它可以是单个的常数,或是用逗 号分开的多个常数,也可以是用冒号分开的两个常数,表示一个值域,即取包括
这两个常数在内的所有这两个数之间的数值。例如(1:10) 表示取1到10之间 的整数,包括1和10;(“A”:“D”)表示取A、B、C、D四个字符。如果省略
断结果选择不同的执行路径, 以完成不同的功能。分 支结构又有两向分支和多向分支的形式,如图2-2为 两向分支结构,图2-3为多向分支结构。它们与顺序 结构的共同点是,也只有一个入口和一个出口。实 现这种分结构要使用相应的条件选择语句,其中a块 和b块及多向分支结构中的各语句块根据实际应用可 以是空块,即在条件满足或不满足时结束这一结构,直 接执行该结构的后继语句。这种语句块中又可以是 另一个分支结构,这就形成了分支结构的嵌套。
FORTRAN_95_语法速查
![FORTRAN_95_语法速查](https://img.taocdn.com/s3/m/5af99016227916888486d735.png)
FORTRAN 95 语法速查----------白云、李学哲、陈国新、贾波编著《FORTRAN95程序设计》读书笔记目录:一、应用程序的创建与运行/FORTRAN 95所用的字符/ 变量类型及其声明,常量声明/表达式与运算符二、输入与输出:表控、有格式三、选择语句与结构:IF语句、CASE结构四、DO循环结构五、数组:数组的声明,数组的引用,数组的算术运算,数组的输入、输出,给数组赋初值,动态数组,WHERE、FORALL语句六、子程序:语句函数,内部子程序,调用子程序时的虚实结合:形参为数组、非定界数组、子程序名、星号,递归子程序,外部子程序,纯子程序,逐元子程序七、派生数据类型与结构体八、指针与动态链表九、文件:存取方式,基本操作语句,各类文件的读写操作十、接口、模块十一、公用区、存储关联、数据块子程序十二、绘图:坐标系、设置图形颜色、创建图形程序/ 常用过程:设置线型、绘一像素点、设置当前位置、绘直线、绘弧线、绘矩形、绘多边形、绘制扇形(圆、椭圆)/ 文字信息的显示附/录:标准函数与标准子例行程序一、基础部份1-1 FORTRAN 95 应用程序的创建与运行创建或运行FORTRAN 95程序必须在Microsoft Developer Studio平台上进行。
尽管程序文本及相关文件的编辑可以在任一文本编辑器上进行,然后再拷到Studio的文档窗口中。
但最好还是一开始就进入Studio环境。
创建FORTRAN 95 程序的步骤大致如下:1)启动Microsoft Developer Studio可以通过不同方式运行dfdev.exe程序以启动Microsoft Developer Studio[开始] \ Compaq Visual Fortran 6 \ Developer Studio \ dfdev.exe:或……\CVF66 \\MSDEV98\dfdev.exeMicrosoft Developer Studio的界面如下图所示:文档窗口工作空间窗口输出窗口2)建立工作空间(WorkSpace)工作空间(WorkSpace)对应着windows资源管理器的一个文件夹。
FORTRAN95第三章 循环程序设计
![FORTRAN95第三章 循环程序设计](https://img.taocdn.com/s3/m/8c2751bb2e3f5727a4e9620d.png)
、continune或其他允许的可执行语句。
下面通过一个简单的例子说明计数型DO循环的应用形式:
2021/10/11
3
do i=1,5,1 write (*,*) ”happy Birthday”, i
enddo 这段程序代码中的do循环中没有使用语句标 号,循环体中只含一个write语句, 终端语句为 enddo,循环控制变量的初值为1, 终值为5,增 量为1,可以省略。 该段程序执行时,循环体将重复执行5次,即 输出5遍“happy Birthday”和i的值。
N max[INT ( m2 m1 1), 0] m3
显然,当m1>m2且m3>0时,或当m1<m2且m3<0时,都有循环次数N=0 (4)判断循环次数,若N>0,执行循环体中各语句;若N≤0,则退出
循环,去执行终端语句的下一条语句; (5)当每次执行循环体到终端语句后,循环控制变量i自动加上增值m3
时的y值,以及y的最大值和最小值。
program ex303
ymax=y
implicit none
elseif (y<ymin) then
real x, y, ymax, ymin
ymin=y
ymax=100.0
endif
ymin=100.0
print*, x, y
do x=0.0, 2.0, 0.1
行n次,每次执行到达enddo语句后,i的值会自动减1,即i的值
加上增值-1。此处的do语句也可以写成do i=1,n的形式,增值
为1被省略。对于设计增值为负值的循环,控制变量的初值一
定要2大021/于10/1终1 值,否则是不能进行循环的。
7
最新《FORTRAN95程序设计》学习笔记资料
![最新《FORTRAN95程序设计》学习笔记资料](https://img.taocdn.com/s3/m/fd19e13cddccda38376baf92.png)
《FORTRAN 95 程序设计》学习笔记66RPG gg★ 目录★《FORTRAN 95 程序设计》学习笔记 (1)基础知识(基础、字符串、FORMAT 、隐式、TYPE) (1)流程与控制(if 、select、do) (4)数组(声明、隐式循环、整体操作、可变数组) (5)函数与子程序(子程序、函数、全局变量) (6)MODULE 与面向对象(重载操作符、虚函数) (9)文件相关(OPEN 、WRITE 、READ) (10)指针(指向变量、数组、函数) (11)Visual Fortran 编译器(DLL ,VB 调用) (12)数值算法与IMSL (数值算法插件) (14)常用库函数(数学、数组、零碎、子程序) (15)基础知识(基础、字符串、FORMAT 、隐式、TYPE)★ 【小玩意】二进制观察器:装在M.. Visual Studio\DF98\bin ,有一个Bitviewer ,可以观察变量储存方式★ 【语法】续行:行结尾或行开头使用& 符号;注释:使用! 符号★ 【语法】数学表达式:+ ;- ;* ;/ ;(;);** 乘幂★ 【语法】程序结束:STOP (Ruby 的exit)★ 【语法】输出:write(*,*),完整写法:write(unit=*,fmt=*)建议:少用print ,尽量用write★ 【语法】声明整型:integer(kind=4) a ;其中kind 是使用的bytes 数, 4 or 2其他写法:integer*4 a; integer(4) a浮点:real(kind=4) a ;有效数位 6 位(12345678 存为 1.234567E7 ),如果是kind8 则为15 位有效数字此外:1E10:单精10X0, 1D10:双精10X0复数:complex :: a=(2,3)实部:real(a) ;虚部:imag(a)布尔型:Logical , .true. 和.false.★ 【语法与函数】字符串:character(20) string注意理解, fortran 的弱智字符串就是一个长度不能变的一维的东西, 极其猥琐, 和Java、Ruby 不能相提并论的string(13:13) = a” :对第13个字节的读、存string(2:3) = “go”string(6) = “我的妈呀”:从第6 个位置开始设置为“我的妈呀”a = string_a II string_b :用"〃”连接两个字符串【常用函数】char(num) , ichar(char):ASCII 码的转换相关功能【常用函数】len(string) , len_trim(string) :长度,去掉尾部空格后的长度【常用函数】index(string,key) :找key 在string 首出现的位置【常用函数】trim(string) :返回去掉尾部空格的字符串(用途不大)【函数】repeat(char,int):返回一个重复int次的char串character(len=20) string 普通声明;character(len=*) string 接收的时候可自动长度★ 【规范格式】FORMA T 格式化e.g.write (*,100) A100 format(I4) 这里是100 号标识调用的格式参数控制符(前面加数字为重复次数,如416或<a>l6。
Fortran 95学习笔记
![Fortran 95学习笔记](https://img.taocdn.com/s3/m/4297814e852458fb770b5646.png)
署名循环
循环还可以取“名字”,这个用途是可以在编写循环是能明白地直到End do这个描述的位置是否正确,尤其是在多层循环当中。署名的循环也可以配合Cycle、exit来使用。
数组(Array)
数组的声明方法:Datatype name(size)
赋初值:
real ::a,b
real ::add
add =a+b
return
end
全局变量
Common是fortran77使用“全局变量”的方法,它用来定义一块共享的内存空间
program ex
implicit none
integer ::a,b
common a,b !定义a,b是全局变量中的第1及第2个变量
Character(len=30) ::name
Integer ::age
Integer ::length
Integer ::weight
End type person
Type(person) ::a !声明一个person类型的变量
a%name !引用person中的name
Kind的使用
Kind描述如果搭配上一些Fortran90的库函数,可以增加程序代码的“跨平台”能力
Implicit real(M-P) !M到P开头的变量都视为浮点数
Implicit none !关闭默认类型功能,所有变量都要事先声明
常数的声明方法(Parameter)
Program ex
Implicit none
Real ::pi
Parameter(pi = 3.14129)
Write(*,”(F4.2)”) sin(pi/6)
FORTRAN95第六章 Fortran 过程程序设计
![FORTRAN95第六章 Fortran 过程程序设计](https://img.taocdn.com/s3/m/a9d80400ba0d4a7303763a2b.png)
普通的外部函数子程序形式之二为:
例6.2 利用函数子程序,计算N的阶乘。
! 计算N!的函数子程序
function fact (n)
!fact为外部函数子程序名, n为哑元
implicit none
integer:: n,i
! 说明哑元n和函数体中所用变量i的类型
real*8:: fact
! 说明函数名的类型
fact=1d0
!函数名作为变量名使用
do
write(*,*)'输入正整数m:'
read (*,*)m
if (m>0) exit
write(*,*)'输入了一个负整数或零,重输!'
end do
do
write(*,"('输入正整数n(n<=',i4,'):')")m
read (*,*)n
if (n>0 .and. n<m) exit
read *,n
h=(b-a)/n
do i=1,n-1
s=s+f (a+i*h) !调用语句函数f的语句
end do
s=h*(f (a)+f (b)+2.0*s)/2.0 !调用语句函f
write ( *,"('定积分的值为: ',f10.6)")s
Fortran学习总结 - 我不是企鹅的日志 - 网易博客
![Fortran学习总结 - 我不是企鹅的日志 - 网易博客](https://img.taocdn.com/s3/m/630de8eaf61fb7360b4c65ef.png)
Fortran学习总结- 我不是企鹅的日志- 网易博客Fortran学习总结目录:一、说明二、概述三、数据类型及基本输入输出四、流程控制五、循环六、数组七、函数八、文件一、说明本文多数内容是读彭国伦《Fortran 95 程序设计》的笔记。
二、概述1、名词解释Fortran=Formula Translator/Translation一看就知道有什么特色了:可以把接近数学语言的文本翻译成机械语言。
的确,从一开始,IBM设计的时候就是为了方便数值计算和科学数据处理。
设计强大的数组操作就是为了实现这一目标。
fortran奠定了高级语言发展的基础。
现在Fortran在科研和机械方面应用很广。
2、Fortran的主要版本及差别按其发展历史,Fortran编译器的版本其实很多。
现在在广泛使用的是Fortran 77和Fortran90。
ortran 90在Fortran 77基础上添加了不少使用的功能,并且改良了77编程的版面格式,所以编程时推荐使用90。
鉴于很多现成的程序只有77版本,有必要知道77的一些基本常识,至少保证能够看77程序。
以下是77和90的一些格式上的区别。
Fortran 77:固定格式(fixed format),程序代码扩展名:.f或.for(1)若某行以C,c或*开头,则该行被当成注释;(2)每行前六个字符不能写程序代码,可空着,或者1~5字符以数字表明行代码(用作格式化输入出等);7~72为程序代码编写区;73往后被忽略;(3)太长的话可以续行,所续行的第六个字符必须是"0"以外的任何字符。
Fortran 90:自由格式(free format),扩展名:.f90(1)以"!"引导注释;(2)每行可132字符,行代码放在每行最前面;(3)以&续行,放在该行末或下行初。
以下都是讨论Fortran 90。
3、Fortran的一些特点,和C的一些不同其实很多,在下面涉及具体方面时可以看到。
fortran952003程序设计
![fortran952003程序设计](https://img.taocdn.com/s3/m/07e095b227fff705cc1755270722192e44365874.png)
fortran952003程序设计Fortran 95是Fortran编程语言的一个版本,它在1997年被正式发布。
它继承了Fortran语言的数值计算能力,并引入了许多现代编程特性,使得Fortran 95成为一个功能强大的科学计算语言。
以下是Fortran 95程序设计的一些基础要点:1. 程序结构Fortran 95程序由一个或多个程序单元组成,这些单元可以是子程序、函数或模块。
程序的开始和结束分别由`program`和`end program`语句标记。
2. 变量声明在Fortran 95中,变量必须在使用前声明其类型。
Fortran 95支持多种数据类型,包括整数、实数、复数、逻辑和字符类型。
例如:```fortraninteger :: ireal :: xlogical :: flagcharacter(len=10) :: name```3. 常量和参数Fortran 95允许定义常量和参数,它们在程序中只能被赋值一次。
常量使用`parameter`关键字定义:```fortranparameter (pi = 3.14159)4. 控制语句Fortran 95提供了多种控制语句,包括条件语句(`if`)、循环语句(`do`、`while`)和选择语句(`select case`)。
```fortranif (x > 0) thenprint *, 'x is positive'elseprint *, 'x is non-positive'end ifdo i = 1, 10print *, 'Iteration ', iend doselect case (ch)case ('A', 'B', 'C')print *, 'Grade A, B, or C'case defaultprint *, 'Other grade'end select```5. 数组Fortran 95支持多维数组,并且可以声明数组的维度。
FORTRAN95第三章循环程序设计
![FORTRAN95第三章循环程序设计](https://img.taocdn.com/s3/m/c4af0a4d854769eae009581b6bd97f192279bfef.png)
FORTRAN95第三章循环程序设计第三章的内容包括:1.DO循环:DO循环是FORTRAN中最基本的循环结构。
它允许我们指定循环变量的初始值、结束值和步长。
在每次循环迭代时,循环变量都会自动更新,并且在达到结束值时退出循环。
2.嵌套循环:FORTRAN也支持嵌套循环,这是在一个循环内部使用另一个循环。
嵌套循环使得我们能够处理更加复杂和具有分层结构的问题。
3.WHILE循环:FORTRAN还提供了类似于其他编程语言中的WHILE循环。
WHILE循环允许我们在循环前先检查一个条件,并且只要条件为真,就会继续执行循环体。
4.无限循环:有时候需要创建一个无限循环,即一个永远不会结束的循环。
在FORTRAN中,我们可以使用无条件的循环退出语句来跳出循环。
5.循环控制:在循环内部,我们可以使用控制语句来控制循环的执行方式。
这些控制语句包括CONTINUE、EXIT、CYCLE和END。
6.循环的应用:循环结构在许多数学和科学计算问题中都有广泛应用,如求和、求平均值、计算阶乘、寻找最大和最小值等。
循环程序设计是编程中非常重要的一部分,因为它可以帮助我们处理大数据集和执行复杂算法。
FORTRAN95提供了一系列强大的循环结构,使得我们能够更加灵活和高效地处理各种问题。
在循环程序设计中,重点应该放在优化循环的执行。
通过合理地选择循环变量的初始值、结束值和步长,以及使用合适的循环控制语句,可以使循环更加高效。
此外,避免在循环体内进行过多的计算和IO操作,可以减少循环的执行时间。
总之,循环程序设计是编程中一个基本但重要的概念。
FORTRAN95提供了丰富的循环结构和控制语句,使得我们能够更加高效地处理各种问题。
在实际应用中,我们应该根据具体问题的要求,合理选择和优化循环结构,以求得更好的性能和效果。
第2章 Fortran95程序设计基础
![第2章 Fortran95程序设计基础](https://img.taocdn.com/s3/m/f77c7bdc50e2524de5187e6c.png)
字符类型 (character)
计算机除了存储数值型数据之外,也可以在内存中存放 一段文本。 字符型数据的表示形式: 用一对单引号或双引号括起来。
如: ‘a‟
“hello!”
只有一个字母或符号时称为“字符”, 有一连串(多个)的字符时,就称为“字符串”。
字符类型 (character)
存储1个字符需要1个字节的存储空间 存储n个字符长度的字符串则需要n个字节的存储
掌握五种内部数据类型常量的合法表示方式 掌握变量的表示形式和变量的三种定义方法。
掌握算术运算符和算术表达式的运算顺序
了解标准函数,并掌握部分常用的标准函数。
Fortran95的字符集
字符集就是编写源程序时能够使用的全部字符及 符号的集合。包括: (1)英文字母a-z及A-Z (2)阿拉伯数字0-9 (3)22个特殊字符 = + - * / ( ) , . : „ “ ! ;
固定格式
每行80个字符,分成四个区:
第1~5列为标号区。第1列为C或*,说明此行为注释行。
第6列为续行标志区。续行标志是除空格和零以外的任何
FORTRAN 字符。 第7~72列为语句区。语句可以从第7列以后任何位置开 始书写。但一行只能写一个语句。 第73~80列为注释区。
备注:Fixed Format(固定格式)是传统的书写方式,对于 书写内容应在那一行的那一列上都有严格规定,过于刻板。
字节数 1 2 4 8
超出此范围,则会发生溢出错误。
实数类型(real)
实数又称为浮点数(floating-point number)。 实行数据有两种类型: 单精度型 双精度型。 数值都是近似值,而且有误差累计。
FORTRAN95第八章 实用程序设计方法
![FORTRAN95第八章 实用程序设计方法](https://img.taocdn.com/s3/m/b9d60202f61fb7360a4c650d.png)
直到 x 是一个素数
根据上面的伪码,可以比较容易地写出实现求出前 n个素数并打印的FORTRAN程序。但是, 这个程序的 效率是比较低的。为此可以利用数论的知识,从以 下两个方面考虑进行优化。 首先, 语句“对于k 从2 变到X-1,每次增 1 做:”
在以上各阶段都应有充分的文档资料。而且,以上过程是一个有限次 迭代过程。
8.2 结构化程序设计方法 8.2.1 结构化程序设计的概念 所谓结构化程序设计,就是以良好的程序结构为目标、遵照
“自顶向下、逐步求精”和模块化的方法、每个模块仅有一个 入口
和一个出口、程序中仅使用三种基本控制结构、尽量少用GOTO 语句的程序设计方法, 下面对结构化程序设计方法进行全面、细 致地阐述。
具体说来,计算机程序设计的准则有以下七个方面:
正确性:这是判定程序质量的永恒准则。 可靠性:这是指程序执行的可重复性要好。无论执行环境
如何变化,对相同的输入数据,一个程序的执行结果总是 不变的。 易读性:这是指程序结构要简单、语句要直观、程序内部 要有足够的注解等,以便维护和引用程序。遵照良好的编 程风格(习惯),会增大程序的可读性。 有效性:这是指程序应当少占存储空间、快速运行。良好 的时空效率永远是人类追求的目标。 可维护性:这是指程序应当容易查找错误、容易改正错误。 一个大型程序,常常需要数十人甚至数百人合作开发,代 价高昂。既使通过严格地检测,也不可能保证没有错误。 而且使用期常常达到10年至15年或更长。因此,在使用中, 排除错误、扩充、更新总是难免的。 适应性:这是指程序不应因计算机硬件或外部环境的变更 而更改或废弃。程序的适应性越强,可移植性越好,越能 适应各种机型和环境,其社会效益和经济效益就越好。 可重用性:这是指经过实践证明正确的己有源程序代码, 可以方便地被自己或他人利用,这样不仅能大大提高程序 的开发效率,而且能大大减少程序的错误。
FORTRAN95第八章实用程序设计方法
![FORTRAN95第八章实用程序设计方法](https://img.taocdn.com/s3/m/e8ba71fec67da26925c52cc58bd63186bceb92ef.png)
FORTRAN95第八章实用程序设计方法Fortran 95是一种编程语言,其提供了许多实用的程序设计方法。
本文将介绍Fortran 95的第八章,主要讨论了一些实用的程序设计方法,并对其进行详细的阐述。
首先,第八章首先介绍了Fortran 95中的模块和接口。
模块可以将程序中相关的子程序、变量和常量组织在一起,使得程序更加结构化。
接口则可以定义子程序的输入和输出参数,以及子程序的类型和属性。
这样可以提高代码的可读性和重用性。
接下来,该章节还介绍了Fortran 95中的递归子程序。
递归是指一个子程序可以调用自己。
递归子程序可以解决一些复杂的问题,例如数学中的阶乘计算。
在使用递归子程序时,需要注意递归的终止条件,否则可能导致无限循环。
此外,Fortran 95还引入了动态内存分配的概念。
动态内存分配允许在程序运行时动态地申请和释放内存。
这对于处理大规模数据或者需要临时存储空间的情况非常有用。
Fortran 95提供了ALLOCATE和DEALLOCATE语句来进行动态内存分配和释放。
在实际的程序设计中,很多时候需要对输入数据进行校验和处理。
Fortran 95提供了一系列的内置子程序和函数,可以方便地进行数据处理。
例如,可以使用MOD函数计算一个整数的余数,还可以使用TRANSFER函数将一个数据对象转换成另一种类型。
此外,本章还介绍了一种常见的程序设计技巧,即使用函数来替代变量。
这样可以提高代码的可读性和维护性。
通过将一些复杂的计算封装在函数中,可以简化主程序的逻辑。
最后,本章还介绍了一些常用的数学库函数。
Fortran 95提供了一系列的内置函数,用于数值计算和数学操作。
例如,可以使用SQRT函数计算一个数的平方根,还可以使用LOG函数计算一个数的自然对数。
总之,Fortran 95的第八章介绍了一些实用的程序设计方法。
通过掌握这些方法,可以提高代码的结构化程度和可读性,同时还可以提高代码的灵活性和可重用性。
fortran用法小结
![fortran用法小结](https://img.taocdn.com/s3/m/627076617fd5360cba1adbe7.png)
Fortran用法小结目录:一、说明二、概述三、数据类型及基本输入输出四、流程控制五、循环六、数组七、函数八、文件一、说明本文多数内容是我读彭国伦《Fortran 95 程序设计》的笔记。
只读到第九章,主要是3~9 章,都是最基本的用法(原书共16章)。
这里主要摘录了我看书过程中总结的一些Fortran 和C不同的地方,主要是语法方面。
希望这份笔记能够给学过C但没有接触过Fortran的同学带去一些帮助。
要想得更清楚些,推荐看一下原书,觉得作者真的写得很好,很清楚;如果有C语言的基础,看完前九应该很快的,花一两天就行了。
觉得如果耐心看完本文,基本功能应该也可以顺利用起来了。
外,由于我之前没有用过Fortran,这次为了赶文档看书又看得很粗浅,大多数东西看过之后都没得及仔细想,只是按着作者的意思去理解。
所以这份笔记还处于纸上谈兵的层次。
如果有不妥的方,希望大家指正。
谢谢!文中蓝色的部分是程序代码,!后面的内容为注释。
二、概述1、名词解释Fortran=Formula Translator/Translation一看就知道有什么特色了:可以把接近数学语言的文本翻译成机械语言。
的确,从一开始,IBM设计的时候就是为了方便数值计算和科学数据处理。
设计强大的数组操作就是为了实现这一目标。
Fortran奠定了高级语言发展的基础。
现在Fortran在科研和机械方面应用很广。
2、Fortran的主要版本及差别按其发展历史,Fortran编译器的版本其实很多。
现在在广泛使用的是Fortran 77和Fortr an90。
Fortran 90在Fortran 77基础上添加了不少使用的功能,并且改良了77编程的版面格式,所以编程时推荐使用90。
鉴于很多现成的程序只有77版本,有必要知道77的一些基本常识,至少保证能够看77程序。
以下是77和90的一些格式上的区别。
Fortran 77:固定格式(fixed format),程序代码扩展名:.f或.for(1)若某行以C,c或*开头,则该行被当成注释;(2)每行前六个字符不能写程序代码,可空着,或者1~5字符以数字表明行代码(用作格式化输入出等);7~72为程序代码编写区;73往后被忽略;(3)太长的话可以续行,所续行的第六个字符必须是"0"以外的任何字符。
Fortran经典编程语言笔记(你值得拥有)(2021年整理精品文档)
![Fortran经典编程语言笔记(你值得拥有)(2021年整理精品文档)](https://img.taocdn.com/s3/m/6b4f02aee518964bce847c95.png)
(完整)Fortran经典编程语言笔记(你值得拥有)编辑整理:尊敬的读者朋友们:这里是精品文档编辑中心,本文档内容是由我和我的同事精心编辑整理后发布的,发布之前我们对文中内容进行仔细校对,但是难免会有疏漏的地方,但是任然希望((完整)Fortran经典编程语言笔记(你值得拥有))的内容能够给您的工作和学习带来便利。
同时也真诚的希望收到您的建议和反馈,这将是我们进步的源泉,前进的动力。
本文可编辑可修改,如果觉得对您有帮助请收藏以便随时查阅,最后祝您生活愉快业绩进步,以下为(完整)Fortran经典编程语言笔记(你值得拥有)的全部内容。
FORTRAN笔记2014。
10。
07目录第七讲_FORTRAN的基本知识。
ppt (3)FORTRAN语言程序设计初步 (3)FORTRAN源程序的书写格式(以77为例) (3)变量 (4)变量类型 (4)算术运算符和运算优先级 (5)赋值语句 (6)参数语句(PARAMETER语句) (6)END语句 (6)PAUSE语句 (6)逻辑运算和选择结构 (7)关系表达式 (7)FORTRAN中数组的定义及使用 (8)其他 (10)1. fortran语言定义CHARACTER*6 TTL(14,3),CNAM(400)是什么意思? (10)2. fortran里character*10 是什么意思 (10)3. Fortran中kind是什么函数? (10)第七讲_FORTRAN的基本知识.pptFORTRAN语言程序设计初步FORTRAN是Formula Translation的缩写,意为“公式翻译",它是为科学、工程问题或企事业管理中的那些能够用数学公式表达的问题而设计的,其数值计算的功能较强。
常用的是FORTRAN77和FORTRAN90两种标准.1、一个程序由若干个程序单位组成.主程序和每一个子程序分别是一个独立的程序单位。
2、每一个程序单位都是以“END”结束的。
(完整)《FORTRAN 95程序设计》学习笔记
![(完整)《FORTRAN 95程序设计》学习笔记](https://img.taocdn.com/s3/m/2547e6eb77232f60ddcca1ed.png)
《FORTRAN 95程序设计》学习笔记66RPG gg★目录★《FORTRAN 95程序设计》学习笔记 (1)基础知识(基础、字符串、FORMAT、隐式、TYPE) (1)流程与控制(if、select、do) (4)数组(声明、隐式循环、整体操作、可变数组) (5)函数与子程序(子程序、函数、全局变量) (6)MODULE与面向对象(重载操作符、虚函数) (9)文件相关(OPEN、WRITE、READ) (10)指针(指向变量、数组、函数) (11)Visual Fortran 编译器(DLL,VB调用) (12)数值算法与IMSL(数值算法插件) (14)常用库函数(数学、数组、零碎、子程序) (15)基础知识(基础、字符串、FORMAT、隐式、TYPE)★【小玩意】二进制观察器:装在M.. Visual Studio\DF98\bin,有一个Bitviewer,可以观察变量储存方式★【语法】续行:行结尾或行开头使用& 符号;注释:使用! 符号★【语法】数学表达式:+ ;- ;* ;/ ;( ;) ;**乘幂★【语法】程序结束:STOP (Ruby的exit)★【语法】输出:write(*,*),完整写法:write(unit=*,fmt=*)⏹建议:少用print,尽量用write★【语法】声明⏹整型:integer(kind=4) a ;其中kind是使用的bytes数,4 or 2◆其他写法:integer*4 a; integer(4) a⏹浮点:real(kind=4) a ;有效数位6位(12345678存为1.234567E7),如果是kind8则为15位有效数字◆此外:1E10:单精10^10,1D10:双精10^10⏹复数:complex :: a=(2,3)◆实部:real(a) ;虚部:imag(a)⏹布尔型:Logical,.true. 和.false.★【语法与函数】字符串:character(20) string⏹注意理解,fortran的弱智字符串就是一个长度不能变的一维的东西,极其猥琐,和Java、Ruby不能相提并论的⏹string(13:13) = “a” :对第13个字节的读、存⏹string(2:3) = “go”⏹string(6) = “我的妈呀”:从第6个位置开始设置为“我的妈呀”⏹ a = string_a // string_b:用“//”连接两个字符串⏹【常用函数】char(num),ichar(char):ASCII码的转换相关功能⏹【常用函数】len(string),len_trim(string):长度,去掉尾部空格后的长度⏹【常用函数】index(string,key):找key在string首出现的位置⏹【常用函数】trim(string):返回去掉尾部空格的字符串(用途不大)⏹【函数】repeat(char,int):返回一个重复int次的char串⏹character(len=20) string 普通声明;character(len=*) string 接收的时候可自动长度★【规范格式】FORMAT格式化⏹ e.g.◆write (*,100) A◆100 format(I4) ←这里是100号标识调用的格式⏹参数控制符(前面加数字为重复次数,如4I6或<a>I6。
程序设计基础-Fortran95课程设计
![程序设计基础-Fortran95课程设计](https://img.taocdn.com/s3/m/46fe711da4e9856a561252d380eb6294dd8822aa.png)
程序设计基础-Fortran95课程设计课程设计需求本次课程设计的目的是提高学生关于Fortran95程序设计方面的能力和技巧。
为了达到这个目的,课程设计需求如下:1.设计一个可以计算矩形面积和周长的程序。
2.设计一个可以计算圆形面积和周长的程序。
3.设计一个可以将输入的字符串反转的程序。
设计思路矩形面积和周长的程序我们需要设计一个可以计算矩形面积和周长的程序。
矩形的面积公式为:area=lengtℎ∗widtℎ,周长公式为:perimeter=2∗(lengtℎ+widtℎ)。
在Fortran95中,我们可以使用READ语句获取用户输入的length 和width,然后进行计算,最后使用WRITE语句输出结果。
以下是完整代码:PROGRAM rectangleIMPLICIT NONEREAL:: length, width, area, perimeterWRITE(*,*)'Please enter the length of the rectangle:'READ(*,*) lengthWRITE(*,*)'Please enter the width of the rectangle:'READ(*,*) widtharea = length * widthperimeter = 2.0* (length + width)WRITE(*,*)'The area of the rectangle is:', areaWRITE(*,*)'The perimeter of the rectangle is:', perimeter END PROGRAM rectangle圆形面积和周长的程序我们需要设计一个可以计算圆形面积和周长的程序。
圆的面积公式为:$area = \\pi * radius^2$,周长公式为:$circumference = 2* \\pi * radius$。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
《FORTRAN 95程序设计》学习笔记66RPG gg★目录★《FORTRAN 95程序设计》学习笔记 (1)基础知识(基础、字符串、FORMAT、隐式、TYPE) (1)流程与控制(if、select、do) (4)数组(声明、隐式循环、整体操作、可变数组) (5)函数与子程序(子程序、函数、全局变量) (6)MODULE与面向对象(重载操作符、虚函数) (9)文件相关(OPEN、WRITE、READ) (10)指针(指向变量、数组、函数) (11)Visual Fortran 编译器(DLL,VB调用) (12)数值算法与IMSL(数值算法插件) (14)常用库函数(数学、数组、零碎、子程序) (15)基础知识(基础、字符串、FORMAT、隐式、TYPE)★【小玩意】二进制观察器:装在M.. Visual Studio\DF98\bin,有一个Bitviewer,可以观察变量储存方式★【语法】续行:行结尾或行开头使用& 符号;注释:使用! 符号★【语法】数学表达式:+ ;- ;* ;/ ;( ;) ;**乘幂★【语法】程序结束:STOP (Ruby的exit)★【语法】输出:write(*,*),完整写法:write(unit=*,fmt=*)⏹建议:少用print,尽量用write★【语法】声明⏹整型:integer(kind=4) a ;其中kind是使用的bytes数,4 or 2◆其他写法:integer*4 a; integer(4) a⏹浮点:real(kind=4) a ;有效数位6位(12345678存为1.234567E7),如果是kind8则为15位有效数字◆此外:1E10:单精10^10,1D10:双精10^10⏹复数:complex :: a=(2,3)◆实部:real(a) ;虚部:imag(a)⏹布尔型:Logical,.true. 和.false.★【语法与函数】字符串:character(20) string⏹注意理解,fortran的弱智字符串就是一个长度不能变的一维的东西,极其猥琐,和Java、Ruby不能相提并论的⏹string(13:13) = “a”:对第13个字节的读、存⏹string(2:3) = “go”⏹string(6) = “我的妈呀”:从第6个位置开始设置为“我的妈呀”⏹ a = string_a // string_b:用“//”连接两个字符串⏹【常用函数】char(num),ichar(char):ASCII码的转换相关功能⏹【常用函数】len(string),len_trim(string):长度,去掉尾部空格后的长度⏹【常用函数】index(string,key):找key在string首出现的位置⏹【常用函数】trim(string):返回去掉尾部空格的字符串(用途不大)⏹【函数】repeat(char,int):返回一个重复int次的char串⏹character(len=20) string 普通声明;character(len=*) string 接收的时候可自动长度★【规范格式】FORMA T格式化⏹ e.g.◆write (*,100) A◆100 format(I4) ←这里是100号标识调用的格式⏹参数控制符(前面加数字为重复次数,如4I6或<a>I6。
(其中a为一个int))◆A5 :输入/出5个字符←常用功能◆I5[.4] :输5位整数,最少4位←常用功能◆BN,BZ :定义空格为无东西或为0◆F5.4,D5.4 :5位浮点数,小数占4位←其中前面一个常用◆E5.1[E2] :5位浮点,小数占1位,指数占2位◆4X :4个空格←常用功能◆/ 与\:/为中止本行,\为强制不换行←强制不换行常用◆Tn,TLn,TRn :移动到第n列/ 左移n列/ 右移n列⏹Write(*,”(2X,I5)”) a ;一般使用这种方法进行格式化即可,推荐。
◆注意,complex要用两个浮点数来输出★IMPLICIT命令(隐式表达)⏹默认:I、J、K、L、M、N为整数,其余浮点(不好)⏹隐式声明:◆implicit integer(A,B,C) :A、B、C开头的自动为整型,无需单独声明◆implicit integer(A-F,I,K) :A-F、I、K开头的自动为整型◆implicit real(M-P) :M-P开头自动视为浮点数◆implicit none :无隐式声明,最常用,但个人认为在自己有把握的情况下还是可以自定义一些隐式来方便程序书写★【语法】常数parameter的声明⏹方法1:real,parameter :: pi=3.14⏹方法2:◆real pi◆parameter(pi = 3.14)★【常用功能】类型转换(real ←→ integer)⏹real (int_a) :返回int_a的浮点数⏹int(real_a) :返回real_a的整型★【语法】设初值:integer :: a=1★【语法】等价声明:equivalence(array(1,1,5) , A)⏹两者使用同一块内存,如上,调用A就是调用array(1,1,5),但是调用A比较快★【语法】type,自定义数据类型,可组合integer,real,char等,类似一个只有公开变量的类◆type :: person◆character(20) :: name◆integer::age◆end type person⏹声明:type(person) :: a⏹使用:a%name, (Ruby:一个全是attr_accessor的class)★【用途不大的函数】kind的使用:select_ind_kind(n):返回记录n位整数所需的kind;select_real_kind(n,e)n位有效,指数e位所需的kind流程与控制(if、select、do)★【语法】if条件分歧:◆if(逻辑) then ←注意,避免浮点数相等,浮点用abs(a-b)<误差的方法◆程序执行内容◆else if(逻辑) then◆程序执行内容◆else◆程序执行内容◆end if⏹单行if:if(逻辑) then 内容★【语法】逻辑标志:== .EQ.;/= .NE.;> .GT.;>= .GE.;< .LT.;<= .LE.;.and. ;.or. ;.not.★【语法】select case功能◆select case (某) ←这个某可以是整数和字符,Logical◆case (70:90) ←这个case只能用常数◆内容◆case(60:69)◆内容◆case default◆内容◆end select★【语法】两个小东西:pause:暂停;stop:退出★【语法】二进制的逻辑运算iand 和ior⏹举例:a = 2(二进制10);b=4(二进制100);c=iand(a,b) 则c=6★【语法】循环结构◆do I=1,5,1 ←分别是开始,结束,step,亦可do while(条件)◆执行内容◆enddo★【流程控制语法】⏹cycle:执行下次循环(Ruby:next)⏹exit:循环中断(Ruby:break)★【署名的循环】◆outdo: do I=1,3◆inner: do J=2,4◆内容←署名后可以使用诸如if (..) exit outdo;if(..) cycle inner这种◆end do inner◆end do outdo★【语法】臭名昭著的:goto 行数数组(声明、隐式循环、整体操作、可变数组)★【语法】数组的声明:Datatype name(size) ←其中Datatype是类型也可是自定义的type⏹比如:integer a(10) 或integer , dimension(10) :: a⏹类似声明多维数组:integer a(3,3) ←亦可a(0:3 , -3:3)这样自定义某维范围★【诡异东东】隐式循环与赋初值:Data A /1,2,3,4,5/ ;Data A /5*3/ ←5个3,不是计算⏹Data(A(I),I=2,4,2) /2,4/ ←I=2,4,2隐式循环,起、末、STEP,类似do循环⏹Integer :: a(5) = (/1, (2, I=2,4), 5/) ←连续3次2,如果(I, I=2,4)则是2,3,4⏹Write隐式循环:write(*,”(I3,I3,/I3,I3)”)((m(r,c),c=1,2),r=1,2) ←连续输出m(1,1),m(2,1), m(1,2), m(2,2)⏹初始化统一赋值:ingeter :: a(5) = 5 ;相当于a(1)=a(2)=..=a(5) = 5★【语法】数组整体操作:⏹ a = 5 ;将左右值设置为5⏹ a = (/1,2,3/);重设数值,大小要相同⏹ a = b;同位置的这是为相等数值。
注意,不是地址连接,是赋值!⏹ a = b + c;a = b – c;a = b * c ;a = b / c;a = sin(b) :也是对位置整体的操作★【技巧】其他数组操作:⏹a(3:5) = 5 ;a(3: ) = 5 ;a(1:3) = b(4:6);a(:,:)=b(:,:,1) ←如a(1-5,1-5)=b(1-5,1-5,1)⏹a(1:10) = a(10:1:-1) 类隐式循环翻转a。
注意这里的操作过程,先寄存右式,再赋值左边★【语法】WHERE◆where (a<3) ←对所有a<3的位置◆ b = 1 ←设置b=1,注意,a、b同大小◆else where ←亦可elsewhere (a>5)这样的东西◆ b = 2◆end where★【语法】FORALL:使用方法forall(范围1,范围2…条件)◆forall (I=1:5,J=1:5,a(I,J)/=0) a(I,J) = 1/a(I,J)◆相当于:do I=1,5 ;do j=1,5; if a(I,J) /=0 …★【内存细节】数组保存:假设一个A(3,3),则内存排列:⏹A(1,1) => A(2,1) => A(3,1) => A(1,2) => A(2,2) => A(3,2) => A(1,3) => A(2,3) =>A(3,3)。
注意,为了使用告诉cache,应尽量使用编号相近的内容,选用内存相近的内容。
所以integer::a(2,2)=(/1,2,3,4/)就是a(1,1)=1;a(2,1)=2;a(1,2)=3;a(2,2)=4,按内存分配4个东西。