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

下載本文檔

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

文檔簡介

FORTRAN語言--FORTRAN

77結(jié)構(gòu)化程序設(shè)計講師:徐紅波Email:x_h_b@第四章邏輯運算和選擇結(jié)構(gòu)4.1

引言在第三章介紹了最簡單FORTRAN程序,在程序中各語句是順序執(zhí)行的,這種程序只包括順序結(jié)構(gòu)。這種程序只能解決邏輯關(guān)系比較簡單的問題。在解決數(shù)值計算和非數(shù)值計算的問題時,常常遇到這樣問題:需要對給定條件作邏輯判斷,根據(jù)判斷的結(jié)果決定執(zhí)行哪種操作。這需要用到選擇結(jié)構(gòu)。用塊IF結(jié)構(gòu)實現(xiàn)選擇結(jié)構(gòu),其形式為:IF(條件)THENthen塊ELSEelse塊END

IF不成立成立條件塊塊[例4.1]計算職工工資。工人每小時計時工資為

RATE,如果一周工作時間超過40小時,加班部分的工資按正常時間工資的1.5倍計算。C

Payroll

with

overtimePROGRAM

PAYROLLREAD

(*,

*)

RATE,HOURSIF

(HOURS

.GT.

40.0)

THENREGPAY=RATE*40.0OVTPAY=1.5*RATE*(HOURS-40.0)ELSEREGPAY=RATE*HOURSOVTPAY=0.0END

IFPAY=REGPAY+OVTPAYPRINT

*,

'RATE=',

RATE,

'HOURS=',

HOURSPRINT

*,

'REGULAR

PAY=',

REGPAY,

'

OVERTIME

PAY=',

OVTPAYPRINT

*,

'TOTAL

PAY=',

PAYEND4.2

關(guān)系表達式關(guān)系表達式是最簡單的一種邏輯表達式。<算術(shù)量><關(guān)系運算符><算術(shù)量>算術(shù)量可以是數(shù)值常數(shù)、數(shù)值型變量、數(shù)值函數(shù),也可以是算術(shù)表達式。FORTRAN中有六個關(guān)系運算符。見下表。關(guān)系運算符英語含義數(shù)學(xué)符號.GT.Greater

Than>.GE.Greater

than

or

Equal

to≥.LT.LessThan<.LE.Less

than

or

Equal

to≤.EQ.EQual

to=.NE.Not

Equal

to≠關(guān)系表達式示例:關(guān)系表達式A

.GT.

3.5A+B

.LE.

0.0SIN(X)

.GE.

0.5A-B

.NE.

C+D

I

.LT.

J/2數(shù)學(xué)式子A>3.5A+B≤0SIN(X)≥0.5A-B≠C+DI<J/24.3

邏輯表達式關(guān)系表達式是最簡單的邏輯表達式。關(guān)系表達式代表“簡單條件”,如X.GT.0.0代表X>0。但遇到一些比較復(fù)雜條件,如0≤X<5,是0≤X和X<5兩個簡單條件的組合,可以把它看作一個復(fù)合條件。可以寫成以下邏輯表達式:X

.GE.

0.0

.AND.

X

.LT.

5.0所謂邏輯表達式是對邏輯量進行邏輯運算的表達式。邏輯表達式的形式:<邏輯量><邏輯運算符><邏輯量>FORTRAN77的邏輯量:邏輯常量邏輯型變量關(guān)系表達式邏輯表達式的值是一個邏輯值,它不是真便是假。4.3.1邏輯常量邏輯常量只有兩個:.TRUE.

.FALSE.例如,當(dāng)X=3時

X

.LT.

5

的值為.TRUE.,而X

.LE.

0.0

的值為.FALSE.。邏輯常量可以在程序中出現(xiàn),可以將它們賦給邏輯型變量。邏輯常量又稱邏輯常數(shù),它的性質(zhì)與其它類型的常量相類似,代表一個常值。4.3.2邏輯型變量邏輯型變量存放邏輯常量。它的值也只能是.TRUE.或.FALSE.之一??梢詫⒁贿壿嫵A抠x予一個邏輯變量。假定A,B已被定義為邏輯型變量,則可以用賦值語句對它們賦值:A=.TRUE.B=.FALSE.這種賦值語句稱為邏輯賦值語句。它的一般形式為:邏輯變量=邏輯表達式程序中對每一個邏輯變量都應(yīng)加以說明,可用LOGICAL語句,如:LOGICAL

A,

B4.3.3邏輯運算符邏輯運算符含義邏輯運算舉例.AND.邏輯與A

.AND.

B.OR.邏輯或A

.OR.

B.NOT.邏輯非.NOT.

