




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第3章流程控制和邏輯運(yùn)算第3章流程控制和邏輯運(yùn)算流程控制順序結(jié)構(gòu):執(zhí)行流程成直線,很難實(shí)現(xiàn)一些復(fù)雜功能的程序。選擇結(jié)構(gòu)、循環(huán)結(jié)構(gòu)B塊PA塊成立不成立入口出口IF(條件P)THEN A塊ELSE B塊ENDIF流程控制順序結(jié)構(gòu):執(zhí)行流程成直線,很難實(shí)現(xiàn)一些復(fù)雜功能的程序關(guān)系表達(dá)式關(guān)系表達(dá)式是構(gòu)成選擇結(jié)構(gòu)判斷條件的基本式子。它也是一種最簡(jiǎn)單的邏輯表達(dá)式關(guān)系表達(dá)式的一般形式
〈算術(shù)量〉〈關(guān)系運(yùn)算符〉〈算術(shù)量〉
涵義:關(guān)系表達(dá)式是由關(guān)系運(yùn)算符將兩個(gè)算術(shù)量連接起來(lái)的式子。關(guān)系表達(dá)式關(guān)系表達(dá)式是構(gòu)成選擇結(jié)構(gòu)判斷條件的基本式子。它也是關(guān)系運(yùn)算符
關(guān)系Fortran77Fortran90大于.gt.>大于等于.ge.>=等于.eq.==小于.lt.<小于等于.le.<=不等于.ne./=關(guān)系運(yùn)算符 關(guān)系Fortran77Fortran90關(guān)系表達(dá)式關(guān)系運(yùn)算符的兩個(gè)字母(GT,LE…)的兩側(cè)各有一個(gè)句點(diǎn),不要漏寫。例如“A.GT.B”是一個(gè)關(guān)系表達(dá)式,如果漏寫句點(diǎn),就變成”AGTB”,系統(tǒng)會(huì)把它當(dāng)成一個(gè)變量名來(lái)處理。在關(guān)系表達(dá)式中,同時(shí)包含算術(shù)運(yùn)算符和關(guān)系運(yùn)算符,F(xiàn)ortran規(guī)定,先進(jìn)行算術(shù)運(yùn)算,后進(jìn)行關(guān)系運(yùn)算。例如X+Y.GT.A-B關(guān)系表達(dá)式關(guān)系運(yùn)算符的兩個(gè)字母(GT,LE…)的兩側(cè)各有一2022/12/106關(guān)系表達(dá)式關(guān)系表達(dá)式的例子:
x+y>15.4或
x+y.gt.15.4a+b≠a-b
只能寫成
a+b.ne.a-b或(a+b)/=(a-b)ex≥2.17只能寫成
exp(x).ge.2.17
或exp(x)>=2.172022/12/106關(guān)系表達(dá)式關(guān)系表達(dá)式的例子:關(guān)系表達(dá)式關(guān)系運(yùn)算用于兩個(gè)不同類型的運(yùn)算時(shí),將自動(dòng)進(jìn)行數(shù)據(jù)類型轉(zhuǎn)換,規(guī)則同算術(shù)運(yùn)算。關(guān)系表達(dá)式的運(yùn)算元素是算術(shù)量,結(jié)果是邏輯量:真(.True.)或假(.False.)。運(yùn)算符如.LE.中,點(diǎn)與LE字符是一個(gè)整體符號(hào),之間不能有空格。在使用.EQ.(==)或.NE.(/=)時(shí),應(yīng)注意實(shí)數(shù)類型數(shù)據(jù)的存儲(chǔ)誤差。例如:
logicalAreal::x=1.2A=x*x.EQ.1.44print*,A
關(guān)系表達(dá)式關(guān)系運(yùn)算用于兩個(gè)不同類型的運(yùn)算時(shí),將自動(dòng)進(jìn)行數(shù)據(jù)類關(guān)系表達(dá)式實(shí)數(shù)運(yùn)算誤差對(duì)關(guān)系表達(dá)式的影響如:1.0/3.0*3.0.EQ.1.0
值為.false.1.0/3.0*3.0=0.9999999
所以采用如下的形式:
a.eq.b
→abs(a-b).lt.1E-6c.ne.d
→abs(c-d).gt.1E-6關(guān)系表達(dá)式實(shí)數(shù)運(yùn)算誤差對(duì)關(guān)系表達(dá)式的影響字符關(guān)系表達(dá)式兩個(gè)字符型數(shù)據(jù)也可以經(jīng)比較,與數(shù)值型格式一致兩個(gè)單個(gè)字符比較,以其ASCII碼比較,ASCII碼大者為大如:'A'<'B'兩個(gè)字符常量(字符串)比較,將兩個(gè)字符串中的字符自左向右進(jìn)行比較,如有差別,則ASCII碼大者為大,否則兩者相等。如:'SHANGHAI'<'SHANGKONG'如果兩個(gè)字符串長(zhǎng)度不等,則系統(tǒng)會(huì)自動(dòng)將短的字符補(bǔ)以空格,使兩者等長(zhǎng)再比較。如:'the'<'then'→'the︺'<'then'字符關(guān)系表達(dá)式兩個(gè)字符型數(shù)據(jù)也可以經(jīng)比較,與數(shù)值型格式一致ASCII規(guī)則數(shù)字0小9大數(shù)字比字母小大寫字母比小寫字母小字母A小Z大,a小z大其他專用字符有的比數(shù)字小有的比數(shù)字大CHAR(I)—得到ASCII碼為I的字符
CHAR(97)
→'a'CHAR(65)
→'A'ICHAR(a)
—得到字符串a(chǎn)中第一個(gè)字符的ASCII碼
ICHAR('apple')→97ASCII規(guī)則數(shù)字0小9大邏輯運(yùn)算關(guān)系表達(dá)式只能表達(dá)簡(jiǎn)單的關(guān)系,但如:(1)5≤x≤10
(2)|X|>5(3)M能被3或5同時(shí)乘除
以上關(guān)系應(yīng)如何表示呢?他們不能簡(jiǎn)單地用關(guān)系表達(dá)式表。
解決的方法是:邏輯表達(dá)式。邏輯運(yùn)算關(guān)系表達(dá)式只能表達(dá)簡(jiǎn)單的關(guān)系,但如:邏輯表達(dá)式邏輯表達(dá)式的一般形式
〈邏輯量〉〈邏輯運(yùn)算符〉〈邏輯量〉邏輯表達(dá)式是由邏輯運(yùn)算符將兩個(gè)邏輯量連接起來(lái)的式子。邏輯表達(dá)式的運(yùn)算元素是邏輯量,結(jié)果也是邏輯量:真(.True.)或假(.False.)。邏輯量包括邏輯常量、邏輯變量和關(guān)系表達(dá)式。邏輯表達(dá)式邏輯表達(dá)式的一般形式邏輯運(yùn)算回顧邏輯常量?jī)蓚€(gè):①.true.(真)②.false.(假)邏輯變量
——用于存放邏輯常量的變量。邏輯變量可以通過賦值語(yǔ)句來(lái)接受邏輯常量的值,但在使用前,要進(jìn)行類型說明。
例:logicala,ba=.true.b=.false.邏輯運(yùn)算回顧邏輯常量邏輯運(yùn)算邏輯運(yùn)算符
.and.(邏輯與)
.or.(邏輯或)
.not.(邏輯非)
.eqv.(邏輯等(同或)
.neqv.(邏輯不等(異或)邏輯運(yùn)算邏輯運(yùn)算符邏輯運(yùn)算邏輯運(yùn)算符的運(yùn)算規(guī)則若a,b為兩個(gè)邏輯量,則:
a.and.b——(當(dāng)a、b同時(shí)為真時(shí),為真。)
a.or.b——(當(dāng)a、b中任意一個(gè)為真或同時(shí)為真時(shí),為真。)
.not.a——(當(dāng)a為真,其值為假;當(dāng)a為假,其值真。)
a.eqv.b——(當(dāng)a、b為同一邏輯常量時(shí),為真。)
a.neqv.b——(當(dāng)a、b不為同一邏輯常量時(shí),為真。)邏輯運(yùn)算邏輯運(yùn)算符的運(yùn)算規(guī)則邏輯運(yùn)算舉例例如:(1)5≤x≤10
表示為:x>=5.and.x<=10
(2)|X|>5
表示為:x<-5.or.x>5
或者為:abs(x)
>
5(3)M能被3或5同時(shí)乘除表示為:Mod(m,3)==0.or.Mod(m,5)==0邏輯運(yùn)算舉例例如:邏輯運(yùn)算次序邏輯表達(dá)式的運(yùn)算次序
運(yùn)算次序?yàn)椋?/p>
括號(hào)→算術(shù)運(yùn)算→關(guān)系運(yùn)算→邏輯運(yùn)算
而邏輯運(yùn)算:
.not.→.and.→.or.→.eqv.,.neqv.邏輯運(yùn)算次序邏輯表達(dá)式的運(yùn)算次序邏輯運(yùn)算舉例例1:寫出下列條件的邏輯表達(dá)式。⑴5≤k≤10
k.ge.5.and.k.le.10⑵│f│≤3g或│f│=5t
abs(f).le.3*g.or.abs(f).eq.5*t⑶1≤a≤8并且1≤b≤8(a.ge.1.and.a.le.8).and.(b.ge.1.and.b.le.8)邏輯運(yùn)算舉例例1:寫出下列條件的邏輯表達(dá)式。邏輯運(yùn)算舉例若a=2.5,b=7.5,c=5.0,d=6.0,求下列邏輯表達(dá)式的值。⑴(a.lt.b).and.(b.lt.c)
①t②f③f
邏輯運(yùn)算舉例若a=2.5,b=7.5,c=5.0,d=6.0邏輯運(yùn)算舉例若a=2.5,b=7.5,c=5.0,d=6.0,求下列邏輯表達(dá)式的值。⑵c/2.0+d.lt.a.and..not..true..or.c.le.d
①8.5④F③T
②F
.
⑤F.
⑥T邏輯運(yùn)算舉例若a=2.5,b=7.5,c=5.0,d=6.0塊if選擇結(jié)構(gòu)有以下三種典型的塊if選擇結(jié)構(gòu):⑴單分支結(jié)構(gòu):
if(條件)then(塊if語(yǔ)句)
塊(then塊)endif(endif語(yǔ)句)PA塊if選擇結(jié)構(gòu)有以下三種典型的塊if選擇結(jié)構(gòu):PA塊if選擇結(jié)構(gòu)⑵雙分支結(jié)構(gòu)
if(條件)then
塊1(then塊)else
塊2(else塊)
endif
PAB塊if選擇結(jié)構(gòu)⑵雙分支結(jié)構(gòu)PAB塊if選擇結(jié)構(gòu)例:2X+3(X≤2)Y=
X+5(X>2)編程如下:
read(*,*)x if(x.le.2)then
y=2*x+3 else
y=x+5 endif
write(*,*)'x=',x,'y=',y endX≤2TrueFalseY=2X+3
Y=X+5輸出結(jié)果結(jié)束輸入X值塊if選擇結(jié)構(gòu)例:2X+3塊if選擇結(jié)構(gòu)⑶多分支塊if結(jié)構(gòu)
if(條件1)then
塊1elseif(條件2)then
塊2(elseif塊)
┆elseif(條件n)then
塊n[else
塊(n+1)]endif
塊if選擇結(jié)構(gòu)⑶多分支塊if結(jié)構(gòu)塊if選擇結(jié)構(gòu)說明:⑴每個(gè)塊if中可以完整地包含一個(gè)(或多個(gè))塊if結(jié)構(gòu),即構(gòu)成塊if的嵌套結(jié)構(gòu)。如:
if(條件1)thenif(條件1)then
塊1if(條件2)then
else塊2
if(條件2)thenendif
塊2
else
endif
塊1endif
endif
塊if選擇結(jié)構(gòu)說明:塊if選擇結(jié)構(gòu)⑵一個(gè)塊if語(yǔ)句必須和一個(gè)endif語(yǔ)句相對(duì)應(yīng)。⑶塊if中的“then塊”、“else塊”和“elseif塊”可為空塊。塊if選擇結(jié)構(gòu)⑵一個(gè)塊if語(yǔ)句必須和一個(gè)endif語(yǔ)句塊if選擇結(jié)構(gòu)舉例求一元二次方程ax2+bx+c=0的根。(當(dāng)b2-4ac≥0時(shí)有兩個(gè)實(shí)根,b2-4ac<0時(shí)有兩個(gè)復(fù)根。)
輸入a、b、cb2-4ac→dtrued≥0false計(jì)算兩實(shí)根計(jì)算兩復(fù)根輸出x1,x2輸出x1,x2結(jié)束塊if選擇結(jié)構(gòu)舉例求一元二次方程ax2+bx+c=0的根塊if選擇結(jié)構(gòu)舉例程序
print*,'inputa,b,c:' read*,a,b,cf=-b/(2.0*a) d=b**2-4.0*a*cg=sqrt(-d)/(2.0*a)
if(d.ge.0.0)thenprint*,'x1=',f,'+i',g e=sqrt(d)print*,'x2=',f,'-i',g x1=(-b+e)/(2.0*a)endif x2=(-b-e)/(2.0*a)end print*,'x1=',x1 print*,'x2=',x2
else塊if選擇結(jié)構(gòu)舉例程序print*,'input塊if選擇結(jié)構(gòu)舉例求下列函數(shù)值。
0(x<-10)2x+20(-10≤x<0)y=20(0≤x<20)30-0.5x(20≤x<40)50-x(40≤x<50)0(x≥50)塊if選擇結(jié)構(gòu)舉例求下列函數(shù)值。塊if選擇結(jié)構(gòu)
輸入xtruex<-10falsetruex<0falsetruex<20falsetruex<40falsetrue
x<50
falsey=50-xy=0打印yy=0y=20y=30-0.5xy=2x+20塊if選擇結(jié)構(gòu)輸入xtrue塊if選擇結(jié)構(gòu)舉例程序
read*,xprint*,'y=',y
if(x.lt.-10.0)thenend y=0.0
elseif(x.lt.0.0)then y=2.0*x+20.0
elseif(x.lt.20.0)then y=20.0
elseif(x.lt.40.0)then y=30.0-0.5*x
elseif(x.lt.50.0)then y=50.0-x else y=0.0 endif塊if選擇結(jié)構(gòu)舉例程序 read*,x塊if選擇結(jié)構(gòu)程序舉例read*,xif(x.lt.50.0)then
if(x.lt.-10.0)theny=50.0-xy=0.0else
else
y=0.0
if(x.lt.0.0)thenendify=2.0*x+20.0endif
elseendif
if(x.lt.20.0)then
endif y=20.0endif
else
print*,'y=',y
if(x.lt.40.0)then
end y=30.0-0.5*x
else塊if選擇結(jié)構(gòu)程序舉例read*,x邏輯if語(yǔ)句
邏輯if語(yǔ)句也是一種選擇結(jié)構(gòu),但與塊if不同,主要表現(xiàn)在:①只用一行表示一個(gè)選擇結(jié)構(gòu);②僅當(dāng)條件成立時(shí)執(zhí)行,并且只執(zhí)行一條語(yǔ)句。
邏輯if語(yǔ)句的一般形式:
If〈條件〉語(yǔ)句
例:if(n.le.100)n=n+1邏輯if語(yǔ)句邏輯if語(yǔ)句也是一種選擇結(jié)構(gòu),但與塊邏輯if語(yǔ)句例:2X+3(X≤2)Y=
X+5(X>2)編程如下:
read(*,*)xread(*,*)xif(x.le.2)then if(x.le.2)y=2*x+3
y=2*x+3if(x.gt.2)y=x+5elsewrite(*,*)'y=',y
y=x+5endendifwrite(*,*)'y=',yend邏輯if語(yǔ)句例:2X+3(多重判斷:塊CASE選擇結(jié)構(gòu)SELECTCASE(變量)CASE(數(shù)值1)
語(yǔ)句塊1CASE(數(shù)值2)
語(yǔ)句塊2……CASE(數(shù)值n)
語(yǔ)句塊nCASEDEFAULT[類似于ELSE]
語(yǔ)句塊n+1ENDSELECT塊CASE選擇結(jié)構(gòu)的一般格式Fortran90引入多重判斷:塊CASE選擇結(jié)構(gòu)SELECTCASE(變量)SELECTCASE語(yǔ)句Casedefault程序模塊沒有規(guī)定一定要出現(xiàn)。Case語(yǔ)句里的冒號(hào)前后可以放入兩個(gè)數(shù)值,表示在這兩個(gè)數(shù)字范圍內(nèi)的所有數(shù)值。Case語(yǔ)句可以用逗號(hào)放入多個(gè)變量每個(gè)Case所用的數(shù)值都必須是固定的常量,不能使用變量只能使用整數(shù),字符和邏輯型變量不能使用浮點(diǎn)數(shù)和復(fù)數(shù)。SELECTCASE語(yǔ)句Casedefault程序模塊CASE選擇結(jié)構(gòu)問題:已知年月,判斷該月所對(duì)應(yīng)的天數(shù)。輸入年和月月=1,3,5,7,8,10,12DAY=31月=4,6,9,11DAY=30月=2DAY=29DAY=28輸出DAYTFFFTT閏年FFT塊CASE選擇結(jié)構(gòu)問題:輸入年和月月=1,3,5,7DAY=Integery,m,dRead*,y,mIf
(m==1.or.m==3.or.m==5.or.m==7.or.m==8.or.m==10.or.m==12)
thend=31Elseif(m==4.or.m==6.or.m==9.or.m==11)thend=30Else
if((mod(y,4)==0.and.mod(y,100)/=0).or.mod(y,400)==0)then
d=29else
d=28endifendif
print*,y,"年",m,"月所對(duì)應(yīng)的天數(shù)為:",d,"天"end塊if結(jié)構(gòu)求解問題Integery,m,d塊if結(jié)構(gòu)求解問題integery,Month,Dayprint*,"請(qǐng)輸入y和Month"read*,y,Monthselectcase(Month)case(1,3,5,7,8,10,12) Day=31case(4,6,9,11) Day=30case(2) if((mod(y,4)==0.and.mod(y,100)/=0).or.mod(y,400)==0)then Day=29 elseDay=28 EndifEndselectprint*,y,"年",Month,"月所對(duì)應(yīng)的天數(shù)",Day,"天"end塊Case選擇結(jié)構(gòu)求解問題integery,Month,Day塊Case選擇結(jié)構(gòu)GOTO語(yǔ)句GOTO語(yǔ)句其他語(yǔ)句Pause語(yǔ)句的功能就是,當(dāng)程序執(zhí)行到pause時(shí),會(huì)暫停,直到用戶按下Enter鍵后才會(huì)繼續(xù)執(zhí)行??梢杂脕?lái)調(diào)試,輸出間斷(需要分頁(yè)),或者數(shù)據(jù)顯示(確定是否運(yùn)行)Continue功能為繼續(xù)向下執(zhí)行語(yǔ)句。Stop功能為結(jié)束程序運(yùn)行。其他語(yǔ)句Pause語(yǔ)句的功能就是,當(dāng)程序執(zhí)行到pause時(shí)作業(yè)題目3.1題目3.2作業(yè)題目3.1題目3.2作業(yè)題目3.3請(qǐng)采用Fortran90自由格式編寫程序,求解實(shí)系數(shù)方程ax2+bx+c=0的實(shí)數(shù)解。要求:系數(shù)a,b,c為程序執(zhí)行時(shí)鍵盤輸入,a,b,c為任意實(shí)數(shù);所有的解均輸出到屏幕。題目3.4請(qǐng)采用IF…GOTO…語(yǔ)句編寫Fortran90自由格式程序,求1+2+3+…+100=?作業(yè)題目3.3請(qǐng)采用Fortran90自由格式編寫程序,第3章流程控制和邏輯運(yùn)算第3章流程控制和邏輯運(yùn)算流程控制順序結(jié)構(gòu):執(zhí)行流程成直線,很難實(shí)現(xiàn)一些復(fù)雜功能的程序。選擇結(jié)構(gòu)、循環(huán)結(jié)構(gòu)B塊PA塊成立不成立入口出口IF(條件P)THEN A塊ELSE B塊ENDIF流程控制順序結(jié)構(gòu):執(zhí)行流程成直線,很難實(shí)現(xiàn)一些復(fù)雜功能的程序關(guān)系表達(dá)式關(guān)系表達(dá)式是構(gòu)成選擇結(jié)構(gòu)判斷條件的基本式子。它也是一種最簡(jiǎn)單的邏輯表達(dá)式關(guān)系表達(dá)式的一般形式
〈算術(shù)量〉〈關(guān)系運(yùn)算符〉〈算術(shù)量〉
涵義:關(guān)系表達(dá)式是由關(guān)系運(yùn)算符將兩個(gè)算術(shù)量連接起來(lái)的式子。關(guān)系表達(dá)式關(guān)系表達(dá)式是構(gòu)成選擇結(jié)構(gòu)判斷條件的基本式子。它也是關(guān)系運(yùn)算符
關(guān)系Fortran77Fortran90大于.gt.>大于等于.ge.>=等于.eq.==小于.lt.<小于等于.le.<=不等于.ne./=關(guān)系運(yùn)算符 關(guān)系Fortran77Fortran90關(guān)系表達(dá)式關(guān)系運(yùn)算符的兩個(gè)字母(GT,LE…)的兩側(cè)各有一個(gè)句點(diǎn),不要漏寫。例如“A.GT.B”是一個(gè)關(guān)系表達(dá)式,如果漏寫句點(diǎn),就變成”AGTB”,系統(tǒng)會(huì)把它當(dāng)成一個(gè)變量名來(lái)處理。在關(guān)系表達(dá)式中,同時(shí)包含算術(shù)運(yùn)算符和關(guān)系運(yùn)算符,F(xiàn)ortran規(guī)定,先進(jìn)行算術(shù)運(yùn)算,后進(jìn)行關(guān)系運(yùn)算。例如X+Y.GT.A-B關(guān)系表達(dá)式關(guān)系運(yùn)算符的兩個(gè)字母(GT,LE…)的兩側(cè)各有一2022/12/1049關(guān)系表達(dá)式關(guān)系表達(dá)式的例子:
x+y>15.4或
x+y.gt.15.4a+b≠a-b
只能寫成
a+b.ne.a-b或(a+b)/=(a-b)ex≥2.17只能寫成
exp(x).ge.2.17
或exp(x)>=2.172022/12/106關(guān)系表達(dá)式關(guān)系表達(dá)式的例子:關(guān)系表達(dá)式關(guān)系運(yùn)算用于兩個(gè)不同類型的運(yùn)算時(shí),將自動(dòng)進(jìn)行數(shù)據(jù)類型轉(zhuǎn)換,規(guī)則同算術(shù)運(yùn)算。關(guān)系表達(dá)式的運(yùn)算元素是算術(shù)量,結(jié)果是邏輯量:真(.True.)或假(.False.)。運(yùn)算符如.LE.中,點(diǎn)與LE字符是一個(gè)整體符號(hào),之間不能有空格。在使用.EQ.(==)或.NE.(/=)時(shí),應(yīng)注意實(shí)數(shù)類型數(shù)據(jù)的存儲(chǔ)誤差。例如:
logicalAreal::x=1.2A=x*x.EQ.1.44print*,A
關(guān)系表達(dá)式關(guān)系運(yùn)算用于兩個(gè)不同類型的運(yùn)算時(shí),將自動(dòng)進(jìn)行數(shù)據(jù)類關(guān)系表達(dá)式實(shí)數(shù)運(yùn)算誤差對(duì)關(guān)系表達(dá)式的影響如:1.0/3.0*3.0.EQ.1.0
值為.false.1.0/3.0*3.0=0.9999999
所以采用如下的形式:
a.eq.b
→abs(a-b).lt.1E-6c.ne.d
→abs(c-d).gt.1E-6關(guān)系表達(dá)式實(shí)數(shù)運(yùn)算誤差對(duì)關(guān)系表達(dá)式的影響字符關(guān)系表達(dá)式兩個(gè)字符型數(shù)據(jù)也可以經(jīng)比較,與數(shù)值型格式一致兩個(gè)單個(gè)字符比較,以其ASCII碼比較,ASCII碼大者為大如:'A'<'B'兩個(gè)字符常量(字符串)比較,將兩個(gè)字符串中的字符自左向右進(jìn)行比較,如有差別,則ASCII碼大者為大,否則兩者相等。如:'SHANGHAI'<'SHANGKONG'如果兩個(gè)字符串長(zhǎng)度不等,則系統(tǒng)會(huì)自動(dòng)將短的字符補(bǔ)以空格,使兩者等長(zhǎng)再比較。如:'the'<'then'→'the︺'<'then'字符關(guān)系表達(dá)式兩個(gè)字符型數(shù)據(jù)也可以經(jīng)比較,與數(shù)值型格式一致ASCII規(guī)則數(shù)字0小9大數(shù)字比字母小大寫字母比小寫字母小字母A小Z大,a小z大其他專用字符有的比數(shù)字小有的比數(shù)字大CHAR(I)—得到ASCII碼為I的字符
CHAR(97)
→'a'CHAR(65)
→'A'ICHAR(a)
—得到字符串a(chǎn)中第一個(gè)字符的ASCII碼
ICHAR('apple')→97ASCII規(guī)則數(shù)字0小9大邏輯運(yùn)算關(guān)系表達(dá)式只能表達(dá)簡(jiǎn)單的關(guān)系,但如:(1)5≤x≤10
(2)|X|>5(3)M能被3或5同時(shí)乘除
以上關(guān)系應(yīng)如何表示呢?他們不能簡(jiǎn)單地用關(guān)系表達(dá)式表。
解決的方法是:邏輯表達(dá)式。邏輯運(yùn)算關(guān)系表達(dá)式只能表達(dá)簡(jiǎn)單的關(guān)系,但如:邏輯表達(dá)式邏輯表達(dá)式的一般形式
〈邏輯量〉〈邏輯運(yùn)算符〉〈邏輯量〉邏輯表達(dá)式是由邏輯運(yùn)算符將兩個(gè)邏輯量連接起來(lái)的式子。邏輯表達(dá)式的運(yùn)算元素是邏輯量,結(jié)果也是邏輯量:真(.True.)或假(.False.)。邏輯量包括邏輯常量、邏輯變量和關(guān)系表達(dá)式。邏輯表達(dá)式邏輯表達(dá)式的一般形式邏輯運(yùn)算回顧邏輯常量?jī)蓚€(gè):①.true.(真)②.false.(假)邏輯變量
——用于存放邏輯常量的變量。邏輯變量可以通過賦值語(yǔ)句來(lái)接受邏輯常量的值,但在使用前,要進(jìn)行類型說明。
例:logicala,ba=.true.b=.false.邏輯運(yùn)算回顧邏輯常量邏輯運(yùn)算邏輯運(yùn)算符
.and.(邏輯與)
.or.(邏輯或)
.not.(邏輯非)
.eqv.(邏輯等(同或)
.neqv.(邏輯不等(異或)邏輯運(yùn)算邏輯運(yùn)算符邏輯運(yùn)算邏輯運(yùn)算符的運(yùn)算規(guī)則若a,b為兩個(gè)邏輯量,則:
a.and.b——(當(dāng)a、b同時(shí)為真時(shí),為真。)
a.or.b——(當(dāng)a、b中任意一個(gè)為真或同時(shí)為真時(shí),為真。)
.not.a——(當(dāng)a為真,其值為假;當(dāng)a為假,其值真。)
a.eqv.b——(當(dāng)a、b為同一邏輯常量時(shí),為真。)
a.neqv.b——(當(dāng)a、b不為同一邏輯常量時(shí),為真。)邏輯運(yùn)算邏輯運(yùn)算符的運(yùn)算規(guī)則邏輯運(yùn)算舉例例如:(1)5≤x≤10
表示為:x>=5.and.x<=10
(2)|X|>5
表示為:x<-5.or.x>5
或者為:abs(x)
>
5(3)M能被3或5同時(shí)乘除表示為:Mod(m,3)==0.or.Mod(m,5)==0邏輯運(yùn)算舉例例如:邏輯運(yùn)算次序邏輯表達(dá)式的運(yùn)算次序
運(yùn)算次序?yàn)椋?/p>
括號(hào)→算術(shù)運(yùn)算→關(guān)系運(yùn)算→邏輯運(yùn)算
而邏輯運(yùn)算:
.not.→.and.→.or.→.eqv.,.neqv.邏輯運(yùn)算次序邏輯表達(dá)式的運(yùn)算次序邏輯運(yùn)算舉例例1:寫出下列條件的邏輯表達(dá)式。⑴5≤k≤10
k.ge.5.and.k.le.10⑵│f│≤3g或│f│=5t
abs(f).le.3*g.or.abs(f).eq.5*t⑶1≤a≤8并且1≤b≤8(a.ge.1.and.a.le.8).and.(b.ge.1.and.b.le.8)邏輯運(yùn)算舉例例1:寫出下列條件的邏輯表達(dá)式。邏輯運(yùn)算舉例若a=2.5,b=7.5,c=5.0,d=6.0,求下列邏輯表達(dá)式的值。⑴(a.lt.b).and.(b.lt.c)
①t②f③f
邏輯運(yùn)算舉例若a=2.5,b=7.5,c=5.0,d=6.0邏輯運(yùn)算舉例若a=2.5,b=7.5,c=5.0,d=6.0,求下列邏輯表達(dá)式的值。⑵c/2.0+d.lt.a.and..not..true..or.c.le.d
①8.5④F③T
②F
.
⑤F.
⑥T邏輯運(yùn)算舉例若a=2.5,b=7.5,c=5.0,d=6.0塊if選擇結(jié)構(gòu)有以下三種典型的塊if選擇結(jié)構(gòu):⑴單分支結(jié)構(gòu):
if(條件)then(塊if語(yǔ)句)
塊(then塊)endif(endif語(yǔ)句)PA塊if選擇結(jié)構(gòu)有以下三種典型的塊if選擇結(jié)構(gòu):PA塊if選擇結(jié)構(gòu)⑵雙分支結(jié)構(gòu)
if(條件)then
塊1(then塊)else
塊2(else塊)
endif
PAB塊if選擇結(jié)構(gòu)⑵雙分支結(jié)構(gòu)PAB塊if選擇結(jié)構(gòu)例:2X+3(X≤2)Y=
X+5(X>2)編程如下:
read(*,*)x if(x.le.2)then
y=2*x+3 else
y=x+5 endif
write(*,*)'x=',x,'y=',y endX≤2TrueFalseY=2X+3
Y=X+5輸出結(jié)果結(jié)束輸入X值塊if選擇結(jié)構(gòu)例:2X+3塊if選擇結(jié)構(gòu)⑶多分支塊if結(jié)構(gòu)
if(條件1)then
塊1elseif(條件2)then
塊2(elseif塊)
┆elseif(條件n)then
塊n[else
塊(n+1)]endif
塊if選擇結(jié)構(gòu)⑶多分支塊if結(jié)構(gòu)塊if選擇結(jié)構(gòu)說明:⑴每個(gè)塊if中可以完整地包含一個(gè)(或多個(gè))塊if結(jié)構(gòu),即構(gòu)成塊if的嵌套結(jié)構(gòu)。如:
if(條件1)thenif(條件1)then
塊1if(條件2)then
else塊2
if(條件2)thenendif
塊2
else
endif
塊1endif
endif
塊if選擇結(jié)構(gòu)說明:塊if選擇結(jié)構(gòu)⑵一個(gè)塊if語(yǔ)句必須和一個(gè)endif語(yǔ)句相對(duì)應(yīng)。⑶塊if中的“then塊”、“else塊”和“elseif塊”可為空塊。塊if選擇結(jié)構(gòu)⑵一個(gè)塊if語(yǔ)句必須和一個(gè)endif語(yǔ)句塊if選擇結(jié)構(gòu)舉例求一元二次方程ax2+bx+c=0的根。(當(dāng)b2-4ac≥0時(shí)有兩個(gè)實(shí)根,b2-4ac<0時(shí)有兩個(gè)復(fù)根。)
輸入a、b、cb2-4ac→dtrued≥0false計(jì)算兩實(shí)根計(jì)算兩復(fù)根輸出x1,x2輸出x1,x2結(jié)束塊if選擇結(jié)構(gòu)舉例求一元二次方程ax2+bx+c=0的根塊if選擇結(jié)構(gòu)舉例程序
print*,'inputa,b,c:' read*,a,b,cf=-b/(2.0*a) d=b**2-4.0*a*cg=sqrt(-d)/(2.0*a)
if(d.ge.0.0)thenprint*,'x1=',f,'+i',g e=sqrt(d)print*,'x2=',f,'-i',g x1=(-b+e)/(2.0*a)endif x2=(-b-e)/(2.0*a)end print*,'x1=',x1 print*,'x2=',x2
else塊if選擇結(jié)構(gòu)舉例程序print*,'input塊if選擇結(jié)構(gòu)舉例求下列函數(shù)值。
0(x<-10)2x+20(-10≤x<0)y=20(0≤x<20)30-0.5x(20≤x<40)50-x(40≤x<50)0(x≥50)塊if選擇結(jié)構(gòu)舉例求下列函數(shù)值。塊if選擇結(jié)構(gòu)
輸入xtruex<-10falsetruex<0falsetruex<20falsetruex<40falsetrue
x<50
falsey=50-xy=0打印yy=0y=20y=30-0.5xy=2x+20塊if選擇結(jié)構(gòu)輸入xtrue塊if選擇結(jié)構(gòu)舉例程序
read*,xprint*,'y=',y
if(x.lt.-10.0)thenend y=0.0
elseif(x.lt.0.0)then y=2.0*x+20.0
elseif(x.lt.20.0)then y=20.0
elseif(x.lt.40.0)then y=30.0-0.5*x
elseif(x.lt.50.0)then y=50.0-x else y=0.0 endif塊if選擇結(jié)構(gòu)舉例程序 read*,x塊if選擇結(jié)構(gòu)程序舉例read*,xif(x.lt.50.0)then
if(x.lt.-10.0)theny=50.0-xy=0.0else
else
y=0.0
if(x.lt.0.0)thenendify=2.0*x+20.0endif
elseendif
if(x.lt.20.0)then
endif y=20.0endif
else
print*,'y=',y
if(x.lt.40.0)then
end y=30.0-0.5*x
else塊if選擇結(jié)構(gòu)程序舉例read*,x邏輯if語(yǔ)句
邏輯if語(yǔ)句也是一種選擇結(jié)構(gòu),但與塊if不同,主要表現(xiàn)在:①只用一行表示一個(gè)選擇結(jié)構(gòu);②僅當(dāng)條件成立時(shí)執(zhí)行,并且只執(zhí)行一條語(yǔ)句。
邏輯if語(yǔ)句的一般形式:
If〈條件〉語(yǔ)句
例:if(n.le.100)n=n+1邏輯if語(yǔ)句邏輯if語(yǔ)句也是一種選擇結(jié)構(gòu),但與塊邏輯if語(yǔ)句例:2X+3(X≤2)Y=
X+5(X>2)編程如下:
read(*,*)xread(*,*)xif(x.le.2)then if(x.le.2)y=2*x+3
y=2*x+3if(x.gt.2)y=x+5else
溫馨提示
- 1. 本站所有資源如無(wú)特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度房屋贈(zèng)與與城市更新合同范本
- 二零二五年度標(biāo)準(zhǔn)畢業(yè)生實(shí)習(xí)合同(國(guó)際貿(mào)易)
- 2025年度旅游行業(yè)知識(shí)產(chǎn)權(quán)保護(hù)與免責(zé)責(zé)任協(xié)議
- 二零二五年度住宅小區(qū)戶外停車位租賃協(xié)議書樣本
- 二零二五年度順豐快遞員勞動(dòng)合同職業(yè)培訓(xùn)與發(fā)展基金合同
- 2025年度籃球運(yùn)動(dòng)員國(guó)際比賽參賽合同
- 二零二五年度資質(zhì)借用及知識(shí)產(chǎn)權(quán)保護(hù)協(xié)議
- 二零二五年度企業(yè)信息安全管理文員責(zé)任協(xié)議
- 二零二五年度主播商業(yè)代言授權(quán)合同
- 二零二五年度國(guó)際貿(mào)易資金監(jiān)管服務(wù)協(xié)議
- 科技成果查新檢索基本情況表
- 新媒體藝術(shù)設(shè)計(jì)交互融合元宇宙
- 家長(zhǎng)會(huì)課件:七年級(jí)家長(zhǎng)會(huì)優(yōu)質(zhì)課件
- 《AutoCAD 中文版實(shí)例教程(AutoCAD 2020) (微課版)(第 2 版)》課件 馬連志 第1、2章 AutoCAD 2020 中文版入門、繪圖設(shè)置
- 小學(xué)一年級(jí)硬筆書法入門班教學(xué)課件
- 社會(huì)工作-心理學(xué)視角下的校園欺凌認(rèn)知與對(duì)策研究論文
- 面神經(jīng)炎臨床路徑
- 月光奏鳴曲全面版
- 2022年湖北省中小學(xué)教師高級(jí)職稱專業(yè)水平能力測(cè)試模擬題
- 數(shù)控車床操作培訓(xùn)課件
- 工程經(jīng)濟(jì)學(xué)-邵穎紅-第五版-課后作業(yè)
評(píng)論
0/150
提交評(píng)論