青未了分享 http://blog.sciencenet.cn/u/yanghang

博文

IDL控制语句

已有 9294 次阅读 2018-12-28 10:02 |个人分类:IDL学习笔记|系统分类:科研笔记

01

FOR

循环语句。

02

FOREACH

循环语句。

03

WHILE...DO

循环语句。

04

IF...THEN...ELSE

选择语句。

05

CASE

只执行符合条件的一个语句块。 

06

SWITCH
 
 

执行符合条件后面的所有语句块。

07

REPEAT...UNTIL

循环语句。 

08

BEGIN...END

用于显示多条语句。

09

CONTINUE 

执行循环语句中的下一条循环。

10

BREAK

从循环、CASE 或   SWITCH 语句中跳出。


一、循环语句

1.For

Syntax :

FOR variable = init, limit [, Increment] DO statement

or 

FOR variable = init, limit [, Increment] DO BEGIN 

  statements 

ENDFOR 

2.ForEach

Syntax

FOREACH Element, Variable [, Index] DO Statement

or

FOREACH Element, Variable [, Index] DO BEGIN

statements

ENDFOREACH

3.While

Syntax

WHILE expression DO statement

or

WHILE expression DO BEGIN

   statements

ENDWHILE

4.repeat

Syntax

REPEAT statement UNTIL expression

or

REPEAT BEGIN

   statements

ENDREP UNTIL expression


二、条件语句

1. IF

1.1单分支1.2双分支1.3多分支

1.1.1 if  条件  then  语句

1.1.2 if  条件  then  begin

      语句

   endif

1.2.1 if  条件  then  语句  else  语句

1.2.2 if  条件  then  begin

       语句

   endif  else  begin

       语句

   endelse  ;注意是endelse不是endif

if  条件  then  begin

       语句

   endif  else  if  条件  then  begin

       语句

   endif  else  if  条件  then  begin

       语句

   endif  else  begin

       语句

   endelse

2.Case

Syntax

CASE expression OF

    expression: statement(s)

    ...

    expression: statement(s)

[ ELSE: statement(s) ]

ENDCASE

3.Switch

Syntax

SWITCH expression OF

   expression: statement

   ...

   expression: statement

ELSE: statement

ENDSWITCH

三、跳转语句

1.Break

当进行条件循环是,一般等到满足指定条件时循环就会结束。Break提供了一个从循环(for, while, repeat)或case, switch等状态中快速退出的方法。(示例见帮助文档。)

2.Continue

提供了从当前循环中的某一步中退出进入下一步循环的方法。(示例见帮助文档。)

3.Goto

可以使程序跳转到某一标签处,标签的格式为“字符串:”(示例见帮助文档。)


四、参数及关键字

IDL过程和函数中可以使用位置参数和关键字参数来进行参数传递。

1.位置参数

位置参数再过程或函数中用来传递变量或表达式。以下面程序为例

PRO Procedure_Name, argument1, argument2,

   . . .

END

调用格式为:Procedure_Name, argument1, argument2

即此时的传入参数是与位置顺序次序依次对应的。程序调用时,位置参数不一定是必须的,部分位置参数是可选的。程序调用时位置参数可以用函数Result = N_PARAMS( )来获得参数个数。

2.关键字参数

关键字参数是IDL程序中可选择设置的参数,他的特点是不仅支持变量传入,还支持返回变量。参数传入可以是一个预先定义的参数或一个Bool值;可以用来返回所需要的值。

关键字参数在程序调用时不依靠位置,而是依靠名字来确定,故他可以放在函数的任意位置。关键字在调用时有加反斜杠'/'的写法,添加'/'相当于在调用时该关键字传入值为1。

关键字用KEYWORD_SET( )函数检测,若已定义,则函数返回1;否则,返回0。

  1. Pro test

  2.     f1,10,/DE

  3. End


  4. pro f1, a, DE=z

  5.   if keyword_set(z) then print, "de has been set."

  6.   print, a

  7. end

注:“/DE”的写法相当于DE=1

3.参数继承

PRO TEST_1, x, _EXTRA = ex 

    ;使用ex之前,可以对其进行修改 

    ;判断是否输入了ex

    IF N_ELEMENTS(ex) EQ 0 THEN BEGIN   

        ;设置默认显示风格

        ex = {thick:2, color:255}   

   ENDIF ELSE BEGIN

   ex = ex

  ENDELSE


PLOT, x, _EXTRA = ex

   HELP, ex

END


PRO TEST_MODIFY_EXTRA 

   TEST_1, SIN(FINDGEN(100)/10) 

   WINDOW, 1

   TEST_1, SIN(FINDGEN(100)/10), color = 255, psym = 5 

   ; _EXTRA = ex将调用时输入参数的“color = 255, psym = 5 ”全部继承并传递给plot命令。

END

4.参数传递

参数传递分值传递和地址传递两种。地址传递,子程序中对变量的修改会在主程序中生效;值传递,子程序中对变量的修改在主程序中无效。

地址传递值传递地址传递值传递
变量常数_EXTRA_REF_EXTRA
完整数组数组元素
系统变量
结构体结构体成员
表达式

5.相关函数

程序在相互调用时,可通过相关函数来判断函数参数的传递或设置。

函数功能
Result =N_PARAMS()返回参数个数(不包括关键字参数)。
Result = N_ELEMENTS(Expression)返回变量元素个数。
Result = KEYWORD_SET(Expression)
关键字参数是否设置。
ARG_PRESENT(  )
引用参数是否设置。

五、错误检测与程序恢复

1.错误检测

IDL 下有三个错误检测程序:

CATCH, [Variable] [, /CANCEL]

ON_ERROR, N

ON_IOERROR, Label


2.数学错误


3.程序恢复









https://blog.sciencenet.cn/blog-346157-1153958.html

上一篇:IDL图像处理
下一篇:ENVI/IDL安装问题
收藏 IP: 210.72.27.*| 热度|

0

该博文允许注册用户评论 请点击登录 评论 (0 个评论)

数据加载中...

Archiver|手机版|科学网 ( 京ICP备07017567号-12 )

GMT+8, 2024-4-24 23:21

Powered by ScienceNet.cn

Copyright © 2007- 中国科学报社

返回顶部