fortran程序設計.第3章_第1頁
fortran程序設計.第3章_第2頁
fortran程序設計.第3章_第3頁
fortran程序設計.第3章_第4頁
fortran程序設計.第3章_第5頁
已閱讀5頁,還剩42頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

FORTRAN語言

--FORTRAN77結構化程序設計講師:徐紅波Email:3.1常量所謂常量是指其值始終不變的量,例如3,5.6,-8在FORTRAN中允許使用下面六種常量: (1)整型常量 (2)實型常量 (3)雙精度常量 (4)復型常量 (5)邏輯型常量 (6)字符型常量。3.1.1整型常量

整型常量,又稱整型常數(shù)或整數(shù)(integer)。它是一個正的或負的或零的數(shù)。例如5,-8,+123。 FORTRAN中的整數(shù)不應包括小數(shù)點。整數(shù)可以包括數(shù)符,也可以不包括數(shù)符。 常數(shù)中各數(shù)字之間的空格不起作用。 常數(shù)中不允許加入逗號。3.1.2實型常量

實型常量,又稱實數(shù)(real)。 實數(shù)有兩種表示形式:

(一)小數(shù)形式:例如+12.3,-68.56,3.75,0.0等。 它由一個或多個數(shù)字和一個小數(shù)點組成。 小數(shù)點前或小數(shù)點后可以不出現(xiàn)數(shù)字,但不能小數(shù)點前后都不出現(xiàn)數(shù)字。 例如+0.8,-8.0,0.0,60.,.36,.0合法

18,36,7,.非法。 (二)指數(shù)形式: 數(shù)字部分和指數(shù)部分,例如:12.3E8,0.91E-30。 數(shù)字部分可以是不帶小數(shù)點的整數(shù)形式,也可以是帶小數(shù)點的實數(shù),例如3E5,3.0E5均合法。 指數(shù)不能為小數(shù),例如3E5.6,8.6E-3.7不合法。 指數(shù)部分不能單獨用來代表一個常數(shù),例如E12。3.2變量

3.2.1變量的概念

變量是指在程序運行期間其值是可以變化的量。 系統(tǒng)為程序中的每一個變量開辟一個存儲單元,用來存放變量的值。 在程序中用到的變量,應該給它賦予確定的值,否則它有一個不確定的值。3.2.2變量名

一個變量需要用一個名字(變量名)來識別。

FORTRAN的變量名按以下規(guī)定選定:

1、第一個字符必須是字母;

2、在一個字母后面可以跟1~5位數(shù)字或字母。 例如:A,X1,ABCD,CHINA,RATE,TOTAL,G861是合法的,而3X,X+Y,WAN-LI,-6B,U.S.A,DR.LI是不合法的。

選用變量名時注意: (1)在變量名中大寫與小寫是等價的,例如TOTAL,Total,total都代表同一個變量。 (2)變量名的字符之間可以插入空格,例如:AMOUNT和AMOUNT都代表同一個變量AMOUNT。 (3)變量名應盡量做到見名知義,例如:GRADE代表等級,AVER代表平均值,AMOUNT代表金額。(4)FORTRAN77沒有規(guī)定保留字,即可以用FORTRAN中的函數(shù)名或語句定義符作變量名,例如:

SIN=3.5 PRINT*,SIN

READ*,PRINT PRINT*,PRINT3.2.3變量類型

常量是分為類型的,而變量是用來存放常量的,因此變量也相應地區(qū)分為整型變量、實型變量、雙精度型變量、復型變量、邏輯型變量、字符型變量。整型變量用來存放整型常量,實型變量用來存放實型常量。

在程序中應當說明哪些變量是整型變量,哪些變量是實型變量。變量在內存中所占的字節(jié)數(shù)和數(shù)據(jù)存儲形式與相應類型的常數(shù)相同。

規(guī)定變量的類型可以用以下幾種方法:1、隱含約定-I-N規(guī)則

