(四)數(shù)組
1.數(shù)組的定義
有些互相關(guān)聯(lián)的數(shù)據(jù),作為單個(gè)變量處理并不方便。程序設(shè)計(jì)語言通常把這種相互關(guān) 聯(lián)的數(shù)據(jù)按一定的順序關(guān)系組成一個(gè)集合,該集合稱為數(shù)組;組成數(shù)組的基本單元稱為數(shù) 組元素,每一個(gè)數(shù)組元素對(duì)應(yīng)一個(gè)數(shù)據(jù)。
在FORTRAN中,使用數(shù)組前必須對(duì)數(shù)組進(jìn)行定義,包括對(duì)數(shù)組命名;確定數(shù)組的類型;確定數(shù)組的維數(shù)及大小;指出數(shù)組各維下標(biāo)的下限與上限。數(shù)組的命名規(guī)則與變量的命名規(guī)則相同。
確定數(shù)組類型、維數(shù)及其大小的方法有以下兩種。
(1)用類型說明語句定義數(shù)組。例如:
INTEGER X (-2:30), XYZ (1 :20, 0: 15)
定義了兩個(gè)整型數(shù)組。其中X稱為一維數(shù)組,下標(biāo)的下限與上限分別為-2與30,即這 個(gè)一維數(shù)組共有30-(-2) + 1 = 33個(gè)元素,它們分別為: X (- 2), X (-1), X (0), X (1),…, X (30); XYZ稱為二維數(shù)組,第一個(gè)下標(biāo)的下限與上限分別為1與20,第 二個(gè)下標(biāo)的下限與上限分別為0與15,即這個(gè)二維數(shù)組共有(20-1 + 1) x (15-0 + 1)=20×16=320個(gè)整型元素,它們分別為:
XYZ (1, 0), XYZ (1, 1),…, XYZ (1, 15)
XYZ ( 20, 0), XYZ ( 20, 1),…, XYZ (20, 15 )
字符型數(shù)組必須用類型說明語句定義。例如:
CHARACTER*8 OUT (10)
數(shù)組OUT每個(gè)元素的長(zhǎng)度都是8,即每個(gè)元素都可以存放8個(gè)字符。
(2)用DIMENSION語句定義數(shù)組。這時(shí),數(shù)組的類型按隱含規(guī)則確定,或者可以用類型說明語句再次說明其類型。例如:
DIMENSION IM[ (-1:10), IA (0:100 , - 2:0), X (1:5 )]
REAL IA
INTEGER X
其中,IM為一維整型數(shù)組, IA為2維實(shí)型數(shù)組,X為一維整型數(shù)組。
當(dāng)數(shù)組的下標(biāo)下限為1時(shí),可以省略說明下標(biāo)下限。例如,下列數(shù)組說明
DIMENSION A (100), B (5,5)
等價(jià)于
DIMENSION A (1:100), B (1:5, 1:5)
目前在許多微機(jī)上使用的FORTRAN 77子集中,數(shù)組的下標(biāo)下限只允許為1,并且也只允許用省略下限的數(shù)組說明。
數(shù)組說明語句必須放在所有可執(zhí)行語句與DATA 語句之前。
2.數(shù)組在內(nèi)存中的存儲(chǔ)形式
在FORTRAN中,數(shù)組的各元素是按順序存儲(chǔ)在計(jì)算機(jī)內(nèi)存單元中的。(特別需要注意的是, 2維和2維以上的多維數(shù)組中,各元素是以列為主存儲(chǔ)的。)
例如,有一個(gè)二維數(shù)組1(1:2,1:3),該數(shù)組可以寫成數(shù)表的形式
I (1, 1) I (1, 2) I (1, 3)
I (2, 1) I (2, 2) I (2, 3)
各元素的值為I (1, 1)=1, 1(1,2) =2, 1(1,3)=-1, I ( 2 , 1) = 20 , I ( 2 , 2) = 40 , I ( 2, 3)=50,在內(nèi)存中存放的順序是1(1, 1), 1(2, 1), 1(1,2), I (2, 2), I (1, 3) I (2, 3),如果按內(nèi)存存放順序?qū)⑦@個(gè)數(shù)組的元素打印出來,數(shù)據(jù)的順序?qū)⑹?
1,20,2,40,-1,50
其他多維數(shù)組中的元素也是按同樣規(guī)則存儲(chǔ)的,即先存儲(chǔ)第1列,再存儲(chǔ)第2列,以 此類推,最后存儲(chǔ)數(shù)組中的最后一列。
1.數(shù)組的定義
有些互相關(guān)聯(lián)的數(shù)據(jù),作為單個(gè)變量處理并不方便。程序設(shè)計(jì)語言通常把這種相互關(guān) 聯(lián)的數(shù)據(jù)按一定的順序關(guān)系組成一個(gè)集合,該集合稱為數(shù)組;組成數(shù)組的基本單元稱為數(shù) 組元素,每一個(gè)數(shù)組元素對(duì)應(yīng)一個(gè)數(shù)據(jù)。
在FORTRAN中,使用數(shù)組前必須對(duì)數(shù)組進(jìn)行定義,包括對(duì)數(shù)組命名;確定數(shù)組的類型;確定數(shù)組的維數(shù)及大小;指出數(shù)組各維下標(biāo)的下限與上限。數(shù)組的命名規(guī)則與變量的命名規(guī)則相同。
確定數(shù)組類型、維數(shù)及其大小的方法有以下兩種。
(1)用類型說明語句定義數(shù)組。例如:
INTEGER X (-2:30), XYZ (1 :20, 0: 15)
定義了兩個(gè)整型數(shù)組。其中X稱為一維數(shù)組,下標(biāo)的下限與上限分別為-2與30,即這 個(gè)一維數(shù)組共有30-(-2) + 1 = 33個(gè)元素,它們分別為: X (- 2), X (-1), X (0), X (1),…, X (30); XYZ稱為二維數(shù)組,第一個(gè)下標(biāo)的下限與上限分別為1與20,第 二個(gè)下標(biāo)的下限與上限分別為0與15,即這個(gè)二維數(shù)組共有(20-1 + 1) x (15-0 + 1)=20×16=320個(gè)整型元素,它們分別為:
XYZ (1, 0), XYZ (1, 1),…, XYZ (1, 15)
XYZ ( 20, 0), XYZ ( 20, 1),…, XYZ (20, 15 )
字符型數(shù)組必須用類型說明語句定義。例如:
CHARACTER*8 OUT (10)
數(shù)組OUT每個(gè)元素的長(zhǎng)度都是8,即每個(gè)元素都可以存放8個(gè)字符。
(2)用DIMENSION語句定義數(shù)組。這時(shí),數(shù)組的類型按隱含規(guī)則確定,或者可以用類型說明語句再次說明其類型。例如:
DIMENSION IM[ (-1:10), IA (0:100 , - 2:0), X (1:5 )]
REAL IA
INTEGER X
其中,IM為一維整型數(shù)組, IA為2維實(shí)型數(shù)組,X為一維整型數(shù)組。
當(dāng)數(shù)組的下標(biāo)下限為1時(shí),可以省略說明下標(biāo)下限。例如,下列數(shù)組說明
DIMENSION A (100), B (5,5)
等價(jià)于
DIMENSION A (1:100), B (1:5, 1:5)
目前在許多微機(jī)上使用的FORTRAN 77子集中,數(shù)組的下標(biāo)下限只允許為1,并且也只允許用省略下限的數(shù)組說明。
數(shù)組說明語句必須放在所有可執(zhí)行語句與DATA 語句之前。
2.數(shù)組在內(nèi)存中的存儲(chǔ)形式
在FORTRAN中,數(shù)組的各元素是按順序存儲(chǔ)在計(jì)算機(jī)內(nèi)存單元中的。(特別需要注意的是, 2維和2維以上的多維數(shù)組中,各元素是以列為主存儲(chǔ)的。)
例如,有一個(gè)二維數(shù)組1(1:2,1:3),該數(shù)組可以寫成數(shù)表的形式
I (1, 1) I (1, 2) I (1, 3)
I (2, 1) I (2, 2) I (2, 3)
各元素的值為I (1, 1)=1, 1(1,2) =2, 1(1,3)=-1, I ( 2 , 1) = 20 , I ( 2 , 2) = 40 , I ( 2, 3)=50,在內(nèi)存中存放的順序是1(1, 1), 1(2, 1), 1(1,2), I (2, 2), I (1, 3) I (2, 3),如果按內(nèi)存存放順序?qū)⑦@個(gè)數(shù)組的元素打印出來,數(shù)據(jù)的順序?qū)⑹?
1,20,2,40,-1,50
其他多維數(shù)組中的元素也是按同樣規(guī)則存儲(chǔ)的,即先存儲(chǔ)第1列,再存儲(chǔ)第2列,以 此類推,最后存儲(chǔ)數(shù)組中的最后一列。