格式化輸入輸出授課版_第1頁(yè)
格式化輸入輸出授課版_第2頁(yè)
格式化輸入輸出授課版_第3頁(yè)
格式化輸入輸出授課版_第4頁(yè)
格式化輸入輸出授課版_第5頁(yè)
已閱讀5頁(yè),還剩20頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

第九章格式化輸入/輸出及文件操作第九章格式化輸入/輸出及文件操作

采用程序解決各類問(wèn)題,需要有文件的輸入和輸出。格式化的文件輸入輸出操作可以有效的幫助我們理解問(wèn)題。本章著重探討格式化輸入/輸出格式編輯符、輸入/輸出語(yǔ)句及操作,包括:

1PRINT語(yǔ)句

2格式編輯符

3READ語(yǔ)句

4WRITE語(yǔ)句

5內(nèi)部文件

6外部文件

7不換行的讀寫一、READ語(yǔ)句READ語(yǔ)句有兩種根本形式:READfmt[,list]READ([UNIT=]u,[FMT]=fmt)[,list]*fmt指明了輸入所用的格式,有以下3種形式:格式說(shuō)明符為“*〞,表示按照表控格式;格式說(shuō)明符為字符串。例如輸入語(yǔ)句:READ(*,'(I2,2I3)')I,J,K格式說(shuō)明符是格式語(yǔ)句FORMAT的語(yǔ)句標(biāo)號(hào)。READ(*,10)I,J,K10FORMAT(I2,2I3)*u是設(shè)備描述符,用于指明具體使用的輸入設(shè)備。u可以是一個(gè)無(wú)符號(hào)整型常量、整型變量或整型表達(dá)式。當(dāng)設(shè)備描述符是“*〞時(shí),表示從默認(rèn)的設(shè)備〔一般是鍵盤〕輸入。*list是變量列表,指定了輸入的具體內(nèi)容。變量列表不允許是常量或者表達(dá)式,但可以是隱含DO循環(huán)。語(yǔ)句中允許變量列表為空,此時(shí)READ語(yǔ)句將等待用戶輸入,指導(dǎo)用戶鍵入回車鍵。第一節(jié)輸入輸出語(yǔ)句與格式語(yǔ)句二、PRINT語(yǔ)句(向計(jì)算機(jī)的默認(rèn)輸出設(shè)備〔即屏幕〕上輸出數(shù)據(jù))PRINT語(yǔ)句的形式為:PRINTfmt[,list]*fmt指明了輸入所用的格式,有以下3種形式:格式說(shuō)明符為“*〞,表示按照表控格式;格式說(shuō)明符為字符串。例如:PRINT'(I2,2I3)',I,J,K格式說(shuō)明符是格式語(yǔ)句FORMAT的語(yǔ)句標(biāo)號(hào)〔1~99999〕。PRINT10,I,J,K10FORMAT(I2,2I3)*list是變量列表,指定了輸入的具體內(nèi)容。變量列表不允許是常量或者表達(dá)式,但可以是隱含DO循環(huán)。語(yǔ)句中允許變量列表為空,此時(shí)PRINT語(yǔ)句的作用是輸出一個(gè)空行。第一節(jié)輸入輸出語(yǔ)句與格式語(yǔ)句三、WRITE語(yǔ)句WRITE語(yǔ)句的根本形式為:WRITE([UNIT=]u,[FMT]=fmt)[,list]*u是設(shè)備描述符,用于指明具體使用的輸出設(shè)備。u可以是一個(gè)無(wú)符號(hào)整型常量,也可以是一個(gè)整型變量或者整型表達(dá)式。當(dāng)設(shè)備描述符是“*〞時(shí),表示從計(jì)算機(jī)預(yù)先設(shè)定的外部設(shè)備〔一般為顯示器〕輸出。*fmt指明了輸出所用的格式,用法與PRINT語(yǔ)句相同。*list是變量列表,指定了輸出的具體內(nèi)容。變量列表可以是變量、常量、函數(shù)以及表達(dá)式,還可以是隱含DO循環(huán)。第一節(jié)輸入輸出語(yǔ)句與格式語(yǔ)句四、FORMAT語(yǔ)句FORMAT語(yǔ)句即為格式語(yǔ)句,形式為:FORMAT〔format-list〕其中:format-list表示格式說(shuō)明列表。例:FORMAT〔1X,F6.2,/,2(1X,I4):E14.7,’FORTRAN’〕“F6.2〞,“I4〞,“E14.7〞是數(shù)據(jù)格式編輯符;“1X〞,“/〞,“:〞是控制格式編輯符;“2(1X,I4)〞中的“2〞是重復(fù)系數(shù),用于編輯符的重置;而由單引號(hào)引用的字符串“FORTRAN〞將被直接輸出。四、FORMAT語(yǔ)句要使用FORMAT語(yǔ)句必須為其設(shè)置標(biāo)號(hào),以便在輸入輸出語(yǔ)句中進(jìn)行引用。標(biāo)號(hào)的大小與語(yǔ)句出現(xiàn)先后沒(méi)有關(guān)系??梢猿霈F(xiàn)在程序單元內(nèi)部的任何位置。例9-1MODULESTUMODTYPESTUCHARACTER(4)::NOREAL::CHINESE,MATH,ENGLISH,TOTALENDTYPEENDMODULEPROGRAMMAINUSESTUMODIMPLICITNONETYPE(STU)S(5),TEMP

