




已阅读5页,还剩61页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
强大的交互式数据处理开发语言,内容,语法基础 程序设计 图形系统与图像处理 IDL集成开发,内容,语法基础 程序设计 图形系统与图像处理 IDL集成开发,HelloWho,PRO HelloWho name= read, name, prompt=input your name: ;按提示信息输入姓名 print,Hello, , name, ! ;依次输出Hello、输入的姓名和! end,HelloWho例子分析以及源文件创建,PRO HelloWho ;PRO用于定义一个过程 ,HelloWho是过程名 ;表示注释 name= ;定义一个字符串变量等于空 ,可以看到IDL为强语言类型、其中字符用或“” read, name, prompt=input your name: ;按提示信息输入姓名 ;读取输入信息到字符串变量中。查看帮助(鼠标悬停)、F1 print,Hello, , name, ! ;依次输出Hello、输入的姓名和! ;向控制台输出 End ;结束,数据类型 Data Type,基本数据类型,组合数据类型,常量 Constants,整型常量 浮点型和双精度常量,常量:是指运行过程中其值始终不会发生变化的数据。,双精度的与浮点型的形式类似,把D换成E即可,复数常量 字符常量,复数由实部和虚部两部分组成,实部和虚部都可以是浮点数或者双精度浮点数,格式为COMPLEX(实部,虚部)或者COMPLEX(实部) 如:COMPLEX(1.2,2),COMPLEX(102.8),用定界符号括起来的任意字符,又称字符串。定界符号:,“”,配对使用 Hi there“ 定界符号是字符串一部分,用另一个 Im happy 0到7打头时用 “129”,变量 Variables,变量:是指运行过程中其值可以发生变化的数据。,变量名是指变量起的名字,变量的功能是用来存储各种数据类型的常量。 变量的命名规则:变量名由英文字母、数字、下划线和符号$组成,而且必须以英文字母开头,长度最多不超过128个字符,中间不能有空格。 EOF、6A、_36、AB、ab cd,系统变量 内存变量,根据来源分为内部系统变量和自定义系统变量。系统变量的名称均由感叹号“ !”开头。 自定义系统变量,使用 DEFSYS,临时存储于内存中的变量,用来存放操作或程序运行过程中的各种类型的原始数据、中间结果和最终结果。,内存变量的创建及其类型转换,非强数据语言,变量的属性是动态改变的 整型为短整型,注意使用L var=5 为整型 var=var*2.0 变为浮点 NaN,IDLmyvar = 32L ;定义短整形变量 IDLmyvar 1= 32 LL ;定义长整形形变量 IDLHELP,myvar ;显示变量myvar的信息 IDLHELP,MYVAR1 ;显示变量myvar1的信息 IDLmyvar3 = 1.2D IDLmyvar *= myvar3 IDLmystr4=8 IDLmyvar 5= myvar +long(mystr4) IDLmyvar 6= COMPLEX(2.0,5.0D) 从执行结果可以看到 1、IDL语言为非强语言类型、变量类型定义通过后缀名、COMPLEX来 2、变量需要先定义后调用、语言不区分大小写 3、变量类型动态改变 4、了解类型转换函数 5、认识IDL命令行、通过键盘、可以看前后面输入的命令,IDL命令行、类型、变量练习,数组 Arrays,数组格式 数组创建,数组:一组有序数据的集合,由一组名字相同,而下标不同的多个元素组成,数组元素:数组中的每一个元素。一个数组元素又相当于一个内存变量,格式:数组名:下标列表,数组名:是数组的名字,其命名的规则与变量命名规则相同。 下标列表:表示数组中数组元素的位置,可以是常量、变量、数组或表达式;下标列表中下标要用逗号。,1.数组的直接创建法,格式:数组名:表达式表,表达式表:数组中数组元素的值。 数组元素的总数等于各维数组的元素个数的乘积。 数组各维下标的计数从0开始,到各维数组元素个数减少1结束,只能创建一维数组到三维数组,一维6个元素myArray6:myArray =212, 532, 96 ,25 ,67, 78 二维2行3列二维数组myArray3, 2: myArray = 1, 2, 3 , 4, 5 ,6 三维数组myArray3, 2, 2:2行(2维) 3列(1维) 2层(3维) myArray = 1, 2, 3 , 4, 5 ,6 , 7, 8, 9 , 10, 11 ,12 ,arrayn,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) 计算数组标准差,数组练习,IDLmyvar = 1,2,3,4,5,6;直接创建法定义两行三列数组 IDLprint,myvar ;显示整个数组 IDLprint,myvar2,0 ;显示第一行第三列的数组元素 IDLprint,myvar*,0 ;显示第一行数组元素 IDLmyvar 2 =indegen(9,6);创建6行9列的二维数组其值为053 IDLmyvar 3 =indegen +10;所有的元素值都加10赋给同维数组myvar3 IDLmyvar20,2:* = 600;讲第一列中从第三行开始的元素赋值为600 IDLindex = 0,2, 0,3, 0,5;创建下标数组 IDL myvar5 =total(myvar*2+6)index);数组下标index中三个元素参加运算 IDLmyvar6=MEAN(myvar2) ;数组平均值 1、了解数组的直接创建法和函数创建法 2、数组下标从0开始,区别于其他语言列行 3、 数组元素的调用 4、数组函数调用,避免用循环,结构体 Structures,结构体:由一组不同类型的变量、数组、结构体组合而成的复合数据类型,匿名结构 (Anonymous Structures ) 署名结构 (Named Structures ),程序运行过程中,数据成员个数和类型可能发生变化,数据成员:结构体中的每一个变量、数组、结构体,程序运行过程中,命名结构时所用的定义,不能改变。,匿名结构体创建,格式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: 结构体变量 =结构体名,表达式, 仅仅对于署名结构体,结构体变量.成员,结构体练习,IDLxStruct = NAME:xiaoming,AGE:20 IDLyStruct = CREATE_STRUCT(NAME,xiaohong,AGE,18) IDLzStruct =zStruct =CREATE_STRUCT(NAME,AGE,xiaohua,18) IDLp = CREATE_STRUCT(A, 1, B, xxx) IDLp = CREATE_STRUCT(FIRST, 0, p, LAST, 3) IDLpp = CREATE_STRUCT(pp,8,p) IDL S =ST,TagA:100,TagB:200 IDLS1 =ST,5,6 1、了解结构体的匿名、署名创建。,指针 Pointer,IDL 的指针与其他语言的指针有很大的不同,它不是指向存储的地址而仅仅是一个轻型的指向一个堆变量的引用(指针变量)。堆变量可以动态分配(数据类型和数组维数),这意味着传递指针变量就相当于传递动态数据。,Pointer Reference,Pointer Data,Pointer in Heap Variables,指针创建 指针调用 指针的释放,格式:指针变量 = PTR_NEW(变量),x = 30 myptr = PTR_NEW(x),格式:* 指针变量,* myptr,格式:PTR_FREE 指针变量,指针变量n,PTR_FREE,myptr,使用之后,不要忘记及时释放,运算符,数值型运算符 关系型运算符 逻辑型表达式,()圆括号 +加 +自加 减 自减 *乘 /除法 乘方 求大于 数组或下标 #矩阵列乘 #矩阵行乘 结构体成员操作,PRINT, 102580529 ;输出:5,EQ等于(equal ) LT 小于(less than) GT大于 (greater than) NE 不等于 LE小于等于 GE大于等于, 逻辑非运算 & 逻辑与运算 |逻辑或运算,总结,了解数据类型、基本类型变量定义 创建数组、结构体、指针 基本运算符号 IDL源文件、IDL命令行、有效利用帮助,内容,语法基础 程序设计 图形系统与图像处理 IDL集成开发,程序设计的基本结构,顺序结构 选择结构 循环结构,条件表达式?,语句序列A,语句序列B,Y,N,循环执行多次,依据不同条件执行不同语句,依据语句排列先后,依次执行,选择控制,IF语句,格式1: IF 表达式 THEN 语句 1 ELSE 语句2,格式2: IF 表达式 THEN BEGIN 语句序列1 ENDIF ELSE BEGIN 语句序列 2 ENDELSE ,IF 表达式1 THEN BEGIN IF 表达式2 THEN BEGIN 语句序列1 ENDIF ELSE BEGIN 语句序列 2 ENDELSE ENDIF ELSE BEGIN IF 表达式 3THEN BEGIN 语句序列3 ENDIF ELSE BEGIN 语句序列 4 ENDELSE ENDELSE,IF语句的嵌套,IF练习,PRO IFTEST READ,PROMPT =input x =,x if x LE 0 THEN BEGIN y =5*x2 +3 ENDIF ELSE BEGIN y=5*x2-3 ENDELSE print,y=,y END,CASE 语句,格式:CASE 表达式 OF 表达式1:BEGIN 语句序列 1 END 表达式2:BEGIN 语句序列 2 END 表达式n:BEGIN 语句序列 n END ELSE :BEGIN 语句序列n+1 END END CASE,执行CASE过程中,只有一个语句序列被执行。,CASE练习,PRO CASETEST name = read, name, prompt=input your name: CASE name OF Larry: PRINT, Stooge 1 Moe: PRINT, Stooge 2 Curly: PRINT, Stooge 3 ELSE: PRINT, Not a Stooge ENDCASE END,SWITCH 语句,格式:SWITCH 表达式 OF 表达式1:BEGIN 语句序列 1 END 表达式2:BEGIN 语句序列 2 END 表达式n:BEGIN 语句序列 n END ELSE BEGIN 语句序列n+1 END END SWITCH,执行SWITCH过程中,表达式的值与第几个表达式的值相等,就执行与它相应语句序列和它后面的所有语句序列。,BREAK,SWITCH练习,PRO switchtest x=2 SWITCH x OF 1:BEGIN PRINT, one; &break END ENDSWITCH END,循环控制,WHILE 语句 CONTINUE 语句,格式1: WHILE 表达式DO 语句,格式2: WHILE 表达式 DO BEGIN 语句序列A ENDWHILE,格式: CONTINUE,用在循环语句中,用于终止本次循环,转向WHILE进行下一次循环,WHILE表达式1 DO BEGIN 语句序列1 IF 表达式2 THEN BEGIN 语句序列2 CONTINUE ENDIF ENDWHILE,BREAK 语句 FOR 语句,格式: BREAK,用在循环语句中,用于无条件退出包含该BREAK语句的最内层循环,转向执行该层循环语句ENDWHILE后面的语句。,WHILE表达式1 DO BEGIN 语句序列1 IF 表达式2 THEN BEGIN 语句序列2 BREAK 语句序列3 ENDIF ENDWHILE,格式1: FOR 变量 = 初值,终值 ,步长 DO 语句,格式2: FOR 变量 = 初值,终值 ,步长 DO BEGIN 语句序列A ENDFOR,变量用于控制循环次数;初值是循环开始时,变量的初始值;终止是循环结束时,变量的终止值。,WHILE 、CONTINUE、BREAK练习,PRO whiletest yn = “ “ WHILE 1 DO BEGIN READ, PROMPT = “input X = ?“, x READ, PROMPT = “input Y = ?“, y PRINT, x , “ + “ , y , “ = “ , x + y READ, PROMPT = “GO ON (Y or N)“, yn yn = STRUPCASE(yn) IF yn EQ “Y“ THEN BEGIN CONTINUE ENDIF ELSE BEGIN BREAK ENDELSE ENDWHILE END,IF 、CONTINUE、BREAK练习,PRO FORTEST FOR I = 1,10 DO BEGIN ; If odd, start next iteration: IF (I EQ 1) THEN CONTINUE IF (I EQ 5) THEN BREAK PRINT, I ENDFOR END,REPEAT 语句 GOTO 语句,格式1: REPEAT 语句 UNTIL 表达式,格式2: REPEAT BEGIN 语句序列 ENDREP UNTIL 表达式,功能:循环执行语句序列若干次,直到表达式的值为真,结束循环; REPEAT 语句中的语句序列至少执行一次。,格式: GOTO,标号,功能:程序的执行无条件转向标号所定的语句,用于强行退出循环或建立出口; GOTO语句只能从循环语句的循环体中转到循环语句的外面;反之,则不允许。,REPEAT、GOTO练习,PRO REPEATTEST i = 1 REPEAT BEGIN PRINT, i GOTO, Jump1 ENDREP UNTIL (i GT 1) Jump1: Print,“out the repeat“ 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 Main Var = 10 Sub PRINT,Var =,Var END PRO Sub Var =11 PRINT,Var=,Var END,Var= 11 Var = 10,全局变量相互调用练习,PRO SetPeople COMMON SetPeopleInformation, MyName, MyAge, MySex, MyTime MyName = MyAge = 0B READ, PROMPT = “Name;“, MyName READ, PROMPT = “Age;“, MyAge READ, PROMPT = “Sex;“, MySex MyTime = SYSTIME() END PRO GetPeople COMMON SetPeopleInformation, MyName, MyAge, MySex, MyTime PRINT, Name; , MyName PRINT, Age; , MyAge PRINT, Sex; , MySex PRINT, Time; , MyTime END PRO People setpeople getpeople END,IDL开发环境,控制台,工程管理,代码编辑区,程序和运行,IDL源文件创建、编辑,1、文件新建I DL源文件,2、Ctrl+N,3、工具栏按钮,PRO MessageHello var = DIALOG_MESSAGE(Hello World!,/INFORMATION) END,例如:建立一个间的HelloWorld 的小程序,后缀为 .pro,程序的编译 程序运行,1 .COMPILE HelloWorld,2 工具栏按钮,1 .RUN HelloWorld,3 菜单 运行编辑,2 工具栏按钮,3 菜单 运行运行,总结,IDL程序设计基本语法 过程、函数及其调用 关键字、参数 全局变量、局部变量 程序相互调用 IDLDE环境、程序调试,内容,语法基础 程序设计 图形系统与图像处理 IDL集成开发,数据可视化,直接图形法 Draw directly to device (screen, printer, etc.) Very fast,对象图像法 Advanced interactivity OpenGL accelerated graphics True 3-D rendering Object-oriented programming,直接图形法,图形设备 颜色表,格式: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,TVLCT或XPALET
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 护理团体标准解读
- 科技扶贫培训体系构建与实施路径
- 脑梗塞患者护理
- 生殖医学中心护理体系构建
- 宜家仓储物流管理分析
- 手足口传染病防治
- 小学生常见传染病防控
- 文档上海交大项目管理讲座
- 2025届河北省保定市金科大联考高三下学期5月模拟检测历史试题(含答案)
- 重度贫血护理要点
- 3、2024广西专业技术人员继续教育公需科目参考答案(99分)
- 康复治疗技术-言语康复
- 闯关迷宫课件教学课件
- 统编版四年级下册语文第七单元教学设计(含单元备课设计方案)
- 劳务挂靠合同范本(2篇)
- 体育-小学田径水平二(三年级)田径单元-折返跑教学设计
- 踝泵运动健康宣教课件
- DB4102-T 002-2024 黄河鲤池塘养殖技术规范
- 安徽省合肥市2024年中考英语模拟试卷(含答案)1
- 《叙事医学:尊重疾病的故事》随笔
- 基于PLC的风力发电控制系统设计
评论
0/150
提交评论