第二章语法基础

  • 格式:pdf
  • 大小:639.22 KB
  • 文档页数:20

• 数组的创建
(1) 利用 [ ] 创建。 (2) 利用创建函数创建
初始值为 0
Byte bytarr() bindgen()
Int
intarr()
indgen()
long lonarr() lindgen()
ulong ulonarr() ulindgen()
float fltarr()
findgen()
于 0 的值全部输 出为 0 (数组原
数据不变)
数据类型转换中,如果输出类型字节大
于输入类型字节,变量值保持不变,反之 将会发生截断现象。
当用 fix 和 long 函数进行浮点型变量向整
形变量转换时,将会发生截断。
字符串和数字型之间也可进行转换
浮点向整形转换示例:
字符串转换成数字类型示例 :
字符串中不包含数字时,将 不会发出警告,并输出为 0
第二章 语法基础
1 、 IDL 变量
• 变量定义
变量在使用前,无需说明类型。 • 变量的命名规则
变量名称必须以字母和下划线开头,可 以包括字母、数字、下划线、美元符号
正确:
• reade6_$file • only_8_bit • ComputerType • variables • _
创建数组函数示例:
数组的下标
IDL 中数组元素的存储是按列进行的。按列存储的 方式意味着连续的数组元素也将按顺序被存储,而 且数组的第一维(列)变化的最快。
格式: arr( 列,行 )
数组的下标可以是标量也可以是矢量。
进行下标操作时,如果下标超过了范围,则该下标 被转换为在允许范围内的最小或最大的下标值。
数组下标可以使用以下两种形式表示:
2 、表达式和运算法则
表达式书写规则:
当 表 达 式 左 边 是 一 个 标 量
、数组或没有定义的变量, 则表达式结果的类型将由表 达式右边的类型决定。
当 表 达 式 左 边 的 变 量 是 数
组的一个子元素,那么表达 式结果的类型由表达式左边 的变量决定。
运 算 符
错误: • st • third%file • 4th_list • $temp
变量名有两个重要属性:
数据类型 组 织 结 构
标量(如单个数值) 矢量(一维数组) 数组(最高可达八维) IDL 结构(能包含各种数据类型的变量和 组织结构)
1.1 变量数据类型
Byte 字节型 Int 有符号整数 Uint 无符号整数 Long 有符号长整型 Ulong 无符号长整型 Long64 64 位长整型
赋予该标量的值。
• 取大 (>) 、取小 (<) 操作
分别返回自变量的最大值和最小值
当自变量为数组时,取大、取小运算符将对 数组对应的每一对元素依次操作。
arr=[0,1,2,-9,5,6,-8,7,8] print,arr>0
a=[2,4,6,7] b=[4,5,5,6]
print, a<b (输出对应较小的元素) 将数组中所有小
double dblarr() dindgen()
string strarr() make_array
sindgen()
初始值为索引号
例 :make_array(3,2,/byte)
make_array(3,2,/byte,/index)
make_array(3,2,/byte,value=32B)
数学: +-*/^ mod 求模 < 最小 > 最大 逻辑: Not Eq Ne Le Lt Ge Gt And Or Xor 数组 :# 数组乘 ( 列乘行 ) ## 矩阵乘 ( 行乘
列) 指针 :*
运 算 符 的 优 先 级
()> 指针 >^> 数组 / mod>+-<>> Not> 逻辑
创建变量例子 Var=1B Var=1 Var=1L Var=1LL Var=1U Var=1.0 Var=1.0D Var=‘’ Var=ptr_new() Var=obj_new()
数据类型转换函数 thisVar=Byte(variable) thisVar=Fix(variable) thisVar=Long(variable) thisVar=Long64(variable) thisVar=Uint(variable) thisVar=Float(variable) thisVar=Double(variable) thisVar=String(variable) none none
Float 浮点型 Double 双精度浮点型 Complex 复数 Dcomplex 双精度复数 String 字符串 0-32767 个字符 Struct 结构 Pointer 指针 Objref 对象的引用
1.2 数据类型的转换
数据类型 Byte Int Long Long64 Uint Float Double String Pointer Object
2.1 数组运算
• 如果表达式中有一个变量是数组,结果 也是数组
• 如果表达式左边是数组,右边是一个标 量,则整个数组将被赋予该标量的值。
数组元素 个数相同 时,对应 数组元素 进行运算
表达式中有一个 变量是数组,结 果也是数组。
表达式左边是一个子数组 ,右边是一个标量值,那 么该子数组中所有元素被
1.3 IDL 数组
• IDL 数组运算简介 IDL 面向矩阵的特性保证数组运算时不用进行
循环。 IDL 中使用数组的两个最大优势体现在: (1) 数组操作比循环操作快得多 (2) 数组语法比对应的循环语法更加精练
例子:对数组元素求和 Npts=1000000L Data=randomu(-1L,npts) Sum=total(data) IDL 数组操作语句 Sum=0.0 for i=0L,(npts-1L) do begin sum=sum+data[i] 循环语句