第7章 GrADS 描述语言及编程
合集下载
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
while语句
while (表达式) 描述语言语句 描述语言语句 … … endwhile
当表达式结果为真,即:是一个不为0的字符,循环就继续执行。
6.内部函数
substr (string, start, length) 功能:在字符串’string’中从位置’start’开 始截取长度为’length’的子字符串。如果字 符串’string’太短,结果字符串就短 于’length’或得到一个空字符串。 注意:这里,'start' 和'length'必须是整的字 符数目。
wenku.baidu.com
7.3 程序举例
循环输出5天高度场的图,并存于文件中
'open e:\grads\1.ctl' 'set lat 0 90' 'set lon -180 0' 'set lev 500' 'enable print e:\htry.gmf' i=1 while(i<=5) 'set t 'i 'd z' 'print' 'c' i=i+1 endwhile 'disable print'
绘制台风路径图
已经ASCII文件matsa.txt中存放了0509号 台风“麦莎” 自7月31日至8月6日的路径 资料,利用该资料绘制台风路径图。
'reinit' 'enable print e:\grads\matsa.gmf' 'open e:\grads\model.le.ctl' 'set lat 5 35' 'set lon 110 140' 'set lev 500' 'set xlopts 1 4 0.15' 'set ylopts 1 4 0.15' 'set mpdset cnworld' 'set grads off' 'set grid off' 'set cmax 0' 'd z'
subwrd (string, word) 功能:从字符串’string’中截取第’word’ 个词(词与词之间由空格分隔),如果字 符串’string’太短,结果是一个空字符串。 'word'必须是整数。
sublin (string, line) 功能:这个函数可以从字符串’string’中 截取第’line’行的字符串,如果字符 串’string’行数太少,结果是一个空字 符串。'line'必须是整数。
利用write 函数生成 ASCII文件
'reinit' 'open e:/grads/model.le.ctl' 'set lat 40.0' 'set lon 116.4' 'set lev 500' i=1 aa='e:/grads/mhy.txt' while(i<=5) 'set t 'i 'd z' ret=subwrd(result,4) say ret pull dummy res=write(aa,ret) i=i+1 endwhile res=close('e:/grads/mhy.txt') ;
复合描述变量:可以在描述语言程序中 构造数组。复合变量名可以是一个由“·” 分隔的多个变量名的复合体。例如: varname.i.j
如果i和j也是变量,那么i和j的内容将 会被i和j的字符串值所替代。例如: i = 10 j=3 varname.i.j = 343 在这个例子中,赋值语句相当于: varname.10.3 = 343
第7章 GrADS 描述语言及编程
描述语言是GrADS软件包中自带的高级 语言。通过描述语言,如if/else/endif和 while/endwhile语句块,可以进行流程控 制,实现较为复杂的绘图控制功能。
7.1 描述语言概述
*.gs文件中可以包括两种类型的语句: 描述语句:不用引号,需要经过编译。 (类似其他高级语言) 指令性语句:GrADS命令,需用引号括 起来。
注意:描述语言用到指令性语句中要用引号。 例如: i=1 赋值语句 ‘set t ‘i’’(或者‘set t ’i 空格)
7.2 描述语言的构成
表达式:变量、常量和函数; 语句:赋值语句、选择控制语句、循环语句。
1. 变量
变量名:由1至8个字符组成,以字母 开头,仅包含字母和数字,变量名区分 大小写。注意:在GrAD描述语言中, 有两个变量名由其内部使用:'result' 和 'rc'。尽量避免使用这两个变量名。 变量名=数值/字符串/变量名n (描 述语言的变量内容都是字符串型的)
i=1 aa='e:/grads/matsa.txt' while(i<=25) a1=read(aa) b1=sublin(a1,2) say b1 la=subwrd(b1,2) lo=subwrd(b1,3) 'q w2xy 'lo' 'la'' x1=subwrd(result,3) y1=subwrd(result,6) say x1 say y1 'draw wxsym 40 'x1' 'y1' 0.3 2 6' i=i+1 endwhile ff=close(aa) 'print' 'disable print' ;
5. 语句
赋值语句 赋值语句的格式为: 变量名=表达式 表达式进行运算后,将结果赋予所指定的变量。
if语句
IF (表达式) 描述语言语句 描述语言语句 … … else 描述语言语句 描述语言语句 … … endif
(可不用)
(必须使用)
注意: 下列语句是错误的: if (i=10) j=20 必须写三个语句: if (i=10) j = 20 endif 也可以在同一行上写这三个语句: if(i=10);j=20;endif;
-, ! /, * +, % =, !=, >, >=, <, <= & |
4.函数name(arg,arg,arg...)
函数名:遵循变量名的命名规则,参数arg可 以是表达式。 如果函数子程序没有自变量, 仍然需要写上一对括号: name() 通过函数子程序的定义语句在你的描述语言程 序中构造自己的函数: function name(variable, variable, ...) 要回到调用处,使用return语句: return 表达式
2. 运算符
| & = != > >= < <= % + * / ! -
逻辑变量:或 逻辑变量:和 等于 不等于 大于 大于等于 小于 小于等于 连结符 加 减 乘 除 一元否 一元负
3. 表达式
表达式包含运算对象、运算符和括号。
在运算过程中各种运算符的先后顺序为:
画出500hPa第一天高度场图(在低压中心位置,
标注字符D)
'open e:\grads\1.ctl' 'set lat 0 90' 'set lon -180 0' 'set lev 500' 'set t 1' 'd z' 'q w2xy -84 73' x1=subwrd(result,3) y1=subwrd(result,6) 'set string 7 c 8 0' 'set strsiz 0.2' 'draw string 'x1' 'y1' D' ;