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

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(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é)課程2023/2/92

說明第一章算法(略)第二章計(jì)算機(jī)和計(jì)算機(jī)程序(略)2023/2/93第三章

Fortran語(yǔ)言程序設(shè)計(jì)初步

2023/2/953.1Fortran語(yǔ)言的發(fā)展概況

Fortran語(yǔ)言的發(fā)展過程:1951年由約翰·貝克斯等人開始研究Fortran語(yǔ)言;1957年第一個(gè)Fortran程序在IBM704機(jī)上運(yùn)行;1958和1962年先后推出FortranⅡ和FortranⅣ;1966和1978年先后頒布Fortran66和Fortran77;1991年頒布了Fortran90?,F(xiàn)在已經(jīng)有了Fortran95,Fortran20032023/2/96Fortran語(yǔ)言的特征Fortran語(yǔ)言的最大特性是接近數(shù)學(xué)公式的自然描述,在計(jì)算機(jī)里具有很高的執(zhí)行效率。易學(xué),語(yǔ)法嚴(yán)謹(jǐn)??梢灾苯訉?duì)矩陣和復(fù)數(shù)進(jìn)行運(yùn)算。自誕生以來廣泛地應(yīng)用于數(shù)值計(jì)算領(lǐng)域,積累了大量高效而可靠的源程序。很多專用的大型數(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ǔ)言的一些特性。2023/2/973.2簡(jiǎn)單的Fortran程序分析

例1:求一元二次方程x2+3x-5.6=0的根,并打印結(jié)果。利用公式:(這里,a=1,b=3,c=-5.6)2023/2/993.2簡(jiǎn)單的Fortran程序分析執(zhí)行結(jié)果:x1=1.30x2=-4.30

例2:試求3!,6!,9!的值。編程如下:2023/2/9103.2簡(jiǎn)單的Fortran程序分析主程序:子程序:

cmainprogramcsubprogramj=k(3)functionk(n) l=k(6)k=1m=k(9)i=2 write(*,*)j,l,m5if(i.le.n)thenend k=k*i i=i+1 執(zhí)行結(jié)果:goto56720362880endifreturn end2023/2/9113.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)。⑷各類語(yǔ)句在程序單位中的位置有一定規(guī)則。⑸程序必須按規(guī)定格式書寫。2023/2/9133.4Fortran程序的編輯與運(yùn)行FortranPowerStation4.0集成開發(fā)環(huán)境簡(jiǎn)介2023/2/9143.4Fortran程序的編輯與運(yùn)行一、FortranPowerStation4.0的啟動(dòng)選“開始”→“程序”→“FortranPowerStation4.0”→“MicrosoftDeveloperStudio”。二、創(chuàng)建項(xiàng)目工作間選“File”→“New”→“ProjectWorkspace”→“ConsoleApplication”,并輸入項(xiàng)目工作間名稱(如:aaa)和存放項(xiàng)目工作間的位置或路徑(如:c:\for\)→Create。2023/2/9153.4Fortran程序的編輯與運(yùn)行三、給項(xiàng)目工作間添加和編輯文件打開指定的項(xiàng)目工作間→選“Insert”→“Project”→輸入要添加的文件名(如:st01.for)→“Add”。然后按Fortran程序的書寫規(guī)則編輯程序。四、編譯項(xiàng)目工作間中的文件打開指定的文件→選“Build”→“Compilest01.for”。五、連編項(xiàng)目文件選“Build”→“Buildaaa.exe”。六、運(yùn)行項(xiàng)目文件選“Build”→“Executeaaa.exe”。(顯示程序執(zhí)行結(jié)果)2023/2/9173.5常量常量——在程序執(zhí)行期間其值固定不變的量。Fortran處理六種類型的常量:⑴整型常量(Integer)⑵實(shí)型常量(Real)⑶雙精度常量(Doubleprecision)⑷復(fù)型常量(Complex)⑸邏輯型常量(Logical)⑹字符型常量(Character)2023/2/9183.5常量3.5.1整型常量包括正、負(fù)整數(shù)和零。

例:5,-13,0,…

說明:①在(16位)微機(jī)中,整數(shù)的取值范圍為:

-215~215-1(-32768~32767)②在(32位)微機(jī)中,整數(shù)的取值范圍為:

-231~231-1(-2147483648~2147483647)2023/2/9193.5常量3.5.2實(shí)型常量(有二種表示形式)⒈小數(shù)形式例:15.8,-21.05,14.0,14.,.17,0.0,…⒉指數(shù)形式(通常表示較大或較小的數(shù))例:100000000→1.0E+80.0000125→1.25E-05

數(shù)字部分

