Fortran学习笔记
这是我之前学习Fortran时做到笔记分享出来当个备份 Fortran是一门非常古老的编程语言但是至今依然有人在使用。 建议利用闲暇时间学习!1、编译命令g95 –c a.f90将a.f90编译为名为a.o的目标文件。g95 h.f90编译h.f90并将其链接以生成可执行文件a.out。g95 -c h1.f90 h2.f90 h3.f90编译多个源文件。 如果顺利则创建对象文件h1.oh2.o和h3.o。g95 -o a h1.f90 h2.f90 h3.f90编译多个源文件并将它们链接到一个名为’a’的可执行文件。2、print*, huge(a)返回变量a能存放的最大值。3、integer(kind 2) :: a指定a变量的字节数。4、kind(i)返回i变量所占字节数。5、character (len 40) :: a指定字符串a的长度。6、a(1:4)对字符串a切片。7、数据类型的作用它决定了变量内存的大小和布局; 可存储在该内存中的值范围; 以及可以应用于变量的操作集。8、所有Fortran程序都以关键字program开头以关键字end program名称 结尾。9、implicit none变量显示声明。10、Fortran中的注释以感叹号开头。11、Fortran的行连接符是相当于C的“\”。12、Fortran不区分大小写。13、Fortran变量类型Integer整数Real实数Complex复数Logical逻辑Character字符。14、复数的初始化cx (3.0, 5.0) ! cx 3.0 5.0i。cx cmplx (x, y) ! cx x yi。15、real, parameter :: pi 3.14声明常量。16、算术运算符-*/**。17、判断if (expression) then ...... end if或a: if (expression) then ...... end if a Fortran支持else。多分支语句a:select case (expression) case (selector1) ...... case (selector2) ...... case default ...... end select acase (91:100) 在91~100之间激活。18、逻辑值.true.和.false.。19、关系运算符/。20、逻辑运算符.and..or..not..eqv..neqv.。21、循环do var start, stop [,step] ...... end do条件循环do while (logical expr) ...... end doFortran允许为循环设置标签。22、跳转语句exit相当于C语言里的break。cycle相当于C语言里的continue。stop终止程序。23、a//b讲ab两个字符串拼接。24、len(string)返回字符串的长度。25、index(string,sustring)它找到字符串string中子字符串sustring的位置如果找不到则返回0。26、achar(int)它将整数转换为字符。27、iachar(c)它将字符转换为整数。28、trim(string)它返回删除了尾随空格的字符串。29、scan(string, chars)对于“chars”中包含的任何字符的第一次出现它从左到右搜索“string”除非back .true。。 它返回一个给出该字符位置的整数如果没有找到“chars”中的字符则返回零。30、verify(string, chars)它从左到右扫描“字符串”除非back .true。第一次出现“chars”中没有包含的任何字符。 它返回一个给出该字符位置的整数如果只找到“chars”中的字符则返回零。31、adjustl(string)它左对齐“字符串”中包含的字符。32、adjustr(string)它右对齐“字符串”中包含的字符。33、len_trim(string)它返回一个等于“string”lenstring长度的整数减去尾随空格的数量。34、repeat(string,ncopy)它返回一个长度等于“ncopy”的字符串乘以“string”的长度并包含“ncopy”连接的“string”副本。35、lle(char, char)比较第一个字符是否在词法上小于或等于第二个字符。36、lge(char, char)比较第一个字符是否在词法上大于或等于第二个字符。37、lgt(char, char)比较第一个字符是否在词法上大于第二个字符。38、llt(char, char)比较第一个字符是否在词法上小于第二个字符。39、call date_and_time(d, t)调用子程序获取时间结果“年月日”返回到d字符串变量“时分秒”返回到t变量。40、real, dimension(5) :: array创建一维数组大小为5。41、array (/1.5, 3.2,4.5,0.9,7.2 /)初始化数组。42、array(1)使用数组array的第一个数据。43、integer, dimension (5,5) :: array_2建立二维数组。44、real, dimension(2:6) :: array_3建立一个一维数组并指定索引号。45、integer, dimension (-3:2,0:4) :: array_4建立一个二维数组并指定索引号。46、subroutine func(a)定义函数func(a)。如果a是数组那么就要在函数里声明一个同名数组来使用。47、size(a)获取数组a的大小。48、a(1:7) 5数组a的第1到第7个数据都是5。49、a(8:) 0数组a第8个以后的数据都是0。50、b(2:10:2)1数组b的第2到第10个元素每隔2个都是1。51、dot_product(array_a, array_b)此函数返回两个输入向量的标量积其长度必须相同。52、matmularray_aarray_b它返回两个矩阵的矩阵乘积它必须是一致的即具有类似mk和kn的维数。53、all(a5)判断a数组中是否所有元素都大于554、all(a5 .and. a10)划定范围。55、any(a5)判断a数组中是否有元素都大于556、count(a5)统计数组a中大于5的数据个数。57、maxval(a)找到数组a的最大值。58、minval(a)找到数组a的最小值。59、sum(a)对a的所有元素求和。60、product(a)对a的所有元素求积。61、allocated(array)检查是否分配了数组。62、lbound(array, dim)它返回数组的最小有效下标。 如果没有将dim维度作为参数给出则会得到一个整数向量如果包含dim则会得到具有该维度的较低维度的整数值。63、ubound(array, dim)它返回可用的最大下标。64、shape(source)它将数组的形状作为整数向量返回。65、size(a,dim 1)返回数组a中的数据数。66、merge(tsource, fsource, mask)此函数连接两个数组。 如果mask中的条件是.true它给出tsource中的元素。 如果掩码中的条件为.false则为fsource。 tsource和fsource这两个字段必须具有相同的类型和相同的形状。 结果也是这种类型和形状。 面具也必须具有相同的形状。67、pack(array, mask, vector)它通过掩码控制将数组打包到矢量。 逻辑数组掩码的形状必须与数组一致否则掩码必须是标量。 如果包含向量则它必须是秩为1的数组即向量其元素至少与掩码中为真的元素一样多并且具有与数组相同的类型。 如果mask是一个值为.true的标量。 然后矢量必须具有与数组相同数量的元素。68、spread(source, dim, ncopies)它返回一个与参数源相同类型的数组其等级增加1。 参数dim和ncopies是整数。 如果ncopies为负数则使用零值。 如果source是标量则spread会变成带有ncopies元素的向量这些元素都与source具有相同的值。 参数dim指示要扩展的索引。 它必须在1和1的范围内源的等级如果源是标量则dim必须是1。 参数ncopies是新维度中的元素数。69、unpack(vector, mask, array)它将矢量分散到掩码控制下的数组中。 逻辑阵列掩码的形状必须与数组一致。 数组向量必须具有等级1即它是向量其具有至少与掩码中为真的元素一样多的元素并且还必须具有与数组相同的类型。 如果数组作为标量给出那么它被认为是一个与掩码具有相同形状的数组并且到处都是相同的标量元素。结果将是一个与mask相同形状的数组与vector类型相同。 值将是来自可接受的向量的值而在数组中的其余位置中保留旧值。70、reshape(source, shape, pad, order)它构造一个具有指定形状形状的数组该数组从给定数组源中的元素开始。 如果不包括垫那么源的尺寸必须至少是产品形状。 如果包含pad则它必须与source具有相同的类型。 如果包含order则它必须是一个形状与形状相同的整数数组并且值必须是1,2,3…n的排列其中n是形状中元素的数量它必须小于或等于7。71、interface……end interface先声明函数及其内部的变量后面再定义函数具体操作。72、transpose (matrix)它转换矩阵向右掰。73、x cshift ( a, shift 2)从a数组的第二个数据开始输出再回环到a数组的第二个数据前。74、x eoshift ( a, shift 2)从a数组左移两个位输出。75、maxloc(array, mask)它返回数组数组中最大元素的位置如果仅包含掩码的掩码则返回位置返回位置结果为整数向量。76、minloc(array, mask)它返回数组数组中最小元素的位置如果仅包含掩码的掩码则返回位置返回位置结果为整数向量。77、real, dimension (:,:), allocatable :: a声明二维动态数组a。78、allocate ( a(s1,s2) )为声明的动态数组a分配内存。79、deallocate (a)释放内存。80、read*, s1, s2从控制台输入两个值把它们存到变量s1、s2中。81、data a /7,8,9,10,11/初始化一维数组a。82、data b(1,:) /1,1,1/初始化二维数组的第一行。83、data (c(i),i 1,10,2) /4,5,6,7,8/对c数组的1~10元素范围内以步长2依次赋值。84、data (c(i),i 2,10,2)/5*2/对c数组的2~10元素范围内以步长2依次赋值为2。85、where( a0 ) …… elsewhere …… end where对数组a中少于0的元素都执行……不少于0点元素都执行……。86、结构体type type_name …… end type type_name87、type(Books) :: book1创建Books类型的结构体对象book1。88、book1%a C对结构体对象book1的a元素赋值为““C””。89、type(Books), dimension(2) :: list建立一个有两个元素每个元素类型是Books的数组。90、list(1)%a C给数组list的第一个元素的a赋值。91、integer, pointer :: p1声明一个指针。92、allocate(p1)为指针分配内存此时p1就可以当成一个变量来用。93、integer, target :: t1t1是一个可以别指向的变量。94、p1t1p1指针指代t1变量。95、nullify(p1)断开p1指针的指向。96、associated(a)判断a变量释放存在97、associated(p1, t1)判断p1是否指向t1变量。98、Print (f10.7), pi输出长度为10小数点后7位。99、Print (e16.4), pi/100用科学记数法输出。100、format语句不做介绍。101、open (unit number, file name)打开文件。open参数unit9~99指定文件编号。IOSTAT ios它是I/O状态标识符应该是整数变量。如果open语句成功则返回的ios值为零否则为非零值。ERR err它是一个标签控件在出现任何错误时跳转到该标签。FILE fname文件名字符串。STATUS sta它显示文件的先前状态。一个字符串可以有三个值NEWOLD或SCRATCH之一。关闭或程序结束时创建并删除临时文件。ACCESS acc它是文件访问模式。可以具有两个值中的任何一个SEQUENTIAL或DIRECT。默认为SEQUENTIAL。FORM frm它给出了文件的格式化状态。可以具有两个值FORMATTED或UNFORMATTED中的任何一个。默认值为UNFORMATTED。RECL rl它指定直接访问文件中每条记录的长度。102、close(1)关闭unit指定的编号为1的文件。103、write(1,*) x 把x变量的内容输入到编号为1的文件。104、read(2,*) p把编号2所代表的文件的内容输入变量p。105、定义函数function name(arg1, arg2, ....) …… end function [name]106、如果函数有返回值那么就要在函数内部定义一个与函数名一样的变量这个变量的值就是返回值。或将函数名定为function name(arg1, arg2, …)result(return_var_name)。107、contains关键字放在一个子程序的定义前说明这个子程序是内嵌内联的。108、函数和子程序的区别函数不修改其参数子例程不返回值但可以修改其参数。109、模块定义module name …… end module [name]110、使用模块use module_name111、可以使用private和public属性控制模块代码的可访问性。主程序不可访问。但是其他模块子程序可以访问它们。112、ABS (A)它返回A的绝对值。113、AIMAG (Z)它返回复数Z的虚部。114、AINT (A [, KIND])它将A的小数部分截断为零返回一个实数整数。115、ANINT (A [, KIND])它返回一个实数值最接近的整数或整数。116、CEILING (A [, KIND])它返回大于或等于数字A的最小整数。117、CMPLX (X [, Y, KIND])它将实变量X和Y转换为复数X iY; 如果Y不存在则使用0。118、CONJG (Z)它返回任何复数Z的复共轭。119、DBLE (A)它将A转换为双精度实数。120、DIM (X, Y)它返回X和Y的正差。121、DPROD (X, Y)它返回X和Y的双精度实数。122、FLOOR (A [, KIND])它提供小于或等于数字A的最大整数。123、INT (A [, KIND])它将数字实数或整数转换为整数将实部截断为零。124、MAX (A1, A2 [, A3,...])它返回参数的最大值所有这些都是相同的类型。125、MIN (A1, A2 [, A3,...])它返回参数的最小值所有这些都是相同的类型。126、MOD (A, P)它返回A除以A的余数两个参数的类型相同A-INTA/P* P。127、MODULO (A, P)它返回A模P A-FLOORA/P* P。128、NINT (A [, KIND])它返回最接近的数字A的整数。129、REAL (A [, KIND])它转换为实际类型。130、SIGN (A, B)它返回A的绝对值乘以P的符号。基本上它将B的符号传递给A。131、ACOS (X)它以弧度为单位返回范围0π中的反余弦值。132、ASIN (X)它以弧度为单位返回范围-π/ 2π/ 2的反正弦值。133、ATAN (X)它以弧度为单位返回范围-π/ 2π/ 2的反正切。134、ATAN2 (Y, X)它以弧度为单位返回范围-ππ中的反正切。135、COS (X)它以弧度返回参数的余弦值。136、COSH (X)它以弧度为单位返回参数的双曲余弦值。137、EXP (X)它返回X的指数值。138、LOG (X)它返回X的自然对数值。139、LOG10 (X)它返回X的常用对数基数10值。140、SIN (X)它以弧度形式返回参数的正弦值。141、SINH (X)它以弧度为单位返回参数的双曲正弦值。142、SQRT (X)它返回X的平方根。143、TAN (X)它以弧度为单位返回参数的正切值。144、TANH (X)它以弧度形式返回参数的双曲正切值。145、IGITS (X)它返回模型的有效位数。146、EPSILON (X)它返回的数字几乎可以忽略不计。 换句话说它返回最小值使得REAL1.0KINDX EPSILONX不等于REAL1.0KINDX。147、HUGE (X)它返回最大数量的模型。148、MAXEXPONENT (X)它返回模型的最大指数。149、MINEXPONENT (X)它返回模型的最小指数。150、PRECISION (X)它返回小数精度。151、RADIX (X)它返回模型的基础。152、RANGE (X)它返回十进制指数范围。153、TINY (X)它返回模型的最小正数。154、EXPONENT (X)它返回模型编号的指数部分。155、FRACTION (X)它返回数字的小数部分。156、NEAREST (X, S)它返回给定方向上最近的不同处理器编号。157、RRSPACING (X)它返回给定数字附近的模型数的相对间距的倒数。158、SCALE (X, I)它将real乘以其基数乘以整数幂。159、SET_EXPONENT (X, I)它返回数字的指数部分。160、SPACING (X)它返回给定数字附近的型号的绝对间距。161、BIT_SIZE (I)它返回模型的位数。162、BTEST (I, POS)比特测试。163、IAND (I, J)逻辑和。164、IBCLR (I, POS)清楚一点。165、IBITS (I, POS, LEN)位提取。166、IBSET (I, POS)设置位。167、IEOR (I, J)独家OR。168、IOR (I, J)包容性或。169、ISHFT (I, SHIFT)逻辑转变。170、ISHFTC (I, SHIFT [, SIZE])循环移位。171、NOT (I)逻辑补充。172、ACHAR (I)它返回ASCII整理顺序中的第I个字符。173、ADJUSTL (STRING)它通过删除任何前导空格和插入尾随空白来调整字符串。174、ADJUSTR (STRING)它通过删除尾随空白和插入前导空格来调整字符串。175、CHAR (I [, KIND])它返回机器特定整理顺序中的第I个字符。176、IACHAR (C)它返回ASCII整理顺序中字符的位置。177、ICHAR (C)它返回机器处理器特定整理顺序中字符的位置。178、INDEX (STRING, SUBSTRING [, BACK])它返回STRING中最左边的最右边如果BACK是.TRUE。SUBSTRING的起始位置。179、LEN (STRING)它返回字符串的长度。180、LEN_TRIM (STRING)它返回字符串的长度不带尾随空白字符。181、LGE (STRING_A, STRING_B)词汇量大于或等于。182、LGT (STRING_A, STRING_B)词汇大于。183、LLE (STRING_A, STRING_B)词汇小于或等于。184、LLT (STRING_A, STRING_B)词汇量小于。185、REPEAT (STRING, NCOPIES)重复串联。186、SCAN (STRING, SET [, BACK])它返回属于SET的STRING最左边的索引最右边如果BACK是.TRUE。如果没有则返回0。187、TRIM (STRING)删除尾随空白字符。188、VERIFY (STRING, SET [, BACK])验证字符串中的字符集。189、KIND (X)它返回kind类型参数值。190、SELECTED_INT_KIND (R)它返回指定指数范围的类型参数类型。191、SELECTED_REAL_KIND ([P, R])实物类型参数值给定精度和范围。192、LOGICAL (L [, KIND])在具有不同种类类型参数的逻辑类型的对象之间转换。193、precision(a)返回a变量的小数点精度。194、range(a)返回变量a的指数的小数范围。195、bit_size(i)i占了多少位196、selected_real_kindp10,r99返回精度为10位小数所需的种类值范围至少为10-99到10 99。——谙弆悕博士Ailan Anjuxi
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2599052.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!