歡迎來到裝配圖網(wǎng)! | 幫助中心 裝配圖網(wǎng)zhuangpeitu.com!
裝配圖網(wǎng)
ImageVerifierCode 換一換
首頁 裝配圖網(wǎng) > 資源分類 > PPT文檔下載  

fortran教程[共91頁]

  • 資源ID:72706316       資源大?。?span id="n4duryq" class="font-tahoma">381KB        全文頁數(shù):91頁
  • 資源格式: PPT        下載積分:12積分
快捷下載 游客一鍵下載
會(huì)員登錄下載
微信登錄下載
三方登錄下載: 微信開放平臺(tái)登錄 支付寶登錄   QQ登錄   微博登錄  
二維碼
微信掃一掃登錄
下載資源需要12積分
郵箱/手機(jī):
溫馨提示:
用戶名和密碼都是您填寫的郵箱或者手機(jī)號(hào),方便查詢和重復(fù)下載(系統(tǒng)自動(dòng)生成)
支付方式: 支付寶    微信支付   
驗(yàn)證碼:   換一換

 
賬號(hào):
密碼:
驗(yàn)證碼:   換一換
  忘記密碼?
    
友情提示
2、PDF文件下載后,可能會(huì)被瀏覽器默認(rèn)打開,此種情況可以點(diǎn)擊瀏覽器菜單,保存網(wǎng)頁到桌面,就可以正常下載了。
3、本站不支持迅雷下載,請(qǐng)使用電腦自帶的IE瀏覽器,或者360瀏覽器、谷歌瀏覽器下載即可。
4、本站資源下載后的文檔和圖紙-無水印,預(yù)覽文檔經(jīng)過壓縮,下載后原文更清晰。
5、試題試卷類文檔,如果標(biāo)題沒有明確說明有答案則都視為沒有答案,請(qǐng)知曉。

fortran教程[共91頁]

