fortran子程序教學(xué)講解課件_第1頁
fortran子程序教學(xué)講解課件_第2頁
fortran子程序教學(xué)講解課件_第3頁
fortran子程序教學(xué)講解課件_第4頁
fortran子程序教學(xué)講解課件_第5頁
已閱讀5頁,還剩15頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1第九章數(shù)組第十章語句函數(shù)第十二章數(shù)據(jù)共用存儲(chǔ)單元和數(shù)據(jù)塊子程序第十三章文件第十一章子程序2Fortran程序往往由一個(gè)主程序和若干個(gè)子程序組成。

write(*,*)y(5.0),y(0.0),y(-6.0)

end

real

functiony(x)

if(x.gt.0.0)then y=1.0

else

if(x.eq.0.0)

then y=0.0

else

y=-1.0

end

if

end

一、函數(shù)子程序類型說明子程序標(biāo)志函數(shù)名(虛參)主程序函數(shù)子程序(外部函數(shù))函數(shù)子程序必須以function語句開頭,end語句結(jié)束。Fortran的子程序有函數(shù)子程序、子例行子程序和數(shù)據(jù)塊子程序三種。子程序可以被主程序調(diào)用,也可以被其他子程序調(diào)用。Fortran77中的子程序不能遞歸調(diào)用。3說明:1.函數(shù)名的取名方法與變量名同,遵循I—N隱含約定,否則需采用類型說明語句。function

myabs(x)realmyabs

.定義法二2.函數(shù)名后的虛參可以是變量名、數(shù)組名和子程序名。如沒有虛參,一對(duì)圓括號(hào)不能省。3.在函數(shù)子程序流程返回調(diào)用單位之前,必須把所求得的函數(shù)值賦給函數(shù)名(不帶括號(hào)和虛參)。4.函數(shù)子程序流程執(zhí)行到return或end語句時(shí),立即返回到調(diào)用單位。return語句在子程序中可以有多處,如果緊鄰end可以省去。47.函數(shù)子程序的調(diào)用形式與語句函數(shù)完全相同。

必須在調(diào)用程序中使外部函數(shù)名與函數(shù)子程序定義中函數(shù)名的類型完全一致。必須保證函數(shù)名的類型、虛參的類型與調(diào)用處的函數(shù)名以及實(shí)參類型一一對(duì)應(yīng)。5.函數(shù)子程序中除虛參外的任何變量都不與其他程序單位有關(guān)系,語句標(biāo)號(hào)也是獨(dú)立的。6.同一源程序文件中,主程序和子程序先后次序無關(guān)緊要。5

functionmyexp(x)

realmyexp n=0 t=1 s=1

do10while(abs(t).gt.1e-5) n=n+1 t=t*x/n s=s+t10

continue myexp=s

end

realmyexp

write(*,*)'Enterx:'

read(*,*)x y=(myexp(x)-myexp(-x))/2.0

write(*,100)'sinh(',x,')=',y100

format(1x,a,f5.2,a,e13.6)

end

6

callsum(3,y1)

callsum(4,y2)

callsum(5,y3)

callsum(6,y4)

call

sum(7,y5) y=(y1+y2+y3)/(y4+y5)

write(*,100)'y=',y100

format(1x,a,e13.6)

end

subroutinesum(n,s)

integern

reals s=0

do10i=1,n s=s+i10

continue

end二、子例行子程序子例行子程序標(biāo)志主程序子例行子程序子例行子程序必須以subroutine語句開頭,以end語句結(jié)束。子程序名只供調(diào)用,不代表某個(gè)值。7說明:1.子例行子程序取名法則與變量名同。2.如果沒有虛參,程序名后的一對(duì)括號(hào)必須省略不寫。3.子例行子程序也是獨(dú)立的程序單位,return語句、語句標(biāo)號(hào)、變量的定義和使用與函數(shù)子程序相同。4.子例行子程序靠形參實(shí)參虛實(shí)結(jié)合傳遞數(shù)據(jù),可返回兩個(gè)以上的數(shù)值。(優(yōu)點(diǎn))8

subroutineastar

write(*,100)100

format(1x,20('*'))

end

callastar

callastar

