||
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。
Pro test
f1,10,/DE
End
pro f1, a, DE=z
if keyword_set(z) then print, "de has been set."
print, a
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.程序恢复
Archiver|手机版|科学网 ( 京ICP备07017567号-12 )
GMT+8, 2024-9-20 01:44
Powered by ScienceNet.cn
Copyright © 2007- 中国科学报社