A.EQV.邏輯等A

.EQV.

B.NEQV.邏輯不等A

.NEQV.

B邏輯表達式示例:(A

.LT.

B)

.AND.

(A

.GT.

C)(X

.LT.

0.0)

.OR.

(X

.GT.

100.0)NOT.

(X

.LE.

0.0)(A

.GT.

B)

.EQV.

(C

.GT.

D)L1

.NEQV.

L24.3.4邏輯表達式的運算次序一個邏輯表達式中可以包括多個邏輯運算符。即多個邏輯量經(jīng)過邏輯運算后可以得到一個邏輯值。例如以下邏輯表達式:A

.LE.

0.0

.AND.

A+C

.GT.

B+D

.OR.

.NOT.

.TRUE.FORTRAN77規(guī)定按以下次序進行運算:先計算算術(shù)表達式的值再求關(guān)系表達式的值最后進行邏輯運算運算類型運算符優(yōu)先級括號(

)1算術(shù)運算**2*

/3+

-4關(guān)系運算.GT.

.GE..LE.

.EQ..LT..NE.5邏輯運算.NOT..AND.67.OR.8.EQV.,

.NEQV.94.4

用塊IF實現(xiàn)選擇結(jié)構(gòu)4.4.1

塊IF的組成塊IF的形式:IF(邏輯表達式)THEN塊1ELSE塊2END

IF4.4.2

塊IF的執(zhí)行過程若邏輯表達式的值為真,則執(zhí)行塊1,否則執(zhí)行塊2。4.4.3

塊IF的嵌套[例4.2]學(xué)生考試成績,大于等于80分的為A等,大于等于60分而小于80分的為B等,小于60分的為D等。READ

(*,

*)

GRADEIF

(GRADE

.GE.

60.0)

THENIF

(GRADE

.GE.

80.0)

THENPRINT

*,

‘A’ELSEPRINT

*,

‘B’END

IFELSEPRINT

*,

‘D’END

IF[例4.3]如果在上例的基礎(chǔ)上將80分以上定為A等,70~79分定為B等,60~69分定為C等,小于60分的為D等。READ

(*,

*)

GRADEIF(GRADE

.GE.

60.0)

THENIF(GRADE

.GE.

70)

THENIF(GRADE

.GE.

80.0)

THENPRINT

*,

‘A’ELSEPRINT

*,

‘B’END

IFELSEPRINT

*,

‘C’END

IFELSEPRINT

*,

‘D’END

IF[例4.4]

三個數(shù)A、B、C,按升序排序。READ

(*,

*)

A,

B,

CIF

(A

.LE.

B)

THENELSET=AA=BB=TEND

IFIF

(B

.LE.

C)THENELSET=BB=CC=TIF

(A

.LE.

B)

THENELSET=AA=BB=TEND

IFEND

IF4.4.4

ELSE

IF語句FORTRAN提供ELSE

IF語句來處理邏輯

“否則,如果……”。[例4.6]例4.3可以用ELSE

IF語句來實現(xiàn)。READ

(*,*)

GRADEIF

(GRADE

.GE.

80.0)

THENWRITE

(*,*)

‘A’ELSE

IF

(GRADE

.GE.

70.0)

THENWRITE

(*,*)

‘B’ELSE

IF

(GRADE

.GE.

60.0)

THENWRITE

(*,*)

‘C’ELSEWRITE

(*,*)

‘D’END

IF[例4.7]有一函數(shù):Y=

0(X<-10)2X+20(-10<=X<0)20(0<=X<20)30-0.5X(20<=X<40)50-X(40<=X<50)0(X>=50)READ

(*,*)

XIF

(X

.LT.-10.0)

THENY=0.0ELSE

IF

(X

.LT.0.0)

THENY=2.0*X+20.0ELSE

IF

(X

.LT.20.0)

THENY=20.0ELSE

IF

(X

.LT.40.0)

THENY=30.0-0.5*XELSE

IF

(X

.LT.50.0)

THENY=50.0-XELSEY=0.0END

IFPRINT

*,

‘Y=’,

YEND4.5

邏輯IF語句邏輯IF語句實現(xiàn)選擇結(jié)構(gòu),但它與塊IF不同:它只有條件為真時才有操作,為假時不進行任何操作;條件為真時只能執(zhí)行一個語句而不能執(zhí)行若干個語句。例如:IF

(X

.GT.

0.0)

PRINT

*,

X[例4.8]計算READ

(*,

*)

XIF

(X

.GE.

0.0)

Y=3.0*X+6.0IF

(X

.LT.

0.0)

Y=-X*X+2.0*X-8.0PRINT

*,

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論