版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第8章 PowerScript 语言,PowerScript 语言 Powerbuilder是事件驱动的应用程序,事件发生时要处理的事情需要靠写程序来完成。那么,在powerbuilder中的编程语言是什么呢?就是我们将要学习的powerscript语言。Powerscript语言的语法与C语言十分类似。 PB是用来对数据库进行操作的工具,这就要求powerscript语言与其它语言相比应有较强的数据库操作能力。Powerbuilder语言支持SQL语言,而且还提供了一套完整的嵌入式的SQL语句,这就大大的增强了程序操纵和访问数据库的能力。,81 Powerscript基础,一、标识符 标识符
2、是程序中用来代表变量、标号、函数、菜单、控件、对象等名称的符号。 标识符的命名规则: 必须以字符或下划线开头 由字母、数字、下划线、短横线、#、%、组成 不是powerscript保留字 指在powerbuilder中有特殊意义的字符例如this,parent,super等,见书上附录。 不区分大小写 最长40个字符,正确的标识符: rv f_add button#! _specialid 错误的标识符: total book this parent abccde 2x 特别注意: 短横线与减号是同一个字符,在表达式中使用减法运算符时,必须在减号的两边加上两个空格。 i=i-1 错误 i=i
3、- 1,二、标签 标签允许用户在一个程序内跳到某个点执行,它用于GOTO语句。标签就是一个标识符后跟一个冒号(:),用户可以在一个脚本内放入任意数目的标签,但每个标签都必须是唯一的,用户可以跳到当前局部作用域内的某个标签。 例如下面的语句,来求1到10的和。 Int i,s s=0 i=1 Lab1: S=s+i i=i+1 If i10 then Goto lab1 End if,三、运算符 运算符代表了对一个或两个操作数所进行的运算。在powerscript中有四类运算符:算术运算符、关系运算符、逻辑运算符以及连接运算符。 1)算术运算符 算术运算符用于进行数学计算 + - * / c=a
4、+b c=a - b c=-a c=a*b c=a/b,2)关系运算符 关系运算符在两个操作数之间进行比较,关系运算的结 果可以为TRUE、FALSE、NULL = 等于 = 大于等于 大于 不等于 if ab then c=b else c=a end if,3)逻辑运算符 逻辑运算符用于形成布尔表达式,这些表达式的值是TRUE或FALSE NOT!非 AND&与 OR|或,4)连接运算符 连接运算符(+)用于连接两个变量的内容,着两个变量必须是string或bolb数据类型。 String s1,s2 S1=first S2= second S1=s1+s2 进行运算之后s1的值为”fir
5、st second”,5)表达式中运算符优先级 *、/ +、- =、=、= NOT AND OR,四、连续字符串 多数情况下,每条语句占据一行,但有时语句会超长,需要将语句分成几行。 连续符(&)可用于在多行间延伸语句和字符串。 If ab and bc and& C10 then C=a+b End if,五、空值(NULL) 是powerbuilder与数据库交换数据时使用的一种特殊值,代表数据未定义,不确定,与空字符串、空字符、数值0以及日期00-00-00的意义完全不同。 测试空值的方法 isnull( )返回布尔值TRUE、FALSE 设置一个变量为空的方法 setnull(),六、
6、代词 powerscript提供了4个代词,分别是:this、parent、parentwindow和super。常用的代词是前面的3个。使用代词主要是为了增加程序的通用性,不受所指代的控件或对象的名称发生变化的影响。 This:代表窗口、用户对象、菜单、应用对象或控件本身,即代表正在为之编写脚本的对象。 Parent:指当前控件的窗口。 Parentwindow:代表运行时菜单所在的窗口,该代词只能在菜单的事件处理程序中使用。 Super:只有在处理继承时才使用代词super,super用于引用后代对象的祖先。,使用代词是为了使我们的程序更容易维护。 例如下列窗口w_1,W_1,在cb_cl
7、ose的clicked事件中: close(w_1) 与 close(parent),七、对象 powerbuilder对象就是一个应用程序的组件,(例如,我们常用的窗口、菜单、函数、结构、查询、应用程序等)这些对象都有许多属性、事件及函数。 属性:用于描述对象的特性例如显示方式,大小、位置、是否可见等。例如窗口的名字、窗口的坐标等。,八、事件 当对某个对象执行某些操作时就会触发事件。用户为事件所编写的脚本确定进行什么样的处理进行响应。 Powerbuilder常用的事件提供了一些缺省的代码,例如当用户打开一个窗口时,PB处理所有窗口控件的创建和屏幕的绘制。例如用户在窗口上单击鼠标左键时,便会
8、触发该窗口的LBUTTONDOWN事件。,82 数据类型,与其它语言一样,powerbuilder也有数据类型,而且数据类型十分丰富,包括标准数据类型、枚举类型、系统对象数据类型三大类,在程序中通过数据类型限定变量的取值范围。,一、标准数据类型,在powerbuilder中可以使用的标准数据类型在许多不同的编程语言和数据库服务器都是通用的。标准数据类型包括数值型、字符型、日期型、布尔型等一些最基本的数据类型。其名称、含义及示例见表:,一、标准数据类型,数据类型转换函数 char () 将bolb integer 或string转换成char dec() 将string转换成decimal do
9、uble() 将 string 转换成double integer() 将string 转换成integer long( ) 将string转换成long 例如,书上计算器程序中将单行编辑框中的值转string( )将bolb,date,datetime、数值和time转换成string 换为数值型: dec(sle_1.text),二、枚举类型,枚举类型是powerbuilder定义的特殊常量,常用于对象或控件的属性、系统函数的参量等。但用户不能定义自己的枚举类型,而只能按系统的要求使用它。枚举类型实际上是一组值,每个值都以英文单词开始,以!结束。例如:yesno!,okcancel!。 m
10、essagebox(提示,是否存盘?,QUESTION!,OKCANCEL!),三、系统对象的数据类型,在powerbuilder中,窗口、菜单、各种控件都是系统对象,每一种系统对象实际上是定义在powerbuilder内部的一种数据类型。通常是可视化的生成这些对象。在需要动态的处理菜单、窗口、控件时需要定义这些变量。例如menu,window window activesheet activesheet = w_frame.GetActiveSheet() 得到框架窗口的活动表单窗口,83 变量声明,一、变量声明 在powerbuilder中,所有变量在使用之前,都要首先予以说明。系统预定义
11、的五个全局变量除外(SQLCA,SQLDA,SQLSA,ERROR,Message)。 格式: 数据类型 变量名=初值 integer i=0 real a,b,c integer person30 integer name3 to 10,二、变量的作用域,变量的作用域表示如何访问变量,在什么地方可以访问。 在powerbuilder中有4种不同范围的变量:全局,实例,共享,局部 全局变量 可以在整个应用程序内访问并存储在应用程序对象中,在设计应用程序时应尽量使公共变量的数目最小,因为在任何地方都有可能改变变量的值,会给程序的调试和维护带来困难。不利于对象的封装性。,二、变量的作用域,实例变量
12、 实例变量是在一个对象中(应用程序、窗口、用户对象或菜单)内定义,可以在该对象的任何地方访问。这些变量应在对象创建时初始化,随着对象取消,实例变量也消失。 例如,在w_1中定义实例变量: integer I 在w_1之外引用该变量时: w_1.i=1,二、变量的作用域,共享变量 共享变量在对象中定义与对象的类关联,当对象消失后,共享变量的值依然保留直至应用程序关闭。 局部变量 局部变量就是在脚本层定义的变量,作用域在脚本内部。 对一个变量的搜索次序: 局部变量 共享变量 全局变量 实例变量,三、数组,powerbuilder提供两种,一维数组和多维数组。 一维数组既可以固定大小,也可以是无界。
13、 多维数组必须有一维固定大小。 一维数组 string str30 string str3 to 30 固定大小,任何在此之外的索引引用都会产生一个错误。,三、数组,无界数组 没有定义索引作用域的一维数组,无界数组索引从1开始,在第一次创建时上索引为0,下索引为1。 Integer a 任何大于1的引用都是合法的。 a200=100 生成200个元素,第200个元素为100,其它为0 a250=50 再向数组追加50个元素 访问数组作用域之外的元素将引起错误。 例如 integer i i100=0 If i1010 then 访问数组作用域之外的元素会引起错误 End if,8.4 powe
14、rscript语句,一、赋值语句 赋值语句可以把一个表达式的结果或者变量和常量的值,赋给一个变量或者对象的属性或成员变量。赋值语句的格式是: 变量名 = 表达式 将表达式的值赋给等号左边的变量。例如: str = abc i = 6 使用赋值语句也可以为数组变量赋值。例如: integer aarray aarray = 1,2,3,4,5,6 在变量和数组之间也可以使用赋值语句复制数据: array1 = array2,8.4 powerscript语句,二、条件语句 IF THEN 语句是一个选择分支结构。它有单行和多行两种格式。 1 单行IF THEN语句 单行IF THEN语句的语法格
15、式为: IF 条件 THEN 语句1 ELSE 语句2 其中条件是一条表达式,如果条件成立结果为执行语句1,否则执行语句2将被执行。,8.4 powerscript语句,例如: IF num20 THEN NUM = 1 ELSE NUM = 2 或 if num20 then num=1 else num=2 end if,8.4 powerscript语句,2 多行IF THEN语句 多行IF THEN语句的语法格式为:条件1语句1条件2语句2TTFF语句N. IF 条件1 THEN 语句1 ELSEIF 条件2 THEN 语句2 ,8.4 powerscript语句,ELSE 语句n E
16、ND IF 其中条件1和条件2是条件表达式,语句1、语句2和语句n是一条或者多条语句。 本语句的执行过程为:计算条件表达式条件1,如果它的结果为TRUE,则执行语句1,然后略过在它后面在END IF之前的语句,离开IF.THEN语句;如果条件1的值为FALSE,则计算条件表达式条件2, 如果结果为TRUE,则执行语句2,然后略过在它后面和END IF之前的语句,如果条件表达式的结果都为FALSE,并存在ELSE子句,则语句n被执行。,8.4 powerscript语句,例子: int score string grade if score85 then grade=”A” else if sc
17、ore75 then grade=”B” else if score60 then grade=”C” else grade=”D” end if,8.4 powerscript语句,三、 FOR NEXT循环 FOR.NEXT是一个计数循环体。使用该语句可以是循环体中的语句被执行规定的次数。该语句的语法格式为: FOR 循环变量= 初值 TO 终值 step 步长 执行循环体 NEXT,8.4 powerscript语句,8.4 powerscript语句,步长增量缺省值为1。在使用FOR NEXT语句的时候应该注意,循环变量是integer型,终值的值不能取得过大,以防超出integer的
18、取值范围,造成溢出。 例子:1. integer array116 FOR I = 1 to 16 array1i = i NEXT,8.4 powerscript语句,2.求116所有奇数的和 integer i,s s=0 for i=1 to 16 if Mod(i, 2)=1 then s=s+I end if next 其中mod()是powerscript的求余函数: mod(x,y) 返回x/y的余值,8.4 powerscript语句,也可以 integer i,s for i=16 to 1 step 1 if mod(i,2)=1 then s=s+I end if next 上例也可以换一种做法: integer i,s s=0 for i=1 to 16 step 2 s=s+i next,8.4 powerscript语句,四、 DOLOOP循环 DOLOOP是一个通用的循环语句。它包括四种形式: 1DO UNTIL LOOP条件执行循环体Loop后的语句FT DO UNTIL LOOP的语法格式为: DO UNTIL 条件 循环体 LOOP,8.4 powerscript语句,其中条件代表循环进行的条件表达式,循环体表示循环执行的语句。DO UNTIL语句执行循环体的语句直到UNT
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 山西省河曲实验中学2026年中考物理押题卷含解析
- 湖南省邵阳市北塔区重点中学2026届中考物理模拟预测试卷含解析
- 2026年江苏省无锡市钱桥中学中考适应性考试物理试题含解析
- 前置胎盘特殊案例护理讨论查房
- 危重患者生命体征监测与护理
- 平凉市崆峒区2025-2026学年三年级数学下学期期中试题(含答案解析)
- 常州市天宁区2025年四下数学期中监测试题(含答案解析)
- 氯化钾生产工专项知识考试复习题库及解析(附答案)
- 巴音郭楞蒙古自治州和静县2025年数学三年级下学期期中学业水平测试模拟试题含解析
- 2026年中考生物一轮复习:人教版(2024)七八年级4册核心知识点背诵手册
- 2026-2030中国运甲状腺素蛋白行业市场发展趋势与前景展望战略分析研究报告
- 2025年甘肃金昌市地理生物会考真题试卷(+答案)
- 2026届郑州市高三历史高考三模原创仿真模拟试卷(含参考答案解析)第847套
- 2026年【新教材】人教版(2024)七年级下册生物期末复习知识点背记提纲新版
- 2026年高考生物全国二卷试题及答案
- 2026年商业伦理 测试题及答案
- AQ 3026-2026《化工企业设备检修作业安全规范》宣贯解读课件
- (2026年)检验检测机构资质认定“一单一库”的学习与解读(2026年实施)课件
- 青春不诈骗2026年高中五一假期反诈防骗指南
- IOTA共识与O-RADS共识指南的解读与分析课件
- 24J113-1 内隔墙-轻质条板(一)
评论
0/150
提交评论