Fortran學習筆記4

邏輯運算

if命令需要和邏輯運算表達式搭配才能起到很好的效果。下面分別列出Fortran90和Fortran77的邏輯運算符。

Fortran90 Fortran77 符號描述
== .EQ. 判斷兩個表達式是否相等
/= .NE. 判斷兩個表達式是否不相等
> .GT. 判斷是否大于
>= .GE. 判斷是否大于或等于
< .LT. 判斷是否小于
<= .LE. 判斷是否小于或等于

集合運算符

符號 符號說明
.AND. 交集,兩邊表達式都為真時為真(二元運算符)
.OR. 并集,有一個表達式為假則為假(二元運算符)
.NOT. 取非,真值于后面表達式相反(單目運算符)
.EQV. 相等,兩邊邏輯運算結(jié)果相同時為真(二元運算符)
.NEQV. 不相等,兩邊邏輯運算結(jié)果不同時為真(二元運算符)

邏輯運算符的優(yōu)先級高于集合運算符。


循環(huán)

循環(huán)的主要功能是精簡代碼?。?!有兩種格式,一種是固定循環(huán)n次,另一種是滿足條件時循環(huán)。主要有兩條語句,Do語句和Do-While語句。

請注意,循環(huán)并不一定要用循環(huán)語句才能實現(xiàn)。循環(huán)是一種將線狀程序濃縮塊狀化的思想。是一種編程思想?。。?!不是語句或者其他。

Do語句

語法如下:

do counter=initial,endnumber,increment
    ...       !  counter計數(shù)器,從初始值開始,每循環(huán)一次加增量大小.
    ...       !  endnumber計數(shù)器的終止,當計數(shù)器大于終止數(shù)時,循環(huán)停止
    ...       ! increment  增量數(shù),每次循環(huán),給計數(shù)器加一個增量數(shù)
end do

在Fortran77中,會用行號來封裝循環(huán)。

do   100   counter=initial,endnumber,increment
    ...       !  counter計數(shù)器,從初始值開始,每循環(huán)一次加增量大小.
    ...       !  endnumber計數(shù)器的終止,當計數(shù)器大于終止數(shù)時,循環(huán)停止
    ...       ! increment  增量數(shù),每次循環(huán),給計數(shù)器加一個增量數(shù)
100    continue

do循環(huán)可以嵌套。

do i=1,n
    do j=1,n
        do k=1,n
            ...
        end do
    end do
end do

Do-While循環(huán)

語法如下:

do while(rep)
    ......  !   檔rep為真時,一直執(zhí)行循環(huán)體。
    ......
end do

循環(huán)控制

循環(huán)控制語句主要有CYCLE和EXIT。cycle命令可以略過循環(huán)程序模塊中,cycle命令后面的所有程序代碼,直接跳到循環(huán)的開頭來進行下一次循環(huán)。exit的功能是直接跳出當前循環(huán),不論是do循環(huán)還是do-while循環(huán)。

循環(huán)還可以取“名字”,這個用途是可以在編寫循環(huán)時能明白的知道END DO這個描述的位置是否正確,尤其是在多層循環(huán)中,署名的循環(huán)也可以配合CYCLE、EXIT來使用。


循環(huán)應用實例

下面給出幾個循環(huán)的簡單實例:

實例1:計算Fibonacci sequences的前n項。)

program main
    implicit none 
    !  input  Fibonacci sequences

    real*8::f(100)
    integer::i,m
    print*,"Please input the number you love"
    read(*,*)m
    i=1
    ! 數(shù)組置零,利用EXIT跳出循環(huán)
   do while ( .true. )

    f(i)=0
    i=i+1
    if(i>100) exit
   end do

    f(1)=0
    f(2)=1
   xunhuan: Do i=3,m,1

        f(i)=f(i-1)+f(i-2)

    End Do xunhuan

    write(*,100)f(1:m)
100   format(T5,'The Fibonacci sequence are : ',/,5(F15.2))

end program

實例2:以循環(huán)來計算$ \frac{1}{1!}+\frac{1}{2!}+\frac{1}{3!}+\frac{1}{4!}+\cdots+\frac{1}{10!} $

program main
    implicit none
    real::sum=0
    integer::i,j
    real*8::temp=1

    outer: do i=1,10
         inner:do j=1,i
                 temp=temp*j
          end do  inner
         sum=sum+1.0/temp
         temp=1
    end do outer
    write(*,"(F6.3)")sum
end program

實例3:做一個加密、解密程序。

該程序摘自彭國倫《Fortran95程序設計》一書(p113,程序EX0612),原程序在排版時出現(xiàn)了書寫錯誤。該程序作了修改。

program main
    !  定義變量
    implicit none
    integer i
    integer strlen
    integer,parameter::key=2
    character(len=60)::string
    !  加密過程
    write(*,*)"string:"
    read(*,"(A60)") string
    strlen=len(trim(string)) ! 取得字符串長度

    do i=1,strlen
        string(i:i)=char(ichar(string(i:i))+key)
    end do

    write(*,"('encoded:',A60)")string
    !  解密過程
    do i=1,strlen
        string(i:i)=char(ichar(string(i:i))-key)
    end do
    write(*,"('string: ',A60)")string

    stop
end program
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容