FORTRAN規(guī)定:在程序中的變量名,凡以字母I,J,K,L,M,N六個字母開頭的,即認為該變量為整型變量。以其它字母開頭的變量為實型變量。 例如下面變量為整型變量:

I,J,IMAX,NUMBER,LINE,JOB,K1

而下面的變量為實型變量:

B1,COUNT,AMOUNT,YOUNG,TOTAL,BOOK,DG342、用類型說明語句確定變量類型

FORTRAN中有六個類型說明語句:

INTEGER語句(整型說明語句)

REAL語句(實型說明語句)

DOUBLEPRECISION語句(雙精度說明語句)

COMPLEX語句(復型說明語句)

LOGICAL語句(邏輯型說明語句)

CHARACTER語句(字符型說明語句) 例如: INTEGERA,SUM,TOTAL3.隱含說明語句IMPLICIT語句 IMPLICITINTEGER(A,C,T-V) IMPLICITREAL(I,J) IMPLICITINTEGER(A,B),REAL(I,K)說明:1、類型說明語句最優(yōu)先,IMPLICIT語句次之,I-N規(guī)則最低。 例如:

IMPLICITREAL(I,J) INTEGERIMAX2、IMPLICIT語句和類型說明語句應該出現(xiàn)在程序單位中的所有執(zhí)行語句的前面,IMPLICIT語句又應該在所有的類型說明語句的前面。

3.3FORTRAN函數(shù)

用FORTRAN解題往往要用到一些專門運算,如求三角函數(shù)sinx,cosx,求,絕對值|x|,對數(shù)lnx,指數(shù)ex,求一組數(shù)中最大數(shù)和最小數(shù)。FORTRAN提供了一些系統(tǒng)函數(shù)來完成這些運算。程序設計者不必自己設計進行這些運算的語句組(即程序段或子程序),只需寫出一個函數(shù)的名字以及給出一個或若干個自變量,就可以得到所需的值。例如:

SQRT(4.0) SIN(2.0)EXP(3.5)LOG(3.0)例[3-1] PROGRAMFUNCTIONS PRINT*,SIN(1.0) PRINT*,TAN(1.0) PRINT*,ATAN(1.0) PRINT*,LOG(3.0) PRINT*,INT(8.6) PRINT*,INT(-8.6) PRINT*,MOD(8,3)

PRINT*,SIGN(4.0,-0.5) PRINT*,SIGN(-4.0,0.5) PRINT*,REAL(8) PRINT*,MAX(8,6,7,15,-1) PRINT*,MIN(8,6,7,15,-1) END3.4FORTRAN算術表達式

3.4.1算術運算符和運算優(yōu)先級