指數(shù)部分2023/2/9213.5常量⑵同一個(gè)數(shù)值可用不同的指數(shù)形式表示。例:0.876→8.76E-1→87.6E-2→876E-3⑶計(jì)算機(jī)在輸出時(shí),按標(biāo)準(zhǔn)化指數(shù)形式輸出。例:0.28→2.800000E-01-59.58E+12→-5.958000E+13

即數(shù)字部分大于1,且小數(shù)點(diǎn)前只有一位非零數(shù)字的指數(shù)輸出形式。⑷在微機(jī)中,一般用四個(gè)字節(jié)存放一個(gè)實(shí)數(shù),其取值范圍為:10-75~1075。超出此范圍時(shí)為“溢出”錯(cuò)誤。2023/2/9223.5常量⑸下列形式為不合法的指數(shù)形式:①單獨(dú)的小數(shù)點(diǎn)和單獨(dú)的指數(shù)部分。例:.E5,E10×②指數(shù)部分只能是整數(shù),不能帶小數(shù)點(diǎn)。例:8E0.5,12.3E1.5×2023/2/9233.6變量變量——在程序執(zhí)行期間其值可以改變的量。3.6.1變量的概念

Fortran為每一個(gè)變量分配一個(gè)相應(yīng)的存儲(chǔ)單元;每個(gè)變量在每個(gè)時(shí)刻只能有一個(gè)確定的值。例:x=4.5xx=8.0x注:在程序中用到的變量都必須要有確定的值。4.58.02023/2/9253.6變量注意幾點(diǎn):⑴變量名不區(qū)分大小寫字母。例:TOTAL,Total,total代表同一變量⑵變量名中的空格不起作用。例:abc,abc,abc,abc代表同一變量⑶變量名盡量做到“見名知義”

AVER、SUM、Imax⑷允許變量名與語(yǔ)言中具有特定含義的字(“保留字”)同名。例:sin,read,open,end,…建議不要使用fortran中具有特定含義的字作變量名2023/2/9263.6變量3.6.3變量的類型

Fortran能處理各種類型的變量。不同類型的變量用來存放不同類型的數(shù)據(jù)。變量類型的說明(三種方式)⒈隱含說明即以I、j、k、l、m、n開頭的變量為整型變量,以其它字母開頭的變量為實(shí)型變量。(“I~N規(guī)則”)例:imax,m5,number,…

為整型變量

v,h2,aver,…

為實(shí)型變量2023/2/9293.6變量三種類型說明的優(yōu)先級(jí):高類型說明語(yǔ)句(顯式說明)

implicit語(yǔ)句說明低

“I~N規(guī)則”2023/2/9303.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ù)名(自變量)2023/2/9313.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ù)見附錄Ⅵ2023/2/9323.7Fortran內(nèi)部函數(shù)注意幾點(diǎn):⑴函數(shù)自變量(參數(shù))必須用括號(hào)括起來。

例:sinx+cosx→sin(x)+cos(x)⑵函數(shù)自變量可以是常量、變量或表達(dá)式。

例:exp(3.0)sin(x+cos(x))⑶有些函數(shù)的類型是由自變量的類型確定的。

例:mod(8.0,3.0)→2.0mod(8,3)→2⑷三角函數(shù)的角度單位是“弧度”而不是“度”。⑸函數(shù)名分為“通用名”和“專用名”

內(nèi)部函數(shù)名一般用“通用名”。2023/2/9333.8Fortran算術(shù)表達(dá)式Fortran77提供了四種表達(dá)式:算術(shù)表達(dá)式關(guān)系表達(dá)式邏輯表達(dá)式字符表達(dá)式

算術(shù)表達(dá)式——將各運(yùn)算元素(常量、變量、函數(shù)和數(shù)組等)用算術(shù)運(yùn)算符連接起來的一個(gè)有值的式子。2023/2/9343.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í)“先右后左”。2023/2/9353.8Fortran算術(shù)表達(dá)式例:3+5-6.0*8.5/4**2+sin(x)→3+5-6.0×8.5÷42+sinxx**y**z、x**(y**z)→xyz(x**y)**z

→(xy)z有了算術(shù)表達(dá)式概念之后,我們就可以將:

數(shù)學(xué)運(yùn)算式→Fortran算術(shù)表達(dá)式2023/2/9363.8Fortran算術(shù)表達(dá)式二、算術(shù)表達(dá)式書寫規(guī)則⑴表達(dá)式中的各運(yùn)算元素之間必須用運(yùn)算符分隔。

例:xyz→x*y*z2(x+y)→2*(x+y)⑵作任何運(yùn)算的表達(dá)式只能寫在一行。例:

→(a+b)/(c+d)a+b/c+d×2023/2/9373.8Fortran算術(shù)表達(dá)式⑶兩個(gè)運(yùn)算符不能緊鄰。

例:

→a/(-b)→-a/b→a/-b⑷表達(dá)式一律用小括號(hào)。例:

