IDL强大的交互式数据处理开发语言教学课件_第1页
IDL强大的交互式数据处理开发语言教学课件_第2页
IDL强大的交互式数据处理开发语言教学课件_第3页
IDL强大的交互式数据处理开发语言教学课件_第4页
IDL强大的交互式数据处理开发语言教学课件_第5页
已阅读5页,还剩63页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

IDL强大的交互式数据处理开发语言(66页)怎样思想,就有怎样的生活IDL强大的交互式数据处理开发语言(66页)IDL强大的交互式数据处理开发语言(66页)怎样思想,就有怎样的生活——强大的交互式数据处理开发语言内容语法基础程序设计图形系统与图像处理IDL集成开发HelloWho例子分析以及源文件创建PROHelloWho;PRO用于定义一个过程,HelloWho是过程名;表示注释name='';定义一个字符串变量等于空,可以看到IDL为强语言类型、其中字符用‘’或“”read,name,prompt='inputyourname:';按提示信息输入姓名;读取输入信息到字符串变量中。查看帮助(鼠标悬停)、F1print,‘Hello,’,name,‘!’;依次输出Hello、输入的姓名和!;向控制台输出End;结束数据类型DataType基本数据类型组合数据类型常量Constants整型常量浮点型和双精度常量十进制BytenB12B,34BIntegernornS12,12S,425,425SUnsignedIntegernUornUS12U,12USLongnL12L,94LUnsignedLongnUL12UL,94UL64-bitLongnLL12LL,94LLUnsigned64-bitLongnULL12ULL,94ULL常量:是指运行过程中其值始终不会发生变化的数据。n.102..n

.102n.n

10.2nE10EnEsx

10E5n.Esx

10.E-3.nEsx.1E+12n.nEsx

2.3E12双精度的与浮点型的形式类似,把D换成E即可复数常量字符常量

复数由实部和虚部两部分组成,实部和虚部都可以是浮点数或者双精度浮点数,格式为COMPLEX(实部,虚部)或者COMPLEX(实部)如:COMPLEX(1.2,2),COMPLEX(102.8)

用定界符号括起来的任意字符,又称字符串。定界符号:‘’,“”配对使用‘

Hithere"

定界符号是字符串一部分,用另一个'I'mhappy'0到7打头时用‘’

“129”变量Variables变量:是指运行过程中其值可以发生变化的数据。变量名是指变量起的名字,变量的功能是用来存储各种数据类型的常量。变量的命名规则:变量名由英文字母、数字、下划线和符号$组成,而且必须以英文字母开头,长度最多不超过128个字符,中间不能有空格。

EOF、6A、_36、AB、abcd

系统变量内存变量根据来源分为内部系统变量和自定义系统变量。系统变量的名称均由感叹号“!”开头。自定义系统变量,使用DEFSYS临时存储于内存中的变量,用来存放操作或程序运行过程中的各种类型的原始数据、中间结果和最终结果。

内存变量的创建及其类型转换

非强数据语言,变量的属性是动态改变的

整型为短整型,注意使用L

var=5

为整型

var=var*2.0

变为浮点

NaNIDL>myvar=32L;定义短整形变量IDL>myvar1=32LL;定义长整形形变量IDL>HELP,myvar;显示变量myvar的信息IDL>HELP,MYVAR1;显示变量myvar1的信息IDL>myvar3=1.2DIDL>myvar*=myvar3IDL>mystr4=‘8’IDL>myvar5=myvar+long(mystr4)IDL>myvar6=COMPLEX(2.0,5.0D)从执行结果可以看到1、IDL语言为非强语言类型、变量类型定义通过后缀名、‘’、COMPLEX来2、变量需要先定义后调用、语言不区分大小写3、变量类型动态改变4、了解类型转换函数5、认识IDL命令行、通过键盘↑、↓可以看前后面输入的命令IDL命令行、类型、变量练习数组Arrays数组格式数组创建数组:一组有序数据的集合,由一组名字相同,而下标不同的多个元素组成数组元素:数组中的每一个元素。一个数组元素又相当于一个内存变量格式:数组名:[下标列表]

数组名:是数组的名字,其命名的规则与变量命名规则相同。下标列表:表示数组中数组元素的位置,可以是常量、变量、数组或表达式;下标列表中下标要用逗号。1.数组的直接创建法格式:数组名:[表达式表]