五種算術運算符號:+-*/**

不同的運算符按以下優(yōu)先級次序:

**最高*,/次之+,-最低 同一優(yōu)先級的兩個運算,按“先左后右”原則。 例如:

3+5-6.0*8.0/4**2

3.4.2FORTRAN算術表達式的含義和表示方法

所謂表達式是指一個或多個運算的組合。表達式是由運算符和括號將各運算元素(常量、變量、函數(shù)、數(shù)組元素)連接起來的一個有值的式子。

FORTRAN允許使用四種表達式: 算術表達式 關系表達式 邏輯表達式 字符表達式

算術表達式中各運算元素都是算術量,使用的運算符只能是算術運算符,表達式的值也是一個算術量(即數(shù)值)。例如:

(A-B)/C**2+SIN(X+Y)

表3.4是對表達式書寫的正誤比較,供讀者參考。3.4.3表達式運算中的類型問題 FORTRAN允許不同類型的算術量(包括整型、實型、雙精度、復型)之間的算術運算,但不允許在算術量和非算術量(如邏輯型、字符型)之間進行算術運算。例如2*3.5是允許的。2為整型量,3.5為實型量,那么它的乘積是什么類型的呢? FORTRAN作如下規(guī)定:1、同類型的算術量之間運算的結果仍保持原類型。2、如果參加運算的兩個算術量為不同類型,則將它們轉換成同一類型,然后進行運算。轉換的規(guī)律是:將低級類型轉換為高級類型。類型的級別如下:整型低,實型高。 如果有:5*6.5,則系統(tǒng)先將5轉換為5.0,然后乘以6.5得32.5,為實型數(shù)。5*6.0的值為30.0。3.4.4運算的誤差問題 整型量的運算是準確的,沒有任何誤差(只要在整數(shù)范圍內)。而實型量的運算會出現(xiàn)一些誤差。 例如:11111.1*1111.11 0.001.0-1246820.0 總之,在實數(shù)運算中應充分考慮到其可能出現(xiàn)的誤差,而且在運算過程中誤差會不斷積累而增大,有時可能達到一個可觀的程度。 整型量的運算速度比實數(shù)快而且不出現(xiàn)誤差,但整數(shù)的范圍有限。用實數(shù)運算速度慢而且有誤差。如果想保持大的表數(shù)范圍又有較高的準確度,應增加有效位數(shù),可采用雙精度型數(shù),其有效位數(shù)可達16~17位以上。 3.5賦值語句

3.5.1賦值語句的性質和作用

賦值語句的作用是將一個確定的值賦給一個變量。其一般格式為:

v=e

變量=表達式 例如

A=3.14159*R**2

賦值語句有三類:算術賦值語句;邏輯賦值語句;字符賦值語句。 賦值語句中的“=”號是“賦值”的符號。將賦值號右邊的表達式的值賦給左邊的變量。例如:A=3.6的作用是3.6A。 算術賦值語句兼有計算和賦值雙重功能。即先計算出表達式的值;然后將該值賦給一個變量。 根據(jù)賦值語句的性質可以看出:賦值號左邊只能是變量名(或數(shù)值元素名),而不能是表達式,賦值號右邊可以是常量、變量或表達式(常量或變量是表達式的最簡單的形式)。賦值號兩側的內容不能任意調換。

下面兩個程序作用是不同的:

程序1 PROGRAMASIGNMENT A=1.0 B=2.0 A=B PRINT*,A,B END程序2 PROGRAMASIGNMENT A=1.0 B=2.0 B=A PRINT*,A,B END3.5.2執(zhí)行賦值語句時的類型轉換問題

一個算術賦值語句中的被賦值的變量和表達式的類型可以相同,也可以不相同。FORTRAN作如下規(guī)定:1、如果變量與表達式的類型相同,則直接進行賦值。如:

I=3 A=5.7*T2、如果類型不同,則應先進行表達式的求值,然后將該表達式的值轉換為被賦值變量的類型。如:

I=3.5*2.1 T=3*5/73、當賦值號兩側的類型不同時,往往會產生預想不到的結果。如:

IMAX=13.7*2.53.6簡單的輸出語句

3.6.1輸出語句的作用和分類

程序的作用是對輸入的數(shù)據(jù)進行加工處理,然后將結果輸出。最常用的輸出是顯示??捎肞RINT語句實現(xiàn)打印輸出。 輸出一個或多個數(shù)據(jù)時需要通知系統(tǒng)以下信息: (1)輸出哪些數(shù)據(jù); (2)用什么格式輸出(如每個數(shù)據(jù)占多少列,小數(shù)部分占多少列,是用小數(shù)形式輸出還是用指數(shù)形式輸出?) (3)在什么設備上輸出。 如果已確定用顯示器輸出,可以用PRINT語句,用PRINT語句意味著只能在顯示器輸出。在PRINT語句中將上面提到的第1、2個信息告之系統(tǒng)。FORTRAN的輸出格式有以下三類:(1)按用戶指定的格式輸出;(2)系統(tǒng)隱含的標準格式輸出(又稱表控格式);(3)無格式的輸出,即以二進制形式輸出,只適用于向磁盤、磁帶等輸出。3.6.2表控輸出語句

表控輸出是表控格式輸出的簡稱。即由計算機系統(tǒng)隱含規(guī)定了輸出的格式。用這種方式輸出數(shù)據(jù)時,系統(tǒng)自動地分別為每一個不同類型的數(shù)據(jù)規(guī)定所占的列數(shù)和表數(shù)形式(例如實數(shù)是用小數(shù)形式輸出還是用指數(shù)形式輸出,小數(shù)點位置在何處等)。例如: 假若I=45,J=128 PRINT*,I,J

假若A=13.567,B=-186.75 PRINT*,A,B

假若A=162×1025,B=-11.72×10-13 PRINT*,A,B3.7簡單的輸入語句

3.7.1輸入語句的作用和分類

所謂輸入是指從外部設備上將數(shù)據(jù)輸?shù)接嬎銠C內存中。向計算機輸入數(shù)據(jù)又叫做“計算機從外部設備讀入數(shù)據(jù)”,輸出數(shù)據(jù)又叫做“向外部設備寫數(shù)據(jù)”。 FORTRAN用READ語句實現(xiàn)輸入數(shù)據(jù)。與輸出一樣,有三種類型的輸入:(1)數(shù)據(jù)按用戶規(guī)定的格式輸入;(2)用自由格式輸入(又稱表控輸入);(3)無格式輸入,即以二進制形式輸入,只適用從磁盤或磁帶輸入。3.7.2表控輸入語句

表控輸入又稱自由格式輸入,用戶不必指定輸入數(shù)據(jù)的格式,只需將數(shù)據(jù)按其合法形式依次輸入即可,數(shù)據(jù)間以逗號或空格間隔。例如有一輸入語句:

READ*,I,J,A,B “*”號表示“表控輸入”,要求從系統(tǒng)隱含指定的輸入設備上讀入兩個整型數(shù)給I和J,讀入兩個實數(shù)給A和B??梢詮逆I盤輸入以下數(shù)據(jù):

3,10,7.5,-15.8

或:3107.5-15.8 注意:(1)應該保證從輸入設備輸入READ語句中所要求的數(shù)據(jù):

1)輸入數(shù)據(jù)的個數(shù)應當不少于READ語句中變量的個數(shù);

2)輸入數(shù)據(jù)的類型要與READ語句中相應的變量的類型一致。如果在輸入的第一個數(shù)據(jù)行上數(shù)據(jù)個數(shù)少于READ語句變量的個數(shù),則系統(tǒng)會繼續(xù)從第二個輸入的數(shù)據(jù)行中讀數(shù),依此類推。(2)若輸入的數(shù)據(jù)個數(shù)多于所需的個數(shù),則多余的數(shù)據(jù)不起作用。例如,輸入以下數(shù)據(jù):3,10,7.5,-15.8,30,70.6(3)每一個READ語句都是從一個新的輸入行開始讀數(shù)的。例如

READ*,I,J READ*,A,B READ*,X,Y

如果輸入:

3,10,7.5,-15.8 70.6,8.5(4)如果在輸入數(shù)據(jù)行中出現(xiàn)“/”號,表示對READ語句的輸入到此結束,未被賦值的變量不予賦值。如:

READ*,I,J,A,B

輸入數(shù)據(jù)為:

3,10/7.5,-15.8(5)在一個數(shù)據(jù)的數(shù)字之間不要插入空格,因此空格是數(shù)據(jù)間的分隔符。例如對上述READ語句輸入以下數(shù)據(jù):

15,718,76.3,65.8(6)前已提及:數(shù)據(jù)類型應與變量類型一致,如果變量為整型而輸入數(shù)據(jù)為實型數(shù),則按出錯處理。如果變量為實型,輸入數(shù)據(jù)為整型數(shù),許多系統(tǒng)是通融的,先自動將它變成實數(shù)然后輸入給實型變量,如:

READ*,A,B

輸入:

168,2473.8參數(shù)語句(PARAMETER語句)

在程序中常要多次用到某些常數(shù),例如=3.1415926,若每次用到時都重復寫3.1415926,是不方便的,F(xiàn)ORTRAN77允許用一個名字來代表一個常量,例如可以指定用PI來代表3.1415926,在本程序單位中用到PI時,它就代表3.1415926,這個PI稱為“符號常量”或“符號常數(shù)”,即用一個符號來代表一個常量。

FORTRAN規(guī)定用PARAMETER語句來定義符號常量。 例如:PARAMETER(PI=3.1415926)

PARAMETER語句與賦值語句不同,它是非執(zhí)行語句,在程序定義一個符號常量后,不能再改變它的值。例如下面這樣是錯誤的:

PI=0.5或READ*,PI PARAMETER語句應寫在所有執(zhí)行語句之前。符號常量的定名規(guī)則與定變量名相同。名字本身隱含類型,也遵循I-N規(guī)則??梢杂妙愋驼Z句定義符號常量的類型,例如:

INTEGERP PARAMETER(P=5)

注意,先寫類型語句,后寫參數(shù)語句。在一個參數(shù)語句中可以定義多個符號常量。如

PARAMETER(A=0.5,N=50,J=30)

用符號常量好處是:若需要改變某一常量,不需一一改變這個常量,只需改變參數(shù)語句中符號常量的值則可。例如:

PARAMETER(PRICE=3.5) COST1=PRICE*NUM1 COST2=PRICE*NUM2 COST3=PRICE*NUM3

單價PRICE調整時,不必一一修改賦值語句,只需將參數(shù)語句中的PRICE=3.5改為PRICE=5.1即可,一改全改,不會由于遺漏某一處未改而出錯。 符號常量可以是數(shù)值型、邏輯型、字符型。 符號常量不能作為語句標號,也不能出現(xiàn)在FORMAT語句中代替常數(shù)。除此之外,凡出現(xiàn)常量處均可用符號常量代替。3.9END語句、STOP語句和PAUSE語句

3.9.1END語句FORTRAN77中END語句的作用:(1)結束程序單位的運行;(2)作為程序單位的結束標志。

END語句應該出現(xiàn)在本程序單位中的最后一行。一個程序單位中只能有一個END語句。 在主程序中的END語句是使程序停止運行,控制回到操作命令狀態(tài)。在子程序中的END,一方面作為子程序的結束標志,一方面使流程返回到調用程序(接著執(zhí)行調用程序中的其它語句)。即它兼有RETURN語句的功能。3.9.2STOP語句 STOP語句是“停止運行”,一個程序單位中可以有多個STOP語句,執(zhí)行到任一個STOP語句時程序即停止運行。在子程序中如果有STOP語句,使整個程序停止運行而不是使控制返回主程序。 在一個程序中含有多個STOP語句時,為了使程序員能清晰地辨別出是哪一個STOP語句使程序停止運行的,需要在執(zhí)行STOP時,輸出所需的信息。STOP語句的形式:

STOP[n]

例如:

STOP123

或 STOP‘A’

則在程序停止運行時輸出信息“123”或“A”,由此辨別程序的流程。注意:STOP語句中的“n”是寫一個不超過5位的無符號整數(shù)或一個字符串。而且它是可選的。3.9.3PAUSE語句 PAUSE語句是暫停語句,使程序“暫時停止執(zhí)行”,但不是“結束運行”。系統(tǒng)只是把程序的執(zhí)行暫時“掛起來”,等待程序操作員輸入其它操作命令。在程序設計中,有時有意在程序中加幾個PAUSE語句,即設幾個“斷點”,把程序分成幾段,調試程序時一段一段地檢查,比如第

溫馨提示

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

評論

0/150

提交評論