end一行打印20個(gè)“*”號(hào),打兩行。5.子例行子程序必須用獨(dú)立的call語句調(diào)用。而函數(shù)子程序的調(diào)用總是出現(xiàn)在表達(dá)式中,參與運(yùn)算。9

subroutineopp(a,s1,s2)

reala(5,5) s1=0

do10i=1,5 s1=s1+a(i,i)10

continue s2=0

do20i=1,5 j=5-i+1 s2=s2+a(i,j)20

continue

end

realw(5,5)

callreadin(w)

callopp(w,x1,x2)

write(*,100)x1,x2100

format(1x,'Thetwosumof',

$'oppusiteangleselements:',

$/1x,'x1=',f8.2,'x2=',f8.2)

end

subroutinereadin(a)

reala(5,5)

do10i=1,5

read(*,*)(a(i,j),j=1,5)10

continue

end輸入矩陣1,2,3,4,52,3,4,5,13,4,5,1,24,5,1,2,35,1,2,3,4求矩陣兩對(duì)角線元素之和10主要區(qū)別:1.形式不一樣(function、subroutine、call),無虛參時(shí)括號(hào)使用不一樣。2.子程序名的意義不一樣。函數(shù)子程序名代表函數(shù)值,通過其傳遞數(shù)據(jù),需要類型說明;而子例行程序名僅為了調(diào)用使用,通過虛實(shí)參傳遞數(shù)據(jù)。3.調(diào)用不一樣。函數(shù)子程序一般在表達(dá)式中調(diào)用,子例行程序通過call調(diào)用。4.用途不一樣。只需得到一個(gè)計(jì)算值,一般采用函數(shù)子程序的形式;希望通過子程序的運(yùn)算得到一批數(shù)據(jù),應(yīng)采用子例行程序。另外,使用子例行程序來完成一些特定的操作。11三、虛參實(shí)參數(shù)據(jù)傳遞子程序中的虛參可以是變量名、數(shù)組名、函數(shù)名、子例行程序名以及星號(hào)。1.變量作虛參(1)對(duì)應(yīng)實(shí)參可以是同一類型的常量、變量、數(shù)組元素和表達(dá)式。(2)如果實(shí)參是常量或表達(dá)式時(shí),對(duì)應(yīng)的虛參變量值不應(yīng)當(dāng)改變。(3)如果虛參是字符變量,虛參字符變量的長(zhǎng)度必須小于等于對(duì)應(yīng)實(shí)參變量的長(zhǎng)度。推薦使用自動(dòng)長(zhǎng)度(*)。characterstr1*8,str2*40callsub(str1)callsub(str2)endsubroutinesub(ch)character*(*)ch...end12(4)如果實(shí)參是變量或數(shù)組元素,在調(diào)用子程序時(shí),對(duì)應(yīng)的虛實(shí)參數(shù)實(shí)際上將共用同一存儲(chǔ)單元。

programmain

integera,c(3)

datac/3*0/ a=100

callsub(a,c(2))

write(*,*)'a=',a,'c(2)=',c(2)

endsubroutinesub(x,a)

integerx,a a=2*x x=2*a

end132.數(shù)組作虛參對(duì)應(yīng)實(shí)參可以是同一類型的數(shù)組名或數(shù)組元素。

傳遞數(shù)據(jù)通過首地址傳遞。dimensiona(2,4)callsub(a)endsubroutinesub(b)dimensionb(6) . . .end注意:在虛實(shí)結(jié)合時(shí),允許維數(shù)不同,但應(yīng)盡量避免。子程序的數(shù)組元素個(gè)數(shù)要小于等于對(duì)應(yīng)實(shí)參數(shù)組元素個(gè)數(shù)。數(shù)組名傳遞(1)虛參數(shù)組是數(shù)值類型或邏輯類型14dimensiona(8)callsub(a(3))endsubroutinesub(b)dimensionb(4) . . .end數(shù)組元素傳遞character*4b(6)callsub(b)endsubroutinesub(c)character*5c(4) . . .end字符數(shù)組傳遞(2)數(shù)組是字符類型15

realloa

write(*,*)'Entercubicsidesa,b,h:'

read(*,*)a,b,hc loa:lineofOppositeAngles c=loa(a,b) d=loa(c,h)

write(*,100)d100

format(1x,'Lineofcubicopposite',

$ 'angles:',f8.3)

end

real

