1、第2章 PowerScript编程语言2.1PowerScript语言基础语言基础2.2数据类型数据类型2.3运算符及表达式运算符及表达式2.4变量变量2.5PowerScript语句语句2.6语句应用实例语句应用实例小结小结 返回总目录返回总目录2.1PowerScript语言基础语言基础2.1.1 注释注释2.1.2 标识符标识符2.1.3 特殊的特殊的ASCII字符字符 2.1.4 空值空值2.1.5 代词代词 返回章目录返回章目录2.1.1 注释注释 注释是添加在程序中的一些说明性文字。注释并不会被执行,而是简单地被跳过。PowerScript有两种注释:行注释:用/表示,从双杠开始到
2、行尾均为注释。块注释:用/*/表示,从/*开始到*/结束为注释。例如,下面是两种注释的使用:/这是一行注释st1.Text=希望本书为您提供帮助/占用半行注释/*从此行起注释 中间行尾行结束注释*/返回本节返回本节录录2.1.2 标识符标识符 用来标识变量名、数组名、文件名、函数名、窗口名、控件名及对象名等的字符序列,称为标识符 PowerScript中标识符的命名必须遵循以下原则:(1)必须以字母或下划线“”开头。(2)不可以是保留字。(3)最长可以到40个字符,但中间不能有空格(实际可以比这更长)。(4)不区分大小写字母(PART和Part、part是等价的)。(5)可以是任何字母、数字及
3、一些特殊符号(-、S|、#、%)的组合。返回本节返回本节录录 2.1.3 特殊的特殊的ASCII字符字符 在字符串中可以包含一些特殊的ASCII字符,特别是控制字符。特殊的ASCII字符或控制字符用符号“”做前缀。返回本节返回本节录录2.1.3 特殊的特殊的ASCII字符字符 返回本节返回本节录录特殊字符表示方法 特殊字符表示方法换行n走纸 f回车r退格b制表符t 波浪线垂直制表v 十进制形式的ASCII码000-255单引号十六进制形式ASCII码h00-hFF双引号八进制形式的ASCII码o000-o3772.1.4 空值空值 空值(Null)是关系数据库的一个特殊概念,可以把它看做是一个
4、特定的值,代表数据未定义、不确定。它与空字符串、数值零以及日期00000000的意义完全不同。空值在程序中用英文单词Null表示。返回本节返回本节录录2.1.5 代词代词 PowerBuilder提供了四个代词:This、Parent、ParentWindow和Super,可以用于引用某指定对象或控件,来增加程序代码的通用性 This:代表窗口、用户对象、菜单、应用对象或控件本身,即代表正在为之编写事件处理程序的对象 Parent:指当前控件所在的窗口 arentWindow:代表运行时菜单所在的窗口,该代词只能在菜单的事件处理程序中使用。Super:此代词只在使用了继承时使用,指代的是该对象
5、的父对象。调用祖先对象函数的语法格式是:Super:函数名(参数表)返回本节返回本节录录 2.2 数据类型数据类型2.2.1 标准数据类型标准数据类型2.2.2 系统对象数据类型系统对象数据类型2.2.3 枚举数据类型枚举数据类型2.2.4 Any数据类型数据类型 返回章目录返回章目录2.2.1 标准数据类型标准数据类型 标准数据类型是我们在各种程序设计语言中已经熟悉的数据类型,如字符型、数值型、日期型等。下面我们简单介绍一下这些数据类型 Blob:大型二进制类型。包括文本文件、图像等。Boolean:布尔类型。布尔型变量只有True和False,用于逻辑表达式。声明布尔类型变量时,默认值为F
6、alse。Character(或Char):单个ASCII字符。Date:日期类型。包括年(4位数)、月(2位数)、日(2位数)。如:20021205。返回本节返回本节录录2.2.1 标准数据类型标准数据类型 DateTime:日期时间类型。包括年、月、日和时间。如:2002120519 23 36 Decimal(或Dec):数值型。带符号,最多18位数,小数点位置不限。如:456.2312 Double:双精度类型。范围从2.2E-308到1.7E+308,默认值为0。如:1.234E-5。Integer(或Int):整型。16位带符号整数,范围从-32768到32767,默认值为0 Lo
7、ng:长整型。32位带符号整数,范围从-2147483648到2147483647,默认值为0 返回本节返回本节录录2.2.1 标准数据类型标准数据类型 Real:实型。具有6位有效数字的带符号浮点数,范围从1.17E-38到3.4E+38,默认值为0。如:56.43E+6 String:字符串类型。用于存储任意的ASCII字符,32位环境中长度只受系统能力的限制。书写时,用单引号()或双引号()括起来,如:ABC Time:24小时制时间,包括小时、分、秒及几分之一秒。范围从00 00 00到23 59 59 999999。如:12 45 56 123456 返回本节返回本节录录2.2.1
8、标准数据类型标准数据类型 UnsignedInteger(UnsignedInt或UInt):无符号整型。16位数,范围从0到65535。UnsignedLong(或ULong):无符号长整型。32位数,范围从0到4294967295。返回本节返回本节录录2.2.2 系统对象数据类型系统对象数据类型 在PowerBuilder中,窗口、菜单、各种控件都是系统对象,每一种系统对象实际上都是定义在PowerBuilder内部的一种数据类型。在Browser画板中通过System选项卡可以浏览到PowerScript的全部系统对象数据类型。通常只需在相应画板中定义它们,对它们进行可视化操作。但有时候
9、需要动态地处理窗口、菜单、控件等系统对象,这时就要定义系统对象数据类型。返回本节返回本节录录2.2.3 枚举数据类型枚举数据类型 枚举类型是一种用符号代替的数值,是PowerBuilder定义的特殊常量。在PowerBuilder8.0中开发人员不能定义自己的枚举类型,只能按系统要求使用它。枚举类型实际上是一组值,每个值都以英文单词开始,以感叹号(!)结束。如:Center!、Left!、Right!。枚举数据类型有以下两种用途,其中,后一种用途较多:(1)作为函数的参数。(2)指定对象或控件属性。返回本节返回本节录录 2.2.4 Any数据类型数据类型 PowerBuilder支持任意数据类
10、型(Any),它可以存储包括标准数据类型、对象、结构和数组等各种类型的数据值。Any数据的类型由初值类型决定,也就是说,当不能确定变量声明为何种类型时,可以将它声明为Any类型,以后可以为此变量赋任意类型的值,但一旦赋值,它的类型也就决定了。说明Any类型变量的方法和说明其他类型变量的方法是一样的。可以用一般的赋值语句对变量赋值,也可将一个数组赋值给单一的Any变量。当对Any变量赋值后,可以使用ClassName函数检测它的实际数据类型。返回本节返回本节录录2.2.4 Any数据类型数据类型 在使用Any类型的变量时要注意以下规则和约束:(1)可以赋值给Any变量任何值。(2)当把Any变量
11、的值赋给兼容的数据类型变量时,必须知道Any变量的内容。(3)如果Any变量的值是一个数组,不可以直接存取数组的元素。(4)如果Any变量的值是一个结构,不可以使用圆点符号(.)来直接存取结构的元素。(5)当一个Any变量被赋值后,该变量不能再改为没有数据类型的一般Any变量,但它可以再被赋予其他类型的值。返回本节返回本节录录2.3 运算符及表达式运算符及表达式2.3.1 运算符运算符2.3.2 表达式表达式 返回章目录返回章目录2.3.1 运算符运算符 PowerScript支持的运算符可以分为四种类型:算术运算符、关系运算符、逻辑运算符和连接运算符。运算符有优先级和结合律。1.算术运算符
12、算术运算符用于完成数学运算。算术运算符有加(+)、减(-)、乘()、除(.)、乘方()。其中加(+)、减(-)还用于正、负号表示。返回本节返回本节录录2.3.1 运算符运算符 算术运算优先级别:乘方最高、乘除次之、加减最低;同级运算遵循自左至右的原则。PowerScript还提供了一组扩展算术运算符:+、-、+=、-=、.=、=、=。例:A+把A加1赋给A A-把A减1赋给A A+=B 把A加B赋给AA-=B 把A减B赋给A A=B 把A乘B赋给A A.=B 把A除以B赋给A A=B 把A的B次方赋给A 返回本节返回本节录录2.3.1 运算符运算符 2.关系运算符 关系运算符用来对相同类型的操
13、作数进行大小比较运算,常用于条件语句和循环语句。关系运算符有大于()、等于(=)、小于()、不等于()、大于等于(=)、小于等于(10And A、=、=、关系运算符 Not 逻辑非 And 逻辑与 Or 逻辑或 返回本节返回本节录录2.4 变量变量2.4.1 变量的作用域变量的作用域2.4.2 变量的声明变量的声明 返回章目录返回章目录2.4.1 变量的作用域变量的作用域 在PowerBuilder中,有四种不同范围的变量,它们有不同的作用域和用途:(1)局部变量(Local):在相应的代码段定义和使用的临时变量,代码结束此变量消失。所以它的作用范围仅在所在的事件和函数内起作用。(2)实例变量
14、(Instance):属于一个对象且与这个对象的一个实例相关,它只能在这个对象内部的任何地方使用。当在Window下定义时,其作用范围是在该窗口及其窗口内的各种控件的所有事件、函数等。返回本节返回本节录录2.4.1 变量的作用域变量的作用域(3)全局变量(Global):可以在应用的任何地方存取,它的定义独立于任何对象。在整个应用程序中,对全局变量的调试和跟踪非常困难,建议不用或少用全局变量。(4)共享变量(Shared):在一个对象内定义,但可以在这个对象的所有实例中引用。共享变量是在第一次创建该类的对象时初始化的。当用户删除该对象时,共享变量将保留其最后一个值。返回本节返回本节录录2.4.
15、2 变量的声明变量的声明 在PowerBuilder中,所有变量在使用之前,都要首先予以声明。变量声明的简单格式为数据类型 变量名=初值,变量名=初值 需要说明的是:(1)变量名必须是PowerScript合法的标识符。(2)一次说明多个变量时,变量之间用逗号分隔。(3)未定初值时,数值型值为零,字符型值为空字符。(4)系统预定义的五个全局变量(SQLCA、SQLDA、SQLSA、Error、Message)不需事先声明。例如:Integer score=100String city=大连,country 返回本节返回本节录录2.5 PowerScript语句语句 2.5.1 赋值语句赋值语句
16、 2.5.2 条件语句条件语句 2.5.3 循环语句循环语句 2.5.4 其他常用语句其他常用语句 返回章目录返回章目录2.5.1 赋值语句赋值语句 赋值语句能够把一个表达式的结果或者变量和常量的值赋给一个变量、某对象的属性或成员变量。它的语法格式如下:variable name=expression其中,variable name代表变量名,expression代表表达式,其作用是把表达式的值赋给等号左边的变量。例如:area=3.14rr。由于等号也是关系运算符,因此不能使用多重的赋值方法。例如:ls str1=ls str2=abc /这条语句是错误的 返回本节返回本节录录2.5.2 条
17、件语句条件语句 条件控制语句通过判断关系表达式的返回值决定程序的执行语句,常用的条件控制语句有If语句和Choose Case语句。If语句首先计算一个逻辑表达式,然后根据表达式的值是真(True)还是假(False)决定下一步执行的语句组;Choose Case语句可同时处理多种情况。下面分别介绍这两种语句。返回本节返回本节录录2.5.2 条件语句条件语句 1.If语句 If语句的格式有两种形式,我们从简单到复杂逐一介绍。(1)单行IfThen格式 单行形式的If语句的语法格式如下:If表达式(expression)Then语句(statements1)Else语句2 它的含义是:当关系表达
18、式成立(返回值是True)的时候,程序执行语句1;如果关系表达式不成立(返回值是False)的时候,跳过语句1,执行下一条语句(如果方括号中写有语句2,则先执行语句2)。例如:If gs userid=superThen MessageBox(欢迎super!)单行IfThen语句书写时整条语句写在一行上,而且最后不能加End If,否则编译会报错。返回本节返回本节录录2.5.2 条件语句条件语句(2)多行的形式 多行形式的IfThen语句的语法格式如下:If表达式表达式1Then 语句语句1ElseIf表达式表达式2Then 语句语句2 Else语句语句n End If 它的含义是:当关系表
19、达式1成立(返回值是True)的时候,程序执行语句1;如果关系表达式不成立(返回值是False)的时候,执行ElseIf中关系表达式2,如果成立,则执行语句2;否则继续向下跳,直至执行语句n。返回本节返回本节录录2.5.2 条件语句条件语句 2.Choose Case语句 Choose Case语句根据某变量的不同取值执行相应的语句。常用于情况比较多的事件的处理。Choose Case的语法格式是:Choose Case test expression Case expression _ list1statements1Case expression _ list2statements2 Ca
20、se expression _ listn statementsn Case Else statements n+1 End Choose 返回本节返回本节录录2.5.2 条件语句条件语句Choose Case条件语句中的表达式列表,可有如下几种不同的写法:(1)独立的单个变量值。(2)用逗号分隔的一些变量值的列表,比如:0,2,4。(3)用To表示一个区间范围,例如:2To10或bToh。(4)用Is代表测试值,后跟关系操作符和比值,例如:Is=0。(5)以上几种语句的组合(中间以逗号隔开),例如:5,6,8To12,Is20。返回本节返回本节录录2.5.3 循环语句循环语句 循环语句用来根
21、据设置好的判断依据的状态,决定是否循环执行某段程序块,被重复执行的语句叫做循环体。循环可以分为两种,一种是事先知道循环的执行次数,一种是知道循环结束的条件。PowerScript提供的循环语句有三种形式:DoLoop循环语句、ForNext循环语句、Goto循环语句。返回本节返回本节录录2.5.3 循环语句循环语句1.DoLoop循环语句 无论是知道循环的次数,还是知道循环结束的条件,都可以使用DoLoop语句来控制循环。DoLoop语句中,Do表示循环的开始,Loop表示循环结束,在它们之间的是循环体。PowerScript根据循环条件放的位置和结束值,提供了四种形式:返回本节返回本节录录2
22、.5.3 循环语句循环语句(1)Do WhileLoop语句,格式如下:Do While Condition StatementBlock Loop其中,Condition为循环条件表达式,StatementBlock为循环体(循环执行的语句,以下含义与此相同)。当程序执行到Do While语句时,通过判断条件表达式的真假,决定是否执行循环语句中的程序块。如果表达式返回真值(True),则执行程序块,然后再回到Do While语句,判断表达式的真假,决定是否继续执行循环语句,否则跳出循环,执行下一条语句。返回本节返回本节录录2.5.3 循环语句循环语句(2)Do UntilLoop语句,格式如
23、下:Do Until Condition StatementBlock Loop当程序执行到Do Until语句时,如果条件表达式返回假值,则执行程序块,然后再回到Do Until语句,判断表达式的真假,如果仍是假则继续执行循环语句,否则跳出循环,执行下一条语句。也就是程序一直执行循环,直到条件表达式为真。返回本节返回本节录录2.5.3 循环语句循环语句(3)DoLoop While语句,格式如下:Do StatementBlock Loop While Condition 这种格式的用法与第一种类似,只是由于条件表达式的判断在最后,因此先执行了程序块之后再判断是否进行循环。返回本节返回本节录
24、录2.5.3 循环语句循环语句(4)DoLoop Until语句,格式如下:Do StatementBlockLoop Until Condition这种格式的用法与第二种类似,只是由于条件表达式的判断在最后,因此也是先执行了程序块以后,再判断是否进行下一循环。返回本节返回本节录录2.5.3 循环语句循环语句 2.ForNext循环语句ForNext是一个计数循环,用于循环次数确定的循环结构,它使循环体内的语句执行规定的次数。其语法结构为:For Varname=Start To EndStep Increment StatementBlock Next 其中,Varname代表循环变量,St
25、art和End分别为初值和终值,Increment为步长增量,缺省值为1。程序首先将变量赋以初值,执行程序块,然后将变量值增加一个步长,再执行程序块。这样循环执行,直到变量值等于终值,最后执行程序体后,退出循环,执行Next后的语句。这种语句通常用在循环次数确定的代码中。返回本节返回本节录录2.5.3 循环语句循环语句 3.Goto语句Goto语句是一条无条件转移语句,它将控制跳转到程序中的其他位置,用Goto语句也可以构成循环。Goto语句的语法格式为Goto Label 其中,Label是语句标号,它符合标识符的命名规则。但程序中尽量避免使用Goto语句,以方便程序的管理和维护。返回本节返
26、回本节录录2.5.3 循环语句循环语句 4.Continue(继续循环)Continue语句是用在循环语句中的控制语句,自身不带任何参数。PowerScript语言中,在DoLoop和ForNext语句的循环体中,遇到Continue语句后,将不执行Continue语句后与循环结束前的所有语句,而提前开始新一轮循环。DoLoop与ForNext循环语句均可嵌套使用,而Continue只在当前的循环体内有效,并不会影响外层的循环体。返回本节返回本节录录2.5.3 循环语句循环语句 5.Exit(退出循环)Exit也是用在循环语句中的控制语句,可在循环体的任何地方使用。当程序执行Exit语句时,程
27、序就退出当前循环体。与Continue语句一样,在嵌套循环的情况下,Exit语句退出当前层循环,而不是所有循环。返回本节返回本节录录2.5.3 循环语句循环语句 6.循环嵌套 循环嵌套就是把一个循环放在另一个循环的内部,后面(2.6节中)通过一个实例说明循环嵌套的工作方式。返回本节返回本节录录2.5.4 其他常用语句其他常用语句 1.Return语句 Return语句用于从脚本中返回调用程序,等待用户的下一个动作。其语法格式为ReturnExpressionReturn语句还可以用在用户定义函数中。当程序执行到Return处时,退出函数,继续执行调用函数处以下的代码。用在函数中时,Return
28、后面可以带一个返回值Expression,此返回值的类型必须与函数的返回值类型相同。返回本节返回本节录录2.5.4 其他常用语句其他常用语句 2.Halt语句Halt语句是用来中止应用程序的。其语法格式为HaltClose当应用程序出现重大问题或者不应该继续执行的时候,可以使用Halt语句来终止应用程序。如果在Halt后有Close关键字,应用程序先执行应用对象的Close事件中的代码,然后再终止应用程序。返回本节返回本节录录2.5.4 其他常用语句其他常用语句 3.Create语句Create语句生成对象实例变量,在生成后,用点操作符引用对象的成员。语句将返回一个可以在变量中保存的对象实例句
29、柄。它有两种语法格式:Objectvariable=Create ObjectTypeObjectvariable=Create Using ObjectTypeString其中,Objectvariable持有该对象实例,ObjectType代表对象类型,ObjectTypeString是保存需要创建的对象类型名称的字符串。返回本节返回本节录录2.5.4 其他常用语句其他常用语句 4.Destroy语句 Destroy语句用来释放用Create语句创建的对象实例。其语法格式为Destroy ObjectVariable 返回本节返回本节录录 2.6 语句应用实例语句应用实例 例2.1 求解1
30、00以内能够被5整除的自然数之和。这里使用三种循环语句完成,请注意它们的格式。例2.2 完成学生的百分成绩的转换。这里使用条件语句完成,请注意它们的格式 返回章目返回章目录录小小 结结 PowerBuilder是事件驱动的应用程序,事件发生时所要处理的事情需要程序完成。PowerBuilder系统提供了一种独有的编程语言PowerScript,它是一种高级的、结构化的、面向对象的编程语言。本章介绍了PowerScript语言的基础知识及其用法,与C语言十分类似,知识本身比较简单,但在后续课程和实际编程中却非常灵活,常常把标识符的合法性、变量的类型、变量的作用域以及语句等知识综合在一起进行使用。本章讲述的内容不是课程的重点,而是PowerBuilder的基础 返回章目返回章目录录