加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

FORTRAN语言常用变量定义

(2012-11-02 14:48:28)
标签:

fortran

语言

编程

变量

教育

主程序开始:program 程序名
主程序结束:end

子程序开始:subroutine 程序名()
子程序结束:end
注:子程序可置于主程序之前或之后,一般置后
例:subroutine xuanzhuyuanfa(a,b,n)
    end
注:a,b,n的值由主程序中导入而来

外部函数开始:function 函数名()
外部函数结束:end function
注:外部函数可置于主程序之前或之后,一般置后
例: function y(x)
    real*8 y,x
    y=x**2
    end function y
注:x的值由主程序中导入而来

输入输出格式: format
例:format(5f5.2)   前面的5表示一行输出5个数字,f表示输出结果类型为实型,5.2表示输出的数字长度(包括小数点)为5位,小数点后2位
    format('a=',x)  如果输入的x的值为3.0,则输出结果为:a=3.0
    format(1x,i2,2x) 表示首先输出一个空格,再输出一个长度为2的整型数字,最后再输出两个空格

implicit none 取消定义变量时的隐式声明规则。该规则为:在程序中,凡是变量名以字母
I,J,K,L,M,N,i,j,k,l,m,n开头的变量被默认为整型变量,以其他字母开头的变量被默认为
实型变量。

parameter(变量=表达式) 例:parameter(pi=3.1415) 表示在程序中的所有pi的值都为3.1415


输入语句:read*,变量名    从键盘输入数据给该变量
          read k,变量名    以k所限定的格式从键盘输入数据给该变量,k为任意数字  例:
                 read 10, a
                 10 format(f10.6)  表示以10所限定的格式输入数据到a中
          read(*,*),变量名
           例  open (1,file='wenjian.txt')
                read(1,10),a
                10 format(f10.6)  表示将wenjian.txt中的内容以10所限定的格式输入给a
      

输出语句:print*,变量名    输出该变量中的内容
          print k,变量名    以k所限定的格式输出该变量中的内容,k为任意数字  例:
                print 20, a
                20 format(f5.3)  表示将a以20所限定的格式输出
             
          write(*,*),变量名   格式输出,
           例1  open (1,file='out.txt')
                write(1,10),a
                10 format(f10.6)  表示将a以10所限定的格式输出到名为out的文本文件中

           例2  write(*,*),a    表示输出a到界面上,没有格式限制  


常用变量的定义:

整型变量:integer(或integer*4,或integer(4))  常用
          integer*1(或integer(1)),integer*2(或integer(2)),integer*8(或integer(8))
          例: integer i,j,k    定义整型变量i,j,k
 
实型变量:real(或real*4,或real(4)) 单精度,有效位数7位
          real*8(或real(8))  双精度,有效位数15位  常用
          例: real*8 a,b,x(n),c(n,n)   定义双精度的实型变量a,b及一维数组x(n),二维数组c(n,n)
         

复型变量:complex(或complex*4,或complex(4))  单精度
          comple*8(或complex(8))   双精度   常用

字符型变量:character*k(或character(k),或character(len=k))   k表示字符串的长度
            character   定义长度为一的字符型变量

逻辑型变量:logical*4(或logical(4))  常用
            logical*1(或logical(1))
            logical*2(或logical(2))
            logical*8(或logical(8))

 

常用函数:
abs(x)  求x的绝对值
mod(x,y) 求x/y的余数
max(x1,x2,x3,...) 求x1,x2,x3,...中的最大值
min(x1,x2,x3,...) 求x1,x2,x3,...中的最小值
exp(x) 求e指数
sqrt(x) 求x的平方根,结果类型同x,x为实数
log(x) 求自然对数,结果类型同x,x为实数
log10(x) 求以10为底对数,x为实数,结果类型同x
sin(x),cos(x),tan(x) 求x的正弦,余弦,正切,x取值弧度,结果类型同x
sind(x),cosd(x),tand(x),cotan(x) 求x的正弦,余弦,正切,余切,x取值度,结果类型同x
sinh(x),cosh(x),tanh(x) 求x的双曲正弦,双曲余弦,双曲正切,结果类型同x
precision(x) 查询x的有效数字位数
len(s) 求字符串s的长度
len_trim(s) 求字符串s去掉尾部空格后的字符数

 

选择语句:
  if (条件) then
    语句
  else
    语句
  end if

  if (条件) then
    语句
  else if (条件) then
    语句
  else if (条件) then
    语句
      .
      .
      .
  else
    语句
  end if


循环语句:
  do 循环变量
    语句
  end do  

强制性终止循环过程的语句:
  exit  退出整个循环,转循环语句后的第一条语句执行,只能在do和do while循环语句内使用
  cycle 终止本次循环,回到循环语句开始(do语句)继续执行

逻辑运算符的优先级:(高-低) .not.--.and.--.or.--.xor.--.eqv.--.neqv.

 

完整的程序举例: 将区间(0,1)等分100个节点(99段),计算每个节点的值存入数组x(n)中,然后根据y=5x的法则,计算与每个节点相应的y的值存入数组y(n)中

          program main      !main为程序名
          implicit none     !取消定义变量时的隐式声明规则
          integer i,j,k,m,n   !定义整型变量i,j,k,m,n
          parameter(n=100)    !给n赋值,以下程序中出现的n的值为100
          real*8  a,b,h,x(n),f   !定义实型变量a,b,h及数组x(n),y(n)及外部函数 f
          a=0.d0            !给a赋值
          b=1.d0            !给b赋值
          h=(b-a)/(n-1)     !根据a,b的值计算h
          x(1)=a;x(n)=b     !将a,b的值分别赋给x(1),x(n)     
          do i=2,n-1
            x(i)=x(1)+(i-1)*h  !计算数组x(n)中除两端点之外的其它点的值
          end do
          do i=1,n
            y(i)=f(x(i))    ! 对应给定的一个坐标x(i),调外部函数f,计算出与该坐标相应的y(i)的值
          end do
          open(1,file='shuchu.txt')         !新建一个名为shuchu的文本文档
          do i=1,n
            write(1,10) y(i)                 !将y的值以10所规定的格式输出到名为shuchu的文本文档中
          end do
          10 format(1f10.6)                  !一行输出一个值,每个数值的总长度为10位,小数点后为6位
          close(1)               !关闭文本文档shuchu              
          end

          function f(x)   !定义外部函数y,x由主程序中导入
          implicit none
          real*8 f,x
          f=5.d0*x        !函数y=5x
          end function f

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 


 

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有