ENVI+IDL二次開發入門-過程和函數編寫

ENVI IDL程序文件以“pro” 或者“function”開頭,以“end”結尾,需要先有IDL編譯器編譯成程序模塊(快捷鍵Ctrl+F8),然後運行(快捷鍵F8)。IDL中過程和函數保存的文件後綴都是”.pro”作爲擴展名。(ASCII碼文件)

1.過程

過程是IDL使用最多的程序方式,“pro”之後爲過程名稱,同時也可以有若干各參數後關鍵字,{如果過程包含參數或者關鍵字的話,需要通過在命令行輸入過程名稱+參數、關鍵字的方式來運行,語句爲:過程名[,參數1,...,參數n][,關鍵字1,...,關鍵字m]}
過程格式如下:
pro 過程名[,參數1...,參數n][,關鍵字1...,關鍵字m]
    命令序列(需要編寫的代碼行)
end

示例:

Pro test
;將角度轉換爲弧度
  deg = 180
  radian = deg*!dtor
  print,radian
end

結果:
IDL> .compile -v 'C:\Users\Administrator\IDLWorkspace\enviProject\test.pro'
% Compiled module: TEST.
IDL> test
% Compiled module: TEST.
3.14159
IDL>

2.函數

函數在建立、編輯、保存和編譯上,與過程非常相似,區別是函數運行後會返回一個值。函數以“function”語句開始,以“return”語句返回函數的計算結果,以“end”語句結束。
函數格式如下:
function 函數名[,參數1...,參數n][,關鍵字1...,關鍵字m]
    命令序列(需要編寫的代碼行)
    return,表達式
end

示例:

function test,radian 
;弧度轉換爲角度
  deg =  radian*!RADEG
  return,radian
end 

結果:
IDL> .compile -v 'C:\Users\Administrator\IDLWorkspace\enviProject\testfunc.pro'
% Compiled module: TEST.
IDL> test(!PI)
3.1415927
IDL>

函數和程序同時使用的示例{在保存文件名時,以pro 過程名作爲文件 名,否則在運行的時候會出錯}
{錯誤情況如下:
IDL> .compile -v 'C:\Users\Administrator\IDLWorkspace\enviProject\calculate.pro'
% Compiled module: TEST1.
% Compiled module: CALCULATE.
IDL> calculate
% Compiled module: TEST1.
% Compiled module: CALCULATE.
% Compiled module: CALCULATE.
% Attempt to call undefined procedure: 'CALCULATE'.
% Execution halted at: $MAIN$
IDL>

pro test1
  x=2 & y=3 & z=4
  volume = calculate(x,y,z)
  print,'體積',volume
end

function calculate,x,y,z
;計算體積
  return, x*y*z
end

結果:
IDL> .compile -v 'C:\Users\Administrator\IDLWorkspace\enviProject\test1.pro'
% Compiled module: TEST1.
% Compiled module: CALCULATE.
IDL> test1
% Compiled module: TEST1.
% Compiled module: CALCULATE.
體積 24
IDL>

IDL的過程、函數之間可以相互調用,從而組合出更爲複雜的程序,或用於將經常重複的部分攜程獨立模塊用於簡化程序。程序的相互調用往往需要利用參數和關鍵字傳遞數據。

參數必須先定義再使用,使用時順序和類型要與定義時保持一致。
關鍵字也必須先定義再使用,關鍵字依靠名字進行定位。除了傳遞數據外,關鍵字孩子可以用於緩解或功能設施選項的“開關”,可以用“/關鍵字”表達“關鍵字=1”的含義。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章