第四章——IDL程序編寫_第1頁
第四章——IDL程序編寫_第2頁
第四章——IDL程序編寫_第3頁
第四章——IDL程序編寫_第4頁
第四章——IDL程序編寫_第5頁
已閱讀5頁,還剩27頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、第四章第四章 2. 順序結(jié)構(gòu)順序結(jié)構(gòu)3. 選擇結(jié)構(gòu)選擇結(jié)構(gòu)嵌套:IF 表達(dá)式1 THEN BEGINIF 表達(dá)式2 THEN BEGIN語句序列1ENDIF ELSE BEGIN語句序列2ENDELSE ENDIF ELSE BEGINIF THEN BEGIN語句序列3ENDIF ELSE BEGIN語句序列4ENDELSE ENDELSE功能:根據(jù)三個(gè)表達(dá)式的值來選擇執(zhí)行四個(gè)語句序列中的一個(gè)流程圖:見下頁圖例 編程序,計(jì)算并輸出 y 的值,其中x 的值要求從鍵盤任意輸入。PRO MS5FunctionREAD, PROMPT=請(qǐng)輸入X = ?, xIF x LE 3 THEN BEGINI

2、F x LE -6 THEN BEGINy = 3 * x 2 - x + 1ENDIF ELSE BEGINIF x LE -3 THEN BEGINy = 5 * x 2 - 3 * x + 1ENDIF ELSE BEGINy = 7 * x 2ENDELSEENDELSEENDIF ELSE BEGINIF x LE 6 THEN BEGINy = 5 * x 2 + 3 * x + 1ENDIF ELSE BEGINy = 3 * x 2 + x + 1ENDELSEENDELSEPRINT, y = , yEND例 編程序,計(jì)算并輸出 y 的值,其中x 的值要求從鍵盤任意輸入。PR