Fortran發(fā)展簡(jiǎn)史發(fā)展簡(jiǎn)史 n1954:IBM 在 IBM 704 上發(fā)展 n1957:IBM發(fā)表,F(xiàn)ortran Formula Translator n1966:American Standards Association 制訂 Fortran 66 n鑑於各家編輯器無法相容,故統(tǒng)一標(biāo)準(zhǔn) nAmerican Standards Association:美國(guó)國(guó)家標(biāo)準(zhǔn)局(ANSI)的前身 n1978:ANSI 公布 Fortran 77 標(biāo)準(zhǔn) n刪去部分內(nèi)容,新增邏輯與輸出入方面的功能 n1992:國(guó)際標(biāo)準(zhǔn)組織 ISO 公布 Fortran 90 標(biāo)準(zhǔn) n與 77 版本差異大 n加入物件導(dǎo)向、提供指標(biāo)與加強(qiáng)陣列功能、自由格式寫作 n1997:國(guó)際標(biāo)準(zhǔn)組織 ISO 公布 Fortran 95 標(biāo)準(zhǔn) n加強(qiáng)平行運(yùn)算 nFortran 200 x 書面格式書面格式 nFixed Format是舊式的寫法,有較多的限制,F(xiàn)ixed Format副檔名用 *.F 或 *.FOR 。nFree Format則是Fortran 90以後新增的作法,以副檔名做為區(qū)隔,F(xiàn)ree Format使用 *.F90。 nFixed Format(固定格式)(固定格式)n字元位置意義: 第 1 字元:如果是字母 C 或 c 或是星號(hào) *,本行視為註解 第 1-5 字元:空白,或是一組數(shù)字為本行程式的代號(hào) 第 6 字元:放上 0 以外的字元,表示為接續(xù)上一行程式碼 第 7-72 字元:程式碼寫作區(qū)域 第 73 字元以後:不使用,編輯器會(huì)忽略,有些則發(fā)出錯(cuò)誤訊息 程式碼之間多餘的空格不具意義,僅作分隔與方便閱讀 配合打孔卡片所發(fā)展,F(xiàn)ortran 90之後可採用Free Format n例如: 1:C FIXED FORMAT 2: PROGRAM FIXED 3: READ (*,10) A,B4: 10 FORMAT (F5.1,F5.1)5: SUM = A + B6: WRITE (*,20) 7: +SUM8: 20 FORMAT (1X,F6.1)9: END nFree Format(自由格式)(自由格式)nFortran 90 開始使用,附加檔名為 *.F90 n不再規(guī)定第幾字元有何特定用途 n驚嘆號(hào)!後都是註解 n每行可以寫作 132 字元 n如有行號(hào)放在每行最前面 n程式連接符號(hào)改為&,放在每行程式碼最前或最後,表連結(jié)前一行或是下一行 n例如:1:! free format 2: program free 3: read (*,10) a,b4:10 format (f5.1,f5.1)5: sum=a+b6: write (*,20) & 7: sum8:20 format (1x,f6.1)9: end輸出入指令輸出入指令 nWRITE write(*,*) Hello *星號(hào)意義: n前者代表使用預(yù)設(shè)輸出裝置(一般即為螢?zāi)唬?n後者代表不特別設(shè)定輸出格式 嚴(yán)謹(jǐn)用法: write(UNIT=*,FMT=*) Hello ! 使用預(yù)設(shè)輸出裝置,不設(shè)定特別格式 write(6,*) Hello ! 使用螢?zāi)惠敵?,不設(shè)定特別格式 write(UNIT=6,FMT=*) “Hello” ! 最嚴(yán)謹(jǐn)?shù)膶懛?輸出字串若包含有單或雙引號(hào),請(qǐng)參考字串宣告 格式化請(qǐng)參見FORMAT nPRINTprint *, Hello print指令沒有指定輸出裝置的能力,只能針對(duì)螢?zāi)惠敵?nREADread (*,*) a 讓使用者能透過鍵盤輸入變數(shù)內(nèi)容 *星號(hào)意義: n前者代表使用預(yù)設(shè)輸入裝置(一般為鍵盤) n後者代表不指定輸入格式 嚴(yán)謹(jǐn)用法: read(UNIT=*,FMT=*) Hello ! 使用預(yù)設(shè)輸入裝置,不指定輸入格式 read(5,*) Hello ! 使用鍵盤輸入,不指定輸入格式 read(UNIT=5,FMT=*) Hello ! 最嚴(yán)謹(jǐn)?shù)膶懛?注意事項(xiàng): 輸入字串無須加上雙引號(hào),但字串中若有空格或逗號(hào),將被視為兩筆資料,比如: nread (*,*) a, b 若輸入 Happy Birthday,則a=Happy,b=Birthday nread (*,*) a 若輸入 Happy Birthday,則a=Happy nFORMAT a = 12.3456 write (*,*) a write (*,100) a 100 format(f5.2) 則前者輸出結(jié)果為12.3456,後者為12.34 f5.1代表使用5個(gè)字元長(zhǎng)度顯示浮點(diǎn)數(shù),其中小數(shù)佔(zhàn)1位 1. 簡(jiǎn)化的用法1:將輸出格式寫在write指令中 write (*,(1x,f5.2) a 優(yōu)點(diǎn): 減少程式行數(shù)及行號(hào)使用 容易閱讀(不用另找行號(hào)、FORMAT) 缺點(diǎn): 格式複雜時(shí),程式碼混亂 格式設(shè)定相同時(shí),無法重複利用 2. 簡(jiǎn)化的用法2: 不同格式控制指令,(1x,f5.2)可以移去逗號(hào)移去逗號(hào)簡(jiǎn)化成format (1xf5.2) 重複相同格式(a3,a3)不可以不可以簡(jiǎn)化成(a3a3),改用format (2a3) 若有不同格式時(shí),如(1xf5.2 , 1xf5.2 , 1xf5.2)則改用format (3(1xf5.2) 3. 字串可以直接寫入格式內(nèi): write (*,(a4,I1) 1+2=,1+2 write (*,(1+2=,I1) 1+2 輸出均為 1+2=3 。上例中單雙引號(hào)混用,但F77只用使用單引號(hào): write (*,(1+2=,I1) 1+2 4. 使用字串變數(shù)做為格式條件,如: character(len=10) fmtstring fmtstring = (f5.1) write (*,fmtstring) 123.4 好處在於,若執(zhí)行階段輸出變數(shù)超過5個(gè)字元,可經(jīng)由如:fmtstring(3:3)=“8”, 使得格式成為(f8.1),以容納更大的數(shù)字 5. 常見錯(cuò)誤: 變數(shù)型態(tài)與格式型態(tài)不符:比如變數(shù)為整數(shù)123,卻給定字串型態(tài)A3 早期應(yīng)用在印表機(jī)輸出時(shí),第一個(gè)字元被做為控制字元,所以早期程式設(shè)計(jì)師習(xí) 慣上每一行最前面預(yù)留一個(gè)空白(1X),但多數(shù)編輯器已經(jīng)取消這個(gè)設(shè)計(jì) 6. 通常設(shè)計(jì)師建議,不要將format集中排列,如此不利於搜尋。最好將format直接 放在write之下、甚至用上述寫入write中。(但有些format被重複使用,所以非每 行write都有format伴隨)變數(shù)型態(tài)變數(shù)型態(tài)n基本概念基本概念以整數(shù)為例: integer a a為自己取的變數(shù)名稱,代表一個(gè)儲(chǔ)存整數(shù)的空間位置,稱為變數(shù) 宣告後透過該名稱來給予或提供變數(shù)內(nèi)容,如: 1. program example 2. integer a, b 3. a = 3 ! 將a變數(shù)設(shè)定為3 4. b = a * 2 ! 將b變數(shù)設(shè)定為a*2,即3*2 5. print *, a=, a ! 寫出a的內(nèi)容 6. print *, b=, b ! 寫出b的內(nèi)容 7. stop 8. end example 執(zhí)行結(jié)果 a= 3 b= 9 使用注意: 等號(hào)意義代表將左邊變數(shù)的內(nèi)容,設(shè)定成右邊的數(shù)值或計(jì)算結(jié)果 名稱命名等原則及注意事項(xiàng),請(qǐng)參考變數(shù)宣告 n整數(shù)型態(tài)整數(shù)型態(tài) (INTEGERAL)integer a 1. 使用注意: 計(jì)算結(jié)果無條件捨去小數(shù)部分 常見錯(cuò)誤!如:a=3/2 a=1 、a=1/2 a=0 宣告未指定長(zhǎng)度時(shí),通常表示為長(zhǎng)整數(shù) 2.長(zhǎng)整數(shù) - 使用4位元組(4 bytes, 32 bits) integer(kind=4) a ! F90新增作法 integer(4) b ! INTEGER*4 c ! F77傳統(tǒng)作法 可儲(chǔ)存範(fàn)圍:-2,147,483,648 +2,147,483,647 3. 短整數(shù) - 使用2位元組(2 bytes, 16 bits) integer(kind=2) a ! F90新增作法 integer(2) b ! INTEGER*2 c ! F77傳統(tǒng)作法 可儲(chǔ)存範(fàn)圍:-32,768 +32,767 4. 部分編譯器支援 - 使用1位元組(1 bytes, 8 bits) integer(kind=1) a ! F90新增作法 integer(1) b ! INTEGER*1 c ! F77傳統(tǒng)作法 可儲(chǔ)存範(fàn)圍:-128 +127 n浮點(diǎn)數(shù)型態(tài)浮點(diǎn)數(shù)型態(tài) (REAL)real a 未指定kind值時(shí),通常宣告為單精準(zhǔn)度(kind=4) 1. 單精準(zhǔn)度 - 使用4位元組(4 bytes, 32 bits) real(kind=4) a ! F90新增作法 real(4) b ! REAL*4 c ! F77傳統(tǒng)作法 可表示範(fàn)圍(PC):1.18*10-38 3.40*1038 單精準(zhǔn)度有效位數(shù)為6-7位,注意可能有以下問題:a = 1000000. + 0.1 a = 1000000. 常見錯(cuò)誤,大數(shù)加小數(shù)! 2. 雙精準(zhǔn)度 - 使用4位元組(8 bytes, 64 bits) real(kind=8) a ! F90新增作法 real(8) b ! REAL*8 c ! F77傳統(tǒng)作法 可表示範(fàn)圍(PC):2.23*10-308 1.79*10308 雙精準(zhǔn)度有效位數(shù)為15位 3. 使用注意: 常數(shù)部分請(qǐng)加上.0,如3 3.0(只加.亦可) real a a= 1.5+3./2. a= 3.0 (3.與2.被視為浮點(diǎn)數(shù)) a= 1.5+3/2 a= 2.5 (3/2視為整數(shù),小數(shù)無條件捨去) 常見錯(cuò)誤! 雙精準(zhǔn)度(REAL*8),常數(shù)請(qǐng)加上d0,如3 3.d0 常見 忽略! 或採用 a = 1.0_4 表示 kind = 4 a = 1.0_8 表示 kind = 8 可用科學(xué)記號(hào)表示法,如 10,000,000,000 = 1E10 (1D10 代表雙精準(zhǔn)度) 0.0000000001 = 1E-10 (1D-10代表雙精準(zhǔn)度) n複數(shù)型態(tài)複數(shù)型態(tài) (COMPLEX)complex a (複數(shù)由實(shí)部與虛部組成,a=x+yi,x 為實(shí)部、y 為虛部,皆為實(shí)數(shù)型態(tài)) 1. 使用注意: 設(shè)定數(shù)值a = (x,y) ! a = x + yi ,若x=1.5,y=2.5,a=1.5 + 2.5i a = (1.5,2.5) ! a = 1.5 + 2.5i a = 1.5 ! a = 1.5 + 0i 2. 單精準(zhǔn)度 - 使用兩個(gè)單精準(zhǔn)浮點(diǎn)數(shù) complex(kind=4) a ! F90新增作法 complex(4) b ! COMPLEX*8 c ! F77傳統(tǒng)作法 3. 雙精準(zhǔn)度 - 使用兩個(gè)雙精準(zhǔn)浮點(diǎn)數(shù) complex(kind=8) a ! F90新增作法 complex(8) b ! COMPLEX*16 c ! F77傳統(tǒng)作法 n字元與字串字元與字串 (CHARACTER)character a (此例僅能儲(chǔ)存一個(gè)字元) 1. 長(zhǎng)度超過一個(gè)字元時(shí),需指定長(zhǎng)度,如需十個(gè)字元長(zhǎng)度時(shí): character(len=10) a ! F90新增作法 character(10) b ! CHARACTER*10 c ! F77傳統(tǒng)作法 CHARACTER*(10) d ! 2. 使用注意: 設(shè)定字串變數(shù): a = Hello ! F90使用單或雙引號(hào)來包裝字串 b = Hello ! F77使用單引號(hào)來包裝字串 c = Thats right ! 使用雙引號(hào)中,有單引號(hào)不受影響 d = Thats right ! 使用單引號(hào),字串又包含單引號(hào)時(shí),請(qǐng)連續(xù)使用兩個(gè)單引號(hào) e = “”“Hello”“” ! 使用雙引號(hào),字串又包含雙引號(hào)時(shí),請(qǐng)連續(xù)使用兩個(gè)雙引號(hào),本例輸出為Hello 設(shè)定部分字串: string(1:4) = Good ! 指定1-4字元 string(5:5) = ! 指定第5字元 string(6:) = morning ! 指定第6個(gè)字元以後的字串 使用 / 連接兩字串:string_a = string_b / string_c 副程序中宣告為不定長(zhǎng)度(依呼叫端長(zhǎng)度決定) n邏輯變數(shù)邏輯變數(shù) (LOGICAL)logical a 1. 使用注意: 設(shè)定邏輯變數(shù): a = .true. ! 設(shè)定為真 a = .false. ! 設(shè)定為假 使用 WRITE 輸出時(shí),僅顯示 T 或 F但實(shí)務(wù)上邏輯變數(shù)很少用於輸出 2. 通常不指定使用空間大小,由編輯器自行決定,最少只需1個(gè)位元(1 bit) 若指定使用4個(gè)位元組時(shí)(4 bytes, 32 bits) logical(kind=4) a ! F90新增作法 LOGICAL*4 b ! F77傳統(tǒng)作法 LOGICAL(4) c ! F77傳統(tǒng)作法 (也可使用2個(gè)位元組,將上例4換為2即可) n自訂資料型態(tài)自訂資料型態(tài) (TYPE) - F90新增新增舉例來說,若程式中需記錄一個(gè)人的姓名、身高、體重、血型,則需要宣告四個(gè)變數(shù),透過自訂型態(tài),我們可以訂定一個(gè)人員基本資料的資料型態(tài),其中將包含上述的各項(xiàng)資料型態(tài),該資料型態(tài)變數(shù)使用起來就像是Visual Basic的物件。以下舉實(shí)例說明:! 建立名稱為person的自訂資料型態(tài) type : person character(len=25) : name ! 記錄姓名 integer(kind=2) : length ! 記錄身高 integer(kind=2) : weight ! 記錄體重 character(len=2) : blood ! 記錄血型 end type person ! 自訂資料型態(tài)結(jié)束,本例中person型態(tài)包括了四個(gè)元素 type(person) : a ! 宣告一個(gè)person型態(tài)的變數(shù) read(*,*) a%name ! 讀取變數(shù)a的姓名資料,變數(shù)與元素間以隔開 write(*,*) a%name ! 列印變數(shù)a的姓名資料 a = person(Frank,172,75,O) ! 直接設(shè)定所有資料nKIND的應(yīng)用的應(yīng)用 - F90新增新增宣告INTEGER與REAL時(shí),KIND值將影響可儲(chǔ)存範(fàn)圍與有效位數(shù),以PC來說:integer(kind=1):-128 +127 integer(kind=2):-32,768 +32,767 integer(kind=4):-2,147,483,648 +2,147,483,647 real(kind=4):1.18*10-38 3.40*1038 ,有效6-7位 real(kind=8):2.23*10-308 1.79*10308 ,有效15位 以下兩個(gè)函數(shù)可以判斷要記錄數(shù)值值域範(fàn)圍所需的kind值。一般雖無須使用,但若程式有需要在不同電腦系統(tǒng)間移植,由於可儲(chǔ)存位數(shù)的差異,若能依實(shí)際需要查詢?cè)撓到y(tǒng)的kind值,可使程式維持正確性 SELECTED_INT_KIND(n) 傳回需要記錄 n 位整數(shù)時(shí),所應(yīng)宣告的kind值 傳回 -1 時(shí),表示無法提供該數(shù)值值域範(fàn)圍 SELECTED_REAL_KIND(n,e) 傳回需要記錄 n 位有效位數(shù)、指數(shù)達(dá)到 e 位的浮點(diǎn)數(shù)所需kind值 傳回 -1 表示無法滿足所要求有效位數(shù) 傳回 -2 表示無法滿足所要求指數(shù)範(fàn)圍 傳回 -3 表示兩者都無法滿足 舉例:integer, parameter : short_int = SELECTED_INT_KIND(3)integer, parameter : long_real = SELECTED_REAL_KIND(9,30)integer(kind = short_int) : a = 172real(kind = long_real) : b = 1.23456789D25 變數(shù)宣告變數(shù)宣告 變數(shù)名稱命名原則注意: 名稱可使用英文字母a-z、底線_、數(shù)字0-9(首字需為英文字母) 變數(shù)名稱長(zhǎng)度,F(xiàn)77規(guī)定至少支援1-6個(gè)字元,F(xiàn)90支援1-31個(gè)字元 雖未規(guī)定,但建議不要與執(zhí)行指令相同(比如PRINT) 建議取有意義的英文單字,增加程式可讀性並減少出錯(cuò)的機(jī)會(huì) 一般變數(shù)宣告請(qǐng)參閱:變數(shù)型態(tài) 注意內(nèi)定型態(tài)的影響: 變數(shù)不一定需經(jīng)過宣告才能使用,未經(jīng)過宣告之變數(shù),依變數(shù)第一個(gè)字母決定型態(tài) 未經(jīng)宣告下,第一個(gè)字母 i,j,k,l,m,n 的變數(shù)將被視為整數(shù)型態(tài),其他的則為浮點(diǎn)數(shù);但可透過IMPLICIT來改變此預(yù)設(shè)狀態(tài) 建議所有變數(shù)仍應(yīng)宣告,以瞭解記憶體使用情況並能降低人為錯(cuò)誤發(fā)生 可配合IMPLICIT NONE指令限制所有變數(shù)需經(jīng)宣告才能使用,以降低人為錯(cuò)誤發(fā)生,比如變數(shù) i 打成 j 可用parameter宣告變數(shù)為常數(shù),以減少錯(cuò)誤並增加執(zhí)行速度 equivalence則是在特殊情況下可減少記憶體的浪費(fèi)以及增加速度 宣告結(jié)構(gòu)注意: 宣告的位置要在可執(zhí)行敘述之前,在數(shù)值計(jì)算或是輸出入指令後就不能再宣告 DATA也是宣告的一部份,也只能放在執(zhí)行指令前 通常program後接著implicit,然後宣告變數(shù),最後是DATA nIMPLICIT未經(jīng)宣告變數(shù),編輯器會(huì)以其第一個(gè)字母決定型態(tài),此稱為內(nèi)定型態(tài)。 預(yù)設(shè)的狀況是,第一個(gè)字母 i,j,k,l,m,n 的變數(shù)將被視為整數(shù)型態(tài),其他的則為浮點(diǎn)數(shù)。 IMPLICIT可以用來改變與關(guān)閉內(nèi)定型態(tài)。 1. 使用方式: implicit integer(A,B,C) ! A,B,C開頭變數(shù)視為整數(shù) implicit integer(A-D,X,Y) ! A-D,X,Y開頭變數(shù)視為整數(shù) implicit real(L-P) ! L-P開頭變數(shù)視為實(shí)數(shù) implicit none ! 關(guān)閉此項(xiàng)服務(wù),所有變數(shù)皆需經(jīng)過宣告 2. 一個(gè)程式單元可以有一個(gè)以上 IMPLICIT 敘述,但是所有 IMPLICIT 敘述必須在該程式單位所有其他宣告敘述之前才行。通常就是在program指令下一行。 3. 如果設(shè)定 IMPLICIT NONE,則所有使用者定義的名稱都必須宣告其型態(tài),未定義型態(tài)的名稱會(huì)產(chǎn)生編譯時(shí)期錯(cuò)誤。也就是說,會(huì)強(qiáng)迫你宣告所使用到的每一個(gè)變數(shù)名稱。強(qiáng)烈建議初學(xué)者使用,因?yàn)橹虒?shí)在太常遇到同學(xué)把變數(shù)名稱給拼錯(cuò)或是型態(tài)錯(cuò)誤(比如i,j,k,l,m,n開頭的變數(shù)預(yù)設(shè)為整數(shù))。 4. 一個(gè)程式單元只能有一個(gè) IMPLICIT NONE 敘述,也不能有其他的 IMPLICIT 敘述。n給定初值給定初值.DATA變數(shù)宣告後,可利用等號(hào)來給定初值,如: real pi pi = 3.14159 但若要給初值的變數(shù)很多,程式便顯得雜亂,請(qǐng)參考: 利用 DATA/./ 指令,依序給定變數(shù)初值 real a, b complex c character(10) string data a, b, c, string /1.0, 2.0, (3.0,4.0), Hello/ 則依順序,a=1.0 ,b=2.0 ,c=(3.0,4.0) ,string = Hello 使用在陣列變數(shù)中,更顯其方便:real a(4) data a /1.0 , 2.0 , 3.0 , 4.0/ F90可以將宣告與初值寫在同一行程式碼中: real : pi = 3.14159 integer : count = 0 此時(shí)冒號(hào)不可省略 給定整數(shù)資料時(shí),可以2、8、16進(jìn)位方式 若要給定28(十進(jìn)位),可採用: a = B11100 ! B 代表二進(jìn)位 (Binary) - 0,1 a = O34 ! O 代表八進(jìn)位 (Octal) - 0,1,2,3,4,5,6,7 a = Z1C ! Z 代表十六進(jìn)位 - 0,1,2,3,4,5,6,7,8,9,A,B,C,D,EnPARAMETERPARAMETER (pi=3.14159) 可將變數(shù)pi視為常數(shù)使用,通常目的在簡(jiǎn)化程式碼、減少錯(cuò)誤、方便修改以及增加可讀性 area = pi * radius*2 可讀性較 area = 3.14159 * radius*2 更好 若需將3.14159改為其他數(shù)字時(shí),只需修改如:PARAMETER (pi=3.14) 1. 注意事項(xiàng): 數(shù)值只能設(shè)定一次 在程式碼中不可去改變常數(shù)的內(nèi)容 2. 將PARAMETER (pi=3.14159)改為一般變數(shù)pi=3.14159,程式仍可執(zhí)行,但設(shè)定為常數(shù)後: 若程式碼有修改該常數(shù)內(nèi)容時(shí),編譯階段會(huì)有錯(cuò)誤訊息 若變數(shù)內(nèi)容在執(zhí)行階段不會(huì)改變,改為常數(shù)將可增加執(zhí)行速度 3. F90中,變數(shù)與常數(shù)宣告可以寫入同一行: real, parameter : pi=3.14159 ! pi前的冒號(hào)不能省略 冒號(hào)在告訴編輯器,宣告型態(tài)與設(shè)定已經(jīng)完畢,冒號(hào)後開始給定變數(shù)名稱nEQUIVALENCE(等位宣告)(等位宣告)integer a,b equivalence (a,b) 則變數(shù) a,b 將使用同一個(gè)記憶體空間,只是有兩個(gè)名稱 1. 用途之一: 程式中的暫時(shí)變數(shù),有時(shí)程式需要一些暫時(shí)使用的資料變數(shù),通常設(shè)計(jì)師會(huì)宣告一個(gè)temp變數(shù),但如此程式可讀性降低,但若每一個(gè)都各自宣告又浪費(fèi)記憶體空間,此時(shí)可以利用equivalence,讓多個(gè)暫存變數(shù)使用同一記憶體空間。 比如: integer temp_count, temp_record equivalence (temp_count, temp_record) 需注意兩個(gè)暫存變數(shù)未被同時(shí)使用,否則產(chǎn)生錯(cuò)誤 2. 用途之二: 在陣列資料中,如某一位置經(jīng)常被使用,則可以利用equivalence提昇效率。 比如: equivalence (array(2,3,4), a) 程式中需使用 array(2,3,4) 的地方改以 a 代替,除了精簡(jiǎn)版面,系統(tǒng)在陣列的處理上需從陣列起始位置換算array(2,3,4)的記憶體位置,而 a 則可以直接獲得,可提昇效率流程控制與邏輯運(yùn)算流程控制與邏輯運(yùn)算nThe Logical IF StatementIF (logical expression) statementnThe Arithmetic IF StatementIF (arithmetic expression) num1,num2,num3 expression 0 then goto num3 nThe IF-ENDIF StatementIF () THEN . . (statement group) . ENDIF .nThe ELSE StatementThe IF-ENDIF Statement IF () THEN . . (statement group 1) . ENDIF IF () THEN . . (statement group 2) . ENDIFThe ELSE Statement IF () THEN . . statement to be executed if is .TRUE. . ELSE . . statement to be executed if is .FALSE. . ENDIFnThe ELSE-IF StatementIF () THEN . . (statement group 1) . ELSEIF () THEN . . (statement group 2) . ELSEIF () THEN . . (statement group 3) . ELSEIF () THEN . . (statement group n) . ELSE . . (all false statement group) . ENDIFnNesting IF-ENDIF StructuresIF () THEN . . IF () THEN . . ENDIF . . ENDIFnLogical ExpressionnLOGICAL TypeThe s are logical expressions, which can only have values .TRUE. and .FALSE. nLogical expressionsnRelational expressions (comparisons) nLogical variable n.NOT. logical expressions (logical complement) nLogical expressions .AND. Logical expressions (logical conjunction) nLogical expressions .OR. Logical expressions (logical disjunction) nLogical expressions .EQV. Logical expressions (logical equivalence) nLogical expressions .NEQV. Logical expressions (logical differ) nRelational expressions compare two numeric or character quantities, and have the following form: quantity quantity nRelational operator (quantity quantity)F77使用縮寫F90可用符號(hào)代表意義.EQ.= equal to.NE./= not equal to.LT. greater than.LE.= greater than or equal tonLogical operatorsAB.NOT. AA .AND. BA .OR. BA .EQV. BA .NEQV. BTrueTrueFalseTrueTrueTrueFalseTrueFalseFalseFalseTrueFalseTrueFalseTrueTrueFalseTrueFalseTrueFalseFalseTrueFalseFalseTrueFalsen浮點(diǎn)數(shù)與字元的邏輯運(yùn)算浮點(diǎn)數(shù)與字元的邏輯運(yùn)算n浮點(diǎn)數(shù) Example:na = (3.*0.5)* 2b = 3.- b - a 不會(huì)等於 0.0 ,(b-a .EQ. 0.0) is .FALSE. n理論上 b - a 應(yīng)等於 0.0 ,但受計(jì)算浮點(diǎn)數(shù) a 時(shí)有效位數(shù)的影響,(3.*0.5)即產(chǎn)生誤差,再平方後只是接近 3. 的數(shù)字但並不等於 3. ,所以 (b-a .EQ. 0) 邏輯值為 .FALSE. n將 a 值做螢?zāi)惠敵觯玫?a = 0.0?可能是輸出格式的限制,所見為近似值(如已四捨五入) n一般會(huì)採絕對(duì)或相對(duì)誤差來判斷,如if (abs(b-a) .LE. 0.000001) then . 或if (abs(b-a)/b .LE. 0.000001) then . 註:abs函數(shù)可以傳回絕對(duì)值 n上例中,若改為 a = (4.*0.5)* 4 - 3. ,因 (4.*0.5) 得到 2. 沒有有效位數(shù)不足的問題,所以 b - a 值會(huì)等於 0.0 n字元的比較:n字元可以比較大小,依其ASCII編碼順序a b , ascii(a)=97,ascii(b)=98A a , ascii(A)=65,ascii(a)=97 ! ascii非內(nèi)建函數(shù),只是為了表達(dá)方便,請(qǐng)參考ichar n字串比較時(shí),則依字母順序一一比較下來abcd axyznSELECT CASEF90新增,但幾乎所有F77編譯器都有支援SELECT CASE (variable) CASE (value-1) . . (statement group 1) . CASE (value-2) . . (statement group 2) . CASE (value-3) . . (statement group 3) . CASE DEFAULT . . (all false statement group) . END SELECTn補(bǔ)充說明:ncase default 區(qū)段非必要 nCASE(value) 中,(value)可用(value1:value2),如 1:5 表示當(dāng) 1變數(shù)5 時(shí)執(zhí)行該區(qū)段 n可取代IF-ELSE IF,但只接受整數(shù)、字元、邏輯變數(shù),不能使用浮點(diǎn)數(shù)和複數(shù) nCASE中的數(shù)值,必須是常數(shù) nGOTO在F77以前做為流程與迴圈控制,但由於容易造成程式結(jié)構(gòu)混亂、降低可讀性、並產(chǎn)生錯(cuò)誤,所以不建議使用。Example 1: (IF-ELSE) if (a .GE. 60) then goto 100 print *, pass! goto 200100 print *, 200 stopExample 2: (LOOP) sum = 0 count = 1100 if (count .GT. 10) then goto 200 sum = sum + count count = count + 1 goto 100200 print *, sum stopnPAUSE.CONTINUE.STOPnPAUSE程式執(zhí)行至此,會(huì)暫停,並等待使用者按下 ENTER 鍵後繼續(xù),在有大量資料作螢?zāi)惠敵鰰r(shí)使用 nCONTINUE表示繼續(xù)往下執(zhí)行,而就算沒有這行,也會(huì)繼續(xù)啊.在F77中,通常只是為了方便閱讀程式碼,比如與GOTO配合做迴圈使用時(shí) nSTOP結(jié)束程式執(zhí)行,比如在 IF 中,當(dāng)某條件成立或不成立,程式就必須中斷使用此指令要小心,以免反致程式結(jié)構(gòu)混亂,不該終止被終止 迴圈迴圈nThe CONTINUE and GOTO statementsn由於 GOTO 的使用不當(dāng)將造成程式結(jié)構(gòu)混亂,且其閱讀性差,從 Fortran 77 開始,已經(jīng)不建議使用 GOTO ,而利用 DO 指令。 n利用GOTO強(qiáng)制程式回到特定指令行,形成迴圈: . statement preceding loop . CONTINUE . loop body . GOTO . statement following loop . nloop body 需加入迴圈終止判斷,Conditional termination of loop execution nIF GOTO nIF THEN . statement to be executed just prior . to leaving the loop at this point. GOTO ENDIF nIndexed Looping = * . top of indexed loop . 100 CONTINUE IF ( .GT. GOTO 199 . . loop statement . = + GOTO 100 * . bottom of indexed loop . 199 CONTINUEnDO statements (Indexed Looping)Fortran 77語法: DO = , . . loop statement . CONTINUE 1. 第一次執(zhí)行DO指令, = 2. 每執(zhí)行一次迴圈loop statement,就會(huì)加上 但迴圈中不可透過其他程式碼改變 數(shù)值,編譯時(shí)將發(fā)生錯(cuò)誤 DO 100 count = 1,10 ! 行號(hào) 100 表示迴圈程式碼結(jié)束位置 i = i + 1 ! 改變計(jì)數(shù)器的值,編譯時(shí)將產(chǎn)生錯(cuò)誤訊息 100 CONTINUE 3. 當(dāng) ,繼續(xù)重複迴圈 , 迴圈結(jié)束後, 一定大於 4. , 可以使用常數(shù)或變數(shù) 但需注意的是,變數(shù)僅在進(jìn)入迴圈時(shí)被讀取一次,迴圈中改變不影響迴圈 執(zhí)行狀況 program test integer start , end , inc , i start = 1 end = 10 inc = 1 do i = start, end, inc ! 用enddo做迴圈程式碼結(jié)束位置,F(xiàn)90標(biāo)準(zhǔn),77多支援 start = 3 end = end - 1 inc = -2 print *, i , end ! 可觀察到變數(shù)內(nèi)容的改變不影響 i 從 1 累加到 10 enddo print *, i end5. 可以是負(fù)數(shù),EX:DO i = 10, 1, -1 6. 若未提供,預(yù)設(shè)為 1 EX: 如要計(jì)算 2+4+6+8+10+12 ,標(biāo)準(zhǔn)的: ans = 0 ! 給定初值,變數(shù)宣告後初值不一定會(huì)是 0 DO 100 count = 2,12,2 ! 行號(hào) 100 表示迴圈程式碼結(jié)束位置 100 ans = ans + count CONTINUE指令沒有實(shí)際的用途,利用其做為程式碼的包裝,方便閱讀: ans = 0 ! 給定初值,變數(shù)宣告後初值不一定會(huì)是 0 DO 100 count = 2,12,2 ans = ans + count 100 CONTINUE ! 迴圈結(jié)束後, count = 14Fortran 90語法:(不需label,使用 enddo 做為結(jié)束,多數(shù)F77已支援) do = , . . loop statement . end do 以上例而言 ans = 0 ! 給定初值,變數(shù)宣告後初值不一定會(huì)是 0 do count = 2,12,2 ans = ans + count end do ! 迴圈結(jié)束後, count = 14 Nested Loops: A loop body may itself contain a loop, and such nesting may be arbitrarily deep. do i = 1, 5 do j = 1, 3 print *, a(i,j) ! 共執(zhí)行 15 次 print 指令 (5*3) end do end donDO WHILEdo while (logical expression) ! 邏輯運(yùn)算成立時(shí),執(zhí)行迴圈內(nèi)容 . . end do DO 迴圈用在可事先知道或控制迴圈執(zhí)行次數(shù),DO WHILE 迴圈則是不能預(yù)知執(zhí)行次數(shù)時(shí),比如猜數(shù)字程式。nCYCLE, EXITCYCLE、 EXIT 為 Fortran 90新增,但多數(shù) 77 的編譯器可用 CYCLE 指令可以略過程式區(qū)塊中,CYCLE 指令後面的所有所有程式碼,直接跳下一次迴圈執(zhí)行。 EX:對(duì)某些較小的資料量採取忽略的動(dòng)作 do while (.true.) print *, Speed = ? (must 99) read *, speed if (speed .LT. 100) cycle ! 當(dāng)speed小於100時(shí),重新開始迴圈 . end do EXIT 可以直接結(jié)束迴圈執(zhí)行。 EX:做數(shù)字總和,有一千筆資料,但若資料為0表示資料已結(jié)束,可利用 EXIT 提早結(jié)束迴圈。 do i = 1, 1000 sum = sum + a(i) if (a(i) .EQ. 0) exit ! 當(dāng)條件成立,提前結(jié)束陣列 enddon迴圈命名迴圈命名迴圈經(jīng)過命名後,配合end do、cycle、exit的使用,可加強(qiáng)程式可讀性以減少出錯(cuò),並能使結(jié)構(gòu)更具彈性。 命名方法: : do . 配合使用:在 end do、cycle、exit 後面加上 EX: outer: do i = 1, 10 ! 將第一層迴圈命名為 outer inner: do j = 1, 10 ! 將第二層迴圈命名為 inner . if (i = 3) exit outer ! 當(dāng)i=3,直接跳離外部迴圈,進(jìn)行 i=4 迴圈 if (j = 5) cycle inner ! 當(dāng)j=5,忽略內(nèi)部迴圈剩下的程式區(qū)塊 . enddo inner enddo outer陣列陣列n一維陣列一維陣列宣告方式: () data type可用integer、real、complex、logical也可用自訂型態(tài)type 產(chǎn)生 size 組記憶體位置,size 必須是常數(shù),EX: integer parameter : count = 10 real a(10), b(count) ! a, b均為包含10個(gè)實(shí)數(shù)的陣列 各種宣告方式: integer a(10) ! 最簡(jiǎn)單的方法 integer, dimension(10) : a ! F90 另一種寫法 INTEGER a ! F77 的作法,先宣告型態(tài),配合下行 DIMENSION a(10) ! 再宣告 a 的容量大小 叫用方法:() integer a(10) read *, a(2) ! 從鍵盤輸入數(shù)值,置入 a 陣列中第二組記憶體位置 print *, a(2) ! 將 a 陣列中第二組記憶體位置內(nèi)容印出n宣告指定索引值宣告指定索引值宣告方式: (:) integer a(0:10) real b(-100:100) 基本的陣列宣告,如 real a(10) 則 a(n) 代表陣列 a 中第 n 組記憶體位置內(nèi)容,但經(jīng)常為了可讀性問題,如數(shù)列 a0,a1,a2,a3,.,a9 ,共十個(gè)元素,若宣告為 a(10),則 a(1) = a0 a(2) = a1 在使用上會(huì)造成混淆,所以在宣告陣列時(shí)可以利用 a(0:10) ,則 a(0) = a0 a(1) = a1 不會(huì)造成混淆,此時(shí),a(0)代表陣列 a 中第 1 組記憶體位置內(nèi)容,a(n)代表陣列 a 中第 n+1 組記憶體位置內(nèi)容。 即,宣告 a(i:j),則 a(i+n) 代表第 n+1 個(gè)記憶體位置內(nèi)容。n二維陣列二維陣列宣告方式: () integer a(3,4) real b(0:5,10) 舉例:使用 C(10,4) 記錄班級(jí)十位同學(xué),四個(gè)科目分?jǐn)?shù)如下表:座號(hào)國(guó)文英文數(shù)學(xué)歷史180857580290858090375809085.資料可對(duì)應(yīng)如下:座號(hào)國(guó)文英文數(shù)學(xué)歷史1C(1,1)C(1,2)C(1,3)C(1,4)2C(2,1)C(2,2)C(2,3)C(2,4)3C(3,1)C(3,2)C(3,3)C(3,4).所以座號(hào) 2 同學(xué)的數(shù)學(xué)分?jǐn)?shù),就是 C(2,3) 各種宣告方式: integer a(10,10) ! 最簡(jiǎn)單的方法 integer, dimension(10,10) : a ! F90 另一種寫法 INTEGER a ! F77 的作法,先宣告型態(tài),配合下行 DIMENSION a(10,10) ! 再宣告 a 的容量大小n多維陣列多維陣列宣告方式: (),最多到七維陣列 integer a(3,4,5) read *, a(2,2,3) print *, a(2,2,3)n記憶體配置記憶體配置DIMENSION A(5), B(0:4), C(3,4), E(12)A:A(1)A(2)A(3)A(4)A(5)B:B(0)B(1)B(2)B(3)B(4)C:C(1,1)C(1,2)C(1,3)C(1,4)C(2,1)C(2,2)C(2,3)C(2,4)C(3,1)C(3,2)C(3,3)C(3,4) equivalence C,EC:E:C(1,1) C(2,1) C(3,1) C(1,2) C(2,2) C(3,2) C(1,3) C(2,3) C(3,3) C(1,4) C(2,4) C(3,4)E(1)E(2)E(3)E(4)E(5)E(6)E(7)E(8)E(9)E(10)E(11)E(12)Columnwise storage of data: addr(a(i,j) = addr(a(1,1)+(j-i)*lda +(i-1) lda is the Leading Dimension of A效率注意,一起使用的資料,放在同一Column:資料不連續(xù),效率差資料連續(xù),效率好do i = 1, 5 sum = sum + a(1,i)enddodo i = 1, 5 sum = sum + a(i,1)enddo另外,多維陣列在處理記憶體位置較耗時(shí),使用時(shí)須注意。n大小限制大小限制以 Compaq Visual Fortran 6.5 為例,整個(gè)程式使用記憶體大小以 256MB 為上限。參考錯(cuò)誤訊息如下:-Linker Tools Warning LNK4084total image size size exceeds max (256MB); image may not runThe application exceeds the limit of 256 megabytes. -n設(shè)定初值設(shè)定初值.DATA.隱藏式迴圈隱藏式迴圈和一般變數(shù)相同,同樣可以利用DATA來給定初值 integer A(5) data A/1,2,3,4,5/ ! A(1)=1,A(2)=2,A(3)=3,A(4)=4,A(5)=5 data A/5*3/ ! /5*3/表示有5個(gè)3,等於/3,3,3,3,3/ ! A(1)=3,A(2)=3,A(3)=3,A(4)=3,A(5)=3 data (A(i),i=2,4) /2,3,4/ ! 使用隱藏式迴圈,只設(shè)定A(i), i=2,3,4 ! A(2)=2,A(3)=3,A(4)=4, A(1)及A(5)未設(shè)定 integer B(2,3) data ( (B(i,j),i=1,2) , j=1,3 ) /1,2,3,4,5,6/ ! 巢狀隱藏式迴圈,B(1,1)=1, B(2,1)=2, B(1,2)=3, B(2,2)=4, B(1,3)=5 ,B(2,3)=6 Fortran 90新增:(省去DATA) integer : a(5) = (/1,2,3,4,5/) ! 直接宣告並給初值,但必須5個(gè)元素都給 ! A(1)=1,A(2)=2,A(3)=3,A(4)=4,A(5)=5 integer : a(5) = (/1,(2,i=2,4),5/) ! 結(jié)合隱藏式迴圈 ! A(1)=1,A(2)=2,A(3)=2,A(4)=2,A(5)=5 integer : a(5) = (/(i,i=1,5)/) ! A(i)=i, i=15nALLOCATABLE - Fortran 90新增新增 一般在宣告陣列時(shí)必須指定大小,但有些問題在執(zhí)行階段才知道需要多大的陣列,這時(shí)經(jīng)常的解決辦法就是宣告一個(gè)足夠大的陣列,並告知使用者操作限制,如: integer student(100), stu_count print *,輸入學(xué)生人數(shù)(MAX:100) read *, stu_count do i = 1, stu_count print *, 請(qǐng)輸入第,i,位同學(xué)成績(jī) read *, student(i) end do .Fortran 90則可以透過ALLOCATABLE來解決這個(gè)問題: integer, allocatable : student(:) ! 宣告一個(gè)可變大小的一維陣列 integer : stu_count print *,輸入學(xué)生人數(shù): read *, stu_count allocate( student(stu_count) ) ! 配置stu_count個(gè)記憶體空間 do i = 1, stu_count print *, 請(qǐng)輸入第,i,位同學(xué)成績(jī) read *, student(i) end do .n宣告注意:這裡需要 allocatable 和 allocate 兩個(gè)指令的配合,allocatable配合陣列宣告時(shí)使用,但陣列大小以:代替即可;當(dāng)知道所需陣列大小時(shí),再以 allocate 配置記憶體空間大小。 n配置是否成功:由於記憶體是有限的,不一定每次都會(huì)配置成功,如何得知是否配置成功?可寫成 allocate( student(stu_count), stat=error ) ,error是宣告好的整數(shù)變數(shù),若成功,error傳為 0 ,其他數(shù)值表示失敗。 n解除配置空間:當(dāng)該空間使用完畢,也可以透過 deallocate 指令來釋放配置空間: 如:deallocate( student ) 完整的語法如下: DEALLOCATE ( object , object ., STAT=sv ) object:Is a structure component or the name of a variable, and must be a pointer or allocatable array. sv:Is a scalar integer variable in which the status of the deallocation is stored. n多維陣列:integer, allocatable : stu_2(:,:) ! 兩個(gè)冒號(hào)代表二維陣列integer, allocatable : stu_3(:,:,:) ! 三個(gè)冒號(hào)代表三維陣列allocate( stu_2(3,3) )allocate( stu_2(4,4,4) ) n指定索引座標(biāo)範(fàn)圍:integer, allocatable : stu_1(:)integer, allocatable : stu_2(:,:) ! 兩個(gè)冒號(hào)代表二維陣列allocate( stu_1(-3:3) )allocate( stu_2(-3:3,0:5) ) n相關(guān)函數(shù):allocated 可傳回陣列是否已經(jīng)配置記憶體nALLOCATED檢查一可變大小的矩陣是否已經(jīng)配置記憶體,函數(shù)會(huì)傳回一個(gè)邏輯值。如: if ( .not. allocated(a) ) then allocate( a(5) ) end if 上例中,檢查陣列 a 是否已經(jīng)配置,若無,則配置 5 個(gè)記憶體空間。 相關(guān)指令請(qǐng)參考:allocatable函式函式函式是Subroutine(副程式)與Function(自訂函數(shù))的統(tǒng)稱。 迴圈可以讓程式在相同的地方重複執(zhí)行某一段程式碼,函式則可以在不同的地方被重複使用,二者的應(yīng)用範(fàn)圍不同。 撰寫程式時(shí),當(dāng)某一段具備特定功能的程式碼被重複撰寫時(shí),可以將之包裝成函式,在使用時(shí)叫用該段函式(比如使用CALL指令呼叫副程式),如此可使得程式撰寫更有效率,可讀性也增加許多。nSubroutine(副程式)(副程式)舉例如下: ! 使用者輸入兩個(gè)數(shù)字,傳入swap函式做交換後輸出 ! 本例可用DO迴圈,但利用函式,在程式其他部分也可以呼叫函式功能 program Swap_2_Real do while (.true) read *, value1, value2 ! 使用這從鍵盤輸入兩數(shù)字 if (value1 .eq. value2) stop ! 若輸入兩數(shù)字相同,則停止程式 call swap(value1, value2) ! 呼叫 swap函式,做兩數(shù)交換 print *, value1, value2 ! 將交換之兩數(shù)印出 end do stop end! 交換兩數(shù)的函式 - swap subroutine swap(a, b) real a, b real temp temp = a ! 將 a 值先做保留 a = b ! 將 b 的值置入 a 記憶體位置中 b = temp ! 將剛剛保留下的 a 值置入 b 記憶體位置中 return ! 返回呼叫程式 end 語法: Calling programs (main program, subroutines) CALL () - Called programs (subroutines, intrinsic functions) SUBROUTINE () END SUBROUTINE (Fortran 77只用END) - Note:Arguments are passed by reference: that is, their addresses are passed.注意事項(xiàng): 副程式的命名應(yīng)有意義並且不隨意變更,因?yàn)楦背淌娇赡芴峁┒鄠€(gè)程式呼叫使用,甚至由團(tuán)隊(duì)中不同人員叫用;修正時(shí),需修改原程式叫用部分並更新相關(guān)文件。 原始檔中,未規(guī)定主程式program與副程式subroutine先後順序;但編譯後執(zhí)行,主程式會(huì)被自動(dòng)執(zhí)行,副程式則是被動(dòng)需被叫用才執(zhí)行。 要返回主程式使用return指令,return可放在副程式中任意位置;使用sto

注意事項(xiàng)

本文(fortran教程[共91頁])為本站會(huì)員(gfy****yf)主動(dòng)上傳,裝配圖網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)上載內(nèi)容本身不做任何修改或編輯。 若此文所含內(nèi)容侵犯了您的版權(quán)或隱私,請(qǐng)立即通知裝配圖網(wǎng)(點(diǎn)擊聯(lián)系客服),我們立即給予刪除!

溫馨提示:如果因?yàn)榫W(wǎng)速或其他原因下載失敗請(qǐng)重新下載,重復(fù)下載不扣分。




關(guān)于我們 - 網(wǎng)站聲明 - 網(wǎng)站地圖 - 資源地圖 - 友情鏈接 - 網(wǎng)站客服 - 聯(lián)系我們

copyright@ 2023-2025  zhuangpeitu.com 裝配圖網(wǎng)版權(quán)所有   聯(lián)系電話:18123376007

備案號(hào):ICP2024067431號(hào)-1 川公網(wǎng)安備51140202000466號(hào)


本站為文檔C2C交易模式,即用戶上傳的文檔直接被用戶下載,本站只是中間服務(wù)平臺(tái),本站所有文檔下載所得的收益歸上傳人(含作者)所有。裝配圖網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)上載內(nèi)容本身不做任何修改或編輯。若文檔所含內(nèi)容侵犯了您的版權(quán)或隱私,請(qǐng)立即通知裝配圖網(wǎng),我們立即給予刪除!