表达式表:数组中数组元素的值。数组元素的总数等于各维数组的元素个数的乘积。数组各维下标的计数从0开始,到各维数组元素个数减少1结束只能创建一维数组到三维数组

一维6个元素myArray[6]:myArray=[212,532,96,25,67,78]

二维2行3列二维数组myArray[3,2]:myArray=[[1,2,3],[4,5,6]]

三维数组myArray[3,2,2]:2行(2维)3列(1维)2层(3维)

myArray=[[[1,2,3],[4,5,6]],[[7,8,9],[10,11,12]]]array[n,m]表示n列m行(与其他语言有别),按行排列,0为下标起点2.数组的函数创建法数组引用1.数组名

功能:直接用数组的名字调用整个数组,使所有数组元素一起参加各种运算2.数组[下标列表]

即数组名[下标],直接调用下标列表指定的数组元素。3.数组[(D11:D12[,…,D81:D82])]

在指定下标范围内,用数组名[下标]格式,直接调用局部数组元素4.(数组表达式)[下标列表]

直接调用下标列表指定的数组元素一起参加“数组名表达式指定的运算”数组函数格式:MAX(数组[,MIN=变量])输出最大值,最小值存储在变量中格式:MIN(数组[,MIN=变量])输出最小值,最大值存储在变量中格式:N_ELEMENTS(数组)输出数组中元素个数。格式:MEAN(数组,[/DOUBLE])计算数组平均值格式:VARIANCE(数组,[/DOUBLE])计算数组方差格式:STDDEV数组,[/DOUBLE])计算数组标准差……数组练习IDL>myvar=[[1,2,3],[4,5,6]];直接创建法定义两行三列数组IDL>print,myvar;显示整个数组IDL>print,myvar[2,0];显示第一行第三列的数组元素IDL>print,myvar[*,0];显示第一行数组元素IDL>myvar2=indegen(9,6);创建6行9列的二维数组其值为0~53IDL>myvar3=indegen+10;所有的元素值都加10赋给同维数组myvar3IDL>myvar2[0,2:*]=600;讲第一列中从第三行开始的元素赋值为600IDL>index=[[0,2],[0,3],[0,5]];创建下标数组IDL>myvar5=total((myvar*2+6)[index]);数组下标index中三个元素参加运算IDL>myvar6=MEAN(myvar2);数组平均值1、了解数组的直接创建法和函数创建法2、数组下标从0开始,区别于其他语言列行3、数组元素的调用4、数组函数调用,避免用循环结构体Structures结构体:由一组不同类型的变量、数组、结构体组合而成的复合数据类型匿名结构(AnonymousStructures)署名结构(NamedStructures)程序运行过程中,数据成员个数和类型可能发生变化数据成员:结构体中的每一个变量、数组、结构体程序运行过程中,命名结构时所用的定义,不能改变。匿名结构体创建格式1:结构体变量={成员1:表达式1,成员2:表达式2,…,成员n:表达式n,}

