grads-第九章

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

内部函数
4、read (name) 、
返还码是: 0 - 正常 1 - 打开文件错误 2 - 文件结束 8 - 打开的文件用于写入 9 - 输入、输出错误
内部函数
5、write (name, record <, append>) 、 写函数,当第一次调用’write’函数时,会生 成一个文件名为’name’的文件,并处于打开 的写入状态。如果这个文件早已存在,这个 文件会损坏。如果使用’append’选项,写入 的内容就会接到原来文件的后面。 返还码是: 0 - 正常 1 - 打开文件错误 8 - 打开的文件用于读取。
GrADS绘图与编程 绘图与编程
秦育婧
南京信息工程大学 大气科学学院
第九章 脚本语言及编程
学习目标 学会使用脚本语言编程
第九章 脚本语言及编程
学习要求 掌握流程控制、内部函数等
脚本语言概述
脚本语言( script language )是GrADS 软件包中自带的高级语言,可以用于 GrADS的高级操作,更 方便地使用 GrADS的功能。 通过脚本语言可以编写具有复杂功能的 命令集(即gs文件)。
gs文件中的两类型语句 文件中的两类型语句
1)脚本语句:不用引号,需要经过编译的。 2)指令性语句:GrADS命令 命令,需用单引 命令 单引 号括起来。 脚本语言用到指令性语句中要用引号 i=1 ‘set t ‘i’’ (或者‘set t ’i )
脚本语言程序特点
1、程序通过GrADS的run命令来 编译执行; run file-name options 2、可以有变量、流程控制也可 以执行GrADS的命令。
内部函数
4、read (name) 、
读函数,可以读取文件’name’中的一个记录(一 行),重复调用同一文件的’read’函数,将依次读 取 文件中的下一个记录。所得结果有两行,第一行是 返还码,第二行是所读记录。每个记录的长度不能 超过80个字符,可以使用'sublin'函数分离结果。 当第一次调用’read’函数读取一个指定文件时,这 个 文件就被打开,当描述语言程序执行终结时文件被 关闭。而在文件被多次调用过程中,始终保持打开 状态。
脚本语言的组成
1、一个脚本语言程序是由许多语句组成, 每个语句之间由换行号或分号分隔。 2 2、下面是GrADS脚本语言中语句的类型: GrADS 赋值语句 If / Else / Endif while / endwhile break / continue function header / return say / pull
脚本语言的组成
3、脚本表达式
脚本表达式是由运算对象和运算符 组成。 运算对象:脚本变量、子程序函数 或常数; 运算符:数学、逻辑或连结运算符。
脚本语言的组成
4、脚本语言变量 、
1)构成 变量名是由1至8个字符组成,以字母开头, 仅可以包含字母和数字,变量名区分大小写。 2)变量内容性质 内容总是一个字符串,在有些运算中,字符 串将被解释为数字。 如果一个变量没有被赋值,那么它的值就是 它的名字。
在脚本语言程序中执行GrADS命令 命令 在脚本语言程序中执行
2)脚本变量’rc’中则是 )脚本变量’ 中则是 中则是GrADS命令的返 命令的返 命令的 还 码。 变量中, ’result’变量中,可能包含几行 变量中 GrADS 结果字符串,这可以利用’ 结果字符串,这可以利用’sublin’函 函 数 分离。 分离。
脚本语言程序特点
3、脚本语言的所有变量都是字符串型
的,脚本变量 脚本变量可以进行计算。 脚本变量 流程控制通过if/else/endif和 if/else/endif 流程控制 while/endwhile语句块实现。 循环过程可以用continue或break命令 改变。 脚本语言也支持函数子程序功能。
在脚本语言程序中执行GrADS命令 命令 在脚本语言程序中执行
若指令语句仅仅包含一个表达式 则首先运算表达式, 则首先运算表达式,然后将结果字符串作 为命令提交给GrADS。 为命令提交给 。 注意:1)当语句被执行后,GrADS命令 注意: )当语句被执行后, 命令 的结果将输入到脚本变量’ 的结果将输入到脚本变量’result’(这 ( 的字符串是GrADS命令执行 时,’result’的字符串是 的字符串是 命令执行 后 显示在屏幕上的内容)。 显示在屏幕上的内容)。
内部函数
1、substr (string, start, length) 、 这个函数可以从字符串’string’中从 位置’start’开始截取长度为’length’ 的子字符串。如果字符串’string’太 短,结果字符串就短于’length’或 得到一个空字符串。 'start'和'length'必须是整的字符数目。
WHILE 语句块
while语句块的格式为: 语句块的格式为: 语句块的格式为 while (表达式) 表达式) 描述语言语句 … endwhile 当表达式结果为真, 是一个不为0的字 当表达式结果为真,即:是一个不为 的字 循环就继续执行。 符,循环就继续执行。
WHILE 语句块
另外两个脚本语言命令可以改变循环的执行, 另外两个脚本语言命令可以改变循环的执行, break可以立即中断循环,continue可以立即跳 可以立即中断循环, 可以立即中断循环 可以立即跳 到循环体的开头,并重新计算表达式的结果。 到循环体的开头,并重新计算表达式的结果。 例如: 例如: t=1 while (t<10) 'set t 't 'd z' if (rc!=0); break; endif; t=t+1 endwhile
赋值语句
赋值语句的格式为: 赋值语句的格式为: 变量名=表达式 变量名 表达式 表达式进行运算后,将结果赋予所指定的 表达式进行运算后, 变量。 变量。
人机对话语句
'say'语句的语法为: 语句的语法为: 语句的语法为 say 表达式 表达式的结果写在屏幕上 语句的语法为: ‘pull’语句的语法为: 语句的语法为 pull 变量名 程序运行到pull语句时,执行暂停等待用 语句时, 程序运行到 语句时 户键盘输入,按回车后, 户键盘输入,按回车后,输入的内容就赋 值给所指定的变量。 值给所指定的变量。
| & = != > >= < <= % + * / ! 逻辑变量: 逻辑变量:或 逻辑变量: 逻辑变量:和 等于 不等于 大于 大于等于 小于 小于等于 连结符 加 减 乘 除 一元否 一元负
运算
注意: 注意:
1)如果是数值运算对象,下列运算符可以用于 )如果是数值运算对象, 数值运算对象 数值运算: 数值运算: =, !=, >, >=, <, <=, +, -, *, / 2)如果是非数值运算对象,下列运算符在运算 非数值运算对象, )如果是非数值运算对象 时将出错: 时将出错: +, -, *, / 3)算术运算是以浮点形式进行的,如果结果是 )算术运算是以浮点形式进行的, 整数,那么结果字符串也是整数。 整数,那么结果字符串也是整数。 在逻辑运算中,如果结果为真, 在逻辑运算中,如果结果为真,给出一个字 符1,如果为假,给出一个字符 。 ,如果为假,给出一个字符0。
表达式
脚本语言的表达式包含运算对象、 脚本语言的表达式包含运算对象、运算符和括 运算对象 在运算过程中各种运算符的先后顺序 先后顺序为 号,在运算过程中各种运算符的先后顺序为: -, ! /, * +, % =, !=, >, >=, <, <= & |
表达式
如果运算符在同一优先级上,则从左向右计算。 如果运算符在同一优先级上,则从左向右计算。 运算对象可以是变量、 运算对象可以是变量、字符串常数或子程序函数 调用。 调用。 注意: )字符型常数用单或双引号括起来。 注意:1)字符型常数用单或双引号括起来。 而数值型常数可以不用引号括起来, 而数值型常数可以不用引号括起来,但GrADS 仍 字符串常数。 然认为是字符串常数 然认为是字符串常数。 下面是一个字符串常数的例子: 下面是一个字符串常数的例子: 'This is a string'
内部函数
2、subwrd (string, word) 、
这个函数可以从字符串’string’ 中截取第’word’个词(词与词 之间由空格分隔),如果字符 串’string’太短,结果是一个空 字符串。 'word'必须是整数。
内部函数
3、sublin (string, line) 、 这个函数可以从字符串’string’ 中截取第’line’行的字符串,如果 字符串’string’行数太少,结果 是一个空字符串。 ‘line’必须是整数。
表达式
2)有些情况下,连结运算符是隐含的, )有些情况下,连结运算符是隐含的 隐含 当两个运算对象并列靠在一起, 当两个运算对象并列靠在一起,中间 没有任何运算符时( 没有任何运算符时(中间可以有空 ),隐含着中间是一个连结符 隐含着中间是一个连结符。 格),隐含着中间是一个连结符。例 下列两个表达式是等价的。 如:下列两个表达式是等价的。 var1%var2%'String' var1 var2'String' 3)括号可以改变运算的先后顺序。 )括号可以改变运算的先后顺序。
在脚本语言程序中执行GrADS命令 命令 在脚本语言程序中执行
♦ 可以在脚本语言环境中执行任何GrADS
命令,包括run命令。 ♦ 由执行run命令而产生的结果字符串将通 run 过’return’命令从“低层”的脚本语言程 序传递回“高一层”的程序中。 ♦ 可以一层一层地调用多个脚本语言程序, 但要能控制不出现死循环而返还主调程 序。
函数及函数子程序
用户可以自己编制函数子程序, 用户可以自己编制函数子程序,也可 函数子程序 以使用脚本语言的内部函数 内部函数。 以使用脚本语言的内部函数。 在一般情况下, 在一般情况下,函数作为脚本语言的 表达式运算对象被调用。 表达式运算对象被调用。脚本语言函 数子程序总是得到一个单一的字符串 结果, 结果,但可以有一个或多个字符串自变 它的调用格式为: 量,它的调用格式为: name(arg,arg,arg...)
内部函数
6、close (name) 、
关闭文件名为’name’的文件。如果 你想从一个刚写的文件中读取记录,那 么首先要调用’close’函数关闭该文件。 返还码是: 0 - 正常 1 - 文件没有打开
脚本语言的组成
如果一个变量或字符串常数是一个具有 正确格式的数字,可以进行某些数学运 算,所得结果也是一个数字字符串。 在GrADS脚本语言中,有两个变量名由 其内部使用:'result' 和 'rc'。避免使用这 两个变量名。
运算
脚本语言中使用了下列运算符: 在GrADS脚本语言中使用了下列运算符: 脚本语言中使用了下列运算符
ຫໍສະໝຸດ Baidu
IF语句块 语句块
程序执行流程可以通过if/else/endif语句控 语句控 程序执行流程可以通过 形式为: 制,形式为:
IF 脚本语言语句 … else 脚本语言语句 … endif (表达式) 表达式)
(可不用) 可不用)
(必须使用) 必须使用)
IF语句块 语句块
必须写三个语句: 必须写三个语句: if (i=10) j = 20 endif 也可以在同一行上写这三个语句: 也可以在同一行上写这三个语句: if(i=10);j=20;endif; if语句块的执行依赖于表达式的结果,如果表 语句块的执行依赖于表达式的结果, 语句块的执行依赖于表达式的结果 达式的结果是一个0字符 结果为假), 字符( 达式的结果是一个 字符(结果为假), 部分就被执行, 则’else’部分就被执行,如果表达式的结果 部分就被执行 是 不为0的其它字符,则执行’if’部分。 不为 的其它字符,则执行’ 部分。 的其它字符 部分
相关文档
最新文档