a[x+b(y+c)]→a*(x+b*(y+c))2023/2/9383.8Fortran算術(shù)表達(dá)式三、表達(dá)式求值中的類型問題⑴同類型量運(yùn)算的結(jié)果,仍為原類型。

例:4*5=20,4.0*5.0=20.06.0/4.0=1.5,6/4=1(≠1.5)⑵不同類型量運(yùn)算時(shí),先將低級(jí)類型(整型)轉(zhuǎn)換為高級(jí)類型(實(shí)型),然后再按同類型量進(jìn)行運(yùn)算。

例:2.5*4=10.0(≠10)

2.0**3=2.0*2.0*2.0=8.0(屬同類量運(yùn)算)2023/2/9393.8Fortran算術(shù)表達(dá)式四、運(yùn)算中的誤差問題⑴整數(shù)量運(yùn)算沒有誤差⑵實(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)=?2023/2/9403.9賦值語(yǔ)句Fortran提供三類賦值語(yǔ)句:

算術(shù)賦值語(yǔ)句邏輯賦值語(yǔ)句字符賦值語(yǔ)句一、算術(shù)賦值語(yǔ)句一般格式

V=e

功能:把賦值號(hào)右邊表達(dá)式的值,賦給賦值號(hào)左邊的變量或數(shù)組元素。

例:

S=3.14159*r**22023/2/9413.9賦值語(yǔ)句二、算術(shù)賦值語(yǔ)句中的類型轉(zhuǎn)換問題⑴賦值號(hào)兩邊類型一致時(shí),直接賦值。

例:k=355⑵賦值號(hào)兩邊類型不一致時(shí),先計(jì)算,再轉(zhuǎn)換,最后賦值。

例:y1=6*2(y1的值為12.0)

Imax=3.6*2(imax的值為7(7.2→7))2023/2/9423.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.0x=x+1.0(x的值為2.0)2023/2/9433.10簡(jiǎn)單的輸出語(yǔ)句用戶編制的程序必須要有輸出語(yǔ)句,把結(jié)果顯示或打印出來。

Fortran提供了三種輸出方式:①表控格式輸出(標(biāo)準(zhǔn)或固定格式輸出)②指定格式輸出③無(wú)格式輸出(二進(jìn)制形式,適應(yīng)磁盤文件)一、表控格式輸出

按Fortran編譯系統(tǒng)隱含規(guī)定的格式輸出。(即系統(tǒng)根據(jù)輸出數(shù)據(jù)的不同類型,自動(dòng)給出相應(yīng)的輸出格式。)2023/2/9443.10簡(jiǎn)單的輸出語(yǔ)句二、表控格式輸出語(yǔ)句一般格式:

print﹡,〈輸出表列〉write(﹡,﹡)〈輸出表列〉

例1:print﹡,56.8,125

或write(﹡,﹡)56.8,125

例2:print﹡,a,b,c

或write(﹡,﹡)a,b,c2023/2/9453.10簡(jiǎn)單的輸出語(yǔ)句例3:x=12.5 y=90.5z=x+yprint*,x,yprint*,'z=',zend

運(yùn)行結(jié)果:

12.50000090.500000Z=103.0000002023/2/9463.10簡(jiǎn)單的輸出語(yǔ)句⒈整數(shù)的表控格式輸出規(guī)定:每個(gè)整數(shù)占12列,數(shù)據(jù)打印在右端,左補(bǔ)空格。例:print*,123,-1128

輸出結(jié)果:

︺︺︺︺︺︺︺︺123︺︺︺︺︺︺︺-11282023/2/9473.10簡(jiǎn)單的輸出語(yǔ)句⒉實(shí)數(shù)的表控格式輸出規(guī)定:每個(gè)實(shí)數(shù)占16列,數(shù)據(jù)打印在右端,左補(bǔ)空格。

例:print*,15.4,-321.45

輸出結(jié)果:

︺︺︺︺︺︺15.400000︺︺︺︺︺-321.4500002023/2/9483.10簡(jiǎn)單的輸出語(yǔ)句當(dāng)實(shí)數(shù)值的絕對(duì)值≥107或<1時(shí),按標(biāo)準(zhǔn)的指數(shù)形式輸出。

例:print*,-10000000.,0.98

輸出結(jié)果:

︺︺-1.000000E+07︺︺︺︺9.800000E-012023/2/9493.11簡(jiǎn)單的輸入語(yǔ)句Fortran提供了三種輸入方式:①表控格式輸入(自由格式輸入)②指定格式輸入③無(wú)格式輸入一、表控格式輸入表控格式輸入——根據(jù)變量的數(shù)據(jù)類型輸入相應(yīng)的數(shù)據(jù)形式,數(shù)據(jù)間以逗號(hào)或空格分隔的輸入方式。2023/2/9503.11簡(jiǎn)單的輸入語(yǔ)句二、表控格式輸入語(yǔ)句一般格式:

read﹡,〈輸入表列〉read(﹡,﹡)〈輸入表列〉例1:read﹡,a,b(若a=14.7,b=30.0)鍵盤輸入:14.7,30.0↙2023/2/9513.11簡(jiǎn)單的輸入語(yǔ)句例2:read﹡,x,k(若x=4.5,k=200)鍵盤輸入:4.5,200↙例3:read﹡,x,y,z(若x=1.5,y=2.5,z=3.5)

read﹡,i,j(若i=5,j=10)鍵盤輸入:1.5,2.5,3.5↙5,10↙2023/2/9523.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)鍵盤輸入:①1.5,2.5,3.5↙②1.5,2.5,3.5,5.2,6.0↙(最后兩個(gè)數(shù)被忽略)③1.5,2.5↙(計(jì)算機(jī)將等待用戶繼續(xù)輸入數(shù)據(jù))2023/2/9533.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)鍵盤輸入:1.5↙2.5↙3.5↙5,10↙

若鍵盤輸入:1.5,2.5,3.5,5,10↙(錯(cuò))2023/2/9543.11簡(jiǎn)單的輸入語(yǔ)句⑶在輸入數(shù)據(jù)時(shí)若出現(xiàn)“/”,則終止對(duì)此read語(yǔ)句的輸入。例:read﹡,x,y,z

鍵盤輸入:1.5,2.5/↙(變量z的值為原值或?yàn)榱?。?023/2/9553.12參數(shù)語(yǔ)句(parameter語(yǔ)句)一、parameter語(yǔ)句的功能為常量命名,即用一個(gè)符號(hào)代表一個(gè)常量。二、parameter語(yǔ)句一般形式

Parameter(p1=c1[,p2=c2,…,pn=cn])

其中:pn——符號(hào)常量;cn——常量。

2023/2/9563.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,hend2023/2/9573.12參數(shù)語(yǔ)句(parameter語(yǔ)句)注意幾點(diǎn):⑴參數(shù)語(yǔ)句必須寫在所有可執(zhí)行語(yǔ)句之前;⑵符號(hào)常量的命名規(guī)則及類型與變量相同,并遵循“I~N規(guī)則”;⑶程序中不能給符號(hào)常量再賦值。2023/2/9583.13pause語(yǔ)句,stop語(yǔ)句,end語(yǔ)句一、pause語(yǔ)句

⒈一般形式

Pause[n]

注:n為1~5位正整數(shù)或字符常量。

⒉功能暫停程序的執(zhí)行。(一個(gè)程序單位可以有多個(gè)pause語(yǔ)句)2023/2/9593.13pause語(yǔ)句,stop語(yǔ)句,end語(yǔ)句例:

parameter(r=0.5,pi=3.14159)s=pi*r**2h=2.0*pi*r

pause'打印面積和周長(zhǎng)'print*,s,hend2023/2/9603.13pause語(yǔ)句,stop語(yǔ)句,end語(yǔ)句二、stop語(yǔ)句

⒈一般形式

stop[n]

注:n為1~5位正整數(shù)或字符常量。

⒉功能終止程序的執(zhí)行。(一個(gè)程序單位可以有多個(gè)stop語(yǔ)句)2023/2/9613.13pause語(yǔ)句,stop語(yǔ)句,end語(yǔ)句三、end語(yǔ)句⒈一般形式

end

⒉功能對(duì)主程序:終止程序的執(zhí)行和作為程序單位的結(jié)束標(biāo)志;對(duì)子程序:返回調(diào)用程序和作為程序單位的結(jié)束標(biāo)志。(一個(gè)程序單位只能有一個(gè)end語(yǔ)句)2023/2/962課后練習(xí)題

P75~76:第五、八、十一題2023/2/963第四章

邏輯運(yùn)算和選擇結(jié)構(gòu)

2023/2/964計(jì)算機(jī)程序程序設(shè)計(jì)的基本方法

計(jì)算機(jī)解決問題所需要的一系列代碼化指令序列——計(jì)算機(jī)程序。

程序=數(shù)據(jù)結(jié)構(gòu)+算法即“程序就是在數(shù)據(jù)的某些特定的表示方式和結(jié)構(gòu)的基礎(chǔ)上,對(duì)抽象算法的具體描述。”

