版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、第二章 邏輯運(yùn)算與分支結(jié)構(gòu)關(guān)系運(yùn)算邏輯運(yùn)算三種典型的If分支結(jié)構(gòu)Select case 結(jié)構(gòu)結(jié)構(gòu)化程序設(shè)計(jì)的結(jié)構(gòu)化程序設(shè)計(jì)的 順序結(jié)構(gòu)順序結(jié)構(gòu)自頂向下,自頂向下,按語句的排列順序依次依次執(zhí)行所有語句,是最簡單的結(jié)構(gòu)。程序的處理步驟出現(xiàn)分支,需要先進(jìn)行程序的處理步驟出現(xiàn)分支,需要先進(jìn)行條件判定條件判定,然后選擇其中的,然后選擇其中的一個(gè)分支來執(zhí)行。這是一個(gè)分支來執(zhí)行。這是將要介紹的內(nèi)容。將要介紹的內(nèi)容。循環(huán)結(jié)構(gòu)循環(huán)結(jié)構(gòu)程序反復(fù)執(zhí)行某個(gè)或某些操作,直到達(dá)到某一條件時(shí)才終止,這是下一章將要介紹的內(nèi)容。Program my_absImplicit none Real : x, y Print*, in
2、put x: Read*, x If ( x0 ) theny = x else y = -x End if print(a,f6.3,a,f6.3), The absolute value of , x, is, yEnd program一種典型的If結(jié)構(gòu)(雙分支):If (條件) then (if 塊)Else (else 塊)End if選擇結(jié)構(gòu)選擇結(jié)構(gòu)的簡單示例:編程實(shí)現(xiàn):從鍵盤輸入任意實(shí)數(shù)x,輸出它的絕對值y。關(guān)系運(yùn)算 關(guān)系運(yùn)算也稱“比較比較運(yùn)算”, 將兩個(gè)量進(jìn)行大小比較,其結(jié)果為一邏輯型常量邏輯型常量。 Fortran提供了6種關(guān)系運(yùn)算符:關(guān)系運(yùn)算符關(guān)系運(yùn)算符英文含義英文含義代表的
3、數(shù)學(xué)符號代表的數(shù)學(xué)符號.lt. 或 Less than.le. 或 Greater than.ge. 或 =Greater than or Equal to注意:字母形式的關(guān)系運(yùn)算符兩側(cè)的圓點(diǎn) . 不可遺漏!關(guān)系表達(dá)式的一般形式為:算術(shù)量算術(shù)量1 1 關(guān)系運(yùn)算符關(guān)系運(yùn)算符 算術(shù)量算術(shù)量2 2其中,“算術(shù)量”通??梢允?數(shù)值型數(shù)值型(常量常量、變量變量、函數(shù)函數(shù)) 字符型字符型 算術(shù)表達(dá)式。算術(shù)表達(dá)式。例如:例如: 32,a+b=c , sin(x) .eq. 0, abs(a-c)BPrint*, c2, AB算術(shù)表達(dá)式算術(shù)表達(dá)式可以賦給某個(gè)邏輯型的變量,例如:Logical : L Prin
4、t*, L = 3= x1+x2” 等價(jià)于(a1+a2) = (x1+x2)。q關(guān)系表達(dá)式中,算術(shù)量1和算術(shù)量2可以是不同類型的量。實(shí)型量與整型量進(jìn)行比較時(shí),先將低級類型(整型)轉(zhuǎn)化成高級類型(實(shí)型),而后比較。因此,理論上相等相等(或不等不等)的量,在比較時(shí)可能出現(xiàn)錯(cuò)誤出現(xiàn)錯(cuò)誤,例如:Print*, 10.0 * 0.01 = 0.1;程序運(yùn)行結(jié)果為:解決方案:判斷兩實(shí)型數(shù)據(jù)實(shí)型數(shù)據(jù)是否相等的辦法是:他們之差的絕對值是否足夠小,如:Print*, abs(10.0*0.01 -0.1 ) =5但有時(shí)會(huì)遇到更為復(fù)雜復(fù)雜的條件,例如: 5 = x =5和x=5和x=10兩者進(jìn)行邏輯運(yùn)算邏輯運(yùn)算,
5、需要采用邏輯表達(dá)式邏輯表達(dá)式,結(jié)果的類型為邏輯型結(jié)果的類型為邏輯型。邏輯表達(dá)式邏輯表達(dá)式的一般形式為:邏輯量邏輯量1 1 邏輯運(yùn)算符邏輯運(yùn)算符 邏輯量邏輯量2 2其中,“邏輯量” 可以是邏輯型常量(.true.和 .false. )、邏輯型變量、邏輯型函數(shù)、關(guān)系表達(dá)式等。注意:“邏輯非”(.not.)運(yùn)算,只有一個(gè)邏輯量。合法的邏輯表達(dá)式舉例: .not. 52 , .not.(ab.or.c/=d)寫出以下條件對應(yīng)的邏輯表達(dá)式:o 5= x =10o a和b都是正的或者都是負(fù)的o a和b之一為0,但兩者不全為0練習(xí): 設(shè)實(shí)型數(shù)據(jù)a=2.5, b=7.5, c=5.0, d=6.0, Prin
6、t*, c/2.0 +d a .and. .not. .true. .or. c c .and. c+d b 邏輯運(yùn)算中,各運(yùn)算符具有不同程度的優(yōu)先級:優(yōu)先級:一級優(yōu)先:“非”運(yùn)算 ( .not. )二級優(yōu)先:“與”運(yùn)算 ( .and. )三級優(yōu)先:“或”運(yùn)算 ( .or. )最后(三者同等級):“邏輯等”(.eq.),“邏輯不等”(.neq.),“邏輯異或”(.xor.)單目運(yùn)算符的優(yōu)先級最高三種典型的分支結(jié)構(gòu)之:三種典型的分支結(jié)構(gòu)之:這是最簡單的分支結(jié)構(gòu),語法格式如下:if (條件條件) then (If塊塊)end if分支結(jié)構(gòu)分支結(jié)構(gòu)程序在自頂向下順序執(zhí)行的過程中,有時(shí)需要設(shè)置多條分支
7、岔路,這時(shí)要通過條件判定,來決定下一步的走向。N-S流程圖:條件真假執(zhí)行If 塊中的語句 不執(zhí)行if塊“條件”的值為邏輯型(真或假),可為關(guān)系或邏輯表達(dá)式,也可為邏輯型變量或常量。稱之為“塊”,即“代碼塊”,是指可以有許多句許多句代碼。使用單分支結(jié)構(gòu)單分支結(jié)構(gòu)編程,實(shí)現(xiàn):從鍵盤輸入任意實(shí)數(shù)x,輸出它的絕對值y。Program my_absImplicit none Real : x, y Print*, input x: Read*, xprint(f6.3), Absolute value:, yEnd program思路:先將x賦給y,然后再根據(jù)x的正負(fù)調(diào)整y的符號,適用于單分支單分支結(jié)構(gòu)
8、。 y = x If ( x0 ) then y = -x End if條件真假If 塊else 塊N-S流程圖: 一般形式為:ifif( (條件條件) )thenthen if if塊塊elseelse else else塊塊endifendifq該分支結(jié)構(gòu),如果“條件”的值為真,執(zhí)行if塊中的語句;q如果“條件”的值為假,則執(zhí)行else塊中的語句??傊?,一定要二者選其一執(zhí)行。三種典型的分支結(jié)構(gòu)之:三種典型的分支結(jié)構(gòu)之:采用采用雙分支結(jié)構(gòu)雙分支結(jié)構(gòu),編程實(shí)現(xiàn):任意輸入兩個(gè)整數(shù),按從從小到大小到大的順序輸出。Program testImplicit none integer : a, b Re
9、ad*, a, b If (ab) then Print*, a, b Else Print*, b, a Endif Endprogram使得:使得:輸入:輸入: 3 4 時(shí),時(shí),輸出輸出: 3 4輸入:輸入: 5 2 時(shí),時(shí),輸出輸出: 2 5分析: 當(dāng)輸入的數(shù)據(jù)a=b), 先輸出b后輸出a。一般形式:If (條件條件1) then 塊塊1 (if塊)塊)Elseif (條件條件2) then 塊塊2 (else if 塊)塊)Elseif (條件條件3) then 塊塊3 (else if 塊)塊) Elseif (條件條件n) then 塊塊n (else if 塊)塊) Else 塊
10、塊(n+1) (else 塊)塊)End if注意!注意!中括號中括號 表示可選,表示可選,即:即:else塊可以缺省。塊可以缺省。三種典型的分支結(jié)構(gòu)之:三種典型的分支結(jié)構(gòu)之:塊2塊1無無Else塊塊:If (條件條件1) then 塊塊1Elseif (條件條件2) then 塊塊2 endif有有Else塊塊:If (條件條件1) then 塊塊1Elseif (條件條件2) then 塊塊2 Else 塊塊3endif塊2塊1塊塊3條件1和條件2都不滿足時(shí),什么都不做條件1和條件2都不滿足時(shí),執(zhí)行塊3的語句ElseElse塊缺省與否的區(qū)別塊缺省與否的區(qū)別Else后雖然沒有寫明條件,但事實(shí)
11、上“塊3”被執(zhí)行的條件應(yīng)該是:_。BMI區(qū)間區(qū)間健康狀況健康狀況(0, 18.5)偏瘦18.5, 24)正常24, +超重分析:世界衛(wèi)生組織采用BMI(體質(zhì)指數(shù))來評判體重是否符合標(biāo)準(zhǔn), BMI = 體重(kg) 身高2 (m)真BMI18.5假Print*, 偏瘦BMI24真假Print*, 正常Print*, 超重 編程實(shí)現(xiàn):從鍵盤輸入身高和體重,判斷是否符合標(biāo)準(zhǔn)。Program body_mass_index Implicit noneReal : height, weight, BMIprint*, input height (cm): Read*, heightPrint*, inp
12、ut weight (kg): Read*, weightBMI = weight / (height/100)*2End programIf (BMI 18.5) then print*, 身體質(zhì)量:偏瘦elseif (BMIb)then a=bEndif可改寫成一條一條if語句:If (ab) a=b邏輯if語句的一般形式:If (條件條件) 語句語句q當(dāng)條件成立時(shí)只執(zhí)行語句語句。q形式上,這條可執(zhí)行語句必須緊跟形式上,這條可執(zhí)行語句必須緊跟“if(條件條件)”之后寫在同一行。之后寫在同一行??梢?,if-then型單分支結(jié)構(gòu)的效果完全相同單分支結(jié)構(gòu)的效果完全相同,只是形式不同,不再是“塊結(jié)
13、構(gòu)”,而是一條 “if語句” 。當(dāng)單分支if結(jié)構(gòu)的If塊內(nèi)只有一條只有一條可執(zhí)行語句時(shí),例如這時(shí), then和endif都省去,同時(shí): a=b必須與if(ab)寫在同一行。處理多分支多分支選擇問題的 Select case 結(jié)構(gòu)雖然也可采用塊“If-else if”結(jié)構(gòu)結(jié)構(gòu)來實(shí)現(xiàn),但不利于程序的可讀性和執(zhí)行效率。成績或工資等級的分類等多分支問題,常用select case結(jié)構(gòu)來實(shí)現(xiàn)。一般形式:Select case ( 表達(dá)式) Case (數(shù)值1) 塊1 Case (數(shù)值2) 塊2 Case (數(shù)值n) 塊n Case default 默認(rèn)塊 End select表達(dá)式表達(dá)式:任一表達(dá)式,如
14、: a+b,也可以是某一變量名。其類型可以是整型整型、邏輯型邏輯型或字符型字符型,但不可以是不可以是實(shí)型或復(fù)型。數(shù)值數(shù)值:表達(dá)式的取值或范圍,與表達(dá)式的數(shù)據(jù)類型必須相同。此處用表示:Case default可以缺省Program exampleImplicit noneInteger: sPrint*, 請輸入學(xué)生成績:Read*, sEnd program輸入成績s(0-100),輸出獎(jiǎng)勵(lì)級別。一等獎(jiǎng)(90 s 100);二等獎(jiǎng)( 80 s 89);無獎(jiǎng)勵(lì)(60 s 79);補(bǔ)考(0 s 59)。一般形式:Select case (控制表達(dá)式) Case (選擇表達(dá)式1) 塊1 Case (
15、選擇表達(dá)式2) 塊2 Case (選擇表達(dá)式n) 塊n Case default 默認(rèn)塊 End selectSelect case (s) Case ( 90 : 100) Print*, 一等獎(jiǎng) Case ( 80 : 89 ) Print*, 二等獎(jiǎng) Case ( 60 : 79 ) Print*, 無獎(jiǎng)勵(lì) Case ( 0 : 59 ) Print*, 補(bǔ)考 Case default !S100 Print*, 無效成績!End selectSelect case 用法說明Case default最多只能有一條,并應(yīng)該放在所有case語句之后。當(dāng)case控制表達(dá)式是整數(shù)時(shí),可以有多種表
16、示法,如:Case (1), case(1, 3, 7), case(1:5, 9,6), case (100:200), case (100:), case(:200)等都是合法的。Case 表達(dá)式的值還可以是字符字符,如: Case (a, b, d ), case(a : g)同if結(jié)構(gòu)一樣,select case結(jié)構(gòu)也可以加上結(jié)構(gòu)名。pause 語句與語句與 stop 語句語句Pause:程序執(zhí)行到pause語句時(shí),暫停,并提示用戶:按回車鍵(CR),程序?qū)⒗^續(xù)執(zhí)行。Pause 后還可跟任意一個(gè)整數(shù)常量,程序執(zhí)行到pause語句時(shí),暫停,并將顯示該整數(shù)?;剀嚭螅篜ause的主要用途: (1)在調(diào)試程序時(shí),放于復(fù)雜的代碼結(jié)構(gòu)中,判斷程序的執(zhí)行流程,以改正程
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(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)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024高效房地產(chǎn)經(jīng)紀(jì)服務(wù)協(xié)議示例
- 2024年融資中介服務(wù)協(xié)議范本
- 2024年二手車交易協(xié)議樣本
- 2024年商用司機(jī)短期租賃協(xié)議
- DB11∕T 1692-2019 城市樹木健康診斷技術(shù)規(guī)程
- DB11∕T 1699-2019 在用氨制冷壓力管道X射線數(shù)字成像檢測技術(shù)要求
- 2024年工程裝修全包服務(wù)協(xié)議細(xì)則
- 2024年離婚財(cái)產(chǎn)分割協(xié)議格式
- 2024年法律顧問聘請協(xié)議樣本
- 2024指定區(qū)域建筑工程修復(fù)施工協(xié)議
- 零部件英文縮寫及零部件中英文對照
- 血源性病原體職業(yè)接觸防護(hù)導(dǎo)則
- 煉鋼廠6機(jī)6流小方坯連鑄機(jī)技術(shù)操作規(guī)程
- 跌倒的護(hù)理 (養(yǎng)老護(hù)理員培訓(xùn)課件)
- 船舶租賃盡職調(diào)查
- 統(tǒng)編教學(xué)小學(xué)語文課外閱讀《細(xì)菌世界歷險(xiǎn)記》導(dǎo)讀課課件
- 植物生理學(xué)-植物的逆境生理
- 【課件】比的基本性質(zhì)
- 小學(xué)英語人教新起點(diǎn)五年級上冊Unit3Animalsunit3storytime
- 2023年江蘇省淮安市中考化學(xué)試卷
- 小學(xué)英語名師工作室工作計(jì)劃2篇
評論
0/150
提交評論