Fortran的一些语法知识

Fortran基础知识

  1. Fortran对字母大小写不敏感。
  2. 一行语句太长可以换成多行,用 & 连接。一行代码的最后是&,表示将与下一行相连;一行代码的开头是&,表示将与上一行相连;
output = input1 + input2           ! Sum the inputs
output = input1 &
       + input2                    ! Sum the inputs
output = input1
       & + input2                  ! Sum the inputs
  1. 语句标号(statement label)是Fortran语句的名字,使用它可以在程序的其它部分引用这条语句,除此之外,语句标号没有其它作用。现代Fortran程序中很少使用语句标号,若要使用,必须是唯一的。语句标号可以是1~99999间的任一一个数字。
999 output = input1 + input2        ! Sum the inputs
  1. Fortran程序分为声明部分、执行部分、终止部分。
  2. 声明部分:由不可执行语句组成,位于程序的开头,定义程序名和程序引用的数据以及变量的类型。其第一条语句是PROGRAM语句,对编译器指定程序的名字,可以是字母、数字和下划线,但第一个字符必须是字母。
  3. 终止部分:其由STOP和END PROGRAM语句组成。STOP语句告诉计算机停止运行,它可以出现在程序的任何地方,程序执行到这个命令就会中止。除非必要,不要把STOP命令使用在主程序结束之外的其他地方。因为一个程序如果有太多的终止点会容易出错。前面提到过STOP这个命令在此并不是必要的,因为主程序的程序代码执行完毕后,程序会自动终止。本程序加上STOP命令只是为了更明确表示程序到此结束而己。END PROGRAM语句告诉编译器不再编译。END是用来封装程序代码使用的,说明程序代码已经编写完毕。 FORTRAN90标准中,可以使用下列的3种方法来表示程序代码编写结束:
END                   !FORTRAN77只使用该方法
END PROGRAM
END PROGRAM main      !main指的是PROGRAM的名字
  1. 保留字要全部大写,变量名、过程名小写。


    Fortran的一些语法知识_第1张图片
    FORTRAN程序执行步骤

常数与变量

  1. 整型数据(INTEGER):仅可以存储整型数据值,不能表示数据的小数部分。
  2. 实型数据(REAL):由存储的实数和小数组成。
  3. 复数(COMPLEX):以a+bi形式表示的数值。
  4. 字符数据(CHARACTER):字符类型由字母字符串组成,一个字符常数是单引号‘’或双引号“”括住的字符串。字符串最少的字符个数是1。引号间的字符叫字符文本(character context)。
  5. 逻辑判断(LOGICAL):只能保存“是TRUE”,“否FALSE”。1表示TRUE,0表示FALSE。

基本命令

  1. WRITE:命令的作用是显示后面双引号中所包含的字符串。而WRITE(*,*)括号中的两个星号都有各自的意义,第一个星号代表输出的位置使用默认值,也就是屏幕;第二个星号则代表不特别设置输出格式。总归一句话,WRITE这个命令的最简单用法,就是在括号中挂上两个星号,再把所要输出的字符串用两个双引号引起来放在后面,例如:WRITE(*,*) "Hello World"上面的命令执行后会显示:"Hello World"这几个字。上面的写法是使用简写的方法所显示的描述,完整的写法应该像下面这样:WRITE(UNIT=*,FMT=*) "Hello World" 这种写法的程序执行结果不变,在 WRITE中加上了UNIT=*,FMT=*这两个描述,只是为了明确地表示输出位置使用默认值以及不限定输出格式。通常在程序中都会使用简写的方法,事实上,使用WRITE在屏幕上印字符串时,最严谨的方法应该像下面这样:WRITE(UNIT=6,FMT=*) "Hello World"因为屏幕的输出UNIT位置就是6,而UNIT=*时,就是指UNIT=6。关于WRITE还有两点要注意:(1)每一次执行 WRITE命令后,会自动换到下一行来准备做下一次的输出(2)因为双引号是用来“输出”字符串的,所以想要输出双引号时,要连用两个双引号。
  2. PRINT:PRINT用法与功能与WRITE大致相同,只是PRINT无括号,且只有一个星号,这一个星号定义的是输出格式,PRINT命令只作用于屏幕。PRINT *, "Hello World"
  3. 声明:当一个计算机程序需要调用内存空间时,对内存发出的“占位”指令。
  4. 关于字符串的一些操作
    CHARACTER(LEN=14) h,i
    CHARACTER(LEN=28) j
    h = "Good morning "
    i = "and good night"
    WRITE(UNIT=6,FMT=*) h
    h(6:12) = "evening"          !修改字符串第6到12的字符为引号里面的内容
    WRITE(UNIT=6,FMT=*) h
    h(12:12) = "@"               !修改字符串中第13个字符为#
    WRITE(UNIT=6,FMT=*) h
    j = h//i                     !连续两个除号将前后两个字符串相连
    WRITE(UNIT=6,FMT=*) j
program ex0413
  character(len=20) string 
  string = "Good morning."
  write(*,*) string
  string(6:) = "evening."         ! 重设设定从第6个字符之后的字符串
  write(*,*) string
end
program ex0415
  character(len=20) string
  character(len=5) substring
  string = "Have a nice day."
  substring = "nice"
  write(*,*) ichar('A')                 ! 输出字符A的ASCII码
  write(*,*) char(65)                   ! 输出ASCII码65所代表的字符,也就是A
  write(*,*) len(string)                ! 输出字符串string声明时的长度
  write(*,*) len_trim(string)           ! 输出字符串string内容的长度
  write(*,*) index(string, substring)   ! nice在Have a nice day的第8个位置
end

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

语法 描述
CHAR(num) 返回计算机所使用的字符表上, 数值 num 所代表的字符.(个人计算机使用 ASC II 宇符表 )
ICHAR(char) 返回所给入的 char 字符 在计算机所使用的 字符表中所代表的 编号,返回值是整数类型
LEN(string) 返回枪入字符串的声明长度,返回值是整数类型
LEN_TRIM(string) 返回字符串去除尾烙空格后的实际内容长度
INDEX(string,key) 所输入的 STRING 和 KEY 都是字符串。这个函数会返回KEY这个“子字符串”在“母字符串" STRING 中第一次出现的位置
TRIM(string) 返回把string字符串尾端多余空格清除过后的字符串
  1. 逻辑变量LOGICAL
program ex0416
  logical a,b
  a=.true.           !设忤为“真”值,注意true的前后荌加上两个点
  b=.false.          !设置为“假”值,注意false的前后要加上两个点
  write(*,*) a,b
end
  1. CYCLE命令跳过当前循环,进行下一次循环
  2. EXIT命令跳出循环,不再执行循环

你可能感兴趣的:(Fortran的一些语法知识)