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

下載本文檔

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

文檔簡介

1、fortran語言 -fortran 77結構化程序設計 第四章 邏輯運算和選擇結構 4.1 引言 在第三章介紹了最簡單fortran程序,在程 序中各語句是順序執(zhí)行的,這種程序只包括順序 結構。這種程序只能解決邏輯關系比較簡單的問 題。在解決數(shù)值計算和非數(shù)值計算的問題時,常 常遇到這樣問題:需要對給定條件作邏輯判斷, 根據(jù)判斷的結果決定執(zhí)行哪種操作。這需要用到 選擇結構。 用塊if結構實現(xiàn)選擇 結構,其形式為: if (條件) then then塊 else else塊 end if 例4.1計算職工工資。工人每小時計時工資為rate, 如果一周工作時間超過40小時,加班部分的工資按 正常時

2、間工資的1.5倍計算。 c payroll with overtime program payroll read (*, *) rate, hours if (hours .gt. 40.0) then regpay=rate*40.0 ovtpay=1.5*rate*(hours-40.0) else regpay=rate*hours ovtpay=0.0 end if pay=regpay+ovtpay print *, rate=, rate, hours=, hours print *, regular pay=, regpay, overtime pay=, ovtpay prin

3、t *, total pay=, pay end 4.2 關系表達式 關系表達式是最簡單的一種邏輯表達式。 算術量可以是數(shù)值常數(shù)、數(shù)值型變量、數(shù)值函 數(shù),也可以是算術表達式。 fortran中有六個關系運算符。見下表。 關系運算符 英語含義 數(shù)學符號 .gt. greater than .ge. greater than or equal to .lt. less than 3.5 a+b .le. 0.0 a+b0 sin(x) .ge. 0.5 sin(x)0.5 a-b .ne. c+d a-bc+d i .lt. j/2 i0。但 遇到一些比較復雜條件,如0x5,是0x和x5 兩個簡單

4、條件的組合,可以把它看作一個復合條 件。可以寫成以下邏輯表達式: x .ge. 0.0 .and. x .lt. 5.0 所謂邏輯表達式是對邏輯量進行邏輯運算的表達 式。邏輯表達式的形式: fortran 77的邏輯量: 邏輯常量 邏輯型變量 關系表達式 邏輯表達式的值是一個邏輯值,它不是真便是假。 4.3.1 邏輯常量 邏輯常量只有兩個: .true. .false. 例如,當x=3時 x .lt. 5 的值為.true.,而 x .le. 0.0 的值為.false.。 邏輯常量可以在程序中出現(xiàn),可以將它們賦給 邏輯型變量。邏輯常量又稱邏輯常數(shù),它的性質 與其它類型的常量相類似,代表一個常

5、值。 4.3.2 邏輯型變量 邏輯型變量存放邏輯常量。它的值也只能是.true. 或.false.之一。 可以將一邏輯常量賦予一個邏輯變量。假定a,b已被定義 為邏輯型變量,則可以用賦值語句對它們賦值: a=.true. b=.false. 這種賦值語句稱為邏輯賦值語句。它的一般形式為: 邏輯變量=邏輯表達式 程序中對每一個邏輯變量都應加以說明,可用logical語 句,如: logical a, b 4.3.3 邏輯運算符 邏輯運算符 含義 邏輯運算舉例 .and. 邏輯與 a .and. b .or. 邏輯或 a .or. b .not. 邏輯非 .not. a .eqv. 邏輯等 a .

6、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. l2 4.3.4 邏輯表達式的運算次序 一個邏輯表達式中可以包括多個邏輯運算符。 即多個邏輯量經過邏輯運算后可以得到一個邏輯 值。例如以下邏輯表達式: a .le. 0.0 .and. a+c .gt. b+d .or. .not. .true. fortran 77規(guī)定按以下次序進行運

7、算: 先計算算術表達式的值 再求關系表達式的值 最后進行邏輯運算 運算類型運算類型運算符運算符優(yōu)先級優(yōu)先級 括號 ( ) 1 算術運算 * 2 * / 3 + - 4 關系運算 .gt. .ge. .lt. 5 .le. .eq. .ne. 邏輯運算 .not. 6 .and. 7 .or. 8 .eqv., .neqv. 9 4.4 用塊if實現(xiàn)選擇結構 4.4.1 塊if的組成 塊if的形式: if (邏輯表達式) then 塊1 else 塊2 end if 4.4.2 塊if的執(zhí)行過程 若邏輯表達式的值為真,則執(zhí)行塊1,否 則執(zhí)行塊2。 4.4.3 塊if的嵌套 例4.2學生考試成績,

8、大于等于80分的為a等,大于等于60 分而小于80分的為b等,小于60分的為d等。 read (*, *) grade if (grade .ge. 60.0) then if (grade .ge. 80.0) then print *, a else print *, b end if else print *, d end if 例4.3如果在上例的基礎上將80分以上定為a等,7079 分定為b等,6069分定為c等,小于60分的為d等。 read (*, *) grade if (grade .ge. 60.0) then if (grade .ge. 70) then if (gra

9、de .ge. 80.0) then print *, a else print *, b end if else print *, c end if else print *, d end if 例4.4 三個數(shù)a、b、c,按升序排序。 read (*, *) a, b, c if (a .le. b) then else t=a a=b b=t end if if (b .le. c) then else t=b b=c c=t if (a .le. b) then else t=a a=b b=t end if end if 4.4.4 else if語句 fortran提供else i

10、f語句來處理邏輯 “否則,如果” 。 例4.6例4.3可以用else if語句來實現(xiàn)。 read (*,*) grade if (grade .ge. 80.0) then write (*,*) a else if (grade .ge. 70.0) then write (*,*) b else if (grade .ge. 60.0) then write (*,*) c else write (*,*) d end if 例4.7有一函數(shù): y=0 (x-10) 2x+20(-10=x0) 20(0=x20) 30-0.5x(20=x40) 50-x(40=x=50) read (*,

11、*) x if (x .lt. -10.0) then y=0.0 else if (x .lt. 0.0) then y=2.0*x+20.0 else if (x .lt. 20.0) then y=20.0 else if (x .lt. 40.0) then y=30.0-0.5*x else if (x .lt. 50.0) then y=50.0-x else y=0.0 end if print *, y=, y end 4.5 邏輯if語句 邏輯if語句實現(xiàn)選擇結構,但 它與塊if不同: (1)它只有條件為真時才有操作, 為假時不進行任何操作; (2)條件為真時只能執(zhí)行一個語句 而不能執(zhí)行若干個語句。 例如: if (x .gt. 0.0) print *, x 例4.8計算 read (*, *) x if (x .ge. 0.0) y=3.0*x+6.0 if (x .l

溫馨提示

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

評論

0/150

提交評論