FORTRAN結(jié)構(gòu)化程序設(shè)計和實(shí)例介紹_第1頁
FORTRAN結(jié)構(gòu)化程序設(shè)計和實(shí)例介紹_第2頁
FORTRAN結(jié)構(gòu)化程序設(shè)計和實(shí)例介紹_第3頁
FORTRAN結(jié)構(gòu)化程序設(shè)計和實(shí)例介紹_第4頁
FORTRAN結(jié)構(gòu)化程序設(shè)計和實(shí)例介紹_第5頁
已閱讀5頁,還剩74頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、FORTRAN結(jié)構(gòu)化程序設(shè)計和實(shí)例介紹本章內(nèi)容順序結(jié)構(gòu)程序設(shè)計選擇結(jié)構(gòu)程序設(shè)計循環(huán)結(jié)構(gòu)程序設(shè)計 結(jié)構(gòu)化程序設(shè)計:按照一定的結(jié)構(gòu)形式來設(shè)計和編寫程序,以便閱讀與檢查。順序結(jié)構(gòu)選擇結(jié)構(gòu)循環(huán)結(jié)構(gòu) 當(dāng)型循環(huán) 直到型循環(huán) 順序結(jié)構(gòu)程序設(shè)計先上后下,先左后右;即先執(zhí)行A,再執(zhí)行B順序結(jié)構(gòu)【例3-1】輸入3個氣象站5個月(汛期)雨量數(shù)據(jù),統(tǒng)計每個氣象站的總雨量和平均雨量,計算3個站五月、六月、七月、八月、九月的平均雨量,輸出每個氣象站每個月的雨量、總雨量和平均雨量,以及五月、六月、七月、八月、九月的平均雨量。 站名汛期各月雨量(毫米)5月6月7月8月9月江陰76.8176.5308.141.069.6定波閘

2、71.5208.5352.147.262.6肖山65.5200.0239.744.363.0表3-1 1998年主要站汛期雨量統(tǒng)計表1 PROGRAM ex06_022 IMPLICIT NONE3 REAL r11,r12,r13,r14,r15,total11,av114 REAL r21,r22,r23,r24,r25,total21,av215 REAL r31,r32,r33,r34,r35,total31,av316 REAL av1,av2,av3,av4,av57 WRITE(*,“(28X,5月 6月 7月 8月 9月)”)8 WRITE(*,“(1X,輸入江陰氣象站五個月的

3、雨:,)”)9 READ(*,*) r11,r12,r13,r14,r1510 WRITE(*,“(1X,輸入定波閘氣象站五個月的雨量:,)”)11 READ(*,*) r21,r22,r23,r24,r2512 WRITE(*,“(1X,輸入肖山氣象站五個月的雨量:,)”)13 READ(*,*) r31,r32,r33,r34,r3514 ! 100FORMAT(F5.1,F5.1,F5.1,F5.1,F5.1)15 total11=r11+r12+r13+r14+r1516 av11=total11/517 total21=r21+r22+r23+r24+r2518 av21=total

4、21/519 total31=r31+r32+r33+r34+r3520 av31=total31/521 av1=(r11+r21+r31)/322 av2=(r12+r22+r32)/3 23 av3=(r13+r23+r33)/324 av4=(r14+r24+r34)/325 av5=(r15+r25+r35)/326 WRITE(*,“(26X,5月 6月 7月 8月 9月 總雨量 平均雨量)”)27 WRITE(*,200)江陰氣象站五個月的雨量:, r11,r12,r13,r14,r15,total11,av1128 WRITE(*,200)定波閘氣象站五個月的雨量:, r21,

5、r22,r23,r24,r25,total21,av2129 WRITE(*,200)肖山氣象站五個月的雨量:, r31,r32,r33,r34,r35,total31,av3130 200 FORMAT(1X,A22,5(F5.1,2X),F6.1,2X,F7.3) 31 WRITE(*,300) 5月,av1,6月,av2,7月,av3,8月,av4,9月,av532 300 FORMAT(1X,A4,平均雨量:,F7.3)33 END運(yùn)行結(jié)果: 選擇結(jié)構(gòu) 選擇結(jié)構(gòu)簡介 IF語句 SELECT CASE語句 選擇語句的嵌套 選擇結(jié)構(gòu)簡介依據(jù)給定的條件做邏輯判斷,再根據(jù)判斷的結(jié)果決定應(yīng)執(zhí)行哪

6、種操作選擇結(jié)構(gòu)。如:1 輸入學(xué)生成績,判定合格與否,輸出判定結(jié)果。2 已知三個整數(shù)A,B,C,輸入其值并打印三個數(shù)中最大值。 3 暴雨預(yù)警信號分三級,分別以黃色、橙色、紅色表示。(1)暴雨黃色預(yù)警信號(2)暴雨橙色預(yù)警信號(3)暴雨紅色預(yù)警信號根據(jù)降雨量評判當(dāng)前預(yù)警信號,從而做出不同防御指南。必須使用選擇結(jié)構(gòu)程序來解決這類問題 FORTRAN提供了3種典型的塊IF結(jié)構(gòu):(1)單分支(2)雙分支(3)多分支 IF語句 (1)單分支塊IF結(jié)構(gòu)一般形式為:IF(條件)THENIF塊END IF這種塊IF結(jié)構(gòu)包括:塊IF語句“IF(條件)THEN”。它是塊IF結(jié)構(gòu)的入口語句。IF塊。它是一個語句序列,