INTEGERI,JDOI=1,5"

WRITE(*,'("請(qǐng)輸入第",I1,"位學(xué)生的學(xué)號(hào)以及語(yǔ)文、數(shù)學(xué),英語(yǔ)成績(jī):")',I

READ(*,*)S(I)%NO,S(I)%CHINESE,S(I)%MATH,S(I)%ENGLISHS(I)%TOTAL=S(I)%CHINESE+S(I)%MATH+S(I)%ENGLISHENDDO例9-1續(xù)!按照總分排序

DOI=1,4DOJ=I+1,5IF(S(I)%TOTAL<S(J)%TOTAL)THEN TEMP=S(I) S(I)=S(J) S(J)=TEMP ENDIFENDDOENDDOPRINT1010FORMAT('學(xué)號(hào)',T12,'語(yǔ)文',T27,'數(shù)學(xué)',T42,'英語(yǔ)',T57,'總分'/&5('-'),T12,5('-'),T27,5('-'),T42,5('-'),T57,5('-'))PRINT20,(S(I)%NO,S(I)%CHINESE,S(I)%MATH,&S(I)%ENGLISH,S(I)%TOTAL,I=1,5)20FORMAT(A4,T12,F5.2,T27,F5.2,T42,F5.2,T57,F6.2)ENDPROGRAMMAINI編輯符一般形式為: Iw[.m]w表示以w個(gè)字符的寬度來(lái)輸出整數(shù),負(fù)數(shù)的負(fù)號(hào)也包含在字符寬度內(nèi)。如果輸出數(shù)據(jù)的實(shí)際寬度小于w,那么數(shù)據(jù)前面缺乏局部用空格填充;如果輸出數(shù)據(jù)實(shí)際寬度超過(guò)w,那么不輸出有效數(shù)據(jù),而在該字段范圍內(nèi)用星號(hào)“*〞填充。m表示至少需輸出m個(gè)字符寬度的數(shù)字。例如輸出語(yǔ)句:WRITE(*,'(I4)')100WRITE(*,'(I3)')-100WRITE(*,'(I5.4)')100執(zhí)行結(jié)果為:□100***□0100第二節(jié)格式編輯符F編輯符F編輯符用于輸入輸出小數(shù)形式的實(shí)數(shù),其一般形式為:Fw.dw表示以w個(gè)字符的寬度來(lái)輸出實(shí)數(shù),小數(shù)點(diǎn)和負(fù)數(shù)的負(fù)號(hào)也包含在字符寬度內(nèi)。如果輸出數(shù)據(jù)的實(shí)際寬度小于w,那么數(shù)據(jù)前面缺乏局部用空格填充;如果輸出數(shù)據(jù)實(shí)際寬度超過(guò)w,那么不輸出有效數(shù)據(jù),而在該字段范圍內(nèi)用星號(hào)“*〞填充。d表示要輸出數(shù)據(jù)的小數(shù)位數(shù)。如果輸出的實(shí)際數(shù)據(jù)的小數(shù)位數(shù)小于d,那么會(huì)在小數(shù)后缺乏的局部補(bǔ)充0;如果輸出的實(shí)際數(shù)據(jù)的小數(shù)位數(shù)大于d,那么會(huì)將多余的小數(shù)局部四舍五入處理。例如輸出語(yǔ)句:WRITE(*,'(F5.2)')3.14WRITE(*,'(F4.2)')-3.14WRITE(*,'(F8.6)')3.141592653執(zhí)行結(jié)果為:□3.14****3.141593三、E編輯符E編輯符用于輸入輸出指數(shù)形式的實(shí)數(shù),其一般形式為:Ew.d[Ee]w表示以w個(gè)字符的寬度來(lái)輸出實(shí)數(shù),包含指數(shù)局部所占的4個(gè)字符的寬度和負(fù)數(shù)的負(fù)號(hào),如果輸出數(shù)據(jù)的實(shí)際寬度小于w,那么數(shù)據(jù)前面缺乏局部用空格填充;如果輸出數(shù)據(jù)實(shí)際寬度超過(guò)w,那么不輸出有效數(shù)據(jù),而在該字段范圍內(nèi)用星號(hào)“*〞填充。d表示要輸出數(shù)據(jù)的小數(shù)位數(shù),如果實(shí)際數(shù)據(jù)在指數(shù)形式下的小數(shù)位數(shù)小于d,那么會(huì)在小數(shù)后缺乏的局部補(bǔ)充0;如果實(shí)際數(shù)據(jù)在指數(shù)形式下的小數(shù)位數(shù)大于d,那么會(huì)將多余的小數(shù)局部四舍五入處理。e表示要輸出數(shù)據(jù)的指數(shù)局部數(shù)字的位數(shù),如果指數(shù)局部實(shí)際數(shù)字位數(shù)小于e,那么前面缺乏局部用0補(bǔ)充。例如輸出語(yǔ)句:WRITE(*,'(E14.7)')1234.56WRITE(*,'(E14.5)')1234.56WRITE(*,'(E14.7E3)')1234.56執(zhí)行結(jié)果為:□0.1234560E+03□□□0.12346E+030.1234560E+003四、A編輯符A編輯符用于字符型數(shù)據(jù)的輸出,其一般形式為:A[w]w指示以w個(gè)字符的寬度來(lái)輸出字符型數(shù)據(jù)。如果輸出字符型數(shù)據(jù)長(zhǎng)度小于w,那么在數(shù)據(jù)的左端用空格填充;如果待輸出字符型數(shù)據(jù)長(zhǎng)度大于w,那么只輸出最左端的w個(gè)字符。省略w時(shí),按字符數(shù)據(jù)的實(shí)際長(zhǎng)度輸出。例如輸出語(yǔ)句:CHARACTER(14)::STRINGSTRING='I''MASTUDENT.'WRITE(*,'(A16)')STRINGWRITE(*,'(A8)')STRINGWRITE(*,'(A)')STRING執(zhí)行結(jié)果為:□□I'MASTUDENT.I’MASTI'MASTUDENT.五、L編輯符L編輯符用于邏輯型數(shù)據(jù)的輸出,其一般形式為:Lww表示以w個(gè)字符寬度輸出邏輯型數(shù)據(jù)。由于邏輯型數(shù)據(jù)在輸出時(shí)只顯示一個(gè)字符,即.TRUE.打印為“T〞,.FALSE.打印為“F〞。因此w大于1時(shí),字符左端用空格填充。例如輸出語(yǔ)句:LOGICAL::B=.TRUE.WRITE(*,'(L1)')BWRITE(*,'(L3)').FALSE.執(zhí)行結(jié)果為:T□□F一、制表位編輯符制表位編輯符用于控制輸出項(xiàng)的輸出位置,其一般形式為:TnTLnTRn其中n是非零正整數(shù)。Tn表示將制表位移到第n列;TRn表示將制表位從當(dāng)前位置向右移動(dòng)n列;TLn表示將制表位從當(dāng)前位置向左移動(dòng)n列(最多移動(dòng)至第一列)。輸入語(yǔ)句:READ(*,'(I4,TL3,I4)')I,J當(dāng)輸入數(shù)據(jù)12345678時(shí),執(zhí)行該語(yǔ)句后I=1234,J=2345〔而不是5678〕。輸出語(yǔ)句:WRITE(*,'(T10,"POS=",I1,TL15,"POS=",I1,TR10,"POS=",I1)')1,2,3執(zhí)行結(jié)果為:POS=2□□□□POS=1□□□□□□□□□□POS=3第三節(jié)控制格式編輯符二、斜杠編輯符斜杠編輯符的作用是開(kāi)始新的輸出行,其一般形式為:[r]/其中:r為重復(fù)系數(shù),用r個(gè)連續(xù)的斜杠,可以到達(dá)輸出r-1個(gè)空行的效果。例如輸出語(yǔ)句:WRITE(*,'("I=",I2,/,"J=",I2,2/,"K=",I2)')1,2,4執(zhí)行結(jié)果為:I=□1J=□2K=□4其中:斜杠編輯符之后的逗號(hào)可以省略。另外,在沒(méi)有重復(fù)系數(shù)的情況下,斜杠編輯符前的逗號(hào)也可以省略。三、冒號(hào)編輯符冒號(hào)編輯符的作用是當(dāng)輸出列表中沒(méi)有更多的數(shù)據(jù)項(xiàng)時(shí),使格式控制結(jié)束。例如輸出語(yǔ)句:

WRITE(*,'("I=",I2,"J=",I2,"K=",I2)')10,20 WRITE(*,'("I=",I2,:,"J=",I2,:,"K=",I2)')10,20執(zhí)行結(jié)果為:I=10□J=20□K=I=10□J=20□其中:冒號(hào)編輯符前后的逗號(hào)都可以省略四、X編輯符X編輯符的作用是產(chǎn)生空格,其一般形式為:nX其中:n為插入的空格數(shù)量。n不能省略,即使n為1,也要寫為1X。例如輸出語(yǔ)句:WRITE(*,'("I=",I2,1X,"J=",I2,2X,"K=",I2)')10,20,30執(zhí)行結(jié)果為:I=20□J=20□□K=30五、編輯符重置數(shù)據(jù)格式和控制格式編輯符中,有不少重復(fù)編輯符。重復(fù)系數(shù)可以應(yīng)用到括號(hào)包圍的一組編輯符,還可以嵌套使用。例如輸出語(yǔ)句: WRITE(*,'(3(1X,I2))')10,20,30執(zhí)行結(jié)果為: □10□20□30五、編輯符重置如果可重復(fù)編輯符的個(gè)數(shù)少于輸入輸出項(xiàng)的個(gè)數(shù),那么按順序用完最后一個(gè)可重復(fù)編輯符后,再重復(fù)使用格式說(shuō)明,但產(chǎn)生一個(gè)新記錄。例如輸出語(yǔ)句: WRITE(*,'(I2,1X,I3)')12,123,34執(zhí)行結(jié)果為:12□12334同樣,例如輸入語(yǔ)句:READ10,I,J10FORMAT(I1)假設(shè)輸入兩行數(shù)據(jù):1234 I和J分別被讀為1和3。第四節(jié)文件操作一、文件與邏輯設(shè)備文件(File)一般指由假設(shè)干個(gè)邏輯記錄構(gòu)成的數(shù)據(jù)集合,在FORTRAN的輸入輸出系統(tǒng)里,所有的數(shù)據(jù)來(lái)源和數(shù)據(jù)發(fā)送目標(biāo)都被認(rèn)為是文件。文件是由一個(gè)個(gè)記錄組成的。所謂記錄是指數(shù)字或者字符的序列,一個(gè)記錄就是一系列數(shù)字或者字符的集合。在進(jìn)行文件的存取操作時(shí),根本的操作單位是記錄。一個(gè)記錄會(huì)被看作一個(gè)整體,其中的數(shù)字或者字符會(huì)被一次性的讀出或者寫入,而不管具體有幾個(gè)數(shù)字或者幾個(gè)字符。一、文件與邏輯設(shè)備在FORTRAN語(yǔ)言中對(duì)文件和外部設(shè)備的操作都要通過(guò)邏輯設(shè)備才能進(jìn)行。在對(duì)文件和外部設(shè)備進(jìn)行操作之前,都要把它們連接到相應(yīng)的邏輯設(shè)備上。邏輯設(shè)備通過(guò)設(shè)備描述符與相應(yīng)的文件或外部設(shè)備相關(guān)聯(lián)。邏輯設(shè)備符(通道號(hào))與所關(guān)聯(lián)的文件是一一對(duì)應(yīng)的,即同一個(gè)設(shè)備描述符不能同時(shí)連接一個(gè)以上的文件,反之亦然。

二、內(nèi)部文件在FORTRAN語(yǔ)言中,把保存在內(nèi)存中的數(shù)據(jù)稱為內(nèi)部文件。內(nèi)部文件通過(guò)設(shè)備描述符與邏輯設(shè)備連接并進(jìn)行輸入輸出操作。需要注意以下規(guī)那么:內(nèi)部文件只能以字符串或字符數(shù)組作為設(shè)備描述符。內(nèi)部文件只能使用READ和WRITE語(yǔ)句進(jìn)行操作。常見(jiàn)的文件連接語(yǔ)句〔OPEN、CLOSE〕、文

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論