3、O MS5Function2 READ, PROMPT=請(qǐng)輸入X = ?, x y=x LE -6?3 * x 2 - x + 1:$ (x LE -3?5 * x 2 - 3 * x + 1:$ (x LE 3?7 * x 2:$ (x LE 6?5 * x 2 + 3 * x + 1:$ 3 * x 2 + x + 1) PRINT, y = , yENDIF語句嵌套的另外兩種常見格式CASE語句格式:CASE 表達(dá)式 OF表達(dá)式1:BEGIN語句序列1 END 表達(dá)式n:BEGIN語句序列n END ELSE :BEGIN語句序列n+1 END ENDCASE功能:根據(jù)表達(dá)式的值與表達(dá)式

4、1到 表達(dá)式n中的每一個(gè)表達(dá)式的值相比較,來選擇執(zhí)行n1個(gè)語句序列中的一個(gè)語句序列。例 編程序Chapter04M,輸入1月到12月中的任意一個(gè)月份數(shù)字,輸出該月份的英文單詞。程序如下:; MPRO MonthREAD, PROMPT=請(qǐng)輸入月份(1 , . , 12):, mCASE m of 1 : PRINT, January & 2 : PRINT, February 3 : PRINT, March & 4 : PRINT, April 5 : PRINT, May & 6 : PRINT, June 7 : PRINT, Ju

5、ly & 8 : PRINT, August 9 : PRINT, September & 10 : PRINT, October 11 : PRINT, November & 12 : PRINT, December ELSE : PRINT, 輸入的月份無效! ENDCASEEND例 設(shè)計(jì)程序Chapter04MS6F,要求從鍵盤任意輸入一個(gè)值x,計(jì)算并輸出函數(shù) f (x) 的值,程序如下。其中f(x)為:; MS6FPRO MS6FunctionREAD, PROMPT=請(qǐng)輸入X = ?, xCASE 1 of x LT

6、 0: y = 2 * x + 1 x LT 1: y = 3 * x + 2 x LT 2: y = 4 * x +3 x LT 3: y = 5 * x + 4 x LT 4: y = 6 * x + 7 ELSE: y = 8 * x * x + 1ENDCASEPRINT, f ( x ) = , yEND4. 循環(huán)結(jié)構(gòu)循環(huán)結(jié)構(gòu)是指在程序執(zhí)行過程中,根據(jù)實(shí)際需要,程序中的某一段程序是指在程序執(zhí)行過程中,根據(jù)實(shí)際需要,程序中的某一段程序需要循環(huán)執(zhí)行若干次,具有這種結(jié)構(gòu)的程序稱為循環(huán)結(jié)構(gòu)程序。需要循環(huán)執(zhí)行若干次,具有這種結(jié)構(gòu)的程序稱為循環(huán)結(jié)構(gòu)程序。如果某個(gè)程序中有語句序列如果某個(gè)程序中有語

7、句序列A,該語句序列,該語句序列A要根據(jù)指定條件表達(dá)式的值循要根據(jù)指定條件表達(dá)式的值循環(huán)執(zhí)行,直到條件表達(dá)式的值為假為止。顯然語句序列環(huán)執(zhí)行,直到條件表達(dá)式的值為假為止。顯然語句序列A在程序執(zhí)行過程在程序執(zhí)行過程中,中, 要循環(huán)執(zhí)行若干次。循環(huán)結(jié)構(gòu)的流程圖可以用圖表示要循環(huán)執(zhí)行若干次。循環(huán)結(jié)構(gòu)的流程圖可以用圖表示格式:格式:WHILE 表達(dá)式表達(dá)式 DO 語句語句 格式:格式:WHILE 表達(dá)式表達(dá)式 DO BEGIN語句序列語句序列A ENDWHILE功能:根據(jù)表達(dá)式的值,功能:根據(jù)表達(dá)式的值,表達(dá)式為真,表達(dá)式為真,循環(huán)執(zhí)行語句序列循環(huán)執(zhí)行語句序列A若若干次。干次。例1設(shè)計(jì)程序Chapte

8、r04S,計(jì)算并輸出1 + + 1000。程序?yàn)椋? SPRO Sum1000sum = 0L & i = 1WHILE i LE 1000 DO BEGINsum = sum + i & i+ENDWHILEPRINT, 1 + 2 + + 1000 = , sumEND格式:格式:CONTINUE功能:在循環(huán)語句中,用于終止本次循環(huán),轉(zhuǎn)向功能:在循環(huán)語句中,用于終止本次循環(huán),轉(zhuǎn)向WHILE進(jìn)行下一次循環(huán)。進(jìn)行下一次循環(huán)。格式:格式:WHILE 表達(dá)式表達(dá)式1 DO BRGIN語句序列語句序列1IF 表達(dá)式表達(dá)式2 THEN BEGIN

9、語句序列語句序列2CONTINUEENDIF語句序列語句序列3ENDWHILE例例 計(jì)算并輸出計(jì)算并輸出2 + 4 + + 1000,設(shè)計(jì)程序如下:,設(shè)計(jì)程序如下:; SumEPRO SumEven1000sum = 0L & i = 1WHILE i LE 1000 DO BEGINIF i MOD 2 THEN BEGINi=i+1 & CONTINUEENDIFsum = sum + i & i=i+1ENDWHILEPRINT, 2+4+ +1000 =, sumEND格式:BREAK功能:用在循環(huán)語句中。用于無條件退出包含該BREAK語句

10、的最內(nèi)層循環(huán),轉(zhuǎn)向執(zhí)行該層循環(huán)語句ENDWHILE后面的語句。WHILE和BREAK的組合格式為:格式:WHILE 表達(dá)式1 DO BEGIN語句序列1IF 表達(dá)式2 THEN BEGIN語句序列2BREAKENDIF語句序列3ENDWHILE例 編程序Chapter04MS,要求從鍵盤任意輸入兩個(gè)數(shù),計(jì)算并輸出這兩個(gè)數(shù)的和;然后詢問是否重復(fù)執(zhí)行上述操作,直到不愿意執(zhí)行為止。; MSPRO MSumyn = WHILE 1 DO BEGIN READ,PROMPT=請(qǐng)輸入X=, x READ,PROMPT=請(qǐng)輸入Y=, y PRINT,x,+,y,=, x+y READ

11、,PROMPT=繼續(xù)嗎?(Y/N):, yn IF STRUPCASE(yn) EQ Y THEN BEGINCONTINUE ENDIF ELSE BEGINBREAK ENDELSEENDWHILEEND格式1:FOR 變量 = 初值,終值 ,步長 DO 語句格式2:FOR 變量 = 初值,終值 ,步長 DO BEGIN語句序列A ENDFOR功能:用變量來控制循環(huán)次數(shù),使序列A循環(huán)執(zhí)行指定的次數(shù)。例 編程序Chapter04G,用FORENDFOR語句輸出下面圖形,其中最底層為15個(gè)*。程序如下:; GPRO Graphics FOR i =

12、1, 15 DO BEGIN Ss=REPLICATE(*, i) PRINT, Ss ENDFOREND嵌套格式:WHILE 表達(dá)式表達(dá)式1 DO BEGIN語句序列語句序列1WHILE 表達(dá)式表達(dá)式2 DO BEGIN語句序列語句序列2WHILE 表達(dá)式表達(dá)式3 DO BEGIN語句序列語句序列3ENDWHILEENDWHILE ENDWHILEC、D錯(cuò)誤結(jié)構(gòu)例例 編程序編程序Chapter04T,輸出下列九九乘法表。程序如下:,輸出下列九九乘法表。程序如下:1*1=11*2=2 2*2=41*3=3 2*3=6 3*3=91*4=4 2*4=8 3*4=12 4*4=

13、161*5=5 2*5=10 3*5=15 4*5=20 5*5=251*6=6 2*6=12 3*6=18 4*6=24 5*6=30 6*6=361*7=7 2*7=14 3*7=21 4*7=28 5*7=35 6*7=42 7*7=491*8=8 2*8=16 3*8=24 4*8=32 5*8=40 6*8=48 7*8=56 8*8=641*9=9 2*9=18 3*9=27 4*9=36 5*9=45 6*9=54 7*9=63 8*9=72 9*9=81; TPRO Table99i = 1WHILE i LT 10 DO BEGINj = 1WHILE j

14、 LE i DO BEGINPRINT,j,*,i,=,i*j, FORMAT=(4X,I1,1X,A1,1X,I1,1X,A1,1X,I2,$)j = j +1ENDWHILEPRINT, FORMAT = ( / ) i = i +1ENDWHILEEND例例 編程序編程序Chapter04T,輸出九九乘法表。程序如下:,輸出九九乘法表。程序如下:; Chapter04Table993FPRO Chapter04Table993For FOR i=1, 9 DO BEGIN FOR j = 1, i DO BEGIN PRINT, j,*,i,=,i*j,

15、FORMAT=(4X,I1,1X,A1,1X,I1,1X,A1,1X,I2,$) ENDFOR PRINT, FORMAT=( / ) ENDFORENDGoto語句格式:goto,標(biāo)號(hào)標(biāo)號(hào)格式:label:pro mmmAAA:print,wygoto,AAAend標(biāo)號(hào)必須以字母開頭5. 自定義函數(shù)自定義函數(shù)5.1主程序主體:必須以end結(jié)束,有兩種表現(xiàn)形式: (1) end (2)pro test 程序體 end文件名為,沒有名稱的主程序必須放在程序最后面。運(yùn)行方式:以IDL.run 運(yùn)行5.2 過程主體:與主程序相似,但必須以pro proname開始,以

16、end結(jié)束。 pro 過程名稱,變量V1,V2, ,kn1=k1,kn2=k2 程序體 endkeyword起重要作用調(diào)用和運(yùn)行方式:以IDLproname方式運(yùn)行參數(shù)一般要有確定的參數(shù)一般要有確定的順序和確定的類型。順序和確定的類型。參數(shù)在使用時(shí),一般參數(shù)在使用時(shí),一般是必選項(xiàng)。是必選項(xiàng)。參數(shù)在使用時(shí),參數(shù)參數(shù)在使用時(shí),參數(shù)的個(gè)數(shù),類型和順序要的個(gè)數(shù),類型和順序要和定義時(shí)保持一致。和定義時(shí)保持一致。Kn1為關(guān)鍵字名,為關(guān)鍵字名,k1為關(guān)鍵為關(guān)鍵字變量字變量關(guān)鍵字一般要有確定的類型。關(guān)鍵字一般要有確定的類型。關(guān)鍵字在使用時(shí),一般是可關(guān)鍵字在使用時(shí),一般是可選項(xiàng)。選項(xiàng)。關(guān)鍵字在使用時(shí),其類型要關(guān)

17、鍵字在使用時(shí),其類型要和定義時(shí)保持一致。和定義時(shí)保持一致。關(guān)鍵字在使用時(shí),其個(gè)數(shù)可關(guān)鍵字在使用時(shí),其個(gè)數(shù)可以比定義時(shí)少。以比定義時(shí)少。關(guān)鍵字在使用時(shí),其順序可關(guān)鍵字在使用時(shí),其順序可以和定義時(shí)不一致,而且其順以和定義時(shí)不一致,而且其順序是可以任意的。序是可以任意的。5.3函數(shù)主體:與過程相似,但以function fnname開始,以end結(jié)束,并以return語句返回一個(gè)IDL變量。 Function test 變量V1,V2, , 關(guān)鍵字k1=k1,k2=k2 程序體 return, Value end 調(diào)用和運(yùn)行方式:以IDLret=fnname(para_list)方式運(yùn)行。例例 編寫

18、自定義函數(shù)編寫自定義函數(shù)Factorial(n)= n!,計(jì)算并輸出,計(jì)算并輸出0 n的階乘的階乘; FactorialFUNCTION Factorial, ny = 1LLIF n NE 0 THEN BEGINFOR i = 1, n DO BEGINy = y * iENDFORENDIFRETURN, yEND; FPRO FactorialNREAD, PROMPT=輸入一個(gè)整數(shù)輸入一個(gè)整數(shù):, nFOR i = 0, n DO BEGINPRINT, i , ! = , Factorial ( i )ENDFOREND引用格式:引用格式:Factorial(n)引用格式:引用格式:FactorialN程序的相互調(diào)用程序的相互調(diào)用MyFunctionFile( 實(shí)參實(shí)參1,實(shí)參,實(shí)參n ,實(shí)字,實(shí)字1,實(shí)字,實(shí)字n)MyProcedureFil

溫馨提示

  • 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)論