7、由若干條可執(zhí)行語句組成。END IF語句。它是塊IF結(jié)構(gòu)的出口語句。 【例3-2】從鍵盤輸入一個氣溫值,如果大于,則顯示在屏幕上。1PROGRAM ex04_022IMPLICIT NONE 3REAL T4READ *,T5IF(T35.0)THEN6PRINT *, 這是高溫7PRINT *, T=,T8END IF9END(2)雙分支塊IF結(jié)構(gòu)一般形式為:IF(條件)THENIF塊ELSEELSE塊END IF【例3-3】由于大氣受到污染,一些地區(qū)開始形成酸雨區(qū),酸雨是指PH值小于的雨雪或其他形式的大氣降水。通過收集水樣測量其PH值,判斷它的酸堿性并打印出來。根據(jù)題意設(shè)計算法并畫出程序流

8、程圖,如圖所示。1PROGRAM ex07_032IMPLICIT NONE 3REAL ph4WRITE(*,*)Please enter PH value:5READ *,ph!定義變量ph來存放酸堿度值6IF(ph5.6) THEN!用分支語句來判斷7WRITE(*,100) ph8ELSE9WRITE(*,200) ph10END IF11100 FORMAT(1X,PH=,F4.2,is acid rain!)12200 FORMAT(1X,PH=,F4.2,is not acid rain!)13END(3)多分支塊IF結(jié)構(gòu)一般形式為:IF(條件1)THEN塊1ELSE IF(條件

9、2) THEN塊2ELSE IF(條件3) THEN塊3.ELSE IF(條件n) THEN塊nELSE塊n+1END IF【例3-4】在氣象部門發(fā)布的天氣預(yù)報中小雨、中雨、暴雨等專業(yè)術(shù)語,它們之間的區(qū)別如表所示: 降雨強(qiáng)度降雨量(12小時,單位:mm)降雨量(24小時,單位:mm)小雨51402501PROGRAM ex07_042IMPLICIT NONE3REAL r!定義用來記錄降雨量的實(shí)型量r4WRITE(*,100)5READ *,r6IF(r5) THEN !用多分支IF語句進(jìn)行判斷7PRINT 2008ELSE IF(r15) THEN9PRINT 30010ELSE IF(r

10、30) THEN11PRINT 40012ELSE IF(r70) THEN13PRINT 50014ELSE IF(r0.0) THENx1=(-b+sqrt(d)/(2.0*a)x2=(-b-sqrt(d)/(2.0*a)PRINT *,兩個不等實(shí)根:PRINT *,x1=,x1PRINT *,x2=,x2 ELSE IF(d=0.0) THENPRINT *,兩個相等實(shí)根PRINT *,-b/(2.0*a) ELSEpr=-b/(2.0*a)pi=sqrt(-d)/(2.0*a)PRINT *,兩個復(fù)根PRINT *,x1=,pr,+,pi,iPRINT *,x2=,pr,-,pi,i

11、END IFEND IFEND【例3-8】已知U,V風(fēng)速,判斷風(fēng)向:U0;V0西南風(fēng)U0;V0西北風(fēng)U0東南風(fēng)U0;V0.0) then if (v0.0) then !u0,v0 print *, 西南風(fēng) else if (v0, v0,v=0 print *, 西風(fēng) end ifelse if (u0.0) then !u0 print *, 東南風(fēng) else if (v0.0) then ! u0, v0 print *, 東北風(fēng) else ! u0.0) then !u=0,v0 print *, 南風(fēng) else if (v0.0) then ! u=0, v=tmax) thentm

12、ax=tend ifend doprint *, tmax=, tmaxprint *, tave=, taveend(2) DO-WHILE控制的循環(huán)結(jié)構(gòu) DO-WHILE結(jié)構(gòu)格式一般形式為: 結(jié)構(gòu)名: DO WHILE (邏輯表達(dá)式) 循環(huán)體 END DO 結(jié)構(gòu)名例子【例3-11】循環(huán)輸入每六小時降水資料,如果發(fā)現(xiàn)數(shù)據(jù)小于0或者大于1000時,終止循環(huán),并提示輸入數(shù)據(jù)異常。real precipprint *, 輸入每六小時降水量(mm):read *, precipdo while(precip.ge.0.and.precip.le.1000)print *, 降水量(mm):, pre