上述公式可擴(kuò)充為:程序=數(shù)據(jù)結(jié)構(gòu)+算法+程序設(shè)計(jì)方法+語(yǔ)言工具2023/2/965所謂面向過程的程序設(shè)計(jì),是指利用面向過程的語(yǔ)言工具(如Basic、Pascal、Fortran和C等)進(jìn)行程序開發(fā)的各項(xiàng)活動(dòng)。程序設(shè)計(jì)的基本方法面向過程的程序設(shè)計(jì)優(yōu)點(diǎn):編程簡(jiǎn)單、結(jié)構(gòu)性強(qiáng)、可讀性好,程序執(zhí)行時(shí)序特征明顯;遵循這種結(jié)構(gòu)的程序只有一個(gè)入口和一個(gè)出口。缺點(diǎn):存在數(shù)據(jù)與程序模塊的分離和程序的可重用性差等問題?;舅枷耄喊岩粋€(gè)需要求解的復(fù)雜問題分為若干個(gè)模塊來處理,每個(gè)模塊處理一個(gè)子問題;設(shè)計(jì)時(shí)遵循自頂向下、逐步細(xì)化、模塊化設(shè)計(jì)和結(jié)構(gòu)化編碼的原則。2023/2/966程序設(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ù)雜問題的程序分為若干個(gè)程序模塊,每個(gè)模塊完成一項(xiàng)特定功能;其中有一個(gè)主模塊和若干個(gè)子模塊,主模塊控制各個(gè)子模塊來實(shí)現(xiàn)整個(gè)程序的功能。自頂向下,逐步細(xì)化2023/2/967程序設(shè)計(jì)的基本方法面向?qū)ο蟮某绦蛟O(shè)計(jì)面向?qū)ο蟮某绦蛟O(shè)計(jì)是一種新的程序設(shè)計(jì)范型。它將一些新的理念和結(jié)構(gòu)化程序設(shè)計(jì)中好的思想相融合,提供了一種全新的程序設(shè)計(jì)方法。基本思想將一個(gè)需要求解的問題分解為一系列實(shí)體(對(duì)象),然后圍繞這些對(duì)象建立數(shù)據(jù)和函數(shù);函數(shù)的功能決定了該對(duì)象的行為。規(guī)定一個(gè)對(duì)象的函數(shù)可以訪問另一對(duì)象的函數(shù),但一個(gè)對(duì)象的數(shù)據(jù)不能應(yīng)用于另一對(duì)象的函數(shù)中。幾個(gè)基本概念:三類機(jī)制:類,對(duì)象,屬性,事件,方法封裝、繼承、多態(tài)2023/2/9684.1算法及其表示方法一、算法的概念算法——解決某一問題所采取的方法和步驟。計(jì)算機(jī)算法——計(jì)算機(jī)能夠執(zhí)行的算法。

計(jì)算機(jī)算法的特征:

⑴有窮性——操作步驟是有限的。

⑵確定性——方法步驟是明確的。

⑶有效性——方法是正確的,步驟是完整的。

⑷必須有輸入和輸出。(取得必要的信息,給出正確的結(jié)果。)2023/2/9694.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ù)雜的問題都可以用這三種基本結(jié)構(gòu)來描述。2023/2/9704.1算法及其表示方法二、算法的表示用N~S流程圖表示。(由幾種功能框組合而成)

⑴矩形框——用于表示順序結(jié)構(gòu)。如:若先執(zhí)行語(yǔ)句A,再執(zhí)行語(yǔ)句B。AB2023/2/9714.1算法及其表示方法例:若a=1.5,b=4.5,求a+b的平方。①畫N~S圖:②編程:

A=1.5B=4.5C=(a+b)**2Print*,cend1.5→a4.5→b(a+b)2→c打印c結(jié)束2023/2/9724.1算法及其表示方法⑵三角框——用于表示分支選擇結(jié)構(gòu)。如:若P為條件,當(dāng)P成立執(zhí)行語(yǔ)句A,否則執(zhí)行語(yǔ)句B。PTrueFalseABPAB2023/2/9734.1算法及其表示方法⑶L形框——用于表示循環(huán)結(jié)構(gòu)。

①當(dāng)型循環(huán)(P為條件,A循環(huán)體)如:若條件P成立,則執(zhí)行循環(huán)體A,否則跳出循環(huán)體。PAYNPA2023/2/9744.1算法及其表示方法

②直到型循環(huán)(P為條件,A循環(huán)體)如:首先執(zhí)行循環(huán)體A,若條件P不成立繼續(xù)執(zhí)行循環(huán)體A,直到條件P成立為止。

A

PPAYN2023/2/9754.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.(不等于)2023/2/9764.2關(guān)系表達(dá)式二、關(guān)系表達(dá)式的一般形式

〈算術(shù)量〉〈關(guān)系運(yùn)算符〉〈算術(shù)量〉

即:⑴關(guān)系表達(dá)式是由關(guān)系運(yùn)算符將兩個(gè)算術(shù)量連接起來的式子。⑵關(guān)系表達(dá)式的運(yùn)算元素是算術(shù)量,結(jié)果是邏輯量:真(.True.)或假(.False.)。2023/2/9774.2關(guān)系表達(dá)式有了關(guān)系表達(dá)式,我們就可以將:數(shù)學(xué)關(guān)系式─→Fortran關(guān)系表達(dá)式例:

