《Fortran語(yǔ)言教程》PPT課件_第1頁(yè)
《Fortran語(yǔ)言教程》PPT課件_第2頁(yè)
《Fortran語(yǔ)言教程》PPT課件_第3頁(yè)
《Fortran語(yǔ)言教程》PPT課件_第4頁(yè)
《Fortran語(yǔ)言教程》PPT課件_第5頁(yè)
已閱讀5頁(yè),還剩382頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

Fortran語(yǔ)言(Fortran77結(jié)構(gòu)化程序設(shè)計(jì)),普通高校計(jì)算機(jī)基礎(chǔ)教學(xué)課程,2020/5/11,2,說(shuō)明第一章算法(略)第二章計(jì)算機(jī)和計(jì)算機(jī)程序(略),2020/5/11,3,第三章Fortran語(yǔ)言程序設(shè)計(jì)初步,2020/5/11,4,3.1Fortran語(yǔ)言的發(fā)展概況,FORmulaTRANslator公式翻譯器Fortran語(yǔ)言是一種適合于科學(xué)和工程計(jì)算問(wèn)題的程序設(shè)計(jì)語(yǔ)言;也是計(jì)算機(jī)高級(jí)語(yǔ)言發(fā)展史上使用最早的一種程序設(shè)計(jì)語(yǔ)言。,2020/5/11,5,3.1Fortran語(yǔ)言的發(fā)展概況,Fortran語(yǔ)言的發(fā)展過(guò)程:1951年由約翰貝克斯等人開(kāi)始研究Fortran語(yǔ)言;1957年第一個(gè)Fortran程序在IBM704機(jī)上運(yùn)行;1958和1962年先后推出Fortran和Fortran;1966和1978年先后頒布Fortran66和Fortran77;1991年頒布了Fortran90。現(xiàn)在已經(jīng)有了Fortran95,Fortran2003,2020/5/11,6,Fortran語(yǔ)言的特征,Fortran語(yǔ)言的最大特性是接近數(shù)學(xué)公式的自然描述,在計(jì)算機(jī)里具有很高的執(zhí)行效率。易學(xué),語(yǔ)法嚴(yán)謹(jǐn)。可以直接對(duì)矩陣和復(fù)數(shù)進(jìn)行運(yùn)算。自誕生以來(lái)廣泛地應(yīng)用于數(shù)值計(jì)算領(lǐng)域,積累了大量高效而可靠的源程序。很多專(zhuān)用的大型數(shù)值運(yùn)算計(jì)算機(jī)針對(duì)Fortran做了優(yōu)化。廣泛地應(yīng)用于并行計(jì)算和高性能計(jì)算領(lǐng)域。Fortran90,F(xiàn)ortran95,F(xiàn)ortran2003的相繼推出使Fortran語(yǔ)言具備了現(xiàn)代高級(jí)編程語(yǔ)言的一些特性。,2020/5/11,7,3.2簡(jiǎn)單的Fortran程序分析,例1:求一元二次方程x2+3x-5.6=0的根,并打印結(jié)果。利用公式:(這里,a=1,b=3,c=-5.6),2020/5/11,8,3.2簡(jiǎn)單的Fortran程序分析,編程如下:ctherootsofthequadraticequationa=1.0b=3.0c=-5.6x1=(-b+sqrt(b*b-4.0*a*c)/(2.0*a)x2=(-b-sqrt(b*b-4.0*a*c)/(2.0*a)write(*,100)x1,x2100format(1x,x1=,f6.2,x2=,f6.2)end,2020/5/11,9,3.2簡(jiǎn)單的Fortran程序分析,執(zhí)行結(jié)果:x1=1.30 x2=-4.30,例2:試求3!,6!,9!的值。編程如下:,2020/5/11,10,3.2簡(jiǎn)單的Fortran程序分析,主程序:子程序:cmainprogramcsubprogramj=k(3)functionk(n)l=k(6)k=1m=k(9)i=2write(*,*)j,l,m5if(i.le.n)thenendk=k*ii=i+1執(zhí)行結(jié)果:goto56720362880endifreturnend,2020/5/11,11,3.2簡(jiǎn)單的Fortran程序分析,Fortran程序的基本結(jié)構(gòu):一個(gè)Fortran源程序由一個(gè)或多個(gè)程序單位組成,每個(gè)程序單位以“end”語(yǔ)句結(jié)束。每個(gè)程序單位包括若干行語(yǔ)句行(執(zhí)行語(yǔ)句和非執(zhí)行語(yǔ)句行)非語(yǔ)句行(注釋行)語(yǔ)句前可不設(shè)標(biāo)號(hào),也可根據(jù)需要設(shè)標(biāo)號(hào)。各類(lèi)語(yǔ)句在程序單位中的位置有一定規(guī)則。程序必須按規(guī)定格式書(shū)寫(xiě)。,2020/5/11,12,3.3Fortran源程序的書(shū)寫(xiě)格式,Fortran77源程序必須按以下格式書(shū)寫(xiě):每行只能在80列內(nèi)書(shū)寫(xiě),并把80列分為4個(gè)區(qū)。15列:標(biāo)號(hào)區(qū)(15位無(wú)符號(hào)整數(shù);第1列為“*”或“c”時(shí),為注釋行)第6列:續(xù)行標(biāo)志區(qū)(非空格或非零字符;最多19個(gè)續(xù)行)772列:語(yǔ)句區(qū)(書(shū)寫(xiě)語(yǔ)句;一行只能寫(xiě)一條語(yǔ)句)7380列:語(yǔ)句注釋區(qū)(一般作編號(hào)注釋?zhuān)?2020/5/11,13,3.4Fortran程序的編輯與運(yùn)行,FortranPowerStation4.0集成開(kāi)發(fā)環(huán)境簡(jiǎn)介,2020/5/11,14,3.4Fortran程序的編輯與運(yùn)行,一、FortranPowerStation4.0的啟動(dòng)選“開(kāi)始”“程序”“FortranPowerStation4.0”“MicrosoftDeveloperStudio”。二、創(chuàng)建項(xiàng)目工作間選“File”“New”“ProjectWorkspace”“ConsoleApplication”,并輸入項(xiàng)目工作間名稱(如:aaa)和存放項(xiàng)目工作間的位置或路徑(如:c:for)Create。,2020/5/11,15,3.4Fortran程序的編輯與運(yùn)行,三、給項(xiàng)目工作間添加和編輯文件打開(kāi)指定的項(xiàng)目工作間選“Insert”“FileintoProject”輸入要添加的文件名(如:st01.for)“Add”。然后按Fortran程序的書(shū)寫(xiě)規(guī)則編輯程序。四、編譯項(xiàng)目工作間中的文件打開(kāi)指定的文件選“Build”“Compilest01.for”。五、連編項(xiàng)目文件選“Build”“Buildaaa.exe”。六、運(yùn)行項(xiàng)目文件選“Build”“Executeaaa.exe”。(顯示程序執(zhí)行結(jié)果),2020/5/11,16,3.4Fortran程序的編輯與運(yùn)行,注:若Fortran程序是由一個(gè)主程序文件和若干個(gè)子程序文件組成,則應(yīng)將各文件添加到同一項(xiàng)目工作間,分別進(jìn)行編譯,然后連編和運(yùn)行項(xiàng)目文件。七、打開(kāi)項(xiàng)目文件選“File”“Open”在打開(kāi)對(duì)話框文件類(lèi)型下拉列表中選“ProjectWorkspace(*.mdp)”然后選項(xiàng)目工作間文件夾中的項(xiàng)目文件。,2020/5/11,17,3.5常量,常量在程序執(zhí)行期間其值固定不變的量。Fortran處理六種類(lèi)型的常量:整型常量(Integer)實(shí)型常量(Real)雙精度常量(Doubleprecision)復(fù)型常量(Complex)邏輯型常量(Logical)字符型常量(Character),2020/5/11,18,3.5常量,3.5.1整型常量包括正、負(fù)整數(shù)和零。例:5,-13,0,說(shuō)明:在(16位)微機(jī)中,整數(shù)的取值范圍為:-215215-1(-3276832767)在(32位)微機(jī)中,整數(shù)的取值范圍為:-231231-1(-21474836482147483647),2020/5/11,19,3.5常量,3.5.2實(shí)型常量(有二種表示形式)小數(shù)形式例:15.8,-21.05,14.0,14.,.17,0.0,指數(shù)形式(通常表示較大或較小的數(shù))例:1000000001.0E+80.00001251.25E-05數(shù)字部分指數(shù)部分,2020/5/11,20,3.5常量,說(shuō)明:一個(gè)數(shù)值用指數(shù)形式表示時(shí)有兩種表達(dá)方式:一個(gè)基本實(shí)數(shù)后面跟指數(shù)部分。例:0.8768.76E-1-2589.4-2.5894E+3一個(gè)整數(shù)后面跟指數(shù)部分。例:0.876876E-3-2589.4-25894E-1,2020/5/11,21,3.5常量,同一個(gè)數(shù)值可用不同的指數(shù)形式表示。例:0.8768.76E-187.6E-2876E-3計(jì)算機(jī)在輸出時(shí),按標(biāo)準(zhǔn)化指數(shù)形式輸出。例:0.282.800000E-01-59.58E+12-5.958000E+13即數(shù)字部分大于1,且小數(shù)點(diǎn)前只有一位非零數(shù)字的指數(shù)輸出形式。在微機(jī)中,一般用四個(gè)字節(jié)存放一個(gè)實(shí)數(shù),其取值范圍為:10-751075。超出此范圍時(shí)為“溢出”錯(cuò)誤。,2020/5/11,22,3.5常量,下列形式為不合法的指數(shù)形式:?jiǎn)为?dú)的小數(shù)點(diǎn)和單獨(dú)的指數(shù)部分。例:.E5,E10指數(shù)部分只能是整數(shù),不能帶小數(shù)點(diǎn)。例:8E0.5,12.3E1.5,2020/5/11,23,3.6變量,變量在程序執(zhí)行期間其值可以改變的量。3.6.1變量的概念Fortran為每一個(gè)變量分配一個(gè)相應(yīng)的存儲(chǔ)單元;每個(gè)變量在每個(gè)時(shí)刻只能有一個(gè)確定的值。例:x=4.5xx=8.0 x注:在程序中用到的變量都必須要有確定的值。,4.5,8.0,2020/5/11,24,3.6變量,3.6.2變量名變量名標(biāo)識(shí)一個(gè)變量所用的名字。命名規(guī)則:變量名的第一個(gè)字符必須是字母;在第一個(gè)字符后可跟15個(gè)字母或數(shù)字。例:x,m1,total,k123,,2020/5/11,25,3.6變量,注意幾點(diǎn):變量名不區(qū)分大小寫(xiě)字母。例:TOTAL,Total,total代表同一變量變量名中的空格不起作用。例:abc,abc,abc,abc代表同一變量變量名盡量做到“見(jiàn)名知義”AVER、SUM、Imax允許變量名與語(yǔ)言中具有特定含義的字(“保留字”)同名。例:sin,read,open,end,建議不要使用fortran中具有特定含義的字作變量名,2020/5/11,26,3.6變量,3.6.3變量的類(lèi)型Fortran能處理各種類(lèi)型的變量。不同類(lèi)型的變量用來(lái)存放不同類(lèi)型的數(shù)據(jù)。變量類(lèi)型的說(shuō)明(三種方式)隱含說(shuō)明即以I、j、k、l、m、n開(kāi)頭的變量為整型變量,以其它字母開(kāi)頭的變量為實(shí)型變量。(“IN規(guī)則”)例:imax,m5,number,為整型變量v,h2,aver,為實(shí)型變量,2020/5/11,27,3.6變量,顯式說(shuō)明即用類(lèi)型說(shuō)明語(yǔ)句指定變量的類(lèi)型。如:Integer說(shuō)明變量為整型變量Real說(shuō)明變量為實(shí)型變量Doubleprecision說(shuō)明變量為雙精度變量Complex說(shuō)明變量為復(fù)型變量Logical說(shuō)明變量為邏輯型變量Character說(shuō)明變量為字符型變量,2020/5/11,28,3.6變量,如:Integerabc,xyzrealimax,k3logicala1,kpz用implicit語(yǔ)句說(shuō)明即說(shuō)明用某一字母開(kāi)頭的變量為指定的類(lèi)型。例:implicitinteger(a,b),real(k)implicitinteger(x-z),2020/5/11,29,3.6變量,三種類(lèi)型說(shuō)明的優(yōu)先級(jí):高類(lèi)型說(shuō)明語(yǔ)句(顯式說(shuō)明)implicit語(yǔ)句說(shuō)明低“IN規(guī)則”,2020/5/11,30,3.7Fortran內(nèi)部函數(shù),在編制Fortran程序時(shí),經(jīng)常要用到一些基本的數(shù)學(xué)函數(shù),如三角函數(shù)、指數(shù)函數(shù)、對(duì)數(shù)函數(shù)等。為方便用戶,F(xiàn)ortran編譯系統(tǒng)已提供了這些函數(shù)的計(jì)算程序,需要時(shí)即可調(diào)用。Fortran內(nèi)部函數(shù)調(diào)用格式:函數(shù)名(自變量),2020/5/11,31,3.7Fortran內(nèi)部函數(shù),如:sin(90*3.14159/180)1.0sqrt(9.0)3.0abs(-5.6)5.6int(6.75)6exp(3.0)20.085540Fortran77全部?jī)?nèi)部函數(shù)見(jiàn)附錄,2020/5/11,32,3.7Fortran內(nèi)部函數(shù),注意幾點(diǎn):函數(shù)自變量(參數(shù))必須用括號(hào)括起來(lái)。例:sinx+cosxsin(x)+cos(x)函數(shù)自變量可以是常量、變量或表達(dá)式。例:exp(3.0)sin(x+cos(x)有些函數(shù)的類(lèi)型是由自變量的類(lèi)型確定的。例:mod(8.0,3.0)2.0mod(8,3)2三角函數(shù)的角度單位是“弧度”而不是“度”。函數(shù)名分為“通用名”和“專(zhuān)用名”內(nèi)部函數(shù)名一般用“通用名”。,2020/5/11,33,3.8Fortran算術(shù)表達(dá)式,Fortran77提供了四種表達(dá)式:算術(shù)表達(dá)式關(guān)系表達(dá)式邏輯表達(dá)式字符表達(dá)式算術(shù)表達(dá)式將各運(yùn)算元素(常量、變量、函數(shù)和數(shù)組等)用算術(shù)運(yùn)算符連接起來(lái)的一個(gè)有值的式子。,2020/5/11,34,3.8Fortran算術(shù)表達(dá)式,一、算術(shù)運(yùn)算符及其優(yōu)先級(jí)算術(shù)運(yùn)算符(五種)加(+)減(-)乘(*)除(/)乘方(*)算術(shù)運(yùn)算符的優(yōu)先級(jí)括號(hào)函數(shù)乘方乘、除加、減注:同級(jí)運(yùn)算“先左后右”,連續(xù)乘方時(shí)“先右后左”。,2020/5/11,35,3.8Fortran算術(shù)表達(dá)式,例:3+5-6.0*8.5/4*2+sin(x)3+5-6.08.542sinxx*y*z、x*(y*z)xyz(x*y)*z(xy)z有了算術(shù)表達(dá)式概念之后,我們就可以將:數(shù)學(xué)運(yùn)算式Fortran算術(shù)表達(dá)式,2020/5/11,36,3.8Fortran算術(shù)表達(dá)式,二、算術(shù)表達(dá)式書(shū)寫(xiě)規(guī)則表達(dá)式中的各運(yùn)算元素之間必須用運(yùn)算符分隔。例:xyzx*y*z2(x+y)2*(x+y)作任何運(yùn)算的表達(dá)式只能寫(xiě)在一行。例:(a+b)/(c+d)a+b/c+d,2020/5/11,37,3.8Fortran算術(shù)表達(dá)式,兩個(gè)運(yùn)算符不能緊鄰。例:a/(-b)-a/ba/-b表達(dá)式一律用小括號(hào)。例:ax+b(y+c)a*(x+b*(y+c),2020/5/11,38,3.8Fortran算術(shù)表達(dá)式,三、表達(dá)式求值中的類(lèi)型問(wèn)題同類(lèi)型量運(yùn)算的結(jié)果,仍為原類(lèi)型。例:4*5=20,4.0*5.0=20.06.0/4.0=1.5,6/4=1(1.5)不同類(lèi)型量運(yùn)算時(shí),先將低級(jí)類(lèi)型(整型)轉(zhuǎn)換為高級(jí)類(lèi)型(實(shí)型),然后再按同類(lèi)型量進(jìn)行運(yùn)算。例:2.5*4=10.0(10)2.0*3=2.0*2.0*2.0=8.0(屬同類(lèi)量運(yùn)算),2020/5/11,39,3.8Fortran算術(shù)表達(dá)式,四、運(yùn)算中的誤差問(wèn)題整數(shù)量運(yùn)算沒(méi)有誤差實(shí)型量由于有效位數(shù)的限制,運(yùn)算時(shí)會(huì)出現(xiàn)誤差例1:(1.0/3.0)*3.0=0.9999999(1.0)1.0/3.0=0.3333333例2:X=1E30Y=-1E30Z=1.0(X+Y)+Z=?X+(Y+Z)=?,2020/5/11,40,3.9賦值語(yǔ)句,Fortran提供三類(lèi)賦值語(yǔ)句:算術(shù)賦值語(yǔ)句邏輯賦值語(yǔ)句字符賦值語(yǔ)句一、算術(shù)賦值語(yǔ)句一般格式V=e功能:把賦值號(hào)右邊表達(dá)式的值,賦給賦值號(hào)左邊的變量或數(shù)組元素。例:S=3.14159*r*2,2020/5/11,41,3.9賦值語(yǔ)句,二、算術(shù)賦值語(yǔ)句中的類(lèi)型轉(zhuǎn)換問(wèn)題賦值號(hào)兩邊類(lèi)型一致時(shí),直接賦值。例:k=355賦值號(hào)兩邊類(lèi)型不一致時(shí),先計(jì)算,再轉(zhuǎn)換,最后賦值。例:y1=6*2(y1的值為12.0)Imax=3.6*2(imax的值為7(7.27),2020/5/11,42,3.9賦值語(yǔ)句,注意幾點(diǎn):賦值號(hào)左邊只能是變量或數(shù)組元素,不能為帶運(yùn)算符的表達(dá)式。例:3*a=6*x+sin(x)一個(gè)賦值語(yǔ)句只能給一個(gè)變量或數(shù)組元素賦值。例:a=b=c=d=3.5一個(gè)賦值語(yǔ)句執(zhí)行后,賦值號(hào)左邊變量的原值被右邊表達(dá)式的值取代。例:x=1.0 x=x+1.0(x的值為2.0),2020/5/11,43,3.10簡(jiǎn)單的輸出語(yǔ)句,用戶編制的程序必須要有輸出語(yǔ)句,把結(jié)果顯示或打印出來(lái)。Fortran提供了三種輸出方式:表控格式輸出(標(biāo)準(zhǔn)或固定格式輸出)指定格式輸出無(wú)格式輸出(二進(jìn)制形式,適應(yīng)磁盤(pán)文件)一、表控格式輸出按Fortran編譯系統(tǒng)隱含規(guī)定的格式輸出。(即系統(tǒng)根據(jù)輸出數(shù)據(jù)的不同類(lèi)型,自動(dòng)給出相應(yīng)的輸出格式。),2020/5/11,44,3.10簡(jiǎn)單的輸出語(yǔ)句,二、表控格式輸出語(yǔ)句一般格式:print,輸出表列write(,)輸出表列例1:print,56.8,125或write(,)56.8,125例2:print,a,b,c或write(,)a,b,c,2020/5/11,45,3.10簡(jiǎn)單的輸出語(yǔ)句,例3:x=12.5y=90.5z=x+yprint*,x,yprint*,z=,zend運(yùn)行結(jié)果:12.50000090.500000Z=103.000000,2020/5/11,46,3.10簡(jiǎn)單的輸出語(yǔ)句,整數(shù)的表控格式輸出規(guī)定:每個(gè)整數(shù)占12列,數(shù)據(jù)打印在右端,左補(bǔ)空格。例:print*,123,-1128輸出結(jié)果:123-1128,2020/5/11,47,3.10簡(jiǎn)單的輸出語(yǔ)句,實(shí)數(shù)的表控格式輸出規(guī)定:每個(gè)實(shí)數(shù)占16列,數(shù)據(jù)打印在右端,左補(bǔ)空格。例:print*,15.4,-321.45輸出結(jié)果:15.400000-321.450000,2020/5/11,48,3.10簡(jiǎn)單的輸出語(yǔ)句,當(dāng)實(shí)數(shù)值的絕對(duì)值107或1時(shí),按標(biāo)準(zhǔn)的指數(shù)形式輸出。例:print*,-10000000.,0.98輸出結(jié)果:-1.000000E+079.800000E-01,2020/5/11,49,3.11簡(jiǎn)單的輸入語(yǔ)句,Fortran提供了三種輸入方式:表控格式輸入(自由格式輸入)指定格式輸入無(wú)格式輸入一、表控格式輸入表控格式輸入根據(jù)變量的數(shù)據(jù)類(lèi)型輸入相應(yīng)的數(shù)據(jù)形式,數(shù)據(jù)間以逗號(hào)或空格分隔的輸入方式。,2020/5/11,50,3.11簡(jiǎn)單的輸入語(yǔ)句,二、表控格式輸入語(yǔ)句一般格式:read,輸入表列read(,)輸入表列例1:read,a,b(若a=14.7,b=30.0)鍵盤(pán)輸入:14.7,30.0,2020/5/11,51,3.11簡(jiǎn)單的輸入語(yǔ)句,例2:read,x,k(若x=4.5,k=200)鍵盤(pán)輸入:4.5,200例3:read,x,y,z(若x=1.5,y=2.5,z=3.5)read,i,j(若i=5,j=10)鍵盤(pán)輸入:1.5,2.5,3.55,10,2020/5/11,52,3.11簡(jiǎn)單的輸入語(yǔ)句,注意幾點(diǎn):輸入數(shù)據(jù)的個(gè)數(shù)不得少于read語(yǔ)句中變量的個(gè)數(shù),但多余的數(shù)據(jù)也不起作用。例:read,x,y,z(若x=1.5,y=2.5,z=3.5)鍵盤(pán)輸入:1.5,2.5,3.51.5,2.5,3.5,5.2,6.0(最后兩個(gè)數(shù)被忽略)1.5,2.5(計(jì)算機(jī)將等待用戶繼續(xù)輸入數(shù)據(jù)),2020/5/11,53,3.11簡(jiǎn)單的輸入語(yǔ)句,注意幾點(diǎn):一個(gè)read語(yǔ)句可以分多行輸入,但每一個(gè)read語(yǔ)句必須從新的一行輸入。例:read,x,y,z(若x=1.5,y=2.5,z=3.5)read,i,j(若i=5,j=10)鍵盤(pán)輸入:1.52.53.55,10若鍵盤(pán)輸入:1.5,2.5,3.5,5,10(錯(cuò)),2020/5/11,54,3.11簡(jiǎn)單的輸入語(yǔ)句,在輸入數(shù)據(jù)時(shí)若出現(xiàn)“/”,則終止對(duì)此read語(yǔ)句的輸入。例:read,x,y,z鍵盤(pán)輸入:1.5,2.5/(變量z的值為原值或?yàn)榱?。?2020/5/11,55,3.12參數(shù)語(yǔ)句(parameter語(yǔ)句),一、parameter語(yǔ)句的功能為常量命名,即用一個(gè)符號(hào)代表一個(gè)常量。二、parameter語(yǔ)句一般形式Parameter(p1=c1,p2=c2,pn=cn)其中:pn符號(hào)常量;cn常量。,2020/5/11,56,3.12參數(shù)語(yǔ)句(parameter語(yǔ)句),例:求半徑為0.5m的圓面積和圓周長(zhǎng)。編程如下:parameter(r=0.5,pi=3.14159)s=pi*r*2h=2.0*pi*rprint*,s,hend,2020/5/11,57,3.12參數(shù)語(yǔ)句(parameter語(yǔ)句),注意幾點(diǎn):參數(shù)語(yǔ)句必須寫(xiě)在所有可執(zhí)行語(yǔ)句之前;符號(hào)常量的命名規(guī)則及類(lèi)型與變量相同,并遵循“IN規(guī)則”;程序中不能給符號(hào)常量再賦值。,2020/5/11,58,3.13pause語(yǔ)句,stop語(yǔ)句,end語(yǔ)句,一、pause語(yǔ)句一般形式Pausen注:n為15位正整數(shù)或字符常量。功能暫停程序的執(zhí)行。(一個(gè)程序單位可以有多個(gè)pause語(yǔ)句),2020/5/11,59,3.13pause語(yǔ)句,stop語(yǔ)句,end語(yǔ)句,例:parameter(r=0.5,pi=3.14159)s=pi*r*2h=2.0*pi*rpause打印面積和周長(zhǎng)print*,s,hend,2020/5/11,60,3.13pause語(yǔ)句,stop語(yǔ)句,end語(yǔ)句,二、stop語(yǔ)句一般形式stopn注:n為15位正整數(shù)或字符常量。功能終止程序的執(zhí)行。(一個(gè)程序單位可以有多個(gè)stop語(yǔ)句),2020/5/11,61,3.13pause語(yǔ)句,stop語(yǔ)句,end語(yǔ)句,三、end語(yǔ)句一般形式end功能對(duì)主程序:終止程序的執(zhí)行和作為程序單位的結(jié)束標(biāo)志;對(duì)子程序:返回調(diào)用程序和作為程序單位的結(jié)束標(biāo)志。(一個(gè)程序單位只能有一個(gè)end語(yǔ)句),2020/5/11,62,課后練習(xí)題,P7576:第五、八、十一題,2020/5/11,63,第四章邏輯運(yùn)算和選擇結(jié)構(gòu),2020/5/11,64,計(jì)算機(jī)程序,程序設(shè)計(jì)的基本方法,計(jì)算機(jī)解決問(wèn)題所需要的一系列代碼化指令序列計(jì)算機(jī)程序。程序=數(shù)據(jù)結(jié)構(gòu)+算法即“程序就是在數(shù)據(jù)的某些特定的表示方式和結(jié)構(gòu)的基礎(chǔ)上,對(duì)抽象算法的具體描述?!?上述公式可擴(kuò)充為:程序=數(shù)據(jù)結(jié)構(gòu)+算法+程序設(shè)計(jì)方法+語(yǔ)言工具,2020/5/11,65,所謂面向過(guò)程的程序設(shè)計(jì),是指利用面向過(guò)程的語(yǔ)言工具(如Basic、Pascal、Fortran和C等)進(jìn)行程序開(kāi)發(fā)的各項(xiàng)活動(dòng)。,程序設(shè)計(jì)的基本方法,面向過(guò)程的程序設(shè)計(jì),優(yōu)點(diǎn):編程簡(jiǎn)單、結(jié)構(gòu)性強(qiáng)、可讀性好,程序執(zhí)行時(shí)序特征明顯;遵循這種結(jié)構(gòu)的程序只有一個(gè)入口和一個(gè)出口。缺點(diǎn):存在數(shù)據(jù)與程序模塊的分離和程序的可重用性差等問(wèn)題。,2020/5/11,66,程序設(shè)計(jì)的基本方法,結(jié)構(gòu)化程序設(shè)計(jì)方法:,結(jié)構(gòu)化編碼在結(jié)構(gòu)化程序設(shè)計(jì)中,任何復(fù)雜的算法,都可以由三種基本結(jié)構(gòu)組成。在構(gòu)造算法時(shí),也僅以三種基本結(jié)構(gòu)作為基本單元。遵循這種結(jié)構(gòu)的程序只有一個(gè)輸入口和一個(gè)輸出口。,模塊化設(shè)計(jì)將一個(gè)復(fù)雜問(wèn)題的程序分為若干個(gè)程序模塊,每個(gè)模塊完成一項(xiàng)特定功能;其中有一個(gè)主模塊和若干個(gè)子模塊,主模塊控制各個(gè)子模塊來(lái)實(shí)現(xiàn)整個(gè)程序的功能。,自頂向下,逐步細(xì)化,2020/5/11,67,程序設(shè)計(jì)的基本方法,面向?qū)ο蟮某绦蛟O(shè)計(jì),面向?qū)ο蟮某绦蛟O(shè)計(jì)是一種新的程序設(shè)計(jì)范型。它將一些新的理念和結(jié)構(gòu)化程序設(shè)計(jì)中好的思想相融合,提供了一種全新的程序設(shè)計(jì)方法。,2020/5/11,68,4.1算法及其表示方法,一、算法的概念算法解決某一問(wèn)題所采取的方法和步驟。計(jì)算機(jī)算法計(jì)算機(jī)能夠執(zhí)行的算法。計(jì)算機(jī)算法的特征:有窮性操作步驟是有限的。確定性方法步驟是明確的。有效性方法是正確的,步驟是完整的。必須有輸入和輸出。(取得必要的信息,給出正確的結(jié)果。),2020/5/11,69,4.1算法及其表示方法,Fortran是結(jié)構(gòu)化程序設(shè)計(jì)語(yǔ)言,每個(gè)程序單位可由三種基本結(jié)構(gòu)組成:順序結(jié)構(gòu)分支選擇結(jié)構(gòu)循環(huán)結(jié)構(gòu)實(shí)踐證明,任何復(fù)雜的問(wèn)題都可以用這三種基本結(jié)構(gòu)來(lái)描述。,2020/5/11,70,4.1算法及其表示方法,二、算法的表示用NS流程圖表示。(由幾種功能框組合而成)矩形框用于表示順序結(jié)構(gòu)。如:若先執(zhí)行語(yǔ)句A,再執(zhí)行語(yǔ)句B。,A,B,2020/5/11,71,4.1算法及其表示方法,例:若a=1.5,b=4.5,求a+b的平方。畫(huà)NS圖:編程:A=1.5B=4.5C=(a+b)*2Print*,cend,1.5a,4.5b,(a+b)2c,打印c,結(jié)束,2020/5/11,72,4.1算法及其表示方法,三角框用于表示分支選擇結(jié)構(gòu)。如:若P為條件,當(dāng)P成立執(zhí)行語(yǔ)句A,否則執(zhí)行語(yǔ)句B。,2020/5/11,73,4.1算法及其表示方法,L形框用于表示循環(huán)結(jié)構(gòu)。當(dāng)型循環(huán)(P為條件,A循環(huán)體)如:若條件P成立,則執(zhí)行循環(huán)體A,否則跳出循環(huán)體。,2020/5/11,74,4.1算法及其表示方法,直到型循環(huán)(P為條件,A循環(huán)體)如:首先執(zhí)行循環(huán)體A,若條件P不成立繼續(xù)執(zhí)行循環(huán)體A,直到條件P成立為止。,2020/5/11,75,4.2關(guān)系表達(dá)式,關(guān)系表達(dá)式是構(gòu)成選擇結(jié)構(gòu)判斷條件的基本式子。它也是一種最簡(jiǎn)單的邏輯表達(dá)式。一、關(guān)系運(yùn)算符(P80表4-1).gt.(大于).ge.(大于等于).eq.(等于).lt.(小于).le.(小于等于).ne.(不等于),2020/5/11,76,4.2關(guā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á)式的運(yùn)算元素是算術(shù)量,結(jié)果是邏輯量:真(.True.)或假(.False.)。,2020/5/11,77,4.2關(guān)系表達(dá)式,有了關(guān)系表達(dá)式,我們就可以將:數(shù)學(xué)關(guān)系式Fortran關(guān)系表達(dá)式例:x+y15.4x+y.gt.15.4a+ba-ba+b.ne.a-bex2.17exp(x).ge.2.17,2020/5/11,78,4.2關(guān)系表達(dá)式,注意:算術(shù)運(yùn)算優(yōu)先于關(guān)系運(yùn)算。如:a+b.ne.a-b等同于(a+b).ne.(a-b)實(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對(duì)于a.eq.babs(a-b).lt.1E-6c.ne.dabs(c-d).gt.1E-6,2020/5/11,79,4.3邏輯表達(dá)式,關(guān)系表達(dá)式只能表達(dá)簡(jiǎn)單的關(guān)系,如:5x10就不能用關(guān)系表達(dá)式表達(dá),此時(shí)要用邏輯表達(dá)式。,2020/5/11,80,4.3邏輯表達(dá)式,一、邏輯表達(dá)式的一般形式邏輯量邏輯運(yùn)算符邏輯量即:邏輯表達(dá)式是由邏輯運(yùn)算符將兩個(gè)邏輯量連接起來(lái)的式子。邏輯表達(dá)式的運(yùn)算元素是邏輯量,結(jié)果也是邏輯量:真(.True.)或假(.False.)。邏輯量包括邏輯常量、邏輯變量和關(guān)系表達(dá)式。,2020/5/11,81,4.3邏輯表達(dá)式,二、邏輯常量?jī)蓚€(gè):.true.(真).false.(假)三、邏輯變量用于存放邏輯常量的變量。邏輯變量可以通過(guò)賦值語(yǔ)句來(lái)接受邏輯常量的值,但在使用前,要進(jìn)行類(lèi)型說(shuō)明。例:logicala,ba=.true.b=.false.,2020/5/11,82,4.3邏輯表達(dá)式,四、邏輯運(yùn)算符.and.(邏輯與).or.(邏輯或).not.(邏輯非).eqv.(邏輯等(同或).neqv.(邏輯不等(異或),2020/5/11,83,4.3邏輯表達(dá)式,五、邏輯運(yùn)算符的運(yùn)算規(guī)則(P83表4.3)若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í),為真。),2020/5/11,84,4.3邏輯表達(dá)式,六、邏輯表達(dá)式的運(yùn)算次序(P84表4.5)運(yùn)算次序?yàn)椋豪ㄌ?hào)算術(shù)運(yùn)算關(guān)系運(yùn)算邏輯運(yùn)算而邏輯運(yùn)算:.not.and.or.eqv.,.neqv.,2020/5/11,85,4.3邏輯表達(dá)式,例1:寫(xiě)出下列條件的邏輯表達(dá)式。5k10k.ge.5.and.k.le.10f3g或f5tabs(f).le.3*g.or.abs(f).eq.5*t1a8并且1b8(a.ge.1.and.a.le.8).and.(b.ge.1.and.b.le.8),2020/5/11,86,4.3邏輯表達(dá)式,例2:若a=2.5,b=7.5,c=5.0,d=6.0,求下列邏輯表達(dá)式的值。(a.lt.b).and.(b.lt.c)tff,2020/5/11,87,4.3邏輯表達(dá)式,例2:若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.d8.5FTF.F.T,2020/5/11,88,4.4用塊if實(shí)現(xiàn)選擇結(jié)構(gòu),有以下三種典型的塊if選擇結(jié)構(gòu):if(條件)then(塊if語(yǔ)句)塊(then塊)endif(endif語(yǔ)句),2020/5/11,89,4.4用塊if實(shí)現(xiàn)選擇結(jié)構(gòu),if(條件)then塊1(then塊)else塊2(else塊)endif,2020/5/11,90,4.4用塊if實(shí)現(xiàn)選擇結(jié)構(gòu),例:2X3(X2)YX5(X2)編程如下:read(*,*)xif(x.le.2)theny=2*x+3elsey=x+5endifwrite(*,*)x=,x,y=,yend,2020/5/11,91,4.4用塊if實(shí)現(xiàn)選擇結(jié)構(gòu),if(條件1)then塊1elseif(條件2)then塊2(elseif塊)elseif(條件n)then塊nelse塊(n+1)endif,2020/5/11,92,4.4用塊if實(shí)現(xiàn)選擇結(jié)構(gòu),說(shuō)明:每個(gè)塊if中可以完整地包含一個(gè)(或多個(gè))塊if結(jié)構(gòu),即構(gòu)成塊if的嵌套結(jié)構(gòu)。如:if(條件1)thenif(條件1)then塊1if(條件2)thenelse塊2if(條件2)thenendif塊2elseendif塊1endifendif,2020/5/11,93,4.4用塊if實(shí)現(xiàn)選擇結(jié)構(gòu),一個(gè)塊if語(yǔ)句必須和一個(gè)endif語(yǔ)句相對(duì)應(yīng)。塊if中的“then塊”、“else塊”和“elseif塊”可為空塊。,2020/5/11,94,4.4用塊if實(shí)現(xiàn)選擇結(jié)構(gòu),例1:求一元二次方程ax2+bx+c=0的根。(當(dāng)b2-4ac0時(shí)有兩個(gè)實(shí)根,b2-4ac0時(shí)有兩個(gè)復(fù)根。),2020/5/11,95,4.4用塊if實(shí)現(xiàn)選擇結(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,ge=sqrt(d)print*,x2=,f,-i,gx1=(-b+e)/(2.0*a)endifx2=(-b-e)/(2.0*a)endprint*,x1=,x1print*,x2=,x2else,2020/5/11,96,4.4用塊if實(shí)現(xiàn)選擇結(jié)構(gòu),例2:求下列函數(shù)值。0(x-10)2x+20(-10x0)y=20(0x20)30-0.5x(20x40)50-x(40x50)0(x50),2020/5/11,97,4.4用塊if實(shí)現(xiàn)選擇結(jié)構(gòu),輸入x,truex-10false,truex0false,truex20false,truex40false,truex50false,y=50-xy=0,打印y,y0,y=20,y=30-0.5x,y=2x+20,2020/5/11,98,4.4用塊if實(shí)現(xiàn)選擇結(jié)構(gòu),源程序一:read*,xif(x.lt.50.0)thenif(x.lt.-10.0)theny=50.0-xy=0.0elseelsey=0.0if(x.lt.0.0)thenendify=2.0*x+20.0endifelseendifif(x.lt.20.0)thenendify=20.0endifelseprint*,y=,yif(x.lt.40.0)thenendy=30.0-0.5*xelse,2020/5/11,99,4.4用塊if實(shí)現(xiàn)選擇結(jié)構(gòu),源程序二:read*,xprint*,y=,yif(x.lt.-10.0)thenendy=0.0elseif(x.lt.0.0)theny=2.0*x+20.0elseif(x.lt.20.0)theny=20.0elseif(x.lt.40.0)theny=30.0-0.5*xelseif(x.lt.50.0)theny=50.0-xelsey=0.0endif,2020/5/11,100,4.5邏輯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,2020/5/11,101,4.5邏輯if語(yǔ)句,例:2X3(X2)YX5(X2)編程如下:read(*,*)xread(*,*)xif(x.le.2)thenif(x.le.2)y=2*x+3y=2*x+3if(x.gt.2)y=x+5elsewrite(*,*)y=,yy=x+5endendifwrite(*,*)y=,yend,2020/5/11,102,課后練習(xí)題,P96:第一三題;第四、五、七題,2020/5/11,103,第五章循環(huán)結(jié)構(gòu)的實(shí)現(xiàn),2020/5/11,104,第五章循環(huán)結(jié)構(gòu)的實(shí)現(xiàn),所謂循環(huán),是指在程序執(zhí)行過(guò)程中需要重復(fù)執(zhí)行的程序段。在實(shí)際問(wèn)題中,我們經(jīng)常遇到循環(huán),如:求n,n!,無(wú)條件循環(huán)GOTO循環(huán)結(jié)構(gòu)直到型循環(huán)條件循環(huán)當(dāng)型循環(huán)計(jì)數(shù)型循環(huán),2020/5/11,105,5.1用goto語(yǔ)句實(shí)現(xiàn)循環(huán),goto語(yǔ)句的一般形式:goto其中:s1語(yǔ)句標(biāo)號(hào)。功能:程序執(zhí)行到此語(yǔ)句時(shí),無(wú)條件的轉(zhuǎn)向標(biāo)號(hào)為s1的語(yǔ)句去執(zhí)行。,例:求110的累加和。編寫(xiě)程序段:integerx,sumx=0.0sum=0.010 x=x+1sum=sum+xgoto10,2020/5/11,106,5.1用goto語(yǔ)句實(shí)現(xiàn)循環(huán),如果我們把以上goto語(yǔ)句作為邏輯if語(yǔ)句中的執(zhí)行語(yǔ)句,則就可以實(shí)現(xiàn)有條件的循環(huán)。即:integerx,sum求110的累加和x=0.0sum=0.010 x=x+1sum=sum+xif(x.lt.10)goto10print*,sumend,2020/5/11,107,5.2當(dāng)型循環(huán)的實(shí)現(xiàn),一、用塊if和goto語(yǔ)句實(shí)現(xiàn)循環(huán)一般形式:s1if(條件)then標(biāo)號(hào)塊gotos1endif,所謂當(dāng)型循環(huán),是指執(zhí)行循環(huán)體要依據(jù)事先給定的條件。當(dāng)條件成立時(shí)執(zhí)行循環(huán),否則就不執(zhí)行循環(huán)。,2020/5/11,108,5.2當(dāng)型循環(huán)的實(shí)現(xiàn),編程如下:read*,nm=1i=110if(i.le.n)thenm=m*ii=i+1goto10endifprint*,mend,例:求n!。,2020/5/11,109,5.2當(dāng)型循環(huán)的實(shí)現(xiàn),二、用dowhile語(yǔ)句實(shí)現(xiàn)當(dāng)型循環(huán)一般形式dos1,while(條件)循環(huán)體s1,2020/5/11,110,5.2當(dāng)型循環(huán)的實(shí)現(xiàn),例:求n!。編程如下:read*,nm=1i=1do10while(i.le.n)m=m*ii=i+110continueprint*,mend,2020/5/11,111,5.3直到型循環(huán)的實(shí)現(xiàn),一、用邏輯if語(yǔ)句實(shí)現(xiàn)直到型循環(huán)一般形式s1循環(huán)體if(條件)gotos1,所謂直到型循環(huán),是指先執(zhí)行循環(huán)體,再判斷條件。如果條件為“假”(真),繼續(xù)執(zhí)行循環(huán),直到條件為“真”(假)時(shí)終止循環(huán)。,2020/5/11,112,5.3直到型循環(huán)的實(shí)現(xiàn),例1:求n!。編程如下:read*,nm=1i=110continuem=m*ii=i+1if(i.le.n)goto10print*,mend,2020/5/11,113,5.3直到型循環(huán)的實(shí)現(xiàn),編程如下:integersigns=1.0d=2.0sign=110sign=(-1)*signt=sign/ds=s+td=d+1if(d.le.100.0)goto10print*,send,例2:求的值。,2020/5/11,114,當(dāng)型與直到型循環(huán)的比較,當(dāng)型循環(huán)直到型循環(huán)不同:先判斷條件先執(zhí)行循環(huán)體再執(zhí)行循環(huán)體再判斷條件(循環(huán)體至少被執(zhí)行一次),循環(huán)結(jié)構(gòu)關(guān)鍵:條件判斷改變條件的語(yǔ)句,2020/5/11,115,5.4用do語(yǔ)句實(shí)現(xiàn)循環(huán),當(dāng)循環(huán)的初值、終值和循環(huán)次數(shù)都已知時(shí),可用do語(yǔ)句實(shí)現(xiàn)循環(huán)。用do語(yǔ)句實(shí)現(xiàn)的循環(huán)稱為“do循環(huán)”。do循環(huán)是由一個(gè)do語(yǔ)句和循環(huán)體組成。,2020/5/11,116,5.4用do語(yǔ)句實(shí)現(xiàn)循環(huán),一、一般形式dos,v=e1,e2,e3循環(huán)體s說(shuō)明:s循環(huán)體終端語(yǔ)句的標(biāo)號(hào)v循環(huán)控制變量(do變量),可為整型、實(shí)型或雙精度,2020/5/11,117,5.4用do語(yǔ)句實(shí)現(xiàn)循環(huán),一、一般形式dos,v=e1,e2,e3循環(huán)體s說(shuō)明:e1,e2,e3是整型、實(shí)型或雙精度表達(dá)式e1循環(huán)變量初值e2循環(huán)變量終值e3循環(huán)變量增量(步長(zhǎng),默認(rèn)值:1)當(dāng)v為整型變量,e3=1時(shí),e3可忽略,例:DO10,I=1,10,2DO100,N=1,5,2020/5/11,118,do循環(huán)執(zhí)行過(guò)程P103圖5.8,2020/5/11,119,r=MAX(INT(e2-e1+e3)/e3),0),vv+e3,執(zhí)行過(guò)程P103圖5.7,并將其轉(zhuǎn)換為循環(huán)變量的類(lèi)型,2020/5/11,120,5.4用do語(yǔ)句實(shí)現(xiàn)循環(huán),例如:求110的累加和。integerx,sumsum=0DO10,x=1,10sum=sum+xx=x+110continueprint*,sumend,integerx,sumx=0.0sum=010if(x.le.10)thenx=x+1sum=sum+xgoto10endifprint*,sumend,2020/5/11,121,5.4用do語(yǔ)句實(shí)現(xiàn)循環(huán),二、執(zhí)行過(guò)程(分四種情形)當(dāng)e2e1且e30:當(dāng)e2e1且e30:,2020/5/11,122,5.4用do語(yǔ)句實(shí)現(xiàn)循環(huán),當(dāng)e20:當(dāng)e2e1且e30,則循環(huán)次數(shù)為0由于實(shí)數(shù)在內(nèi)存中存儲(chǔ)的誤差,v,e1,e2,e3盡可能用整型量。,2020/5/11,126,5.4用do語(yǔ)句實(shí)現(xiàn)循環(huán),說(shuō)明:e1,e2,e3的值在do循環(huán)體內(nèi)不會(huì)改變,即使給表達(dá)式e1,e2,e3中的變量賦值也不影響循環(huán)次數(shù)例:m=10do10,i=1,m,3m=100+mprint*,i,m10continueendr=(10-1+3)/3=4,2020/5/11,127,5.4用do語(yǔ)句實(shí)現(xiàn)循環(huán),說(shuō)明:循環(huán)終端語(yǔ)句必須是可執(zhí)行語(yǔ)句(但除goto,塊if,else,elseif,endif,end,stop和return語(yǔ)句外)。繼續(xù)語(yǔ)句(continue語(yǔ)句)循環(huán)終端語(yǔ)句必須是可執(zhí)行語(yǔ)句。那么,這種作為循環(huán)終端語(yǔ)句的語(yǔ)句具有雙重作用:一是作為循環(huán)終端的標(biāo)志,二是要完成自身的功能。因此影響了程序的可讀性。Fortran用一個(gè)專(zhuān)門(mén)的語(yǔ)句作為do循環(huán)的終端語(yǔ)句,即continue語(yǔ)句,它本身不進(jìn)行任何機(jī)器操作。,2020/5/11,128,5.4用do語(yǔ)句實(shí)現(xiàn)循環(huán),三、有關(guān)do循環(huán)的規(guī)定在循環(huán)體內(nèi)不允許對(duì)循環(huán)變量再賦值,但可以引用。例:do10,i=20,1,-1i=2*i不合法k=2*i引用i,合法print*,i,k10continue,2020/5/11,129,例2:do100,I=1,1020print*,I100continueif(x.gt.100.)goto20,例1:do10,n=1,100if(n*2.ge.500)goto2010continue20print*,n,n*2,5.4用do語(yǔ)句實(shí)現(xiàn)循環(huán),三、有關(guān)do循環(huán)的規(guī)定可從do循環(huán)體內(nèi)轉(zhuǎn)到循環(huán)體外,但不允許從循環(huán)外轉(zhuǎn)到循環(huán)內(nèi),內(nèi)外,錯(cuò)誤,2020/5/11,130,5.4用do語(yǔ)句實(shí)現(xiàn)循環(huán),三、有關(guān)do循環(huán)的規(guī)定當(dāng)退出do循環(huán)時(shí),循環(huán)變量仍有定義,其值為離開(kāi)循環(huán)時(shí),循環(huán)變量的值三種情況循環(huán)正常結(jié)束v=e1+r*e3循環(huán)次數(shù)為0v=e1非正常退出循環(huán)例:m=100do10,i=1,100,3m=10+mprint*,i,mif(m.gt.150)goto2010continue20print*,i,mend,2020/5/11,131,5.4用do語(yǔ)句實(shí)現(xiàn)循環(huán),例:計(jì)算100100100n=k,k2,1/k的值。k=1k=1k=1編程如下:ctocomputen,mands.n=0m=0s=0.0do50k=1,100n=n+km=m+k*ks=s+1.0/k50continueprint*,n,m,send,2020/5/11,132,5.4用do語(yǔ)句實(shí)現(xiàn)循環(huán),四、do循環(huán)的嵌套在一個(gè)do循環(huán)中還可以包含一套或多套完整的do循環(huán),這就是do循環(huán)的嵌套。一般形式(以雙重循環(huán)為例)do10i=1,10do20j=1,1020continue10continue,2020/5/11,133,5.4用do語(yǔ)句實(shí)現(xiàn)循環(huán),五、關(guān)于do循環(huán)嵌套的規(guī)定內(nèi)外循環(huán)不允許交叉。do10i=1,10do20j=1,1010continue20continue,2020/5/11,134,5.4用do語(yǔ)句實(shí)現(xiàn)循環(huán),五、關(guān)于do循環(huán)嵌套的規(guī)定在一個(gè)程序單位中,并列的do循環(huán)可用同名循環(huán)變量,而嵌套的do循環(huán)不允用同一變量作為循環(huán)變量。例:do10i=1,10do20i=1,1020continue10continue使循環(huán)控制產(chǎn)生混亂,2020/5/11,135,5.4用do語(yǔ)句實(shí)現(xiàn)循環(huán),例:打印“九九表”。編程如下:do10i=1,9do20j=1,9k=i*jprint*,i,*,j,=,k20continueprint*,10continueend,2020/5/11,136,5.4用do語(yǔ)句實(shí)現(xiàn)循環(huán),六、三種循環(huán)形式的選擇循環(huán)次數(shù)可事先確定,優(yōu)先用do循環(huán)若循環(huán)體可能一次也不執(zhí)行,則優(yōu)先用當(dāng)型循環(huán)若循環(huán)體至少執(zhí)行一次,則當(dāng)型、直到型循環(huán)都可,2020/5/11,137,課后練習(xí)題,P126:第二、三、八題。,2020/5/11,138,第六章Fortran的數(shù)據(jù)結(jié)構(gòu),2020/5/11,139,6.1程序中的數(shù)據(jù)結(jié)構(gòu),程序代數(shù)表達(dá)式:程序=算法+數(shù)據(jù)結(jié)構(gòu)對(duì)于同一個(gè)問(wèn)題的求解,即一個(gè)程序的實(shí)現(xiàn),可以采用不同的數(shù)據(jù)結(jié)構(gòu)和不同的算法。選擇合適的數(shù)據(jù)結(jié)構(gòu)可以降低算法的復(fù)雜度。,2020/5/11,140,6.1程序中的數(shù)據(jù)結(jié)構(gòu),在計(jì)算機(jī)高級(jí)語(yǔ)言中用數(shù)據(jù)類(lèi)型來(lái)表示不同的數(shù)據(jù)結(jié)構(gòu)。數(shù)據(jù)結(jié)構(gòu)一般有以下三類(lèi):基本類(lèi)型(Fortran支持)構(gòu)造類(lèi)型(Fortran支持)指針類(lèi)型(Fortran90支持),2020/5/11,141,6.1程序中的數(shù)據(jù)結(jié)構(gòu),Fortran支持如下幾種基本類(lèi)型:整型(第三章)實(shí)型(第三章)雙精度型復(fù)型字符型邏輯型(第四章),2020/5/11,142,6.1程序中的數(shù)據(jù)結(jié)構(gòu),Fortran支持如下幾種構(gòu)造類(lèi)型:數(shù)組(第九章)記錄(第十三章)文件(第十三章),2020/5/11,143,6.2雙精度數(shù)據(jù)類(lèi)型,由于實(shí)型數(shù)據(jù)提供的有效數(shù)字的位數(shù)有限(微型計(jì)算機(jī)一般提供7位),一方面滿足不了精度的需要,另一方面還會(huì)產(chǎn)生誤差。雙精度類(lèi)型以兩倍于實(shí)型的字節(jié)(一般為8個(gè)字節(jié))來(lái)存儲(chǔ)數(shù)據(jù),提供1517位有效數(shù)字,解決了上述的問(wèn)題。,2020/5/11,144,6.2雙精度數(shù)據(jù)類(lèi)型,Fortran中雙精度常數(shù)要用指數(shù)表示:如:12.34567891.2345656789D+1-0.123456789-1.23456789D-1注意:不可寫(xiě)成1.2345656789E+1Fortran中雙精度變量使用前要用類(lèi)型說(shuō)明語(yǔ)句或IMPLICIT語(yǔ)句加以說(shuō)明:如:doubleprecisionA,B,Cimp

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝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ù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論