格式2:结构体变量=CREATE_STRUCT(‘成员1’,表达式1,[,···,’成员n’,表达式n,[,结构体变量2,···])

格式3:结构体变量=CREATE_STRUCT([‘成员1’,···,’成员n’],表达式1,···,表达式n,[,结构体变量2,···])

格式4:结构体变量={结构体名}署名结构创建格式1:结构体变量={结构名,成员1:表达式1,成员2:表达式2,…,成员n:表达式n}

格式2:结构体变量=CREATE_STRUCT{‘成员1’,表达式1,[,…,’成员n’,表达式n,[,结构体变量2,···],NAME=‘结构名’}

格式3:结构体变量=CREATE_STRUCT{[‘成员1’,···,’成员n’],表达式1,···,表达式n,[,结构体变量2,···],NAME=‘结构名’}结构体赋值结构体调用格式1:结构体变量.成员=表达式格式2:结构体变量={结构体名,表达式,···}仅仅对于署名结构体结构体变量.成员结构体练习IDL>xStruct={NAME:’xiaoming’,AGE:20}IDL>yStruct=CREATE_STRUCT('NAME','xiaohong','AGE',18)IDL>zStruct=zStruct=CREATE_STRUCT(['NAME','AGE'],'xiaohua',18)IDL>p=CREATE_STRUCT('A',1,'B','xxx')IDL>p=CREATE_STRUCT('FIRST',0,p,'LAST',3)IDL>pp=CREATE_STRUCT('pp',8,p)IDL>S={ST,TagA:100,TagB:200}IDL>S1={ST,5,6}1、了解结构体的匿名、署名创建。指针PointerIDL的指针与其他语言的指针有很大的不同,它不是指向存储的地址而仅仅是一个轻型的指向一个堆变量的引用(指针变量)。堆变量可以动态分配(数据类型和数组维数),这意味着传递指针变量就相当于传递动态数据。PointerReferencePointerDataPointerinHeapVariables指针创建指针调用指针的释放格式:指针变量=PTR_NEW([变量])x=30myptr=PTR_NEW(x)格式:*指针变量*myptr格式:PTR_FREE指针变量,…,指针变量nPTR_FREE,myptr使用之后,不要忘记及时释放运算符数值型运算符关系型运算符逻辑型表达式()圆括号+加++自加–

减–

自减*乘/除法^乘方<求小于

>求大于

[]数组或下标#矩阵列乘##矩阵行乘·

结构体成员操作PRINT,10<25<80<5<29;输出:5EQ等于(equal)

LT小于(lessthan)

GT大于(greaterthan)

NE不等于LE小于等于GE大于等于~逻辑非运算

&&逻辑与运算||逻辑或运算总结了解数据类型、基本类型变量定义创建数组、结构体、指针基本运算符号IDL源文件、IDL命令行、有效利用帮助内容语法基础程序设计图形系统与图像处理IDL集成开发程序设计的基本结构顺序结构选择结构循环结构语句序列A语句序列B条件表达式?语句序列A语句序列BYN

条件表达式?语句序列AYN循环执行多次依据不同条件执行不同语句依据语句排列先后,依次执行选择控制IF语句格式1:IF表达式THEN语句1[ELSE语句2]格式2:IF表达式THENBEGIN

语句序列1ENDIF[ELSEBEGIN

语句序列2ENDELSE]

IF表达式1THENBEGINIF表达式2THENBEGIN

语句序列1ENDIFELSEBEGIN

语句序列2ENDELSEENDIFELSEBEGINIF表达式3THENBEGIN

语句序列3ENDIFELSEBEGIN

语句序列4ENDELSEENDELSEIF语句的嵌套IF练习PRO

IFTEST

READ,PROMPT='inputx=',x

ifxLE

0

THEN

BEGINy=5*x^2+3

ENDIF

ELSE

BEGINy=5*x^2-3

ENDELSE

print,'y=',yENDCASE语句格式:CASE表达式OF

表达式1:BEGIN

语句序列1END

表达式2:BEGIN

语句序列2END

……

表达式n:BEGIN

语句序列nEND[ELSE:BEGIN

语句序列n+1END]ENDCASE执行CASE过程中,只有一个语句序列被执行。CASE练习PRO

CASETESTname=''read,name,prompt='inputyourname:'CASEnameOF

'Larry':PRINT,'Stooge1'

'Moe':PRINT,'Stooge2'

'Curly':PRINT,'Stooge3'

ELSE:PRINT,'NotaStooge'

ENDCASE

ENDSWITCH语句格式:SWITCH表达式OF

表达式1:BEGIN

语句序列1END

表达式2:BEGIN

语句序列2END

……

表达式n:BEGIN

语句序列nEND[ELSEBEGIN

语句序列n+1END]ENDSWITCH执行SWITCH过程中,表达式的值与第几个表达式的值相等,就执行与它相应语句序列和它后面的所有语句序列。BREAKSWITCH练习PRO

switchtestx=2

SWITCHxOF

1:BEGIN

PRINT,'one';&break

END

2:BEGIN

PRINT,'two';&break

END

3:BEGIN

PRINT,'three'

;&break

END

4:BEGIN

PRINT,'four'

;&break

END

ELSE:BEGIN

PRINT,'other';&break

END

ENDSWITCHEND循环控制WHILE语句CONTINUE语句格式1:WHILE表达式DO语句格式2:WHILE表达式DOBEGIN

语句序列AENDWHILE格式:CONTINUE用在循环语句中,用于终止本次循环,转向WHILE进行下一次循环WHILE表达式1DOBEGIN

语句序列1IF表达式2THENBEGIN

语句序列2CONTINUEENDIFENDWHILEBREAK语句FOR语句格式:BREAK用在循环语句中,用于无条件退出包含该BREAK语句的最内层循环,转向执行该层循环语句ENDWHILE后面的语句。WHILE表达式1DOBEGIN

语句序列1IF表达式2THENBEGIN

语句序列2BREAK

语句序列3ENDIFENDWHILE格式1:FOR变量=初值,终值[,步长]DO语句格式2:FOR变量=初值,终值[,步长]DOBEGIN

语句序列AENDFOR变量用于控制循环次数;初值是循环开始时,变量的初始值;终止是循环结束时,变量的终止值。WHILE、CONTINUE、BREAK练习PRO

whiletestyn=""WHILE

1

DO

BEGIN

READ,PROMPT="inputX=?",x

READ,PROMPT="inputY=?",y

PRINT,x,"+",y,"=",x+y

READ,PROMPT="GOON(YorN)",ynyn=STRUPCASE(yn)

IFynEQ

"Y"

THEN

BEGIN

CONTINUE

ENDIF

ELSE

BEGIN

BREAK

ENDELSEENDWHILEENDIF、CONTINUE、BREAK练习PRO

FORTESTFORI=1,10

DO

BEGIN

;Ifodd,startnextiteration:

IF(IEQ

1)THEN

CONTINUE

IF(IEQ

5)THEN

BREAK

PRINT,IENDFOR

ENDREPEAT语句GOTO语句格式1:REPEAT语句UNTIL表达式格式2:REPEATBEGIN

语句序列

ENDREPUNTIL表达式功能:循环执行语句序列若干次,直到表达式的值为真,结束循环;

REPEAT语句中的语句序列至少执行一次。格式:GOTO,标号功能:程序的执行无条件转向标号所定的语句,用于强行退出循环或建立出口;

GOTO语句只能从循环语句的循环体中转到循环语句的外面;反之,则不允许。REPEAT、GOTO练习PRO

REPEATTESTi=1REPEAT

BEGIN

PRINT,i

GOTO,Jump1ENDREP

UNTIL(iGT

1)Jump1:Print,"outtherepeat"END自定义函数自定义函数建立自定义函数调用格式1:FUNCTION函数名语句序列

RETURN,表达式

END格式2:FUNCTION函数名[,参数1,···,参数n][,关键字1,···关键字n]

命令序列

RETURN,表达式

END格式1:函数名()格式2:函数名([,参数1,···,参数n][,关键字1,···关键字n])逗号,区别于其他语言过程过程建立过程调用格式1:PRO过程名语句序列

END格式2:PRO过程名[,参数1,···,参数n][,关键字1,···关键字n]

命令序列

END格式1:过程名()格式2:过程名[,参数1,···,参数n][,关键字1,···关键字n]过程与自定义函数区别:自定义函数最后一个语句要返回一个函数值;调用过程时只需把参数,[关键字]直接放在过程后面即可。参数和关键字参数过程和函数可以接受两种类型的数据,参数和关键字参数:函数和过程相互调用时,进行相互传输和交换的数据。功能:实现数据在过程和函数之间的相互传递。1.参数一般要有确定的顺序和类型;2.参数在使用时,一般是必选项;3.参数使用时可以是确定的常量、变量、函数、数组、结构、指针或对象,或者它们组成的有确定值的表达式;4.参数在使用时,必须先定义,再使用;5.参数在使用时,参数的个数、类型和顺序要和定义时一致。关键字关键字:函数和过程相互调用时,进行相互传输和交换的数据。功能:也实现数据在过程和函数之间的相互传递或者使某些运行环境配置生效。1.关键字的顺序是任意的2.关键字在使用时,一般是可选项;3.关键字使用时可以是确定的常量、变量、函数、数组、结构、指针或对象,或者它们组成的有确定值的表达式;4.关键字在使用时,必须先定义,再使用;5.关键字在使用时,顺序是可以任意的格式:PRO/FUNCTION过程名关键字1,···关键字n=关键字变量n

命令序列

END参数和关键字的传递传递方式分为按值传递和按地址传递仅仅把参数和关键字的传递给相应的函数和过程的形参。在函数或过程运行过程中所有对参数的和关键字的操作,在函数和过程调用结束后不影响参数和关键字的原值。

按值传递按地址传递按值传递的数据有常量、数组元素、结构体成员、系统变量和表达式(不包含变量)把参数和关键字的传递给相应的函数和过程的形参。在函数或过程运行过程中所有对参数的和关键字的操作,在函数和过程调用结束后直接影响参数和关键字的原值。按地址传递的数据变量名、结构名和指针变量-范围全局变量全程变量:是指整个程序运行过程中,始终有效的变量

系统变量公共变量根据来源分为内部系统变量和自定义系统变量。系统变量的名称均由感叹号“!”开头。自定义系统变量,使用DEFSYS自定义公共变量:格式:COMMON公共变量模块,变量1,···,变量n公共变量一旦被定义,就可以在任意程序中进行引用,但是需要先声明,后引用,声明的格式与定义的格式相同。局部变量局部变量:是指整个程序运行过程中,仅在程序中局部有效的内存变量任何程序中的局部变量,不管其名称是否相同。均仅在本程序内部有效,即进入程序生效,退出程序取消,并自动释放其所占有的内存空间。PRO

MainVar=10

Sub

PRINT,'Var=',VarENDPRO

SubVar=11

PRINT,'Var=',Var

ENDVar=11Var=10全局变量相互调用练习PRO

SetPeople

COMMONSetPeopleInformation,MyName,MyAge,MySex,MyTimeMyName=''MyAge=0B

READ,PROMPT="Name;",MyName

READ,PROMPT="Age;",MyAge

READ,PROMPT="Sex;",MySexMyTime=SYSTIME()ENDPRO

GetPeople

COMMONSetPeopleInformation,MyName,MyAge,MySex,MyTime

PRINT,'Name;',MyName

PRINT,'Age;',MyAge

PRINT,'Sex;',MySex

PRINT,'Time;',MyTimeENDPRO

PeoplesetpeoplegetpeopleENDIDL开发环境控制台工程管理代码编辑区程序和运行IDL源文件创建、编辑1、文件→新建→IDL源文件2、Ctrl+N3、工具栏按钮PRO

MessageHellovar=DIALOG_MESSAGE('HelloWorld!!',/INFORMATION)END例如:建立一个间的HelloWorld的小程序后缀为.pro程序的编译程序运行1.COMPILEHelloWorld2工具栏按钮1.RUNHelloWorld3菜单运行→编辑2工具栏按钮

3菜单运行→运行总结IDL程序设计基本语法过程、函数及其调用关键字、参数全局变量、局部变量程序相互调用IDLDE环境、程序调试内容语法基础程序设计图形系统与图像处理IDL集成开发数据可视化

直接图形法Drawdirectlytodevice

(screen,printer,etc.)Veryfast对象图像法AdvancedinteractivityOpenGLacceleratedgraphicsTrue3-DrenderingObject-orientedprogramming直接图形法图形设备颜色表格式:SET_PLOT,‘设备代码’格式:DEVICE,关键字功能:把当前设备设定为设置为‘设备代码’指定的设备功能:设置当前图形设备的特性格式:TVLCT,红色分量数组,绿色分量数组,蓝色分量数组格式:MODIFYCT,颜色表索引变量,红色分量数组,绿色分量数组,蓝色分量数组窗口系统格式:WINDOW,[,窗口索引变量][,TITLE=标题变量][,XPOS=变量1][,YPOS=变量2][,XSIZE=变量3][,YSIZE=变量4]。。。功能:建立一个指定属性的窗口格式:WEST[,窗口索引变量]功能:窗口激活格式:WDELETE[,窗口索引变量[,…]]功能:窗口的删除对象对象图形法格式:OBJ_NEW([类名[,属性关键字1=属性值1,…属性关键字n=属性值2]])功能:建立一个指定属性的对象,其返回值是一个对象格式:OBJ_DESTROY,对象变量功能:删除对象变量指定的对象,并释放其所占的内存空间格式:对象变量->方法过程名[,参数1,···,参数n][,关键字1,···关键字n]格式:对象变量->函数名([,参数1,···,参数n][,关键字1,···关键字n])功能:调用对象变量的过程功能:调用对象变量的函数图形系统由窗口类IDLgrWindow创建窗口对象格式1:窗口对象名=OBJ_NEW(‘IDLgrWindow’,COLOR_MODEL=0)格式2:窗口对象名->SetProperty,COLOR_MODEL=0格式3:窗口对象名->[IDLgrWindow::]Draw[,视图对象名]格式4:窗口对象名->[IDLgrWindow::]Cleanup图像—直接图形系统显示

使用图像查询函数QUERY_*,查询图像。使用图像读入函数READ_*,读入图像。使用DEVICE命令设置显示模式对于伪彩色,使用LOAD,XLOAD,TVLC

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论