x+y>15.4─→x+y.gt.15.4a+b≠a-b─→a+b.ne.a-bex≥2.17─→exp(x).ge.2.172023/2/9784.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.b

→abs(a-b).lt.1E-6c.ne.d

→abs(c-d).gt.1E-62023/2/9794.3邏輯表達(dá)式關(guān)系表達(dá)式只能表達(dá)簡(jiǎn)單的關(guān)系,如:

5≤x≤10就不能用關(guān)系表達(dá)式表達(dá),此時(shí)要用邏輯表達(dá)式。2023/2/9804.3邏輯表達(dá)式一、邏輯表達(dá)式的一般形式

〈邏輯量〉〈邏輯運(yùn)算符〉〈邏輯量〉即:⑴邏輯表達(dá)式是由邏輯運(yùn)算符將兩個(gè)邏輯量連接起來的式子。⑵邏輯表達(dá)式的運(yùn)算元素是邏輯量,結(jié)果也是邏輯量:真(.True.)或假(.False.)。邏輯量包括邏輯常量、邏輯變量和關(guān)系表達(dá)式。2023/2/9814.3邏輯表達(dá)式二、邏輯常量?jī)蓚€(gè):①.true.(真)②.false.(假)三、邏輯變量

——用于存放邏輯常量的變量。邏輯變量可以通過賦值語(yǔ)句來接受邏輯常量的值,但在使用前,要進(jìn)行類型說明。

例:logicala,ba=.true.b=.false.2023/2/9824.3邏輯表達(dá)式四、邏輯運(yùn)算符

.and.(邏輯與)

.or.(邏輯或)

.not.(邏輯非)

.eqv.(邏輯等(同或))

.neqv.(邏輯不等(異或))2023/2/9834.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í),為真。)2023/2/9844.3邏輯表達(dá)式六、邏輯表達(dá)式的運(yùn)算次序(P84表4.5)

運(yùn)算次序?yàn)椋?/p>

括號(hào)→算術(shù)運(yùn)算→關(guān)系運(yùn)算→邏輯運(yùn)算

而邏輯運(yùn)算:

.not.→.and.→.or.→.eqv.,.neqv.2023/2/9854.3邏輯表達(dá)式例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)2023/2/9864.3邏輯表達(dá)式例2:若a=2.5,b=7.5,c=5.0,d=6.0,求下列邏輯表達(dá)式的值。⑴(a.lt.b).and.(b.lt.c)

①t②f③f

2023/2/9874.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.d

①8.5④F③T

②F

.

⑤F.

⑥T2023/2/9884.4用塊if實(shí)現(xiàn)選擇結(jié)構(gòu)有以下三種典型的塊if選擇結(jié)構(gòu):⑴if(條件)then(塊if語(yǔ)句)

塊(then塊)endif(endif語(yǔ)句)PA2023/2/9894.4用塊if實(shí)現(xiàn)選擇結(jié)構(gòu)⑵if(條件)then

塊1(then塊)else

塊2(else塊)

endif