functionloa(x,y) loa=sqrt(x*x+y*y)

end求立方體兩頂角對(duì)角線長(zhǎng)d16

logicalfunctionpalin(str)

character*(*)str

integerr,L palin=.true. R=len(str)+1 L=0

do10while(palin

$

.and.L.lt.R) L=L+1

do20while(str(L:L)

$

.eq.'') L=L+120

continue R=R-1

do30while(str(R:R)$

.eq.'') R=R-130

continue

if(str(L:L).ne.str(R:R))

$palin=.false.10

continue

end

character*80str

logicalpalin,yes

write(*,*)'EnteraSTRing:'

read(*,'(a)')str yes=palin(str)

if(yes)then

write(*,*)'***Is',

$ 'Palindrome***'

else

write(*,*)'!!!Is''nt',

$

'Palindrome!!!'

end

if

end判斷字串是否回文17

subroutinematpro(a,m1,m2,b,m3,c)

dimensiona(m1,m2)

dimensionb(m2,m3),c(m1,m3)

do10k=1,m1

do10j=1,m3 c(k,j)=0.0

do10i=1,m2 c(k,j)=c(k,j)+a(k,i)*b(i,j)10

continue

end

subroutineputmat(c,m1,m2,str)

characterstr

dimensionc(m1,m2)

write(*,100)str

do10i=1,m1

write(*,200)(c(i,j),j=1,m2)10

continue100

format(/5x,'Matrixes',a)200

format(1x,10f6.2)

end

subroutinegetmat(a,m1,

$m2)

dimension

a(m1,m2)

do10i=1,m1

read(5,*)(a(i,j),j=1,m2)10

continue

end

parameter

(n1=3,n2=3,n3=3)

dimensiona(n1,n2)

dimension

b(n2,n3),c(n1,n3)

open(5,file='input.dat')

callgetmat(a,n1,n2)

callgetmat(b,n2,n3)

callmatpro(a,n1,n2,b,n3,c)

callputmat(c,n1,n3,'c')

end矩陣相乘18Fortran中使用多個(gè)文件

SUBROUTINESUB()IMPLICITNONE

WRITE(*,*)"Thisissubroutine"

RETURNEND

PROGRAMex

IMPLICITNONE

CALLSUB()

END19作業(yè)1.用龍格庫塔法編寫解微分方程的通用程序;2.用高斯消去法解聯(lián)立方程組。11醉翁亭記

1.反復(fù)朗讀并背誦課文,培養(yǎng)文言語感。

2.結(jié)合注釋疏通文義,了解文本內(nèi)容,掌握文本寫作思路。

3.把握文章的藝術(shù)特色,理解虛詞在文中的作用。

4.體會(huì)作者的思想感情,理解作者的政治理想。一、導(dǎo)入新課范仲淹因參與改革被貶,于慶歷六年寫下《岳陽樓記》,寄托自己“先天下之憂而憂,后天下之樂而樂”的政治理想。實(shí)際上,這次改革,受到貶謫的除了范仲淹和滕子京之外,還有范仲淹改革的另一位支持者——北宋大文學(xué)家、史學(xué)家歐陽修。他于慶歷五年被貶謫到滁州,也就是今天的安徽省滁州市。也是在此期間,歐陽修在滁州留下了不遜于《岳陽樓記》的千古名篇——《醉翁亭記》。接下來就讓我們一起來學(xué)習(xí)這篇課文吧!【教學(xué)提示】結(jié)合前文教學(xué),有利于學(xué)生把握本文寫作背景,進(jìn)而加深學(xué)生對(duì)作品含義的理解。二、教學(xué)新課目標(biāo)導(dǎo)學(xué)一:認(rèn)識(shí)作者,了解作品背景作者簡(jiǎn)介:歐陽修(1007—1072),字永叔,自號(hào)醉翁,晚年又號(hào)“六一居士”。吉州永豐(今屬江西)人,因吉州原屬廬陵郡,因此他又以“廬陵歐陽修”自居。謚號(hào)文忠,世稱歐陽文忠公。北宋政治家、文學(xué)家、史學(xué)家,與韓愈、柳宗元、王安石、蘇洵、蘇軾、蘇轍、曾鞏合稱“唐宋八大家”。后人又將其與韓愈、柳宗元和蘇軾合稱“千古文章四大家”。

