zoukankan      html  css  js  c++  java
  • 第一周—Fortran语言学习

    使用教材:Fortran95程序设计【彭国伦】

    第二章 编译器的使用

    编译结果的好坏

    1、翻译正确
    2、执行文件的运行效率
    3、翻译出来的执行码的长短
    4、编译过程花费的时间
    5、编译器提供Debug工具的完整度

    Visual Fortran的使用

    第三章 Fortran程序设计基础

    字符集

    不区分大小写

    书面格式

    Fixed Format(固定格式)

    配合穿孔卡片输入程序发明的格式
    被淘汰

    Free Format(自由格式)

    1、!后的文本是注释
    2、每行可以编写132个字符
    3、行号在每行最前面
    4、&行和行连接
    5、空格无意义

    数据类型

    数学表达式

    ** 乘幂

    第四章 输入输出及声明

    program main
    ...
    stop !可以省略
    end
    

    write 和 print

    尽量使用write

    write(*,*)"hello","!"
    write(UNIT=*,FMT=*)"hello"
    write(UNIT=5,FMT=*)"hello"
    

    Fortran77只能用单引号
    Fortran90支持单和双

    声明

    整数:

    integer(kind=2/4) a,b,c
    未声明长度默认长
    向下取整
    integer :: a

    浮点数

    real(kind=4/8) a,b,c
    real(kibd=4) :: a,b

    write(,) "sin(",a,")=",sin(a)

    复数

    complex(kind=4/8) a,b,c
    a=(x,y) !表示 a=3.2+3.5i
    支持直接的复数+-*/

    字符及字符串

    character(len=10) a,b,c
    a(6) = "you" !设置第6个字符之后的字符串
    b(1:2) = "we" !最前面两个字符变we
    add=first//second

    Fortran 中有关字符串运行的函数:

    CHAR(num)  !num在计算机所使用的字符表中所代表的字符
    ICHAR(char)  !返回值是整型,char字符在计算机所使用的字符表中所代表的编号
    LEN(string)  !声明长度
    LEN_TRIM(string)  !实际长度
    INDEX(string,key)  !key在string中第一次出现的位置
    TREM(string)  !返回清除尾端空格后的字符串
    
    !更多见附录A
    
    

    逻辑变量

    logical(kind=2/4) a,b
    a=.true.
    b=.false.
    用 write 函数只会显示 T or F

    输入命令(READ)

    read(*,*) a !在输入字符时可能因为空格出错
    read(unit=5,fmt=*) a !最严谨
    read(*,*) a,b,c !可输入a,b,c or a b c
    

    格式化输入输出(FORMAT)

    没怎么看懂的格式命令参考表....

    看来上面这些并不重要....
    常用的几个格式:"I、F、E、A、X"
    好了下面来一一学习一下
    ({}和[]里的内容可以省略

    Iw[.m]

    Iw[.m]
    以w个字符的宽度来输出整数,至少输出m个数字
    如果不足会输出*
    
    write(*,"(I5.3)") 10
      010 !前面有两个空格
    
    

    Fw.d

    Fw.d
    以w个字符文本宽度来输出浮点数,小数部分d
    不足一样是*
    write(*,"(F9.3)")123.45
       123.450
    
    

    Ew.d[Ee]

    Ew.d[Ee]
    用科学计数法,以w个字符宽度来输出浮点数,小数部分占d个字符宽,字数部分最少输出e个数字
    
    write(*,"(E9.2E3)") 12.34
       0.12E002
    

    Dw.d

    Dw.d
    同Ew.d
    代表指数的字母由E换成D
    

    Aw

    Aw
    以w宽输出字符串
    write(*,"(A10)")"Hello"
         Hello
         
    不足超过部分会被省略
    

    Lw

    Lw
    w个字符输出 T or F 的真假值
    write(*,"(L4)") .true.
       T !输出3个空格和一个T
    

    Gw.d[Ee]

    Gw.d[Ee]
    G可以用来输出所有类型的数据,固定使用w个字符宽来输出,d不一定会使用但是不能省略
    

    /

    /
    write(*,*(I3//I3)) 10,10
     10
     
     
     10 !中间有两行空格是从“/"得到的
    

    Tc

    Tc
    把输出位置移动到本行的第c个字节
    

    声明的其他事项

    IMPLICIT命令

    开头字母决定变量类型

    implicit integer(A-F,I,K)
    implicit none !关闭,都要先声明
    
    放在PROGRAM的下一行,不能放在其他位置
    

    常数的声明方法(PARAMETER)

    parameter(pi=3,14159)
    

    设置变量的初值

    integer :: a = 1
    

    等价声明(EQUIVALENCE)

    equivaluence(a,b) !声明a、b这两个变量用同一块内存
    

    1、节省内存
    2、精简代码

    声明在程序中的结构

    混合运算

    1、

    2、

    3、

    Fortran 90 的自定义数据类型

    type :: person
      character(len=30) :: name
      integer :: age
      ...
    end type person
    
    type(person) :: a
    
    write (*,*) "NEME:"
    read(*,*) a%name
    
    

    KIND 的使用

    SELECTED_INT_KIND(n)   !返回如果想要记录N位整数时,所要声明的kind值。 
                           !返回-1时表示无法提供
    SELECTED_READ_KIND(n,e)  !记录具有n位有效数,指数达到e位的浮点数需要的kind值
                             !返回-1 有效位无法满足,-2指数范围无法满足,-3均无法满足
    
  • 相关阅读:
    【VUE】数据库动态渲染标签,并且动态绑定事件与激活图标
    Linux shell select
    ceph介绍和安装
    C# 保存网络图片至本地项目中
    CS229 斯坦福大学机器学习复习材料(数学基础)
    SPRING.NET FRAMEWORK 3.0 GA啦
    U盘装机神器
    一行css让网页风格变成暗黑模式
    vue3 自学(一)基础知识学习和搭建一个脚手架
    windows使用nvm管理node不同版本
  • 原文地址:https://www.cnblogs.com/Olivia1011/p/7787639.html
Copyright © 2011-2022 走看看