PAB2023/2/9904.4用塊if實(shí)現(xiàn)選擇結(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值2023/2/9914.4用塊if實(shí)現(xiàn)選擇結(jié)構(gòu)⑶if(條件1)then

塊1elseif(條件2)then

塊2(elseif塊)

┆elseif(條件n)then

塊n[else

塊(n+1)]endif

2023/2/9924.4用塊if實(shí)現(xiàn)選擇結(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

2023/2/9934.4用塊if實(shí)現(xiàn)選擇結(jié)構(gòu)⑵一個(gè)塊if語(yǔ)句必須和一個(gè)endif語(yǔ)句相對(duì)應(yīng)。⑶塊if中的“then塊”、“else塊”和“elseif塊”可為空塊。2023/2/9944.4用塊if實(shí)現(xiàn)選擇結(jié)構(gòu)

例1:求一元二次方程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é)束2023/2/9954.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',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

else2023/2/9964.4用塊if實(shí)現(xiàn)選擇結(jié)構(gòu)例2:求下列函數(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)2023/2/9974.4用塊if實(shí)現(xiàn)選擇結(jié)構(gòu)

輸入xtruex<-10falsetruex<0falsetruex<20falsetruex<40falsetrue

x<50

falsey=50-xy=0打印yy=0y=20y=30-0.5xy=2x+202023/2/9984.4用塊if實(shí)現(xiàn)選擇結(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

else2023/2/9994.4用塊if實(shí)現(xiàn)選擇結(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 endif2023/2/91004.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+12023/2/91014.5邏輯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=’,yend2023/2/9102課后練習(xí)題P96:第一~三題;第四、五、七題2023/2/9103第五章循環(huán)結(jié)構(gòu)的實(shí)現(xiàn)

2023/2/9104第五章循環(huán)結(jié)構(gòu)的實(shí)現(xiàn)

所謂循環(huán),是指在程序執(zhí)行過程中需要重復(fù)執(zhí)行的程序段。在實(shí)際問題中,我們經(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)2023/2/91055.1用goto語(yǔ)句實(shí)現(xiàn)循環(huán)goto語(yǔ)句的一般形式:

goto<s1>

其中:s1——語(yǔ)句標(biāo)號(hào)。功能:程序執(zhí)行到此語(yǔ)句時(shí),無(wú)條件的轉(zhuǎn)向標(biāo)號(hào)為s1的語(yǔ)句去執(zhí)行。例:求1~10的累加和。編寫程序段:integerx,sumx=0.0sum=0.010x=x+1sum=sum+xgoto102023/2/91065.1用goto語(yǔ)句實(shí)現(xiàn)循環(huán)

如果我們把以上goto語(yǔ)句作為邏輯if語(yǔ)句中的執(zhí)行語(yǔ)句,則就可以實(shí)現(xiàn)有條件的循環(huán)。即:

integerx,sum求1~10的累加和

x=0.0sum=0.010x=x+1sum=sum+xif(x.lt.10)goto10print*,sumendx=0.0,sum=0.0x+1→x

sum+x→sum直到x≥10輸出sum2023/2/91075.2當(dāng)型循環(huán)的實(shí)現(xiàn)一、用塊if和goto語(yǔ)句實(shí)現(xiàn)循環(huán)

一般形式:

s1if(條件)then

標(biāo)號(hào)塊

gotos1endifP

A

所謂當(dāng)型循環(huán),是指執(zhí)行循環(huán)體要依據(jù)事先給定的條件。當(dāng)條件成立時(shí)執(zhí)行循環(huán),否則就不執(zhí)行循環(huán)。2023/2/91085.2當(dāng)型循環(huán)的實(shí)現(xiàn)編程如下:

read*,n m=1 i=1

10if(i.le.n)thenm=m*i i=i+1

goto10 endifprint*,m end輸入nm=1,i=1i≤n

m×i→mi+1→i輸出m例:求n!。2023/2/91095.2當(dāng)型循環(huán)的實(shí)現(xiàn)

二、用dowhile語(yǔ)句實(shí)現(xiàn)當(dāng)型循環(huán)

一般形式

dos1[,]while(條件)┆循環(huán)體

s1<終端語(yǔ)句>2023/2/91105.2當(dāng)型循環(huán)的實(shí)現(xiàn)例:求n!。編程如下:

read*,nm=1i=1

do10while(i.le.n)m=m*i i=i+1

10continueprint*,mend2023/2/91115.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)。2023/2/91125.3直到型循環(huán)的實(shí)現(xiàn)例1:求n!。編程如下:

read*,nm=1i=1

10continue

m=m*i i=i+1

if(i.le.n)goto10

print*,mend讀nm→1,i→1m*i→mi+1→i直到i>n輸出m結(jié)束2023/2/91135.3直到型循環(huán)的實(shí)現(xiàn)編程如下:

integersigns=1.0d=2.0sign=1

10sign=(-1)*signt=sign/ds=s+td=d+1

if(d.le.100.0)goto10print*,send例2:求的值。2023/2/9114當(dāng)型與直到型循環(huán)的比較

當(dāng)型循環(huán)直到型循環(huán)不同:先判斷條件先執(zhí)行循環(huán)體再執(zhí)行循環(huán)體再判斷條件 (循環(huán)體至少被 執(zhí)行一次)PAPA循環(huán)結(jié)構(gòu)關(guān)鍵:⑴條件判斷⑵改變條件的語(yǔ)句2023/2/91155.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)體組成。2023/2/91165.4用do語(yǔ)句實(shí)現(xiàn)循環(huán)一、一般形式

dos[,]v=e1,e2[,e3]┆循環(huán)體

s<終端語(yǔ)句>說明:①

s——循環(huán)體終端語(yǔ)句的標(biāo)號(hào)②v——循環(huán)控制變量(do變量),可為整型、實(shí)型或雙精度2023/2/91175.4用do語(yǔ)句實(shí)現(xiàn)循環(huán)一、一般形式

dos[,]v=e1,e2[,e3]┆循環(huán)體

s<終端語(yǔ)句>說明:③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,52023/2/9118do循環(huán)執(zhí)行過程P103圖5.8計(jì)算e1,e2,e3的值v←e1v>e2執(zhí)行循環(huán)體v←v+e3YN執(zhí)行終端語(yǔ)句

下面的語(yǔ)句2023/2/9119r=MAX(INT((e2-e1+e3)/e3),0)v←v+e3執(zhí)行過程P103圖5.7并將其轉(zhuǎn)換為

循環(huán)變量的類型2023/2/91205.4用do語(yǔ)句實(shí)現(xiàn)循環(huán)例如:求1~10的累加和。

integerx,sumsum=0DO10,x=1,10sum=sum+x

x=x+110continueprint*,sumend

integerx,sumx=0.0sum=010if(x.le.10)thenx=x+1sum=sum+x

goto10

endifprint*,sumend2023/2/91215.4用do語(yǔ)句實(shí)現(xiàn)循環(huán)二、執(zhí)行過程(分四種情形)⑴當(dāng)e2>e1且e3>0:⑵當(dāng)e2>e1且e3<0:2023/2/91225.4用do語(yǔ)句實(shí)現(xiàn)循環(huán)⑶當(dāng)e2<e1且e3>0:⑷當(dāng)e2<e1且e3<0:2023/2/91235.4用do語(yǔ)句實(shí)現(xiàn)循環(huán)

編程如下:

do10i=1,30

read*,x

10if(x.ge.60)print*,i,xend循環(huán)體例1:從鍵盤輸入30個(gè)學(xué)生的單科成績(jī),并將其中及格以上的學(xué)生序號(hào)和成績(jī)打印出來。2023/2/91245.4用do語(yǔ)句實(shí)現(xiàn)循環(huán)例2:打印正弦sinx的值。(間隔0.1o,從0o~360o)

編程如下:

do100i=0,3600

x=i/10.0y=sin(x*3.14159/180)100print*,’x=’,x,’y=’,yend2023/2/91255.4用do語(yǔ)句實(shí)現(xiàn)循環(huán)說明:⑴DO循環(huán)是當(dāng)型循環(huán)⑵可用e1,e2,e3的值求出循環(huán)次數(shù)。計(jì)算公式:r=max(int((e2-e1+e3)/e3),0)①e3=0則運(yùn)行時(shí)出錯(cuò)(被零除)例:do10,i=1.2,6.6,0.2r=max(int(6-1+0/0),0)(因?yàn)檠h(huán)變量I是整型)②e1<e2且e3<0

