版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、Fortran第六講 數(shù)組(二)1回顧第五講數(shù)組定義、改變下標(biāo)范圍的定義三種初始化方法和變量一樣使用數(shù)組在內(nèi)存中是如何存儲(chǔ)的防止使用中產(chǎn)生數(shù)組的越界2在數(shù)組初始化中,引入隱式DO循環(huán)隱式DO循環(huán)在IO語句中的應(yīng)用FORMAT進(jìn)階3第六講如何對(duì)整個(gè)數(shù)組或數(shù)組的一部分進(jìn)行操作如何對(duì)數(shù)組使用Fortran內(nèi)置函數(shù)WHERE語句的用法FORALL結(jié)構(gòu)的用法如何定義可變大小的數(shù)組46.1.1 對(duì)整個(gè)數(shù)組的操作不帶下標(biāo)的數(shù)組名引用,視為對(duì)整個(gè)數(shù)組的引用INTEGER : a(5)WRITE (*,*) a 會(huì)依次輸出a的每個(gè)元素值a=1將a的每個(gè)元素賦值15結(jié)構(gòu)一致的數(shù)組可以直接算術(shù)運(yùn)算INTEGER :
2、 a(5),b(5),c(5)a=1b=2c=a+b a和b對(duì)應(yīng)的元素相加后放到c對(duì)應(yīng)的位置c=a-bc=a*bc=a/b66.1.2 內(nèi)置函數(shù)對(duì)數(shù)組的作用多數(shù)內(nèi)置函數(shù)都接受數(shù)組作為輸入?yún)?shù)返回結(jié)果為數(shù)組內(nèi)置函數(shù)對(duì)數(shù)組的作用是逐個(gè)應(yīng)用到數(shù)組的元素REAL : a(4)=(/-1.,2.,-3.,4./)a=ABS(a)76.1.3操作部分?jǐn)?shù)組部分?jǐn)?shù)組(局部數(shù)組):下標(biāo)用下標(biāo)三元組(下標(biāo)向量)來指定:常見形式:下標(biāo)1:下標(biāo)2:下標(biāo)增量以上三個(gè)部分構(gòu)成一個(gè)三元組,都可以缺省如果缺省下標(biāo)1,那么默認(rèn)為數(shù)組中本 維度第一個(gè)元素的下標(biāo)如果缺省下標(biāo)2,那么默認(rèn)為數(shù)組中本維度最后一個(gè)元素的下標(biāo)如果缺省下標(biāo)增
3、量,默認(rèn)為18INTEGER:a(10)以下部分應(yīng)用的含義?a(:)a(3:7)a(3:7:2)a(3:)a(:7)a(:3)9INTEGER : a(5,10)以下部分?jǐn)?shù)組的含義?a(1:3:2,3:5:1)a(:,1)a(:,:)a(:5:2,9:)a(3,:)106.2 對(duì)數(shù)組使用Fortran內(nèi)置函數(shù)三大內(nèi)置函數(shù):基本函數(shù)查詢函數(shù)變換函數(shù)116.2.1基本內(nèi)置函數(shù)使用標(biāo)量參數(shù)的函數(shù),也可以用數(shù)組作為參數(shù)使用標(biāo)量作為參數(shù)時(shí),函數(shù)返回值是標(biāo)量使用數(shù)組作為參數(shù),函數(shù)返回相同結(jié)構(gòu)的數(shù)組ABSSINCOSTANEXPLOGLOG10MODSQRT126.2.2 查詢內(nèi)置函數(shù)用于查詢對(duì)象的屬性部分
4、常用的數(shù)組查詢函數(shù)ALLOCATED(ARRAY)LBOUND(ARRAY,DIM)SHAPE(SOURCE)SIZE(ARRAY,DIM)UBOUND(ARRAY,DIM)這些查詢函數(shù)在將數(shù)組傳遞給過程時(shí),非常有用13LBOUND(ARRAY,DIM)如果沒有DIM,返回?cái)?shù)組ARRAY的所有下界,這個(gè)返回值是一個(gè)一維數(shù)組如果指定了DIM,返回一個(gè)標(biāo)量,表示DIM這個(gè)維度的下界INTEGER:a(3:5,3:6,0:7)LBOUND(a)LBOUND(a,1)LBOUND(a,3)UBOUND類似,只是表示上界UBOUND(a,3) 14SHAPE(SOURCE)返回?cái)?shù)組SOURCE的結(jié)構(gòu)IN
5、TEGER : a(-3:7,0:8)SHAPE(a) ?15SIZE(ARRAY,DIM)如果給出了維度,返回該維度的寬度否則返回?cái)?shù)組中元素的個(gè)數(shù)INTEGER : a(-3:7,0:8)SIZE(a,1) ?SIZE(a) ?166.2.3 變換內(nèi)置函數(shù)有一個(gè)或多個(gè)數(shù)組作為參數(shù)的函數(shù),變換內(nèi)置函數(shù)操作整個(gè)數(shù)組輸出與輸入?yún)?shù)可能沒有相同的結(jié)構(gòu)RESHAPE(SOURCE,SHAPE) 這個(gè)上次課講過了將SOURCE的元素按照SHAPE重新構(gòu)建一個(gè)新的數(shù)組RESHAPE(/1,2,3,4,5,6/),(/2,3/) 將一維數(shù)組(1,2,3,4,5,6)構(gòu)造為2X3的二維數(shù)組17DOT_PROD
6、UCT(VECTOR_A,VECTOR_B)計(jì)算兩個(gè)大小相等的向量的點(diǎn)積參數(shù)是兩個(gè)元素個(gè)數(shù)相等的一維數(shù)組MATMUL(MATRIX_A,MATRIX_B)計(jì)算兩個(gè)矩陣的叉積參數(shù)必須是兩個(gè)可以叉乘的矩陣18MASK 與 mask_expr在此后的學(xué)習(xí)中,經(jīng)常會(huì)見到以上兩個(gè)形式MASK=mask_exprmask_expr是說明掩碼的邏輯數(shù)組這個(gè)數(shù)組的所有元素都是邏輯值例:INTEGER : a(5)=(/1,2,3,4,5/)LOGICAL : b(5)b=a319ALL(MASK) 如果數(shù)組MASK中的所有元素值都為真,邏輯函數(shù)返回TRUEANY(MASK)如果數(shù)組MASK的任意元素值為真,邏
7、輯函數(shù)返回TRUECOUNT(MASK)返回?cái)?shù)組MASK中為真元素的個(gè)數(shù)20MAXLOC(ARRAY,MASK)返回MASK為真對(duì)應(yīng)的ARRAY中的元素的最大值的位置,結(jié)果是帶有一個(gè)元素的一維數(shù)組,這個(gè)數(shù)組元素是ARRAY中的下標(biāo)值,MASK是可選的MAXVAL(ARRAY,MASK)返回MASK為真對(duì)應(yīng)的ARRAY中的元素的最大值MINLOC(ARRAY,MASK)參考MAXLOCMINVAL(ARRAY,MASK)參考MINVAL21SUM (ARRAY,MASK)計(jì)算ARRAY中MASK為真的元素的和。MASK為可選的,如果不提供,計(jì)算數(shù)組中所有元素的和TRANSPOSE(MATRIX)
8、將MATRIX轉(zhuǎn)置后返回22更多的變換函數(shù)可以參考教材的附錄A的數(shù)組函數(shù)部分這些函數(shù)都很有用,我們?cè)谝院蟮睦袒蛄?xí)題會(huì)涉及到一部分,請(qǐng)諸位養(yǎng)成查閱這一附錄的習(xí)慣236.3 WHERE結(jié)構(gòu)6.1中,我們學(xué)習(xí)了如何操作部分?jǐn)?shù)組INTEGER : a(10)a(3:5)=3將a(3),a(4),a(5)賦值為3如果我們要對(duì)滿足某個(gè)條件的所有元素進(jìn)行操作WHERE (a0)info=-infoELSEWHERE info=-3*infoEND WHEREWRITE (*,*) info27單行WHERE語句WHERE (mask_expr) Array Assignment StatementWHER
9、E(a0) a=-a286.4 FORALL結(jié)構(gòu)FORALL 結(jié)構(gòu)也可以對(duì)部分?jǐn)?shù)組元素操作被操作的元素通過下標(biāo)索引和邏輯條件進(jìn)行選擇name:FORALL (in1=triplet1,in2=triplet2,logical_expr)statement 1statement 2statement nEND FORALL name29每個(gè)triplet叫一個(gè)三元組,由下面形式構(gòu)成下標(biāo)1:下標(biāo)2:下標(biāo)增量REAL:work(10,10)FORALL (i=1:10,j=1:10,work(i,j)/=0.)work(i,j)=1./work(i,j)END FORALL306.5 可變大小數(shù)組截
10、止目前所講的都是靜態(tài)內(nèi)存分配數(shù)組每個(gè)數(shù)組的大小在編譯的時(shí)候設(shè)定且不可更改有什么缺點(diǎn)?解決方案是采用動(dòng)態(tài)內(nèi)存分配數(shù)組31實(shí)現(xiàn)方法:分配:ALLOCATABLE和ALLOCATE()DEALLOCATE例:INTEGER,ALLOCAT ABLE: a(:)INTEGER : iread (*,*) iALLOCATE(a(i)分配了一個(gè)一維數(shù)組,數(shù)組大小從鍵盤輸入32REAL,ALLOCATABLE : a(:,:)INTEGER : i=100,j=500,statusALLOCATE(a(i,0:j),STAT=status)動(dòng)態(tài)分配一個(gè)二維數(shù)組通過status返回分配狀態(tài)如果分配成功,status為0,否則不為0總是使用STAT=status監(jiān)視分配狀態(tài),以便準(zhǔn)確知道程序異常終止的原因33ALLOCATED()函數(shù)ALLOCATED(array) 如果已經(jīng)用ALLOCATE()給ARRAY分配了空間那么函數(shù)返回值是.TRUE. 否則為.FALSE.例:IF (ALLOCATED(array) THENarray=1ELSEWRITE(*,*) Warning : Arr
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度新型農(nóng)村宅基地使用權(quán)轉(zhuǎn)讓合同范本
- 二零二五年度噴漆作業(yè)場(chǎng)所職業(yè)健康監(jiān)護(hù)與疾病預(yù)防合同
- 二零二五年度企業(yè)VI系統(tǒng)全案定制合同3篇
- 二零二五年度戶外噴泉節(jié)能改造專項(xiàng)合同
- 二零二五年度土地整治土石方運(yùn)輸及土壤改良合同6篇
- 2025年度智能車展合作項(xiàng)目合作協(xié)議書范本4篇
- 2025版中學(xué)校園食品安全供應(yīng)與配送合作協(xié)議3篇
- 二零二五年度工業(yè)用地土地廠房轉(zhuǎn)讓與產(chǎn)業(yè)升級(jí)合同
- 珠海城市職業(yè)技術(shù)學(xué)院《韓國語語法》2023-2024學(xué)年第一學(xué)期期末試卷
- 二零二五年度農(nóng)產(chǎn)品供應(yīng)鏈合作協(xié)議書2篇
- 安全常識(shí)課件
- 河北省石家莊市2023-2024學(xué)年高一上學(xué)期期末聯(lián)考化學(xué)試題(含答案)
- 小王子-英文原版
- 新版中國食物成分表
- 2024年山東省青島市中考生物試題(含答案)
- 河道綜合治理工程技術(shù)投標(biāo)文件
- 專題24 短文填空 選詞填空 2024年中考英語真題分類匯編
- 再生障礙性貧血課件
- 產(chǎn)后抑郁癥的護(hù)理查房
- 2024年江蘇護(hù)理職業(yè)學(xué)院高職單招(英語/數(shù)學(xué)/語文)筆試歷年參考題庫含答案解析
- 電能質(zhì)量與安全課件
評(píng)論
0/150
提交評(píng)論