第09章PowerScript语言.ppt
《第09章PowerScript语言.ppt》由会员分享,可在线阅读,更多相关《第09章PowerScript语言.ppt(72页珍藏版)》请在三一文库上搜索。
1、2019/8/23,数据库原理及开发,1,第9章 PowerScript语言,本章重点内容 PowerScript基本概念 变量与常量的数据类型、作用域、声明及引用 PowerScript基本语句的格式要求 函数与结构的定义及引用 嵌入式SQL的应用,2019/8/23,数据库原理及开发,2,9.1.1 标识符 标识符是指在程序中使用的变量、标号、函数、窗口、控件、菜单及所引用对象的名称。在PowerBuilder8中,标识符的命名遵从下述规则: 标识符必须以英文字母或者下划线“_”开头。 标识符不能是保留字。 标识符只能由字母、数字和如下特殊字符组成:短划线“-”,下划线“_”,美元符“$”
2、,号码符“#”和百分号“%”。 标识符不区分大小写字母。 标识符不能超过40个字符,且中间不能出现空格。,9.1 PowerScript基本概念,2019/8/23,数据库原理及开发,3,由于PowerScript允许在标识符中使用短划线“-”,这就使得在使用减号“-”操作符时,需要在它前后加空格,否则PowerScript将把表达式当作标识符处理,出现编译错误。 标识符命名规则 最好使用有一定意义的单词,当同一类标识符有多个时,可以使用两个以上单词的组合,建议用以下方法: 使用下划线“_”(例如:w_main)。 首字母大写(例如:FirstCount)。,9.1 PowerScript基本
3、概念,2019/8/23,数据库原理及开发,4,9.1.2 保留字:保留字不能单独作为一个标识符,但可以作为单词组合的其中一个单词。 9.1.3 代词,9.1 PowerScript基本概念,2019/8/23,数据库原理及开发,5,9.1 PowerScript基本概念,9.1.3 代词 1Parent: (1)当为窗口中的控件编写脚本使用Parent时,Parent指代包含控件的窗口。 (2)当为用户对象中的控件编写脚本使用Parent时,Parent指代用户对象。 (3)当在菜单的脚本中使用Parent时,它指代上一级菜单。 2This 代表对象或控件本身,2019/8/23,数据库原理
4、及开发,6,9.1.3 代词 3ParentWindow 代词ParentWindow仅能在菜单的脚本中使用,它代表运行时菜单所在窗口。 注意:用户不能用ParentWindow来引用父窗口(菜单所在窗口)中的控件。 4Super 用户可以直接用祖先的名称调用它们,也可以使用代词Super引用其直系祖先。注意,不能用Super调用祖先窗口中的控件的脚本,9.1 PowerScript基本概念,2019/8/23,数据库原理及开发,7,9.1.4 空值(NULL) 空值(NULL)表示未定义或未知的,它与空字符串、数值零和日期0000-00-00不同,因为NULL不是0或非0的任何数值。空值是P
5、owerBuilder与数据库交换数据时使用的一种特殊值。 所有PowerBuilder变量数据类型都支持空值,即可以给任何类型的数据赋空值,但不能将空值作为变量的默认初始值。,9.1 PowerScript基本概念,2019/8/23,数据库原理及开发,8,9.1.4 空值(NULL) 给变量赋空值的途径有两条: 从数据库中读到空值。 用SetNull函数赋值。 测试变量或表达式的值是否为空值应该调用IsNull( )函数,而不是用等号。,9.1 PowerScript基本概念,2019/8/23,数据库原理及开发,9,9.1.5 特殊ASCII字符,9.1 PowerScript基本概念,
6、2019/8/23,数据库原理及开发,10,9.1.5 特殊ASCII字符 包括上表中所列字符在内,任何ASCII字符都可以在符号后用它的ASCII码值表示,ASCII码值可以用十进制(000-255),十六进制(后接小写的h,范围01-FF),八进制(后接小写的o,范围000-377)。,9.1 PowerScript基本概念,2019/8/23,数据库原理及开发,11,9.1.6 断行、续行和注释 1语句的断行、续行和分隔 分隔符:PowerScript的行分隔符是分号“;”。 断行:可以加上分隔符表示断行,把多条语句写在一行上。 续行:在语句中间加上续行符“&”,换行后接着书写。 注意:
7、不能在标识符或保留字的中间续行。不需要在SQL语句中用续行符,因为PowerBuilder中的SQL语句总是以分号结束,编译器认为从SQL语句开始到分号之间的每一部分都是SQL语句的组成部分。,9.1 PowerScript基本概念,2019/8/23,数据库原理及开发,12,9.1.6 断行、续行和注释 2注释 行注释:以双斜杠“/”开始到行结束。 块注释:以“/*”开始到“*/”结束。,9.1 PowerScript基本概念,2019/8/23,数据库原理及开发,13,9.2 数据类型,9.2.1 标准数据类型,2019/8/23,数据库原理及开发,14,9.2 数据类型,9.2.1 标准
8、数据类型,2019/8/23,数据库原理及开发,15,9.2 数据类型,9.2.2 系统对象数据类型 在PowerBuilder应用中,窗口、菜单、各种控件都是系统对象,每一种系统对象实际上是定义在PowerBuilder内部的一种数据类型。 9.2.3 任意数据类型 任意数据类型,即Any类型,是PowerScript中较为灵活的数据类型,Any类型是一种可变的数据类型,Any类型的变量能使自己变成赋给它的数据值的类型,它可以接受标准数据类型、结构类型、对象类型以及数组等各种类型。,2019/8/23,数据库原理及开发,16,9.2.3 任意数据类型 通过赋值语句给Any类型变量赋值后,可以
9、用ClassName( )函数检查Any类型的实际数据类型 Any类型也存在着一些潜在的不安全因素。使用Any类型时应注意以下几点: 访问Any类型变量前必须先赋值。如果定义了一个Any类型的数组,那么在赋值以前不能访问该数组的元素。如果定义了一个Any类型的结构,那么在给结构赋值以前不能访问其成员变量。,9.2 数据类型,2019/8/23,数据库原理及开发,17,9.2.3 任意数据类型 Any类型变量参加运算时,必须保证所有参加运算的数据值的类型一致,否则会发生错误。 当函数原型中不允许Any类型作为函数参数时,需要使用类型转换函数进行类型转换,否则将产生诸如“Unknown funct
10、ion”或“Function not found”之类的编译错误。因为PowerScript通过函数名、参数类型及参数个数来确定调用哪个函数。 另外,对那些可以确定数据类型的变量,应避免使用Any类型,原因在于: (1)Any类型变量的实际类型需要在PowerScript运行过程中确定,无疑会使运行时间变长,影响程序运行效率,在循环体中使用Any类型变量更是如此。 (2)编译器不对Any类型数据进行正确性检查,错误只在运行时才会发现,而运行时的错误难以查出出错原因。,9.2 数据类型,2019/8/23,数据库原理及开发,18,9.2.4 枚举类型 枚举类型是PowerScript中定义的特殊
11、常量。枚举类型通常用来设置对象和控件的属性或者作为系统函数的参数使用。 所有枚举类型的值都是系统预先定义的,不能像其他语言一样可以向定义好的枚举类型集合中添加新的元素,而只能按系统要求使用它。枚举类型实际上一组固定的值,这些值通常以英文单词开始,以“!”结尾来表示其为特殊类型。,9.2 数据类型,2019/8/23,数据库原理及开发,19,无论是常量或是变量在使用前都应先声明,以便编译时分配适当的存储空间,并且声明的格式、位置不同,其作用域和可见性也不同。 9.3.1 变量 变量是指在程序运行过程中可以改变的量。在应用中,使用变量前必须先予以声明。声明变量的简单语法格式为: 数据类型名 变量名
12、 = 初始值 其中,数据类型 变量名为任何合法的标识符,9.3 变量与常量,2019/8/23,数据库原理及开发,20,9.3.1 变量 声明变量时可以直接把一常量或表达式的值赋给它(初始化),变量初始化是在编译时进行,而不是在运行时完成。如果声明变量时不赋初值,系统将按数据类型的默认值自动赋初值 可以在同一条语句同时声明多个相同类型的变量,变量之间用逗号( , )分隔即可。语法格式为: 数据类型名 变量名 = 初始值 , 变量名 = 初始值 , 变量名 = 初始值 , ,9.3 变量与常量,2019/8/23,数据库原理及开发,21,9.3.2 常量 常量是在程序运行过程中其值保持不变的量。
13、声明常量时需要加关键字CONSTANT,必须赋初值,并且不能再改变。 常量声明的语法格式为: CONSTANT 数据类型 常量名 = 值 其中常量名一般用大写字母表示,以便将其和变量名区别开来。 注意,声明常量时不能在一行中进行多项声明。,9.3 变量与常量,2019/8/23,数据库原理及开发,22,9.3 变量与常量,9.3.3 数组 组成数组的变量称为元素,每一个元素都有唯一索引号(下标),用于将其与其它元素区分开来。数组有两种类型,即一维数组和多维数组,多维数组的大小必须确定,而一维数组的大小可以确定,也可以不确定。数组的每一维最多可包含147,483,647个元素。 声明数组的语法格
14、式如下: 数据类型 数组名d1,dn=初值,2019/8/23,数据库原理及开发,23,9.3.4 变量的作用域 作用域即使用范围,无论是变量还是常量都有自己的作用域 1全局变量(Global) 全局变量可以在整个应用程序中被访问,它的作用域是整个应用程序。PowerBuilder8中声明全局变量的方法。 为了增强程序的可读性和编码的规范性,全局变量名以字符g开头,表示该变量为全局变量(Global)。 2实例变量(Instance) 实例变量属于某个对象(应用程序、窗口、用户对象或菜单)并与该对象相关联,只有在该对象及与该对象相关的控件的脚本中才能使用其定义的实例变量。,9.3 变量与常量,
15、2019/8/23,数据库原理及开发,24,3共享变量(Local) 共享变量和实例变量类似,只能在定义共享变量的对象和与该对象相关的控件的脚本中访问共享变量。但是,共享变量与实际的类定义相关联,而与对象实例无关,这意味着所有同类实例都可共享相同的变量。 共享变量是一种静态变量,将保存其最后的设置,也就是说,它所在的对象关闭后再次打开时,共享变量依然保持对象关闭时的值。 4局部变量(Shared) 局部变量在使用它的事件或函数中声明,它仅属于声明它的脚本,在该程序段的任何地方均可访问局部变量,但其它程序段不能访问该程序段中的局部变量。运行程序后,进入某个程序段时,自动为该程序段的局部变量分配内
16、存,退出程序段时局部变量占用的内存被释放。,9.3 变量与常量,2019/8/23,数据库原理及开发,25,运算符表示了一个或两个操作数之间的运算操作。PowerScript利用运算符构成表达式,完成一定的运算。 9.4.1 算术运算符,9.4 运算符与表达式,2019/8/23,数据库原理及开发,26,扩展算术运算符,9.4 运算符与表达式,2019/8/23,数据库原理及开发,27,9.4.2 关系运算符,9.4 运算符与表达式,2019/8/23,数据库原理及开发,28,9.4.3 逻辑运算符 9.4.4 连接运算符 连接运算符“+”,用于把Sring型或Blob型变量的内容连接起来。,
17、9.4 运算符与表达式,2019/8/23,数据库原理及开发,29,9.4.5 运算符的优先级,2019/8/23,数据库原理及开发,30,9.4.6 表达式 表达式是由算术运算符、关系运算符及逻辑运算符连接起来的变量、常量构成的语法单位。 数值数据类型转换级别,9.4 运算符与表达式,2019/8/23,数据库原理及开发,31,9.5.1 赋值语句 语法格式为: variablename = expression 其中,variablename代表变量名,expression代表表达式,也可以是字符串、数字、变量或常量以及数组等。 在赋值语句中,若等号右边是表达式,则先将其结果转化为等号左边
18、变量的类型后,再赋值给变量。 注意:因为等号“”在表达式中可以作为关系运算符,所以在赋值语句中,不能实现连续赋值。,9.5 基本语句,2019/8/23,数据库原理及开发,32,9.5.2 条件控制语句 1IFTHEN语句 (1)单行IFTHEN语句 语法格式为: IF condition THEN action1 ELSE action2 (2)多行IFTHEN语句 语法格式为: IF condition1 THEN Action1 ELSEIF condition2 THEN Action2 ELSE Action3 END IF 多行IFTHEN语句即使只有action1一个语句块,也需
19、要END IF表示多行IFTHEN的结束。,9.5 基本语句,2019/8/23,数据库原理及开发,33,2CHOOSE CASE语句 适用于多分支选择结构。语法格式为: CHOOSE CASE testexpression CASE expressionlist statementblock CASE expressionlist statementblock CASE expressionlist statementblock CASE ELSE statementblock END CHOOSE,9.5 基本语句,2019/8/23,数据库原理及开发,34,2CHOOSE CASE语句
20、其中,testexpression代表测试值,expression代表判断表达式,statementblock代表测试值与判断表达式相匹配时执行的语句块,方括号里的内容可以省略。 判断表达式可以有如下几种形式: (1)用逗号分隔一组数据。 (2)用TO表示一个区间。 (3)用IS代表测试值,与关系运算符一起构成关系表达式 (4)用前三种形式的组合,用逗号进行分隔。,9.5 基本语句,2019/8/23,数据库原理及开发,35,2CHOOSE CASE语句 在CHOOSE CASE语句中,至少应包含一个CASE子句,并且由END CHOOSE结束。执行CHOOSE CASE语句时,PowerSc
21、ript将逐条查找CASE子句,如果找到与测试值相匹配的判断表达式,就执行该CASE子句中的语句块,然后执行END CHOOSE的后继语句。如果包含CASE ELSE子句,那么在未找到任何匹配的判断表达式时,执行CASE ELSE子句中的语句块。,9.5 基本语句,2019/8/23,数据库原理及开发,36,9.5.3 循环控制语句 1DOLOOP语句 (1)DO UNTIL conditionLOOP语法格式为: DO UNTIL condition Statementblock LOOP 执行过程为:先判断控制条件condition,如果为false,则执行语句块statementbloc
22、k,执行到LOOP后,接着判断条件condition,直到结果为true时结束循环。,9.5 基本语句,2019/8/23,数据库原理及开发,37,(2)DO WHILE conditionLOOP的语法格式: DO WHILE condition Statementblock LOOP 执行过程为:先判断控制条件condition,如果为true,则执行语句块statementblock,执行到LOOP后,接着判断条件condition,直到结果为false时结束循环。 (3)DOLOOP UNTIL condition的语法格式: DO Statementblock LOOP UNTIL
23、condition 执行过程为:先执行语句块statementblock,然后判断控制条件condition,如果为false,则继续执行语句块statementblock,直到condition的结果为true时结束循环。,9.5 基本语句,2019/8/23,数据库原理及开发,38,(4)DOLOOP WHILE condition的语法格式为: DO Statementblock LOOP WHILE condition 执行过程 先执行语句块statementblock,然后判断控制条件condition,如果为true,则继续执行语句块statementblock,直到conditi
24、on的结果为false时结束循环。 四种循环结构比较 前两种结构是先判断条件,再执行循环体,所以有可能开始时条件就不满足,从而使得循环体一次都不能得以执行;后两种结构是执行一次循环体后再判断条件,所以至少可以执行一次循环体。,9.5 基本语句,2019/8/23,数据库原理及开发,39,2FORNEXT语句语法格式为: FOR varname = start TO end STEP increment Statementblock NEXT 3GOTO语句 GOTO语句的语法格式为: GOTO label 其中,label是语句标号,它使用标识符的命名规则,语句标号可以出现在程序的任何位置,但
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 09 PowerScript 语言
链接地址:https://www.31doc.com/p-3417869.html