e1>e2且e3>0,則循環(huán)次數(shù)為0⑶由于實(shí)數(shù)在內(nèi)存中存儲(chǔ)的誤差,v,e1,e2,e3盡可能用整型量。2023/2/91265.4用do語(yǔ)句實(shí)現(xiàn)循環(huán)說明:⑷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,m10continueend

r=(10-1+3)/3=42023/2/91275.4用do語(yǔ)句實(shí)現(xiàn)循環(huán)說明:⑸循環(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è)專門的語(yǔ)句作為do循環(huán)的終端語(yǔ)句,即continue語(yǔ)句,它本身不進(jìn)行任何機(jī)器操作。2023/2/91285.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,-1

i=2*i

不合法

k=2*i引用i,合法

print*,i,k10continue2023/2/9129例2:do100,I=1,10

……20print*,I

……

100continueif(x.gt.100.)goto20例1:do10,n=1,100

……if(n**2.ge.500)goto20

……

10continue

……20print*,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ò)誤2023/2/91305.4用do語(yǔ)句實(shí)現(xiàn)循環(huán)三、有關(guān)do循環(huán)的規(guī)定⑵當(dāng)退出do循環(huán)時(shí),循環(huán)變量仍有定義,其值為離開循環(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,m

if(m.gt.150)goto2010continue20print*,i,mend2023/2/91315.4用do語(yǔ)句實(shí)現(xiàn)循環(huán)例:計(jì)算

100100100n=∑k,∑k2,∑1/k的值。

k=1k=1k=1

編程如下:

ctocomputen,mands.n=0m=0s=0.0

do50k=1,100n=n+km=m+k*ks=s+1.0/k

50continueprint*,n,m,send

2023/2/91325.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,10┆

do20j=1,10┆20continue

┆10continue2023/2/91335.4用do語(yǔ)句實(shí)現(xiàn)循環(huán)

五、關(guān)于do循環(huán)嵌套的規(guī)定⑴內(nèi)外循環(huán)不允許交叉。

do10i=1,10┆

do20j=1,10┆

10continue

20continue2023/2/91345.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,10┆

do20i=1,10┆20continue

┆10continue

使循環(huán)控制產(chǎn)生混亂

2023/2/91355.4用do語(yǔ)句實(shí)現(xiàn)循環(huán)例:打印“九九表”。編程如下:

do10i=1,9

do20j=1,9

k=i*jprint*,i,’*’,j,‘=‘,k

20continueprint*,’

10continueend2023/2/91365.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)都可2023/2/9137課后練習(xí)題P126:第二、三、八題。2023/2/9138第

溫馨提示

  • 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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論