更新时间:2020/3/1
文章目录
PART I 一些细节及快捷使用
!EASY USING //字符型数组使用: 1.字符运算符只有一个,就是字符连接符'//'其作用是将两个字符型数据连接起来, 成为一个字符型数据。例如:'HE'//'LLO!'的值为 'HELLO!' 。 2.用于字符处理的内在函数 1)LEN(String) //返回变量的内存长度 2)LEN_TRIM(String) //返回变量的实际已利用的长度(除去尾部空格) 3)TRIM(String) //去除字符串尾部空格,返回处理过的字符串 4)LGE(String1, String2) //字符串比较函数, 若String1≥ String2,其函数结果值为“真”,否则为 “假”。 5)INDEX(String1, String2) //计算子串位置函数,若String2是 String1的子串,其函数值是一个正整数 ,该数表示String2在String1中最左边的子串的起始位置;若String2不是 String1的子串,其函数值为0。 例如, INDEX(‘fortran’,’an’)的值为6。 1、每行可以编写132个字符;一行程序代码的最后如果是符号“&”,代表下一行程序会与这一行链接。如果一行程序代码的开头是符号“&”,代表它会和上一行程序连接 2、fortran90不区分大小写,函数或变量命名时,前缀必须是字母!! 3、数据类型 integer(kind=?) -整型 real(kind=?) -实型 缺省4byte complex(kind=?) -复数 缺省8byte character(kind=?)-字符 logical(kind=?) -逻辑型 byte -1个字节的整型 double precision -双精度实型 Type(??) -派生类型 4、类型说明语句最优先, IMPLICIT 语句次之,“I-N规则”的隐含约定级别最低 5、KIND(X) -返回变元x的种别参数值,即x所占的字节数 6、数组不给下界,默认从1开始,默认按列存储,默认初值都为0 7、整型(integer)、实型(real)、逻辑型(logical)默认是4 个字节3、以i,j,k,l,m,n开头的变量默认情况下都是整型,其他为实型(IN规则)除非在开头加: IMPLICIT NONE 8、可以用 IMPLICIT 语句将某一字母开头的全部变量指定为所需的类型 IMPLICIT INTERGER(A,C,T-V) IMPLICIT REAL (I,J) 9、fortran 中只有圆括号,一次输入输出为一行 10、GOTO 语句——提供程序员可以任意跳转到所赋值“行代码” 的那一行程序位置来执行程序的能力,但不能跳进循环体内部 11、EXIT语句的作用是停止循环,将控制转移到当前循环之外。 12、CYCLE语句作用是在循环执行到该语句时,跳过循环体在它后面的那些语句, 再从循环体的第一条语句开始执行。只能引导循环的执行方向,并不能终止循环的执行。 13、 character(len=1),dimension(1:7):: a!right character(len=1),dimension(1:7) a !wrong 14、最好不要用中文文件名,文件用单引号,单斜杠,和matlab 一样 rewind(10)!把文件读写位置移回文件最前面 trim 删除字符串后面多余的空格 15、定义常量 integer,parameter (m=20) double precision pi=dtan(1.d0)*4.d0 !圆周率pi 16、字符串实际利用空间后都是被' '所占用的 ftext(:len_trim(ftext))!截取尾部的空格 17、编写程序时要注意避免两个大数相乘,大数除以小数。 18、不要以浮点数作为循环变量 19、处理浮点数后加'd0'将后面小数截尾 !eg real*8 ::a=0.1 print *,a*10 1.0000000 real*8 ::a=0.1d0 print *,a*10 1.00000000000000
PART II 一些知识点
1. 标准 FORTRAN 90/95 数据类型
2.属性说明关键字
3.基本函数
!1、常用函数 r = real( x ) //!把x 转换成real 类型 r = real( x ,kind=8) //!把x 转换成kind=8 的real类型(双精度) r = float( x ) / r = dble( x ) r = int( x ) //!把x 转换成integer 类型 r = int( x , kind=8) //!把x 转换成kind=8 的integer类型(长整型) r = nint( x ) //!四舍五入并转换 c = cmplx( a , b ) //!把a 和b 转换为复数,分别为实部/虚部 r = cmplx(a,b,kind=8) c = (1.0,2.0)//!如果a b 都是常数,也可写为 内部文件转换: write( 字符串, * ) //!其他数值其他类型转字符串 read( 字符串, * ) //!其他数值字符串转其他类型 write( str , * ) 9.0 !// str = " 9.000000" read( str , * ) i !// i = 9.0 一般数值函数: ri = abs( ri ) //!绝对值函数 ri = max( ri1 , ri2 , ri3 ..... ) //!最大值函数 ri = min( ri1 , ri2 , ri3 ..... ) //!最小值函数 ri = mod( a , b ) //!取余数函数 其他数学函数: r = log( r ) //!自然对数函数 r = log10( r ) //!对数10为底函数(换底公式) r = exp( r ) //!自然对数指数函数 向量矩阵数学函数: b = transpose( a ) //!把m*n矩阵转置为n*m矩阵 c = matmul( a , b ) //!m*n矩阵与n*l矩阵相乘,得m*l矩阵 时间相关: i = Date_And_Time([date] [,time] [,zone] [,values]) call CPU_Time(time) call System_Clock([count] [, count_rate] [, count_max]) //第一个函数用来获得系统的日期和时间(及时区)精度不高 //第二个函数用来获取当前CPU的时钟,常可以用来检查程序段的执行时间。 //第三个函数用来获取系统时钟(基于1970年),也可用来检查程序段的执行时间。 //后两个函数用来检查执行时间,需要执行前/执行后分别调用依次,两次相减。 //CPU_Time 的特点是,多线程会多次计算,其他进程占用的CPU不计入。 //System_Clock 的特点是,计算物理时间消耗。
4.关系表达式
5.逻辑运算符
6.运算符优先级
PART III 使用示例
1.index 的使用
!1、分离以空格为分割符的字符串_ index 的使用 subroutine split_space(str,a,n) !a is a real arry,n is the number,str(1)\=' ' character*80 str integer n,i,j real::a(n) i=1;j=index(str,' ') do while(j>1) read(str(:j-1),*)a(i);i=i+1 str=str(j+1:) j=index(str,' ') end do read(str(:len_trim(str)),*) a(i) end
2.统计’x’在str 中出现的次数及其每次的位置
!2、统计'x'在str 中出现的次数及其每次的位置 subroutine count_a(str,a,n,loc) !n is the number of .. !loc is the location of .. implicit none character *200 str character a integer i,j,n,loc(200) n=0 j=len_trim(str) do i=1,j if(str(i:i).eq.a)then!you can change 'x' here n=n+1 loc(n)=i endif enddo end
3.打开文件
!3、How to open a file? program hello implicit none character *79 filename,ftext!the longest number of character is 80 for fortran output integer :: fid=10 logical :: alive !check the file exists? filename='D:\复习资料\大3上\3_Fortran\1 编程\data\grades.txt' inquire(file=filename,exist=alive) if(.not.alive)then !if the file doesn't exist, then exit write(*,*)trim(filename)," doesn't exist." stop end if open(unit=fid,file=filename,status="old") do read(fid,'(a)',end=101)ftext print *, ftext enddo 101 close(fid) pause end
4.函数和子程序的使用
!4、函数和子程序的使用: 以子程序的形式编程实现两个3×3矩阵的求和。 //!调用子例子程序 program matrix_add implicit none real*8 a(3,3),b(3,3),c(3,3) integer i,j write(*,*) '输入矩阵a的元素:' read(*,*) ((a(i,j),i=1,3),j=1,3) write(*,'(3f10.3/3f10.3/3f10.3)') a write(*,*) '输入矩阵b的元素:' read(*,*) ((b(i,j),i=1,3),j=1,3) write(*,'(3f10.3/3f10.3/3f10.3)') b call matadd(a,b,c) write(*,*) '矩阵a、b之和为:' write(*,'(3f10.3/3f10.3/3f10.3)') c pause end program subroutine matadd(a,b,c) implicit none real*8 a(3,3),b(3,3),c(3,3) integer i,j do i=1,3 do j=1,3 c(i,j)=a(i,j)+b(i,j) enddo enddo end >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> //!调用函数子函数(使用接口界面块) program matrix_add implicit none interface !接口界面块 function matadd(a1,b1) real*8 a1(3,3),b1(3,3),matadd(3,3) end function end interface real*8 a(3,3),b(3,3),c(3,3) integer i,j write(*,*) '输入矩阵a的元素:' read(*,*) ((a(i,j),i=1,3),j=1,3) write(*,'(3f10.3/3f10.3/3f10.3)') a write(*,*) '输入矩阵b的元素:' read(*,*) ((b(i,j),i=1,3),j=1,3) write(*,'(3f10.3/3f10.3/3f10.3)') b c=matadd(a,b) write(*,*) '矩阵a、b之和为:' write(*,'(3f10.3/3f10.3/3f10.3)') c pause end program function matadd(a,b) implicit none real*8 a(3,3),b(3,3),matadd(3,3) integer i,j do i=1,3 do j=1,3 matadd(i,j)=a(i,j)+b(i,j) enddo enddo end =================================================== !运行示例 输入矩阵a的元素: 1 2 3 4 5 6 7 8 9 1.000 2.000 3.000 4.000 5.000 6.000 7.000 8.000 9.000 输入矩阵b的元素: 1 2 3 4 5 6 7 8 9 1.000 2.000 3.000 4.000 5.000 6.000 7.000 8.000 9.000 矩阵a、b之和为: 2.000 4.000 6.000 8.000 10.000 12.000 14.000 16.000 18.000
5.定义动态数组
!5、定义动态数组 program Hello implicit none integer ::students,i integer,allocatable::a(:)!声明一个动态一维数组 read(*,*)students allocate(a(students)) !配置内存空间 do i=1,students read(*,*) a(i) end do print *,a deallocate(a) pause end ========================================================== 5 1 2 4 5 6 7!回车 1 2 4 5 7
PART IV 常用功能实现
1.读取星历文件
星历问件格式数据类型有
X //空格 A //字符型 I //整型 F //单精度浮点型 D //双精度浮点型 E //科学计数法,浮点数
PART V 一些有用的博客
1、win10 VS2010安装 fortran插件:
2、格式化输出
参考/引用博客
[1] Coco_wjy-CSDN博主:https://blog.csdn.net/Coco_wjy/article/details/?utm_source=app [2] 小毛95-CSDN博主:https://blog.csdn.net/weixin_/article/details/ [3] 流浪猪头拯救地球-CSDN博主:https://blog.csdn.net/Gou_Hailong/article/details/
到此这篇fortran程序编写_大一python基础编程题的文章就介绍到这了,更多相关内容请继续浏览下面的相关推荐文章,希望大家都能在编程的领域有一番成就!
版权声明:
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若内容造成侵权、违法违规、事实不符,请将相关资料发送至xkadmin@xkablog.com进行投诉反馈,一经查实,立即处理!
转载请注明出处,原文链接:https://www.xkablog.com/fortranbc/2263.html