Fortran 學習手記 陣列篇

2021-08-18 12:49:57 字數 1698 閱讀 4944

part i: 陣列定義

1. fortran最大支援7維的陣列;

2. 定義陣列大小的引數可以是數字或者常數(parameter),但不可以是變數;

3. 定義陣列的幾種形式:

(1) integer a(10,10)               !最簡單的方法

(2) integer, dimension(10,10):: a  ! 另外一種做法

(3) integer a                      ! 先宣告a是整型

dimension a(10,10)             ! 然後在宣告是大小為10的陣列

4. fortran陣列與c 語言陣列存放順序的差異(以 a (3,2)為例):

c語言的二維陣列(先行後列):  a(1,1) a(1,2) a(2,1) a(2,2) a(3,1) a(3,2)

fortran的二維陣列(先列後行):a(1,1) a(2,1) a(3,1) a(1,2) a(2,2) a(3,2)

5. c語言中的陣列下標是從0開始,而fortran語言的陣列下標可以自己定義,比如:

integer a(-3:3) !定義了乙個包括7個整數的一維陣列,下標從-3開始,至3結束

integer a(5,-1:3) ! 定義了乙個5行5列的二維陣列,第一維的下標自1至5,第二維的下標自-1至3

part ii: 賦初值

1. data語句賦初值

integer :: a(5)

data a /1,2,3,4,5/ 

或者 data a/5*3/ (表示前5個元素均設為3)

或者 integer i

data (a(i), i=2,4) /1,3,6/ (表示a(2)=1,a(3)=3,a(4)=6)

在二維陣列中引用隱迴圈的格式如下:

integer :: a(10,10)

integer :: i,j

data ((a(i,j),i=1,2),j=1,2) /1,2,3,4/

2. 採用隱式迴圈,無data語句的賦值

integer :: a(5)=(/(i,i=1,5)/)

注意,省略data直接把初值寫在宣告後面時,不能像使用data時一樣,可以用隱含式迴圈對陣列中的部分元素設定初值,而是每個元素都必須給定初值,即

integer :: a(5)=(/(2,i=2,4)/) 就是錯的,正確的定義應該為:integer :: a(5)=(/1,(2,i=2,4),5/)

3. 對整個陣列的賦值

integer :: a(5)

a=3   ! 陣列中的每個元素都賦值為3

a=(/1,2,2,2,5/) ! a(1)到a(5)分別賦值為1,2,2,2,5;注意,等號右邊提供的數字必須跟陣列a的大小相等

a=b   ! 用相同大小的陣列b為a提供初值

a=b+c  ! 用兩個相同大小的陣列b和c之和為a提供初值

a=b>c  ! a, b, c為三個相同大小的陣列,不過陣列a為邏輯型陣列,陣列b和c為相同型別的數值變數,其結果就是,如果相同位置上的b的元素大於c的元素,那麼相同位置上a就為true,否則就是false

4. 對部分陣列的賦值

a(3:5)=5  ! 將a(3),a(4),a(5)均賦值為5,其餘不變

a(3:)=5   ! 將a(3)以後的元素均賦值為5,此前的不變

a(3:5)=(/1,2,3/), a(:)=b(:,2)

es6隨手記 陣列篇

1.rest引數 形式為 變數名 另外rest引數只能作為引數的最後乙個出現,不然報錯。function a a,b a 1,2,3,4,5,6 2.擴充套件運算子.這種情況為rest引數的逆運算,將引數轉成用逗號隔開的引數序列。後面也可以跟表示式 let a 1,2,3,4,5 console.l...

Scala學習筆記 陣列

對於scala來說,陣列是一塊相當總要的內容,因此掌握是十分重要的。陣列分為兩種 定長陣列 array 變長陣列 arraybuffer array 10個整數的陣列,所有元素的初始化為0 val nums new arraystring 長度為2的array string 型別是推斷出來的 注 已...

JS學習筆記 陣列

ecmas cript 中沒有提供類和介面等的定義,但它卻是一門物件導向的語言,由於它能夠通過其它 方式實現類似高階語言的物件導向功能,這些內容將在後面的文章中進行一步步的總結。此篇僅對 js中物件作簡要說明,重點彙總一些類似於物件的陣列的經常用法。物件建立 上篇提到建立物件的兩種方式 使用new ...