fortran学习笔记-自我总结
Fortran学习总结
Fortran学习总结1、⽤结构体读取⼆进制⽂件存在的问题及解决⽅案在讲这个问题之前,我们先看⼀段代码:01 program fcode_cn02 integer(4)::i=1,j=2,k=303 character::ch*2='cn'04 type head05 !sequence06 character*2ch07 integer(4)i,j,k08 end type09 type(head)he1011 open(11,file='11.txt',access='stream')12 write(11)ch,i,j,k13 close(11)14 ! ⽅法115 open(11,file='11.txt',access='stream')16 read(11)he.ch,he.i,he.j,he.k17 close(11)18 print*,he19 ! ⽅法220 open(11,file='11.txt',access='stream')21 read(11)he22 close(11)23 print*,he24 pause25 end代码开头先向⽂件11.txt中写⼊⼀个字符串”cn”和3个4字节整数1, 2, 3 ,然后分别使⽤⽅法1和⽅法2读取并输出数据。
从代码本⾝分析,我们向⽂件中写⼊了14个字节的信息,⽅法1和⽅法2均⽤结构体去读取这个14字节信息。
理论上说,这不存在问题,但是在执⾏时,我们遇到下⾯的错误(图1):读取同样的数据为什么⽅法1能够正确执⾏,⽽⽅法2却遇到⽂件尾呢?这跟结构体元素的对齐⽅式有关。
打开项⽬属性-Fortran-data,点开structure member alignment选项(如图2),查看对齐⽅式,有1字节、2字节、4字节、8字节和16字节,win32系统缺省为4字节。
关于fortran的一些学习心得
关于fortran的一些学习心得
长大以来,在学习编程语言方面,我一直被FORTRAN所吸引,也在不断地对它进行深
入的学习与研究。
FORTRAN是一门适用于数值计算和科学计算的高级编程语言,它也是一种特殊的编程语言,用于解决计算机科学中各种各样的复杂问题。
学习FORTRAN语言,最早是通过书本系统学习,书本上有很多重要的理论知识,字符
类型、常量、运算表达式、条件语句等,以及编写的一些示例程序等,这些通过书本系统
学习都是让我有基础的理论和基本的操作技巧。
接着,我又课余的时候,从事一些学习FORTRAN的实践工作,编写一些实用的小程序,包括求数据的极值、求数据的均值、求数据的方差等,以及一些求解一元非线性方程组、
矩阵运算、牛顿插值法等程序,甚至也参与了一些开发多维数值计算模型和混合数值-符
号计算模型程序的项目,这些项目都有助于我提高FORTRAN领域的实际技能。
学习FORTRAN也带给我乐趣与挑战,它需要很多的理论知识和分析能力,学习的过程中,一个是不断的收集资料,然后分析其中的每个部分,学习数学知识,总结出程序的功能,而且在编写程序的过程中,还需要考虑很多实际问题,这使我学习FORTRAN有了更多
的挑战与激励,也乐在其中。
总体来说,学习FORTRAN语言,对我成长大有裨益,我深深的欣赏这门编程语言的强
大功能,通过学习FORTRAN,也逐渐提升了自己的编程基础,以及算法一类知识的能力,
而且,今后我也会继续以实践为主,加以系统地学习,理解FORTRAN的编程模式和思想,
进一步提升自己运用FORTRAN的技能和能力。
Fortran学习笔记
end program DeclareVariable
program readwrite implicit none !说明部分 integer::i,j,k
real::p,q,r !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! print *,"请输入 3 个数据:" read (*,'(3I7)'),i,j,k ! 第一个参数*是部件号,第二个参数是格式说明 ! 格式说明'(~)',其中~由三部分组成,mTn,m 代表每行读入 T 类型的数据 m 个,T 是 数据类型,n ! 是读入宽度,如果'(3I7)', ! 输入 123456723456783456789 时,i=1234567,j=2345678,k = 3456789, ! 输入 12 234 34567 时,i=12,j=234,k = 34567 ! 系统自动截取前 7 位,换成数据,再 7 位换成数据...... print *,i,j,k !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! print *,"请输入 3 个数据:" read (*,'(I7)'),i,j,k ! 第一个参数*是部件号,第二个参数是格式说明 ! 格式说明'(~)',其中~由三部分组成,mTn,m 代表每行读入 T 类型的数据 m 个,T 是 数据类型,n ! 是读入宽度,如果'(I7)', ! 则从每行中截取一个数据,不管该行有多长 ! print *,i,j,k
fortran用法总结
我的Fortran基本用法小结周日, 10/14/2007 - 21:00 — gator一、说明二、概述三、数据类型及基本输入输出四、流程控制五、循环六、数组七、函数八、文件一、说明本文多数内容是我读彭国伦《Fortran 95 程序设计》的笔记。
只读到第九章,主要是3~9章,都是最基本的用法(原书共16章)。
这里主要摘录了我看书过程中总结的一些Fortran和C不同的地方,主要是语法方面。
希望这份笔记能够给学过C但没有接触过Fortran的同学带去一些帮助。
要想得更清楚些,推荐看一下原书,觉得作者真的写得很好,很清楚;如果有C语言的基础,看完前九应该很快的,花一两天就行了。
觉得如果耐心看完本文,基本功能应该也可以顺利用起来了。
外,由于我之前没有用过Fortran,这次为了赶文档看书又看得很粗浅,大多数东西看过之后都没得及仔细想,只是按着作者的意思去理解。
所以这份笔记还处于纸上谈兵的层次。
如果有不妥的方,希望大家指正。
谢谢!文中蓝色的部分是程序代码,!后面的内容为注释。
二、概述1、名词解释Fortran=For mula Tran slator/Translation一看就知道有什么特色了:可以把接近数学语言的文本翻译成机械语言。
的确,从一开始,IBM设计的时候就是为了方便数值计算和科学数据处理。
设计强大的数组操作就是为了实现这一目标。
ortran奠定了高级语言发展的基础。
现在Fortran在科研和机械方面应用很广。
2、Fortran的主要版本及差别按其发展历史,Fortran编译器的版本其实很多。
现在在广泛使用的是Fortran 77和Fortran90。
ortran 90在Fortran 77基础上添加了不少使用的功能,并且改良了77编程的版面格式,所以编程时推荐使用90。
鉴于很多现成的程序只有77版本,有必要知道77的一些基本常识,至少保证能够看77程序。
以下是77和90的一些格式上的区别。
最新《FORTRAN95程序设计》学习笔记资料
《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语言复习总结
2 表控输入 READ 语句:
类似 cin>>
READ * ,变量 1,变量 2,„
表控输出 PRINT 语句: 类似 cout<<
PRINT * ,表达式 1,表达式 2,„
3 PARAMETER 语句:给常数命名 位于类型声明后,可执行语句前
PARAMETER(名称 1=表达式 1,名称 2=表达式 2,„)
输入:
↙。
输出:
。
第六章 选择结构 同 C++,只是除逻辑 IF 语句,其他都需要有 END IF 对应
1 逻辑 IF 语句
IF(<逻辑表达式 e>) <语句 S>
e 为逻辑表达式或关系表达式,S 为可执行语句。
2 基本块 IF 语句
(1)IF(<逻辑表达式 e>)THEN
[<THEN 语句体>]
END IF
5 两种书写格式:固定格式和自由格式
6 数据类型:有内部数据类型、派生数据类型、数组和指针类型等
预定义内部数据类型
INTEGER→int、
REAL→float/double、
COMPLEX、
CHARACTER→char、
LOGICAL→bool
第四章 表控输入输出
1 三种类型输入输出:表控格式、二进制形式(无格式)、有格式
式不正确会致错
输出:例: PRINT 10,i,j,k
10 FORMAT(1X,'i=',I4,3x,'j=',I4,3x,'k=',I4)
w>实际长度,前补空格。
w<实际长度,输出 w 个“*”。
Fortran学习总结 - 我不是企鹅的日志 - 网易博客
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的一些不同其实很多,在下面涉及具体方面时可以看到。
FORTRAN 基础学习笔记
书目1 : Fortran90程序设计实验指导与测验(超星图书)------------------------------- 基本过程----------基本过程, 先新建一个工作环境, workspace(工作区), 再建一个project(项目), 然后建一个源文件..f90是源程序文件项目里面可以新建txt和doc, 源程序写完之后可以编译为.exe具体步骤如下 :.opt和.dsw及.dsp注意一个问题, 在建新的project的时候, 我使用的版本(Compaq visual fortran)会出现以下对话框:问你是那一种console app., 按照这本书上说的, 需要自己手动建立主程序.f90的说法, 应该是建了一个empty project, 因为另外两种project建立后, 会自动有一个.f90的文件生成.源文件创建步骤如下 :其他的辅助文件也可以在项目中创建输入源程序结束之后, 要进行编译 (编译之后生成.obj文件):编译和构建exe的快捷键分别为: compile: ctrl+F7; build : F7运行: ctrl+F5Debug文件夹可以删除.-----------------------------------下面开始具体命令及注意事项-----------------排比啊...==定义变量必须在程序的开头就全部定义完, 一旦开始有执行的语句, 就不能再定义了(我猜是这个规则).Kind参数的概念意思就是, 默认的情况下占4字节(单精度), 后面写(1)就是占1字节, 写(8)就是占8字节, 也就是双精度的.下面这句里面_8 是啥意思?复数..后面很多习题解答, 这个书是一本辅导书, 感觉内容太零散了.书目2: FORTRAN 90/95高级程序设计(超星图书)第1章背景FORTRAN编译器的发展VF(DVF即Digital Visual Fortran)环境介绍: MS visual studio第2章: 基础执行部分和非执行部分要分开. 关于续行:标识符:五种数据类型, INTEGER, REAL, COMPLEX, CHARACTER, LOGICAL. INTEGER:整型常量的kind参数则是用下划线来说明:REAL:REAL(2)是错误命令. 只能是4或8COMPLEX:LOGICAL:CHARECTAR:强制规定类型: IMPLICIT NONE变量声明及初始化(::):第3章例程和模块第4章控制结构第5章数组几个数组声明如下:一般形式:书目3: Fortran90程序设计教程/张晓霞田秀平(超星图书)(个人觉得这本书比前两本都给力)第七章数组(讲的不错, 要看)没搞清write(*,*)到底怎么用?跟print的区别?第八章函数与子程序第一节语句函数:就是一句可以说明白的语句, 不必写成子函数的形式(yy的), 说明如下:例子一枚:第二节例行子函数subroutine语句wiki对于subroutine的解释:下面这段介绍了subroutine, 很清晰: (主程序是以program开头的)一个包含subroutine的程序的结构:return命令的说明:书目4: FORTRAN常用算法程序集徐士良以上为高斯法另外一个算法:(AX=B, 注意X=A-1B; 求出A的逆也可以得到X.): 如下:!/************************************************************* ! 程序:Gauss_Jordan消去法! 过程:Gauss_Jordan(aa,b,n,sgn)! 作用:aa为方阵,b为aa的逆,n为aa的阶! sgn为标识符,1表示求逆成功,0表示求逆失败! 调用格式为:call Gauss_Jordan(aa,b,n,sgn)!*************************************************************/ subroutine Gauss_Jordan(aa,b,n,sgn)implicit noneinteger(4):: n,sgnreal(8):: aa(n,n),b(n,n)integer(4):: i,j,kreal(8),allocatable:: a(:,:)real(8):: tallocate(a(n,n))a=aa ! a代替aa进行运算sgn=1! 初始化b为单位阵do i=1,ndo j=1,nif(i==j) thenb(i,j)=1elseb(i,j)=0end ifend doend do! Gauss_Jordan消去法过程do k=1,nif(a(k,k)==0) thensgn=0;EXITend if! 化第k行使得a(k,k)为1t=1.0d0/a(k,k)do j=k,na(k,j)=a(k,j)*tend dodo j=1,nb(k,j)=b(k,j)*tend do! 完成第k列的计算do i=1,nif(i/=k)thent=a(i,k)do j=k,na(i,j)=a(i,j)-a(k,j)*tend dodo j=1,nb(i,j)=b(i,j)-b(k,j)*tend doend ifend doend doend subroutine Gauss_Jordan。
FORTRAN学习中的一些小心得
FORTRAN 心得第一部分:一些小心得1Fortran不区分大小写2 Fortran有5种基本数据类型,integer,real, character, logical, complex3 fortran fixed format格式中的变量赋初值一般用DATA,因为它不能用::4 real(kind=8) a这种格式只使用于Fortran90,Fortran77中要使用real*8或real(8)5 FORTRAN中FREE与FIXED两种格式do循环的区别:Fortran 95使用end do来结束循环。
Fortran 77使用DO循环要麻烦一点,它不使用END DO来结束循环,而是使用行号来结束循环,程序代码要在DO的后面写清楚这个循环到哪一行程序代码结束。
Fortran 77中,经常会使用CONTINUE这个命令来结束循环。
因为CONTINUE这个命令没有实际的用途,刚好可以拿来做封装使用。
6 循环的流程控制:循环中的cycle命令相当于c++里的continue命令,用于结束一次循环循环中的exit命令好比c里面的break,用于结束循环7 不使用do循环,单纯用GOTO语句也能设计循环程序,但不推荐使用GOTO语句7 fortran有等价声明:即用equivalence(a,b),这样使得a,b使用同一块内存,这样可以节省内存,有时可精简代码。
8 fortran77中只能用单引号。
(还有疑问,因为fixed format能用双引号)9 逻辑运算符== /= > >= < <= !Fortran90用法.EQ. .NE. .GT. GE. .LT. .LE. !Fortran77用法9 PAUSE,CONTINUE,STOPpause 暂停程序执行,按enter可继续执行continue 貌似没什么用处,可用作封装程序的标志STOP 命令用来结束程序,要谨慎使用10 数组元素之间要用逗号分隔,而不能像matlab一样既可以用逗号也可以用空格,fortran 的数组元素之间不能用空格。
Fortran语言编程小结(五篇材料)
Fortran语言编程小结(五篇材料)第一篇:Fortran语言编程小结1.单双精度Program ex01 implicit none real(kind=4):: a real(kind=8):: b a=3.***66666666_4!确定这个数字是使用单精度 b=3.***66666666_8!确定这个数字是使用双精度 write(*,*)a,b End program ex012.判断kind值 program ex02 Implicit none!判断可以记录9个位数的整数kind值integer, parameter :: long_int = selected_int_kind(9)!判断可以记录3个位数的整数kind值integer, parameter :: short_int = selected_int_kind(3)!判断可以有3个有效位数, 指数可以记录到3的浮点数kind值integer, parameter :: long_real = selected_real_kind(10, 50)!判断可以有10个有效位数, 指数可以记录到50的浮点数kind值integer, parameter :: short_real= selected_real_kind(3, 3)integer(kind=long_int):: a = 123456 integer(kind=short_int):: b = 123 real(kind=long_real):: c = +1.23456789D45 real(kind=short_real):: d =+1230 write(*, “(I3,1X,I10)”)long_int,a write(*, “(I3,1X,I10)”)short_int, b write(*, “(I3,1X,E10.5)”)long_real, c write(*, “(I3,1X,E10.5)”)short_real, d END3.TYPE program ex0434 implicit none Type :: person!开始建立person这个类型character(len=30):: name!人名integer :: age!年龄integer :: height!身高INTEGER :: weight!体重character(len=80):: address!地址End type person type(person):: a!声明一个person类型的变量write(*,*)“NAME:” read(*,*)a%name write(*,*)“AGE:” read(*,*)a%age write(*,*)“HEIGHT:” read(*,*)a%height write(*,*)“WEIGHT:” read(*,*)a%weight write(*,*)“ADDRESS:” read(*,*)a%address write(*,100)a%name,a%age,a%height,a%weight 100 format(“Name:”,A10/,“Age:”,I3/,“Height:”,I3/,“Weight:”,I 3/,&“Addres:”,A80)End4.REAL 与 INTEGER Program ex0431 implicit noneinteger :: a=1integer :: b=2real:: cc=a/b!c=1/2=0, 虽然c是浮点数,但因为a,b是整数,计算a/b时会用整数去计算.write(*,“(F5.2)”)c End5.DATA 变量表/初值表/,变量表/初值表/,… PROGRAM ex0430 IMPLICIT NONE INTEGER A REALB COMPLEXC CHARACTER(20)STR DATA A,B,C,STR /1,2.0,(1.0,2.0), 'FORTRAN 77'/ WRITE(*,*)A,B,C,STR END6.复数实虚部Program ex0430 complex :: c =(1,2)write(*,100)real(c),'+',aimag(c),'i' 100 format(f5.1,a1,f5.1,a1)End7.逻辑输出 Program ex0416logical a,ba=.true.b=.false.write(*,100)a,bformat(L5,L4)End8.Program ex0415character(len=20)stringcharacter(len=5)substringstring = “Have a nice day.”substring = “nice”write(*,*)ichar('A')!输出字符A的ASCII码write(*,*)char(65)!输出ASCII码65所代表的字符,也就是Awrite(*,*)len(string)!输出字符串string声明时的长度write(*,*)len_trim(string)!输出字符串string内容的长度write(*,*)index(string, substring)!nice在Have a nice day的第8个位置 End9.Program ex0414character(len= 6)firstcharacter(len=10)secondcharacter(len=20)addfirst=“Happy ”second=“Birthday”add = first//second!经由两个连续的除号可以连接两个字符串write(*,100)addFORMAT('生日快乐',/,A)End10.带精度计算 Program ex0408real(kind=8):: a,ba=1b=0.1write(*,*)a,“+”,b,“=”,a+b End11.逻辑if语句 Program ex0504 implicit noneinteger rain, windspeedlogical r,wwrite(*,*)“Rain:”read(*,*)rainwrite(*,*)“Wind:”read(*,*)windspeedr =(rain>=500)!如果rain>=150, r=.true, 不然r=.false.w =(windspeed>=10)!如果windspeed>=10, w=.true, 不然w=.false.if(r.or.w)then !只要r或w有一个值是true就成立write(*,*)“停止上班上课”elsewrite(*,*)“照常上班上课” End if End12.Select Case用法 Program ex0512 implicit noneinteger :: scorecharacter gradewr ite(*,*)“Score:”read(*,*)scoreselect case(score)case(90:100)grade='A'case(80:89)grade='B'case defaultgrade='?'End selectwrite(*,“('Grade:',A1)”)grade End13.IF GOTO语句PROGRAM ex0514 IMPLICIT NONE REAL heightREAL weightWRITE(*,*)“height:” READ(*,*)heightWRITE(*,*)“weight:” READ(*,*)weightIF(weight > height-100)GOTO 200 100 WRITE(*,*)“Under control.”GOTO 300200WRITE(*,*)“Too fat!” 300 STOP END14.DO WHILE 循环 Program ex0604 implicit noneinteger, parameter :: limit=10integer counterinteger :: ans = 0counter = 2do while(counter <= limit)ans = ans + countercounter = counter + 2end dowrite(*,*)ans END15.CYCLE,EXIT 语句 Program ex0609 implicit noneinteger :: i,jloop1: do i=1,3loop2: do j=1,3if(i==3)exit loop1!跳离loop1循环if(j==2)cycle loop2!重做loop2循环write(*, “('(',i2,',',i2,')')”)i, jend do loop2end do loop1 End16.大小写字符 Program ex0612 implicit noneinteger iinteger strlencharacter(len=20):: stringwrite(*,*)“String:”read(*,*)stringstrlen = LEN_TRIM(string)do i = 1, strlenstring(i:i)= char(ichar(string(i:i))+32)end dowrite(*,“('encoded:',A20)”)string End17.循环计算 Program ex0614 implicit nonereal a,b,anscharacter :: key = 'y'!为了至少循环一次do while(key=='y'.or.key=='Y')read(*,*)a read(*,“(A1)”)key read(*,*)b select case(key)case('+')ans = a+b case('-')ans = a-b case('*')ans = a*bcase('/')ans = a/b case defaultwrite(*,“('Unknown operator ',A1)”)keystop end selectwrite(*,“(F6.2,A1,F6.2,'=',F6.2)”)a,key,b,answrite(*,*)“(Y/y)to do again.(Other)to exit.” read(*,“(A1)”)key end do End18.矩阵相加 pogram ex implicit noneinteger, parameter :: row = 2integer, parameter :: col = 2integer :: matrixA(row,col)integer :: matrixB(row,col)integer :: matrixC(row,col)integer rinteger cwrite(*,*)“Matrix A”do r=1, rowdo c=1, colwrite(*,“('A(',I1,',',I1,')=')”)r,cread(*,*)matrixA(r,c)end doend dowrite(*,*)“Matrix B”do r=1, rowdo c=1, colwrite(*,“('B(',I1,',',I1,')=')”)r,cread(*,*)matrixB(r,c)end doend dowrite(*,*)“Matrix A+B=”do r=1, rowdo c=1, colmatrixC(r,c)= matrixB(r,c)+matrixA(r,c)write(*,“('(',I1,',',I1,')=',I3)”)r,c,matrixC(r,c)end do end do end pogram ex[ write(*,“(I3,I3,/,I3,I3)”)((mc(i,j), i=1,2),j=1,2)] 19.program eximplicit noneinteger, parameter :: row = 2integer, parameter :: col = 2integer :: a(2,2)=(/ 1,2,3,4 /)!a(1,1)=1, a(2,1)=2, a(1,2)=3, a(2,2)=4integer :: b(4)=(/ 5,6,7,8 /)integer :: c(2)write(*,*)a,2)write(*,*)a(:,1)c = a(:,1)!c(1)=a(1,1), c(2)=a(2,1)write(*,*)c!c(1), c(2)c = a(2,:)!c(1)=a(2,1), c(2)=a(2,2)write(*,*)c!c(1), c(2)write(*,*)c(2:1:-1)!c(2), c(1)c = b(1:4:2)!c(1)=b(1), c(2)=b(3)write(*,*)c!c(1), c(2)End20.FORALL语句 Program ex Implicit none integer :: I,Jinteger, parameter :: size = 5integer :: a(size,size)forall(I=1:size, J=1:size, I>J)a(I,J)=1!上半部分forall(I=1:size, J=1:size, I==J)a(I,J)=2!对角线forall(I=1:size, J=1:size, I!下半部分write(*,“(5(5I5,/))”)a End21.Allocatable Program EX Implicit none integer :: size, error=0integer, parameter :: one_mb=1024*1024 !1MBcharacter, allocatable :: a(:)Dosize=size+one_mb!allocate(a(size), stat=error)if(error/=0)exitwrite(*,“('Allocate ',I10, ' bytes')”)size write(*,“(F10.2,' MB used')”)real(size)/real(one_mb)deallocate(a)End do End22.Function 函数 Program ex implicit nonereal :: a=10real :: b=20real :: addwrite(*,“(f6.2)”)add(a,b)End Function add(a,b)implicit none real :: a,breal :: addadd = a*b End23.SAVE语句 Program ex Implicit nonecall sub()call sub()call sub()End program Subroutine sub()Implicit noneInteger :: count = 1Save count!指定save变量永远活着,不会忘记它的内容Write(*,*)countcount = count+1 End[运行结果:1 2 3 ]24.生成随机数 program ex implicit noneinterface!定义函数的接口function random10(lbound, ubound)implicit none real :: lbound, ubound real :: random10(10)end functionend interfacereal :: a(10)CALL RANDOM_SEED()!系统根据日期和时间随机地提供种子a = random10(1.0, 10.0)write(*,“(10F6.2)”)aend function random10(lbound, ubound)implicit nonereal :: lbound, uboundreal :: lenreal :: random10(10)realtinteger ilen = ubound-lbound!计算范围大小do i=1,10call random_number(t)!t会是0~1之间的随机数random10(i)= lbound + len * t!把t转换成lbound~ubound 间的随机数end do End25.MODULE语句 Module globalimplicit noneinteger a,bcommon a,b End module Program ex0834use globalimplicit nonea=1b=2call sub()End program Subroutine sub()use globalimplicit nonewrite(*,*)a,breturn End subroutine26.写文件到text program ex0902implicit nonecharacter(len=20):: stringopen(unit=10, file=“test.txt”)write(10,“(A20)”)“I LOVE YOU.”!写到文件中rewind(10)read(10,“(A20)”)string!从文件中读出来write(*,“(A20)”)string!写到屏幕上 end27.随机成绩 program gendataimplicit noneinteger studentsinteger irealr(3)write(*,“(4A5)”)“座位”,“语文”,“数学”,“英语”call random_seed()write(*,*)“How many students?”read(*,*)studentsdo i=1,studentscall random_number(r)write(*,“(6I5)”)i,int(r*50+50)end do end program第二篇:Fortran语言复习大纲复习内容提纲1.FORTRAN程序的结构、书写规则FORTRAN程序的构成(主程序和子程序);FORTRAN77源程序的书写格式。
Fotran学习笔记
┆
do 20 j=1, 9
do 20 j=1, 10
k=i*j
┆
print*, i,’*’,j, ‘=‘,k
20 continue ┆
20 continue print *,’ ’
10 continue 打印“九九表”。编程如下: CHARACTER 语句:
10 continue End
如果在 CHARACTER 语句中不指定长度则隐含指定长度为 1。 如:character A, B, C 定义了长度为 1 的 A, B,C 字符型变量。如果统一指定的字符长度与变量个别指定的长度不一致,则以个别指定的长度为准 如:
character*5 A, B*6, C*7 则定义 A 为长度为 5 的字符型变量,B 的长度为 6,C 的长度为 7。通过 READ 语 句从键盘或其它输入设备读入字符常量给字符变量。用表控语句进行输入字符串时要用撇号将字符串括起来。
如可以用 READ 语句代替上页的三个赋值语句。READ*,A,B,C 输入: 'CHINA','NANJING','WHU'
当型循环:是指执行循环体要依据事先给定的条件。当条件成立时执行循环,否则就不执行循环。
用 do while 语句实现当型循环: 求 n!。编程如下:
一般形式
do s1[,] while (条件) s1 <终端语句>
read*,n
i=i+1
m=1
10 continue
i=1
print*,m
do 10 while (i.le.n)
100 Format (1x,e9.3,e9.3)
End
输出结果: ⒋ X 编辑符
FORTRAN学习中的一些小心得
FORTRAN 心得第一部分:一些小心得1Fortran不区分大小写2 Fortran有5种基本数据类型,integer,real, character, logical, complex3 fortran fixed format格式中的变量赋初值一般用DATA,因为它不能用::4 real(kind=8) a这种格式只使用于Fortran90,Fortran77中要使用real*8或real(8)5 FORTRAN中FREE与FIXED两种格式do循环的区别:Fortran 95使用end do来结束循环。
Fortran 77使用DO循环要麻烦一点,它不使用END DO来结束循环,而是使用行号来结束循环,程序代码要在DO的后面写清楚这个循环到哪一行程序代码结束。
Fortran 77中,经常会使用CONTINUE这个命令来结束循环。
因为CONTINUE这个命令没有实际的用途,刚好可以拿来做封装使用。
6 循环的流程控制:循环中的cycle命令相当于c++里的continue命令,用于结束一次循环循环中的exit命令好比c里面的break,用于结束循环7 不使用do循环,单纯用GOTO语句也能设计循环程序,但不推荐使用GOTO语句7 fortran有等价声明:即用equivalence(a,b),这样使得a,b使用同一块内存,这样可以节省内存,有时可精简代码。
8 fortran77中只能用单引号。
(还有疑问,因为fixed format能用双引号)9 逻辑运算符== /= > >= < <= !Fortran90用法.EQ. .NE. .GT. GE. .LT. .LE. !Fortran77用法9 PAUSE,CONTINUE,STOPpause 暂停程序执行,按enter可继续执行continue 貌似没什么用处,可用作封装程序的标志STOP 命令用来结束程序,要谨慎使用10 数组元素之间要用逗号分隔,而不能像matlab一样既可以用逗号也可以用空格,fortran 的数组元素之间不能用空格。
fortran用法小结
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学习笔记
Fortran学习笔记——吴登将2014.10.15小技巧:!写出到excelexcel的默认格式,估计是大家所期望的输出格式。
方法很简单,只要知道xls文件的分列符号是tab键就行了,于是在同行的各数据间加上" "字符(按一下tab键,在fortran 输出时两边加上英文引号)就搞定了。
1.新建项目:步骤2. 面向过程的方法--就是程序的组成单位是函数(过程),也就是说,一个程序是由若干个函数组成的。
“结构化程序设计方法”应该与“面向过程的程序设计方法”是同义词。
面向对象的方法--就是程序的组成单位是类class ,程序是由若干个类组成的。
当然类里面有成员函数,所以这2种方法并不是相互排斥的。
面向过程就是分析出解决问题所需要的步骤,然后用函数把这些步骤一步一步实现,使用的时候一个一个依次调用就可以了。
面向对象是把构成问题事务分解成各个对象,建立对象的目的不是为了完成一个步骤,而是为了描叙某个事物在整个解决问题的步骤中的行为。
例如五子棋,面向过程的设计思路就是首先分析问题的步骤:1、开始游戏,2、黑子先走,3、绘制画面,4、判断输赢,5、轮到白子,6、绘制画面,7、判断输赢,8、返回步骤2,9、输出最后结果。
把上面每个步骤用分别的函数来实现,问题就解决了。
而面向对象的设计则是从另外的思路来解决问题。
整个五子棋可以分为1、黑白双方,这两方的行为是一模一样的,2、棋盘系统,负责绘制画面,3、规则系统,负责判定诸如犯规、输赢等。
第一类对象(玩家对象)负责接受用户输入,并告知第二类对象(棋盘对象)棋子布局的变化,棋盘对象接收到了棋子的i变化就要负责在屏幕上面显示出这种变化,同时利用第三类对象(规则系统)来对棋局进行判定。
可以明显地看出,面向对象是以功能来划分问题,而不是步骤。
同样是绘制棋局,这样的行为在面向过程的设计中分散在了总多步骤中,很可能出现不同的绘制版本,因为通常设计人员会考虑到实际情况进行各种各样的简化。
(完整)《FORTRAN 95程序设计》学习笔记
《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。
fortran语言知识点总结
fortran语言知识点总结Fortran语言知识点总结:1. 基本语法和数据类型Fortran的基本语法和数据类型与其他编程语言类似,包括变量声明、赋值、条件语句、循环语句等。
在Fortran中,变量可以使用不同的数据类型进行声明,包括整数、实数、逻辑型和字符串型。
此外,Fortran还支持数组类型,可以方便地处理多维数组数据。
2. 过程和函数Fortran支持模块化编程,可以将代码模块化为过程和函数。
过程是一系列执行指令的代码块,可以在程序中被多次调用。
函数是一个具有返回值的过程,可以被其他代码调用,并返回一个值。
通过过程和函数的使用,可以提高代码的重用性和可维护性。
3. 指针和动态内存分配Fortran支持指针和动态内存分配,可以在程序中灵活地操作内存。
通过指针,可以获得变量的地址,并在程序中直接操作内存。
同时,动态内存分配允许程序在运行时分配或释放内存,可用于处理不确定大小的数据。
4. 文件操作Fortran提供了丰富的文件操作功能,可以进行文件的打开、写入、读取和关闭等操作。
通过文件操作,可以将程序的输入和输出与外部文件进行交互,从而扩展程序的功能和应用范围。
5. 并行计算Fortran具有强大的并行计算能力,可以利用多核处理器和分布式计算环境实现并行计算。
通过并行计算,可以加速程序的执行速度,提高计算效率。
6. 编译和调试Fortran程序需要通过编译器进行编译,生成可执行文件。
Fortran编译器通常会检查程序的语法和语义错误,并生成可执行文件。
同时,Fortran还提供了丰富的调试工具,可以帮助程序员发现和修复程序中的错误。
7. 数值计算和科学工程计算Fortran是一种专门用于数值计算和科学工程计算的语言,提供了丰富的数学库和科学计算库。
通过这些库,可以方便地进行复杂的数值计算和科学工程计算。
总结:Fortran是一种专门用于数值计算和科学工程计算的编程语言,具有丰富的数学库和科学计算库。
FORTRAN学习中的一些小心得
FORTRAN心得第一部分:一些小心得1Fortran不区分大小写2Fortran有5种基本数据类型,integer,real,character,logical,complex3fortran fixed format格式中的变量赋初值一般用DATA,因为它不能用::4real(kind=8)a这种格式只使用于Fortran90,Fortran77中要使用real*8或real(8)5FORTRAN中FREE与FIXED两种格式do循环的区别:Fortran95使用end do来结束循环。
Fortran77使用DO循环要麻烦一点,它不使用END DO来结束循环,而是使用行号来结束循环,程序代码要在DO的后面写清楚这个循环到哪一行程序代码结束。
Fortran77中,经常会使用CONTINUE这个命令来结束循环。
因为CONTINUE这个命令没有实际的用途,刚好可以拿来做封装使用。
6循环的流程控制:循环中的cycle命令相当于c++里的continue命令,用于结束一次循环循环中的exit命令好比c里面的break,用于结束循环7不使用do循环,单纯用GOTO语句也能设计循环程序,但不推荐使用GOTO语句7fortran有等价声明:即用equivalence(a,b),这样使得a,b使用同一块内存,这样可以节省内存,有时可精简代码。
8fortran77中只能用单引号。
(还有疑问,因为fixed format能用双引号)9逻辑运算符==/=>>=<<=!Fortran90用法.EQ..NE..GT.GE..LT..LE.!Fortran77用法9PAUSE,CONTINUE,STOPpause暂停程序执行,按enter可继续执行continue貌似没什么用处,可用作封装程序的标志STOP命令用来结束程序,要谨慎使用10数组元素之间要用逗号分隔,而不能像matlab一样既可以用逗号也可以用空格,fortran 的数组元素之间不能用空格。
Fortran学习总结 我不是企鹅的日志 网易博客
Fortran学习总结我不是企鹅的日志网易博客fortran学习总结-我不是企鹅的日志-网易博客FORTRAN学习总结-我不是企鹅日志-网易博客fortran学习总结目录:一、说明二、概述三、数据类型和基本输入输出4。
过程控制5。
第六周期。
阵列7。
功能8。
文件1。
描述本文多数内容是读彭国伦《fortran95程序设计》的笔记。
二、概述1、名词解释fortran=公式翻译/翻译一看就知道有什么特色了:可以把接近数学语言的文本翻译成机械语言。
的确,从一开始,ibm设计的时候就是为了方便数值计算和科学数据处理。
设计强大的数组操作就是为了实现这一目标。
fortran奠定了高级语言发展的基础。
现在FORTRAN广泛应用于科学研究和机械领域。
2.FORTRAN的主要版本和差异按其发展历史,fortran编译器的版本其实很多。
现在在广泛使用的是fortran77和fortran90。
ortran90在fortran77基础上添加了不少使用的功能,并且改良了77编程的版面格式,所以编程时推荐使用90。
鉴于很多现成的程序只有77版本,有必要知道77的一些基本常识,至少保证能够看77程序。
以下是77和90的一些格式上的区别。
fortran77:固定格式(fixedformat),程序代码扩展名:.f或.for(1)若某行以c,c 或*开头,则该行被当成注释;(2)每行前六个字符不能写程序代码,可空着,或者1~5字符以数字表明行代码(用作格式化输入出等);7~72为程序代码编写区;73往后被忽略;(3)如果太长,你可以继续排队。
续行的第六个字符必须是除\以外的任何字符。
fortran90:自由格式(freeformat),扩展名:.f90(1)以\引导注释;(2)每行可包含132个字符,行号放在每行的前面;(3)用&继续这一行,并把它放在这一行的末尾或开头。
下面是对Fortran 90的讨论。
3、fortran的一些特点,和c的一些不同事实上,有很多,当提到下面的具体方面时可以看到。
Fortran和C++学习笔记
FORTRAN1. GOTO语句设计循环结构S1 IF(逻辑表达式)THEN循环体GOTO S1ENDIF例;PROGRAM MAINI=05 IF(I.LT.5)THENREAD *,H,W0W1=110-W0IF(ABS(W0-W1).LE.5)THENPRINT *,‘标准’ELSE IF(W0.GT.W1)THENPRINT *,‘过胖’ELSEPRINT *,‘过瘦’ENDIFI=I+1GOTO 5ENDIFEND例PROGRAM MAININTEGER FCHREAD *,M,NK=MIN(M,N)I=15 IF(I.LE.K)THENIF(MOD(M,I).EQ.0.AND.MOD(N,I).EQ.O)FCH=II=I+1GOTO 5ENDIFWRITE(*,100)M,‘和’,N,‘的最大公约数是:’,FCH100FORMAT(1X,I4,A,I4,A,I4)END此例中红色部分的“if”语句没有“then”和“endif”语句,且FCH = 1 直接接在“if”语句之后2逻辑IF语句与GOTO 语句设计的循环程序用逻辑IF语句与GOTO语句实现循环一般是针对“直到型”循环,一般格式是:S1 循环体IF(逻辑表达式)GOTO S1例PROGRAM MAINI=05READ *,H,W0W1=110-W0IF(ABS(W0-W1).LE.5)THENPRINT *,‘标准’ELSE IF(W0.GT.W1)THENPRINT *,‘过胖’ELSEPRINT *,‘过瘦’ENDIFI=I+1IF(I.LT.5)GOTO 5END2 DO-WHILE 循环DO 标号[,] WHILE(逻辑表达式)循环体标号终端语句或者:DO WHILE(逻辑表达式)循环体ENDDO例DO 10 WHILE(I.LE.20)K=I*IPRINT*,I,KI=1+110 CONTINUE当WHILE(I.LE.20)的条件I.LE.20为假时,循环结束,跳到标号为“10”的语句。
Fortran经典编程语言笔记(你值得拥有)(2021年整理精品文档)
(完整)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”结束的。