資源描述:
《fortran90第六章數(shù)組.ppt》由會員上傳分享,免費在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫。
1、§6數(shù)組§6.1數(shù)組的定義與操作§6.2動態(tài)數(shù)組§6.3數(shù)組在函數(shù)和子程序中的應(yīng)用§6.4數(shù)組的應(yīng)用舉例§6.1數(shù)組的定義與操作數(shù)組:相同類型數(shù)據(jù)組成的有序的有限集合數(shù)組必須先定義后使用。定義數(shù)組時,要對數(shù)組的名稱、類型、數(shù)組的維數(shù)和元素的數(shù)量加以說明。用類型說明結(jié)合DIMENSION屬性進(jìn)行定義:類型,dimension(維數(shù)說明[,維數(shù)說明])::數(shù)組名[,數(shù)組名]§6.1.1數(shù)組的定義維數(shù)說明:由下標(biāo)界限說明組成,有幾個下標(biāo)界限說明就表示數(shù)組是幾維的。多于一維的數(shù)組稱多維數(shù)組,下標(biāo)界限說明
2、之間用逗號(,)分隔。下標(biāo)界限說明的寫法:下標(biāo)下限:下標(biāo)上界下標(biāo)界限為整數(shù),上界必須大于下界下標(biāo)下界為1時可以連同后面的冒號一起省略;但是,上界是不可省略的。定義數(shù)組時,下標(biāo)界限必須為整型常量。例:INTEGER,DIMENSION(-2:10)::P定義一維整數(shù)組P,下標(biāo)從-2到10,13個元素。例:DIMENSIONA(12),IW(4,5)定義一維實型數(shù)組A,下標(biāo)從1到12,12個元素;定義二維整型數(shù)組IW,4行5列,20個元素。例:real,dimension(3,4)::b,m(-5:
3、10)定義二維實型數(shù)組B,3行4列,12個元素;定義一維實型數(shù)組M,下標(biāo)從-5到10,16個元素。例:characterc(100)*20定義一維字符數(shù)組C,有100個字符串,每個可容納20個字符§6.1.2數(shù)組的邏輯結(jié)構(gòu)與存儲結(jié)構(gòu)一維數(shù)組:數(shù)列、向量二維數(shù)組:矩陣、行列式、表格三維數(shù)組:帳簿對更多維數(shù)的數(shù)組,可以從概念上理解。在學(xué)習(xí)程序設(shè)計語言時,一般只要求熟練掌握二維數(shù)組的應(yīng)用,作為理解和應(yīng)用多維數(shù)組的基礎(chǔ)。數(shù)組元素在內(nèi)存中連續(xù)存放,下標(biāo)數(shù)值小的排在前面。存儲多維數(shù)組時,下標(biāo)變化速度依次為第
4、一個,第二個…例:A(10),依次存儲A(1),A(2),A(3),…A(10)B(8,9),依次存B(1,1),B(2,1),…B(8,1),B(1,2),B(2,2),…B(8,2),…………………….B(1,9),B(2,9),…B(8,9)特別提示:二維數(shù)組是按列存儲的。用數(shù)組名(下標(biāo)[,下標(biāo)])指定所要引用的數(shù)組元素。例:a(12),B5(3,6),c3b4(I,J,K)數(shù)組元素的下標(biāo)可以是算術(shù)表達(dá)式,系統(tǒng)計算此表達(dá)式的值并自動取整。表達(dá)式中所涉及到的不是常量的量必須要先行算出。例:a
5、(I+1),b5(b5(3)+a(2))例:c3b4(I,I+5,c3b4(a(b5(c3b4(1,4,2),6)),3,2))§6.1.3數(shù)組元素的引用必須確保數(shù)組元素的下標(biāo)的值不超過下標(biāo)界限。如果下標(biāo)越界,系統(tǒng)一般會對存儲于數(shù)組之前(后)的存儲單元進(jìn)行操作(引用或者賦值),導(dǎo)致錯誤。如果作為數(shù)組元素的下標(biāo)的算術(shù)表達(dá)式中存在沒有賦值的變量,系統(tǒng)一般自動將它按零處理,可能會導(dǎo)致計算結(jié)果不正確,或者不穩(wěn)定(時對時錯)。這類錯誤很難發(fā)現(xiàn),是許多程序存在bug的原因。數(shù)組元素的下標(biāo)表達(dá)式過于復(fù)雜時,最
6、好先行算出,最好不要書寫過于復(fù)雜的語句和表達(dá)式?!?.1.4數(shù)組的輸入與輸出數(shù)組必須先定義后使用,本節(jié)討論中提到的數(shù)組假定已經(jīng)定義如下:DIMENSIONA(10),M(12),D(5,6)允許用數(shù)組名來I/O整個數(shù)組例:READ(*,*)A,M,DWRITE(*,*)A,D多維數(shù)組I/O時,按其元素在內(nèi)存中存儲的順序依次I/O各元素,遵守的原則是:最左邊的下標(biāo)變化最快。特別提示:二維數(shù)組是按列存儲的,在輸入/輸出時也按列進(jìn)行。在程序中可以輸入/輸出指定的元素,作為特例,可用DO循環(huán)對數(shù)組全體元
7、素或部分元素進(jìn)行輸入/輸出。DoI=1,5doj=1,6read*,d(I,j)enddoEnddo用DO循環(huán)對數(shù)組進(jìn)行輸入/輸出不方便,為此,提供了針對I/O的隱含DO循環(huán)方式。例:read(*,*)(A(I),I=4,10,2)read(*,*)(M(K),K=1,12)WRITE(*,*)((D(L,N),N=1,6),L=1,5)隱含DO循環(huán)方式輸出/輸入多維數(shù)組時要用到多重循環(huán),注意其書寫方式?!?.1.5數(shù)組的操作數(shù)組賦值:可以給所有元素賦同一個值例:DIMENSIONA(10),M
8、(12),D(5,6)A=1.2;M=3;D=4.5數(shù)組構(gòu)造器:(/取值列表/)取值列表:標(biāo)量、隱DO表、向量。隱DO表和向量整體作為一個標(biāo)量。標(biāo)量之間用逗號。數(shù)組構(gòu)造器可給多維數(shù)組的某一維賦值:Real,Dimension(2,3)::A,BA(1,:)=(/1,2,3/)!給第1行賦值A(chǔ)(2,:)=(/4,5,6/)!第2行§6.1.5數(shù)組的操作通過Reshape()函數(shù)可以把數(shù)組構(gòu)造器的數(shù)據(jù)賦給某種形狀的數(shù)組reala(2,3),b(2,3),c(3,2)a(1,:)=(/1,2,3/);