Fortan的一些笔记...

牛蛙牛蛙

 

Foratan大致分为3个语句: 结构语句,声明语句,执行语句

例: subroutine Fcode_Test (a,x)

    use mymoule                                           -------------这里应该是调用一个模块吧

    Implict  None                                           ------------这里是用于取消IN规则,在程序最开始就定义完成变量类型,虽然有点麻烦----------毕竟Fortan也算是强变量类型语言。 

    Real  ,  araameter  ::  PI =3.1415           -------------这里就是声明语句 

    Real  ,  Intent(IN)    ::  a

    Real  ,  Intent(OUT)    ::  x

    Integer  ::  v  =  2  ,   N  =  30  ,    i         

    x  =  0.0                                                      //-------

    Do  i = 1  ,  n

      x = x+1       

    End DO                                                     //---------  到这里应该是执行语句

  End   subroutine Fcode_Test                        -------------------表明结束这个语句  类似于C语言中子函数       

 

变量类型

interge(整型)   integer(kind=??)  ::  

character(字符型)   character(kind=??,len=??)   ::  

type(派生)   type(??)  ::

real(实型/浮点型)  Real(kind=??)  ::   

complex(复数型)       complex(kind=??)  :: 

logical(布尔型)          logical(kind=??)  ::

当然是整型变量用的最多

对整数(int)来说,kind会影响表达的最大范围                --------------------------  对于大多数编译器来说,kind默认为4

字符型变量kind一般为1

数据除了类型之外,还有一定的属性,通常属性用类型之后的形容词进行表示。

 

变脸声明的步骤:

类型(属性),形容词,形容词,.......   ::  变量名(数组外形)  =  赋值,变量名(数组外形)= 赋值。  -------------------------这里的形容词可以有多个或者一个,双冒号表示形容词的结束,在一个变量声明完成后,可以使用逗号隔开,对第二个变量进行声明。

一些例子:

Real(kind=8) , parameter  ,  private   ::  Var = 20.0   -------------这里就是一个对实型变量Var的赋值,且初值赋值为20

 

字符串于整数之间相互转换   read(字符串*)  字符串变为数字   write(字符串*)  数字变成字符串

字符允许使用子字符串表示字符串的一部分

例子  character(kind=1,len=12)  ::  c  = "www.?????.com"

有 c (5:9)  =  “xiaohai”   则此时C变成www.xiaohai.com

c(:3)  表示前3位

c(10:) 表示从第十个开始

 

语法中,也有很多内容本身就是字符串,可以实现文件的批量处理

例:Integer :: i                                                //这里表明了定义一个整数的变量I 

  Character(kind=1,len=12)  ::  cfile           //这里表明了是一个12长度的字符串是cfile  字符串默认kind值是1

  Do i = 1 , 10                                            //这里表明是i从1到10 的一个循环   类似于C语言中的for循环

    write(cfile,  *)   i                             //write(_  ,*)A    表示把A的变量写入_中

    Open(10+i  ,  File = trim(cfile)//".txt" )  //这个trim表示换行 因为I是一个由0到10的数  由于10之前的数字计算机本身可能会占用,所以这里一般是从11开始,这条语句实现了从 1.txt,2.txt 到10.txt 文件的打开

  End do                                                   //结束循环 没啥好说的

 

 

Fortan的一些流程控制  ---------------------  主要介绍IF ,DO, 及 Select选择

1,条件判断---IF语句

常见的IF判断语句-------------    IF(Expression)  Then                 还有一种较为常见   IF(Expression)  

                       .........                                                                                    .............

                    ...........

              END IF

两者区别就是前者内部可以包含多条执行语句,后者只能执行一条语句  灵活运用

2,稍微复杂一点的IF判断则有            //类似于C语言的if else if ....else   相比于if else 执行效率更快 没什么好说的

IF(CconditionA)  THEN

.....

ELSE IF(ConditionB)   THEN

....

ELSE IF (ConditionC)  THEN

......

ELSE                                               //逻辑较为复杂时,要写ELSE 防止程序的跳出以及考虑的不周到情况的出现

.......

END IF                                             //注意定义函数的部分只能有一个  IF  END IF   标志着开始与结束

3,值得注意的是,IF结构中的逻辑表达式必须是一个单值,如果是数组的判断,则需要去使用all(),any(),的逻辑变换

4,Fortan中的IF判断的署名

  直接看例子吧: -------------------------------我起了,一枪秒了,有什么好说的啊

    inner  :  IF(ConditionA)     THEN                                                                      当然还有另一种署名方式   inner  :IF(ConditionA)     THEN            这种用的比价少,还是推荐前面的,只在开始和结尾加上署名即可

          ........                                                                                                    ........

        ELSE IF(ConditionB)  THEN                                       ELSE IF(ConditionB)  THEN  inner

          .......                                                .......

        ELSE IF(ConditionC)  THEN                                    ELSE  inner

         ......                                                   .......

        ELSE                                               END IF    inner            

           .......

        END IF    inner                          //这样就完成了IF语句的署名,个人建议还是在较长的IF判断语句中属名,方便调用以及二次开发人员的可读性

 

SELECT CASE语法这里不做过多介绍

 

Fortan中的循环

最常见的的循环就是DO ,            //类似于C语言中的FOR循环

  DO循环例子:

    DO i = 1,  100                 //这里表明i从1开始,一直到100结束 完成循环  就相当于一个子函数

    ........

    END DO 

  DO循环实例 :

    sum=0 

    DO i = 1  , 100  ,  2         //这里完成了sum由0到1,3,5即计算了所有奇数的和,默认值是1,也可以自己指定,这里指定为2

      sum = sum +i

    END DO 

另一种常见循环为 DO WHILE  满足条件则一直在循环中不会跳出

Fortan中含有循环控制语句,其中, CYCLE则不执行CYCLE之后的语句,直接开始下一次循环。EXIT则是不执行EXIT后的语句,而跳出本循环函数   --------------------具体函数具体分析吧

GOTO语句一般不使用,太容易出错了 同C

 

数组和结构体----------------------麻了

再定义一个数据时,可以使用枚举。即在定义类型后,形容词:: 变量即可。  例  :     INTEGER :: I = 1 

数组也是一种定义类型,程序中一般和循环语句配套使用

结构体中的数据据类型可以不同,整型,浮点型等等

数组

数组可分为2类,一种是固定大小数组,一种是动态分配数组。

数组的定义:   类型,大小,属性,::名字        

数组定义具体例子 :   INTEGER , DIMENSION(100)  ::  IARR    ----------------------  表明了是一个整型,大小为100的数组,且数组名字为IARR

数组的使用: 整体,元素,片段,不连续段

  ARR = 1  ----------------- 表明将数组全部元素变成1

  ARR(1)=-1 ------------表明将数组第一个元素变成1

  ARR(2:4)=1 -------------表明数组第二,3,4个元素变成1

  

 

 

 

 

 

 

 

 

 

    

 

 

 

 

 

 

 

 

   

 

 

 

 

 

 

 

 

  

    

 

 

        

posted @ 2022-01-13 20:45  QianruS  阅读(161)  评论(0编辑  收藏  举报