關(guān)于“醉翁”與“六一居士”:初謫滁山,自號(hào)醉翁。既老而衰且病,將退休于潁水之上,則又更號(hào)六一居士。客有問曰:“六一何謂也?”居士曰:“吾家藏書一萬卷,集錄三代以來金石遺文一千卷,有琴一張,有棋一局,而常置酒一壺。”客曰:“是為五一爾,奈何?”居士曰:“以吾一翁,老于此五物之間,豈不為六一乎?”寫作背景:宋仁宗慶歷五年(1045年),參知政事范仲淹等人遭讒離職,歐陽修上書替他們分辯,被貶到滁州做了兩年知州。到任以后,他內(nèi)心抑郁,但還能發(fā)揮“寬簡(jiǎn)而不擾”的作風(fēng),取得了某些政績(jī)?!蹲砦掏び洝肪褪窃谶@個(gè)時(shí)期寫就的。目標(biāo)導(dǎo)學(xué)二:朗讀文章,通文順字1.初讀文章,結(jié)合工具書梳理文章字詞。2.朗讀文章,劃分文章節(jié)奏,標(biāo)出節(jié)奏劃分有疑難的語句。節(jié)奏劃分示例

環(huán)滁/皆山也。其/西南諸峰,林壑/尤美,望之/蔚然而深秀者,瑯琊也。山行/六七里,漸聞/水聲潺潺,而瀉出于/兩峰之間者,釀泉也。峰回/路轉(zhuǎn),有亭/翼然臨于泉上者,醉翁亭也。作亭者/誰?山之僧/曰/智仙也。名之者/誰?太守/自謂也。太守與客來飲/于此,飲少/輒醉,而/年又最高,故/自號(hào)曰/醉翁也。醉翁之意/不在酒,在乎/山水之間也。山水之樂,得之心/而寓之酒也。節(jié)奏劃分思考“山行/六七里”為什么不能劃分為“山/行六七里”?

明確:“山行”意指“沿著山路走”,“山行”是個(gè)狀中短語,不能將其割裂。“望之/蔚然而深秀者”為什么不能劃分為“望之蔚然/而深秀者”?明確:“蔚然而深秀”是兩個(gè)并列的詞,不宜割裂,“望之”是總起詞語,故應(yīng)從其后斷句?!窘虒W(xué)提示】引導(dǎo)學(xué)生在反復(fù)朗讀的過程中劃分朗讀節(jié)奏,在劃分節(jié)奏的過程中感知文意。對(duì)于部分結(jié)構(gòu)復(fù)雜的句子,教師可做適當(dāng)?shù)闹v解引導(dǎo)。目標(biāo)導(dǎo)學(xué)三:結(jié)合注釋,翻譯訓(xùn)練1.學(xué)生結(jié)合課下注釋和工具書自行疏通文義,并畫出不解之處。【教學(xué)提示】節(jié)奏劃分與明確文意相輔相成,若能以節(jié)奏劃分引導(dǎo)學(xué)生明確文意最好;若學(xué)生理解有限,亦可在解讀文意后把握節(jié)奏劃分。2.以四人小組為單位,組內(nèi)互助解疑,并嘗試用“直譯”與“意譯”兩種方法譯讀文章。3.教師選擇疑難句或值得翻譯的句子,請(qǐng)學(xué)生用兩種翻譯方法進(jìn)行翻譯。翻譯示例:若夫日出而林霏開,云歸而巖穴暝,晦明變化者,山間之朝暮也。野芳發(fā)而幽香,佳木秀而繁陰,風(fēng)霜高潔,水落而石出者,山間之四時(shí)也。直譯法:那太陽一出來,樹林里的霧氣散開,云霧聚攏,山谷就顯得昏暗了,朝則自暗而明,暮則自明而暗,或暗或明,變化不一,這是山間早晚的景色。野花開放,有一股清幽的香味,好的樹木枝葉繁茂,形成濃郁的綠蔭。天高氣爽,霜色潔白,泉水淺了,石底露出水面,這是山中四季的景色。意譯法:太陽升起,山林里霧氣開始消散,煙云聚攏,山谷又開始顯得昏暗,清晨自暗而明,薄暮又自明而暗,如此暗明變化的,就是山中的朝暮。春天野花綻開并散發(fā)出陣陣幽香,夏日佳樹繁茂并形成一片濃蔭,秋天風(fēng)高氣爽,霜色潔白,冬日水枯而石底上露,如此,就是山中的四季。【教學(xué)提示】翻譯有直譯與意譯兩種方式,直譯鍛煉學(xué)生用語的準(zhǔn)確性,但可能會(huì)降低譯文的美感;意譯可加強(qiáng)譯文的美感,培養(yǎng)學(xué)生的翻譯興趣,但可能會(huì)降低譯文的準(zhǔn)確性。因此,需兩種翻譯方式都做必要引導(dǎo)。全文直譯內(nèi)容見《我的積累本》。目標(biāo)導(dǎo)學(xué)四:解讀文段,把握文本內(nèi)容1.賞析第一段,說說本文是如何引出“醉翁亭”的位置的,作者在此運(yùn)用了怎樣的藝術(shù)手法。

