日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 综合教程 >内容正文

综合教程

fortran教程2:数据类型

發(fā)布時間:2023/12/1 综合教程 22 生活家
生活随笔 收集整理的這篇文章主要介紹了 fortran教程2:数据类型 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

文章目錄

    • 數(shù)據(jù)類型
    • implicit函數(shù)
    • 數(shù)據(jù)類型轉(zhuǎn)換

上節(jié)內(nèi)容:
fortran安裝和編譯

數(shù)據(jù)類型

fortran共有5中數(shù)據(jù)類型

整數(shù) 實(shí)數(shù) 復(fù)數(shù) 邏輯 字符
integer real complex logical character

kind參數(shù),可以指定變量所占位數(shù),例如integer(kind=4)表示占據(jù)4byte的整型,也就是32位整型。

len參數(shù),可以聲明字符個數(shù),例如character(len=80)表示長度為80的字符串。

在聲明變量時,數(shù)據(jù)類型和變量名之間用::隔開,正如上節(jié)示例程序中的real :: a, b, res

fortran除了變量之外,還有常量,例如logical類型的兩個值.true..false.就是兩個常量。除此之外,若想創(chuàng)建常量,需要用到parameter命令,例如

real pi
parameter(pi=3.1415926535)

也可以在聲明時直接賦值

real, parameter :: pi = 3.1415926535

implicit函數(shù)

通過implicit,可以將變量的首字母和數(shù)據(jù)類型關(guān)聯(lián)起來,例如implicit integer(A-F,I,K),可以指定以A-F或者I, K開頭的變量為整型,當(dāng)然fortran是不分大小寫的。

! impliTest.f95
program addNumimplicit complex(A-C)implicit real(D-G)implicit integer(i,j,k)a = 1d = 1i = 1print *, a, d, iend program addNum        

編譯之后得到結(jié)果

>gfortran impliTest.f95
1>a.exe 
(1.00000000,0.00000000)   1.00000000     1

fortran對變量首字母是有默認(rèn)要求的,即不加任何implicit的情況下,變量名以i, j, k, l, m, n開頭即為整型,否則位浮點(diǎn)型,此即fortran77的I-N規(guī)則。驚聞此訊,那不得趕緊嘗鮮一下77年的規(guī)則?

但剛剛在試復(fù)數(shù)時發(fā)現(xiàn)了一個問題,盡管復(fù)數(shù)是fortran的內(nèi)置類型,但要怎樣才能創(chuàng)建一個復(fù)數(shù)呢?

這就是接下來要說的,數(shù)據(jù)類型轉(zhuǎn)換。

數(shù)據(jù)類型轉(zhuǎn)換

首先要解決的問題是創(chuàng)建復(fù)數(shù)的問題,這個很容易,只需cmplx(x, [y, kind]),可以將xy轉(zhuǎn)換為x+iuy默認(rèn)為0。

其他的數(shù)據(jù)類型轉(zhuǎn)換主要涉及到整型和實(shí)型,由整數(shù)變成實(shí)數(shù)非常容易,只需考慮轉(zhuǎn)換的位數(shù)問題,dble將整數(shù)轉(zhuǎn)換為雙精度浮點(diǎn)數(shù);real(a [,kind])函數(shù)可將a轉(zhuǎn)為kind位的實(shí)數(shù)。

反之則稍微復(fù)雜,由于涉及到舍入問題,故有四種轉(zhuǎn)換函數(shù)

函數(shù) 說明 函數(shù) 說明
int 取a的整數(shù)部分 nint 四舍五入
ceiling 向上取整 floor 向下取整

有兩個函數(shù)也有取整功能,但不改變數(shù)據(jù)類型,aintanint的功能與int, nint相同,但返回值是實(shí)數(shù)。

字符雖然看上去和數(shù)字沒什么關(guān)系,但其編碼過程仍然需要與數(shù)字進(jìn)行意義對應(yīng),fortran中提供了ASCII碼的轉(zhuǎn)換函數(shù)

  • ACHAR(n) 將ASCII轉(zhuǎn)為字符,n=0,1,?,127n=0,1,\cdots,127n=0,1,?,127
  • CHAR(n) 將ASCII轉(zhuǎn)為字符,n=0,1,?,255n=0,1,\cdots,255n=0,1,?,255
  • IACHAR(c) 將字符c轉(zhuǎn)為ASCII,范圍是0,1,?,1270,1,\cdots,1270,1,?,127
  • ICHAR(c) 將字符c轉(zhuǎn)為ASCII,范圍是0,1,?,2550,1,\cdots,2550,1,?,255

指針

fortran中,指針需要用關(guān)鍵字pointer來聲明,通過函數(shù)allocate來開辟指針的內(nèi)存,具體示例如下

program ptTest
implicit noneinteger, pointer :: p1allocate(p1)p1 = 1print *, p1p1 = p1 + 4print *, p1end program ptTest

由于指針只有在面對復(fù)雜的數(shù)據(jù)結(jié)構(gòu)時,才會綻放威力,所以這里就不細(xì)說了。

總結(jié)

以上是生活随笔為你收集整理的fortran教程2:数据类型的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。