13、cipread *, precipenddoprint *, 輸入數(shù)據(jù)異常end程序運(yùn)行結(jié)果DO-WHILE循環(huán)流程圖 循環(huán)結(jié)構(gòu)的選擇:如果已知循環(huán)的次數(shù),或者知道循環(huán)的初值和終值,那么用有循環(huán)變量的DO循環(huán)結(jié)構(gòu)。知道循環(huán)的條件時,選用DO_WHILE循環(huán)結(jié)構(gòu),或者是重復(fù)DO循環(huán)結(jié)構(gòu)。其中在使用這兩種結(jié)構(gòu)時,注意循環(huán)條件的變化,以避免“死循環(huán)”。(1) EXIT語句EXIT語句用于強(qiáng)制退出循環(huán),將執(zhí)行控制轉(zhuǎn)移到當(dāng)前循環(huán)或結(jié)構(gòu)之外。 一般格式為:EXIT DO循環(huán)結(jié)構(gòu)名3.3.2 循環(huán)流程控制語句EXIT語句的使用說明:EXIT語句通常是作為邏輯IF語句的內(nèi)嵌語句來使用。其作用是有條件中斷。 形

14、式為:IF(邏輯表達(dá)式) EXIT 結(jié)構(gòu)名 執(zhí)行過程為: 當(dāng)邏輯表達(dá)式為真時,中止正在執(zhí)行的循環(huán),將控制轉(zhuǎn)到EXIT語句指定的結(jié)構(gòu)之后;當(dāng)邏輯表達(dá)式為假時,繼續(xù)正在執(zhí)行的循環(huán),不進(jìn)行任何轉(zhuǎn)移?!纠?-12】輸入正整數(shù)n,求級數(shù)的前n項和,如果當(dāng)某項絕對值105時,雖未滿n項,也因滿足精度而不再加入下一項。1PROGRAM ex08_082IMPLICIT NONE3INTEGER : i,n4REAL : s=0,t5READ *, n6DO i=1,n7 t=1./(i*(i+1)!注意t要求是實(shí)型8 s=s+t9 IF(ABS(t)0計算內(nèi)層循環(huán)次數(shù)R2,J賦初值 R20 執(zhí)行內(nèi)層循環(huán)體J

15、=J內(nèi)層循環(huán)步長R2 R21I=I外層循環(huán)步長R1 R11循環(huán)嵌套循環(huán)的次數(shù):外層循環(huán)的次數(shù)為:R1內(nèi)層循環(huán)的次數(shù)為:R2整個循環(huán)的次數(shù)為:R R=R1*R2計算循環(huán)嵌套循環(huán)次數(shù):M=0DO I=1,3,4DO J=4,19,4 M=M+1 PRINT *, M ENDDOENDDOEND運(yùn)行結(jié)果嵌套DO循環(huán)的說明 三種DO循環(huán)結(jié)構(gòu)必須是完整的嵌套。循環(huán)嵌套時,內(nèi)、外層不能使用相同的循環(huán)變量。循環(huán)轉(zhuǎn)移的問題。DO循環(huán)結(jié)構(gòu)可以與選擇結(jié)構(gòu)的嵌套。計算循環(huán)嵌套循環(huán)次數(shù):M=0II: DO I=1,3,4JJ: DO J=4,19,4 M=M+1 if(M=3)EXIT II ENDDO JJENDD

16、O IIPRINT*,MEND運(yùn)行結(jié)果3.3.4 兩種循環(huán)形式的比較和關(guān)系(1)帶循環(huán)變量的DO循環(huán)用來處理已確定循環(huán)次數(shù)的問題。DO WHILE循環(huán)既可以用來處理已知循環(huán)次數(shù)的循環(huán)問題,也可用來處理不確定循環(huán)次數(shù)的問題。(2)對事先已確定循環(huán)次數(shù)的問題,用帶循環(huán)變量的DO循環(huán)比較方便,它能使循環(huán)變量自動增值,不需用戶寫邏輯表達(dá)式,只需寫出循環(huán)變量的初值、終值和步長即可,使用方便。因此帶變量的DO循環(huán)在氣象上使用最為頻繁。(3)由于帶循環(huán)變量的DO循環(huán)只能判斷處理一個條件(循環(huán)次數(shù)R),當(dāng)需要多個入口條件時,應(yīng)考慮DO WHILE 循環(huán)結(jié)構(gòu)。(4)各類循環(huán)可以相互轉(zhuǎn)換以及互相嵌套。嵌套時,需要完整嵌套。離散化均勻經(jīng)緯度網(wǎng)格【例3-14】沿著某一經(jīng)度剪開球體1,請求出11度均勻經(jīng)緯度網(wǎng)格上,不同緯線上位置相鄰格點(diǎn)的實(shí)際球面距離。部分運(yùn)行結(jié)果程序舉例1那么同一經(jīng)線上,相鄰格點(diǎn)的實(shí)際球面距離是多少?假設(shè)降水資料的存放路徑按照右圖有規(guī)律地存放,請利用循環(huán),將1979年1月-1990年12月的資料路徑,依次輸出至屏幕上?!纠?-14】程序難點(diǎn)如何將年文件夾名稱表示出來?如何將長度有變化的月文件夾名稱表示出來?如何將年、月兩個文件夾名稱合并至整個文件路徑中

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論