




已阅读5页,还剩27页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
,第四章 IDL程序编写,1. 程序设计的三大基本结构 2. 顺序结构 3. 选择结构 IF CASE 4. 循环结构 WHILE BREAKE CONTINUE FOR 5. 自定义函数 6. 程序调用 局部变量与全程变量 参数与关 键 字,结构化程序的基本结构有三种:顺序结构、选择结构和循环结构。 顺序结构是指在程序执行过程中,根据程序中各条语句的先后排列顺序,依次执行每一条语句,具有这种结构的程序称为顺序结构化程序。顺序结构是程序中最简单、最常用和最基本的结构。 选择结构是指在程序运行过程中,程序中的某一段程序是否被执行取决于某个条件,若该条件满足了,就执行这段程序,否则这段程序将不被执行。具有这种结构的程序为选择结构程序。 循环结构是指在程序执行过程中,根据实际需要,程序中的某一段程序需要循环执行若干次,具有这种结构的程序称为循环结构程序。,1. 程序设计的三大基本结构,2. 顺序结构,顺序结构是指在程序执行过程中,根据程序中各条语句的先后排列顺序,依次执行每一条语句,具有这种结构的程序称为顺序结构化程序。顺序结构是程序中最简单、最常用和最基本的结构。,编程序Chapter04A,要求从键盘任意输入两个数据,然后计算它们的平均值,最后输出结果。程序为: ; A PRO Average READ, PROMPT=“请输入X = ?“, x READ, PROMPT=“请输入Y = ?“, y Average = (x + y)/2. PRINT, Average =, Average END,3. 选择结构,选择结构如果某程序中有语句序列A和语句序列B,而且当指定条件表达式的值为真时,则只执行语句序列A;否则,则只执行语句序列B。显然,该程序中是执行语句序列A还是语句序列B,不是取决于这两个语句序列在该程序中的排列顺序,而是取决于条件表达式的值。,格式:IF 表达式 THEN BEGIN 语句序列1 ENDIF ELSE BEGIN 语句序列2 ENDELSE,功能:根据表达式的值,选择执行语句序列1和语句序列2二者之一,例 编程序,计算并输出 y 的值,其中x的值要求从键盘任意输入。 ; SF PRO SFunction READ, PROMPT=请输入X = ?, x IF x LE 0 THEN BEGIN y = 5 * x 2 + 9 ENDIF ELSE BEGIN y = 5 * x 2 - 9 ENDELSE PRINT, y = , y END,例 编程序,计算并输出 y 的值,其中x的值要求从键盘任意输入。 ; SF PRO SFunction READ, PROMPT=请输入X = ?, x y=x le 0.? 5 * x 2 + 9: 5 * x 2 - 9 PRINT, y = , y END 用While循环完成该计算?,嵌套:IF 表达式1 THEN BEGIN IF 表达式2 THEN BEGIN 语句序列1 ENDIF ELSE BEGIN 语句序列2 ENDELSE ENDIF ELSE BEGIN IF THEN BEGIN 语句序列3 ENDIF ELSE BEGIN 语句序列4 ENDELSE ENDELSE 功能:根据三个表达式的值来选择执行四个语句序列中的一个 流程图:见下页图,例 编程序,计算并输出 y 的值,其中x 的值要求从键盘任意输入。 PRO MS5Function READ, PROMPT=“请输入X = ?“, x IF x LE 3 THEN BEGIN IF x LE -6 THEN BEGIN y = 3 * x 2 - x + 1 ENDIF ELSE BEGIN IF x LE -3 THEN BEGIN y = 5 * x 2 - 3 * x + 1 ENDIF ELSE BEGIN y = 7 * x 2 ENDELSE ENDELSE ENDIF ELSE BEGIN IF x LE 6 THEN BEGIN y = 5 * x 2 + 3 * x + 1 ENDIF ELSE BEGIN y = 3 * x 2 + x + 1 ENDELSE ENDELSE PRINT, “y = “, y END,例 编程序,计算并输出 y 的值,其中x 的值要求从键盘任意输入。 PRO MS5Function2 READ, PROMPT=“请输入X = ?“, x y=x LE -6?3 * x 2 - x + 1:$ (x LE -3?5 * x 2 - 3 * x + 1:$ (x LE 3?7 * x 2:$ (x LE 6?5 * x 2 + 3 * x + 1:$ 3 * x 2 + x + 1) PRINT, “y = “, y END,IF语句嵌套的另外两种常见格式,CASE语句 格式:CASE 表达式 OF 表达式1:BEGIN 语句序列1 END 表达式n:BEGIN 语句序列n END ELSE :BEGIN 语句序列n+1 END ENDCASE 功能:根据表达式的值与表达式1到 表达式n中的每一个表达式的值相比较,来选择执行n1个语句序列中的一个语句序列。,例 编程序Chapter04M,输入1月到12月中的任意一个月份数字,输出该月份的英文单词。程序如下: ; M PRO Month READ, PROMPT=“请输入月份(1 , . , 12):“, m CASE m of 1 : PRINT, “January“ & 2 : PRINT, “February“ 3 : PRINT, “March“ & 4 : PRINT, “April“ 5 : PRINT, “May“ & 6 : PRINT, “June“ 7 : PRINT, “July“ & 8 : PRINT, “August“ 9 : PRINT, “September“ & 10 : PRINT, “October“ 11 : PRINT, “November“ & 12 : PRINT, “December“ ELSE : PRINT, “输入的月份无效!“ ENDCASE END,例 设计程序Chapter04MS6F,要求从键盘任意输入一个值x,计算并输出函数 f (x) 的值,程序如下。其中f(x)为: ; MS6F PRO MS6Function READ, PROMPT=“请输入X = ?“, x CASE 1 of x LT 0: y = 2 * x + 1 x LT 1: y = 3 * x + 2 x LT 2: y = 4 * x +3 x LT 3: y = 5 * x + 4 x LT 4: y = 6 * x + 7 ELSE: y = 8 * x * x + 1 ENDCASE PRINT, “ f ( x ) = “, y END,4. 循环结构,循环结构是指在程序执行过程中,根据实际需要,程序中的某一段程序需要循环执行若干次,具有这种结构的程序称为循环结构程序。 如果某个程序中有语句序列A,该语句序列A要根据指定条件表达式的值循环执行,直到条件表达式的值为假为止。显然语句序列A在程序执行过程中, 要循环执行若干次。循环结构的流程图可以用图表示,格式:WHILE 表达式 DO 语句 格式:WHILE 表达式 DO BEGIN 语句序列A ENDWHILE 功能:根据表达式的值,表达式为真,循环执行语句序列A若干次。,例1 设计程序Chapter04S,计算并输出1 + + 1000。程序为: ; S PRO Sum1000 sum = 0L & i = 1 WHILE i LE 1000 DO BEGIN sum = sum + i & i+ ENDWHILE PRINT, 1 + 2 + + 1000 = , sum END,格式:CONTINUE 功能:在循环语句中,用于终止本次循环,转向WHILE进行下一次循环。,格式:WHILE 表达式1 DO BRGIN 语句序列1 IF 表达式2 THEN BEGIN 语句序列2 CONTINUE ENDIF 语句序列3 ENDWHILE 例 计算并输出2 + 4 + + 1000,设计程序如下: ; SumE PRO SumEven1000 sum = 0L & i = 1 WHILE i LE 1000 DO BEGIN IF i MOD 2 THEN BEGIN i=i+1 & CONTINUE ENDIF sum = sum + i & i=i+1 ENDWHILE PRINT, 2+4+ +1000 =, sum END,格式:BREAK 功能:用在循环语句中。用于无条件退出包含该BREAK语句的最内层循环,转向执行该层循环语句ENDWHILE后面的语句。WHILE和BREAK的组合格式为: 格式:WHILE 表达式1 DO BEGIN 语句序列1 IF 表达式2 THEN BEGIN 语句序列2 BREAK ENDIF 语句序列3 ENDWHILE,例 编程序Chapter04MS,要求从键盘任意输入两个数,计算并输出这两个数的和;然后询问是否重复执行上述操作,直到不愿意执行为止。 ; MS PRO MSum yn = “ “ WHILE 1 DO BEGIN READ,PROMPT=“请输入X=“, x READ,PROMPT=“请输入Y=“, y PRINT,x,“+“,y,“=“, x+y READ,PROMPT=“继续吗?(Y/N):“, yn IF STRUPCASE(yn) EQ “Y“ THEN BEGIN CONTINUE ENDIF ELSE BEGIN BREAK ENDELSE ENDWHILE END,格式1:FOR 变量 = 初值,终值 ,步长 DO 语句 格式2:FOR 变量 = 初值,终值 ,步长 DO BEGIN 语句序列A ENDFOR 功能:用变量来控制循环次数,使序列A循环执行指定的次数。,例 编程序Chapter04G,用FORENDFOR语句输出下面图形,其中最底层为15个*。程序如下: ; G PRO Graphics FOR i = 1, 15 DO BEGIN Ss=REPLICATE(“*“, i) PRINT, Ss ENDFOR END,嵌套格式:WHILE 表达式1 DO BEGIN 语句序列1 WHILE 表达式2 DO BEGIN 语句序列2 WHILE 表达式3 DO BEGIN 语句序列3 ENDWHILE ENDWHILE ENDWHILE,C、D错误结构,例 编程序Chapter04T,输出下列九九乘法表。程序如下: 1*1=1 1*2=2 2*2=4 1*3=3 2*3=6 3*3=9 1*4=4 2*4=8 3*4=12 4*4=16 1*5=5 2*5=10 3*5=15 4*5=20 5*5=25 1*6=6 2*6=12 3*6=18 4*6=24 5*6=30 6*6=36 1*7=7 2*7=14 3*7=21 4*7=28 5*7=35 6*7=42 7*7=49 1*8=8 2*8=16 3*8=24 4*8=32 5*8=40 6*8=48 7*8=56 8*8=64 1*9=9 2*9=18 3*9=27 4*9=36 5*9=45 6*9=54 7*9=63 8*9=72 9*9=81 ; T PRO Table99 i = 1 WHILE i LT 10 DO BEGIN j = 1 WHILE j LE i DO BEGIN PRINT,j,*,i,=,i*j, FORMAT=(4X,I1,1X,A1,1X,I1,1X,A1,1X,I2,$) j = j +1 ENDWHILE PRINT, FORMAT = ( / ) i = i +1 ENDWHILE END,例 编程序Chapter04T,输出九九乘法表。程序如下: ; Chapter04Table993F PRO Chapter04Table993For FOR i=1, 9 DO BEGIN FOR j = 1, i DO BEGIN PRINT, j,*,i,=,i*j,FORMAT=(4X,I1,1X,A1,1X,I1,1X,A1,1X,I2,$) ENDFOR PRINT, FORMAT=( / ) ENDFOR END,Goto语句 格式:goto,标号 标号格式:label:,pro mmm AAA: print,wy goto,AAA end,标号必须以字母开头,5. 自定义函数,5.1主程序 主体:必须以end结束,有两种表现形式: (1) end (2)pro test 程序体 end 文件名为,没有名称的主程序必须放在程序最后面。 运行方式:以IDL.run 运行,5.2 过程 主体:与主程序相似,但必须以pro proname开始,以end结束。 pro 过程名称,变量V1,V2, ,kn1=k1,kn2=k2 程序体 end keyword起重要作用 调用和运行方式:以IDLproname方式运行,参数一般要有确定的顺序和确定的类型。 参数在使用时,一般是必选项。 参数在使用时,参数的个数,类型和顺序要和定义时保持一致。,Kn1为关键字名,k1为关键字变量 关键字一般要有确定的类型。 关键字在使用时,一般是可选项。 关键字在使用时,其类型要和定义时保持一致。 关键字在使用时,其个数可以比定义时少。 关键字在使用时,其顺序可以和定义时不一致,而且其顺序是可以任意的。,5.3函数 主体:与过程相似,但以function fnname开始,以end结束,并以return语句返回一个IDL变量。 Function test 变量V1,V2, , 关键字k1=k1,k2=k2 程序体 return, Value end 调用和运行方式:以IDLret=fnname(para_list)方式运行。,例 编写自定义函数Factorial(n)= n!,计算并输出0 n的阶乘 ; Factori
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 吉林长春市宽城区招聘专职消防员考试真题2024
- 宝鸡高新区招聘幼儿园教职工考试真题2024
- 皇子考试题及答案
- 段考试题及答案
- 中华武术知到智慧树答案
- 广西专业技术人员继续教育公需科目培训试题库(含答案)
- 食品安全管理员考试题库及答案大全
- 中小学音乐教学设计与案例分析知到智慧树答案
- 2025年度农产品销售合同签订与质量追溯流程框图
- 2025版外立面装饰材料研发与采购合同
- 道路施工机械设备安全知识培训
- AI在护理查房中的应用
- 证券行业智能化投资组合管理方案
- 银行员工消保知识培训
- 地理与劳动教育
- 第5课 甲午中日战争与列强瓜分中国狂潮 公开课一等奖创新教学设计
- 初中数学新人教版七年级上册第二章《有理数的运算》教案(2024秋)
- 人教版(2025新版)七年级下册数学第七章 相交线与平行线 单元测试卷(含答案)
- 厂房消防应急预案
- 景区开发政府战略框架协议书(2篇)
- “雄鹰杯”全国小动物医师技能大赛考试题库(660题)
评论
0/150
提交评论