明確:首先以“環(huán)滁皆山也”五字領(lǐng)起,將滁州的地理環(huán)境一筆勾出,點(diǎn)出醉翁亭坐落在群山之中,并縱觀滁州全貌,鳥瞰群山環(huán)抱之景。接著作者將“鏡頭”全景移向局部,先寫“西南諸峰,林壑尤美”,醉翁亭坐落在有最美的林壑的西南諸峰之中,視野集中到最佳處。再寫瑯琊山“蔚然而深秀”,點(diǎn)山“秀”,照應(yīng)上文的“美”。又寫釀泉,其名字透出了泉與酒的關(guān)系,好泉釀好酒,好酒叫人醉?!白砦掏ぁ钡拿直惆抵型赋?,然后引出“醉翁亭”來。作者利用空間變幻的手法,移步換景,由遠(yuǎn)及近,為我們描繪了一幅幅山水特寫。2.第二段主要寫了什么?它和第一段有什么聯(lián)系?明確:第二段利用時(shí)間推移,抓住朝暮及四季特點(diǎn),描繪了對(duì)比鮮明的晦明變化圖及四季風(fēng)光圖,寫出了其中的“樂亦無窮”。第二段是第一段“山水之樂”的具體化。3.第三段同樣是寫“樂”,但卻是寫的游人之樂,作者是如何寫游人之樂的?明確:“滁人游”,前呼后應(yīng),扶老攜幼,自由自在,熱鬧非凡;“太守宴”,溪深魚肥,泉香酒洌,美味佳肴,應(yīng)有盡有;“眾賓歡”,投壺下棋,觥籌交錯(cuò),說說笑笑,無拘無束。如此勾畫了游人之樂。4.作者為什么要在第三段寫游人之樂?明確:寫滁人之游,描繪出一幅太平祥和的百姓游樂圖。游樂場(chǎng)景映在太守的眼里,便多了一層政治清明的意味。太守在游人之樂中酒酣而醉,此醉是為山水之樂而醉,更是為能與百姓同樂而醉。體現(xiàn)太守與百姓關(guān)系融洽,“政通人和”才能有這樣的樂。5.第四段主要寫了什么?明確:寫宴會(huì)散、眾人歸的情景。目標(biāo)導(dǎo)學(xué)五:深入解讀,把握作者思想感情思考探究:作者以一個(gè)“樂”字貫穿全篇,卻有兩個(gè)句子別出深意,不單單是在寫樂,而是另有所指,表達(dá)出另外一種情緒,請(qǐng)你找出這兩個(gè)句子,說說這種情緒是什么。明確:醉翁之意不在酒,在乎山水之間也。醉能同其樂,醒能述以文者,太守也。這種情緒是作者遭貶謫后的抑郁,作者并未在文中袒露胸懷,只含蓄地說:“醉能同其樂,醒能述以文者,太守也。”此句與醉翁亭的名稱、“醉翁之意不在酒,在乎山水之間也”前后呼應(yīng),并與“滁人游”“太守宴”“眾賓歡”“太守醉”連成一條抒情的線索,曲折地表達(dá)了作者內(nèi)心復(fù)雜的思想感情。目標(biāo)導(dǎo)學(xué)六:賞析文本,感受文本藝術(shù)特色1.在把握作者復(fù)雜感情的基礎(chǔ)上朗讀文本。2.反復(fù)

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論