首 页 | 新 闻 | Symbian | Android| Windows Mobile | J2ME | 下载中心 | 游戏策划招聘与求职 | 购书指南 | 视频教程
您现在的位置: 开发视界 >> Symbian >> Symbian入门 >> 正文
OPL 速成教程(一)
作者:姜 译    文章来源:http://www.allaboutsymbian.com/features/item/Part_1_A_Crash_Course_in_OPL.php    更新时间:2006-11-9 15:42:25

此文为开发视界翻译转载者请注明出处(开发视界 www.sf.org.cn)否则追究法律责任
在这里,我将向你介绍OPL语言,告诉你什么是变量什么是函数以及函数如何调用其它的函数,还有DO。。。UNTIL。。这个通用的循环语句和重要的IF。。。ELSE。。。ENDIF语句。
开始
首先,你应该有一本OPL手册,这个手册可以从OPL Devkit的压缩文件里获得。从ER5到ER6,主要的语言没有变化。一些特殊的变化都记录在ER6 SDK 的指导手册里面。
最重要的章节是15章,讲述了每个命令的结构,简述了其用途。你可以把它当作一个指导手册,经常放在身边。
第一步
把OPL当成是一个接近英文而又不是英文的故事。他非常易懂,将其编译成计算机语言后,也很容易被编译器识别。你也可以把它当成是你和电脑之间的中转站。
任何一门语言都有不同的表达方式,因为其都有不同的语言元素。英语具有句子、段落、名词、动词等等。同样,OPL也有自己的元素。
程序:开始运行代码的地方
当运行一个OPL函数,第一个运行的函数我们叫main 。代码会按照编写的顺序逐个执行,直到程序遇到ENDP,这样函数就会终止。
在函数里边,我们也可以调用另外一个函数,只要简单的输入你想调用的函数的名称,就可以调用其它的函数,但是所有的函数名字后面都必须有一个冒号。
PROC main ;
Setup_app;
do_something _nice;
save_status;
ENDP
PROC setup_app;
REM Do something interesting here
ENDP
Etc…
Main函数运行的时候,它按顺序调用了3个函数,然后遇到了ENDP,程序结束。需要注意的是:任何一个函数都是一PROC开始,以ENDP结束,而且这两行命令各自独立写在一行。当第一个函数运行结束的时候,OPL程序结束。因此,如果想运行其它的函数,只能调用其它的函数。
函数的名字中间不能含有空格,但是可以使用下划线。因此,你可以看到很多下划线作为分隔符。
常量
常量,顾名思义其值不会改变。你可以使用常量使程序看起来更加易读,比如你在程序中经常用到103782376892这个数字,那么你就可以在程序开始的时候这样写:
K_Big_Number%=103782376892
在这个程序以后代码的编写过程中,当你需要用到这个数字的时候,就使用K_Big_Number%来代替。按照规则,在任何常量的前面必须加上K_这个前缀。
在很多程序例子中可以看到很多常量。有一点需要强调的是,系统中定义了很多默认的常量,当你看到以下的代码的时候
INCLUDE “Const.oph”
系统中定义的这些默认的变量都可以使用了。详细的介绍可以在Symbian提供的OPL Development Kit中找到,你可以把它打印出来,放在身边,因为这个非常有用!!
变量
变量就是你可以修改这个参数在程序中的值!变量可以是整数,也可以是长整数,也可以是字符串或者数字串。每个变量都有一个名字和一个符号,这个符号表示变量表示的是什么类型的量。同样需要强调的是,变量的名字中间同样不能含有空格,这就是你看到很多变量的名字中都有下划线这个分隔符的原因了。
变量的类型
整形变量用变量名称后面加%来表示,比如,high_score%是一个整形的变量,其值存储在high_score。整形变量必须是一个单独的数字,而不能是小数,因此不能定义这样的整形变量:high_score%=2.5,而必须是这样:high_score%=2或者high_score%=3。
长整形变量用变量名称后面加&来表示。比如,big_number&代表一个长整形的变量,其值指向big_number。长整形变量可以表示小数,比如:big_number&=2.5。
一串数字或者字符都可以叫做字符串,用变量后面加上$来表示,比如:name$=”ewanspence”
变量的定义
在使用一个变量之前,你必须告诉函数,你想使用这个变量,可以把它看成是先告诉函数给这个变量开辟一个空间。有两种方法可以定义一个变量。
全局变量是一种在程序的任何地方都可以使用的一种变量。
局部变量是在特定的函数中使用的变量。当你离开了这个函数,存储这个局部变量的空间就被释放了。局部变量适用于存储那些只需要暂时使用的那些变量。
定义一个变量必须在函数的第一行。定义一个全局变量,就需要在整个程序的第一行来定义这个全局变量;定义一个局部变量,就要在其相关的函数的第一行定义。
当然,你可以在一行定义不同的变量,他们之间用逗号隔开。
PROC main:
GLOBAL high_score%,big_number&
And…
PROC local:
LOCAL name$(20)
你可以看到,我们定义name这个字符串变量的时候使用了一个带括号的数字,这个数字代表了这个字符串的最大长度。而其,必须规定一个字符串的最大长度,否则在编译的时候,你会的到错误信息。
变量地赋值
给一个变量赋值只需要使用“=”就可以,比如:
High_score%=56
Big_number&=1383512467
Name$=”rafe blanford”
每一个变量赋值的代码都必须独立占据一行。需要强调的是,赋值一个字符串变量地时候,还需要加上引号,而且,引号是不包含在字符串里边的。
数组-更复杂的变量
另外一种变量是数组。一个数组其实就是一组变量。比如,我们想定义一组10个变量,我们可以不使用这个方法:
GLOBAL table1%, table2%, table3%
这样完全可以,但是会产生问题,这个我们马上就要讲到。
我们可以使用这样的定义方式:
GLOBAL table%(10)
来创建10个变量,第一个是table%(1),第二个是table%(2),以此类推。
如过要定义一个字符串数组,要这样定义:
GLOBAL name_table$(10,20)
这就定义了10个变量的字符串数组,每个字符串的最大长度是20个字符。
这就是我们使用name_table%(10)而不使用table1%,table2%等等定义的原因,当你有另外一个数字,还需要相互赋值的时候,这个定义方式就非常的重要。
循环
循环语句是解决程序中反复执行的代码的重要方式,但是可能需要一点点地改动。看下面的代码:
PROC loop:
LOCAL foo%
Foo%=0
DO
foo%=foo%+1
table%(foo%)=foo%
UNTIL foo%=10;
ENDP
相信你一定能看懂这段代码。DO…UNTIL…语句是这段代码中的主要模块。首先,我们创建一个变量作为一个计数器,这里就是foo%,你可以看到我们经常使用foo%或者gnu%或者zsu%作为一个局部变量。你可一把它们当作一个计数器或者一个局部变量。
每执行一次循环,我们把foo%加1,然后把这个值传递给数组(这里边,这个数组一定是一个全局变量,因为我们没有发现他在该函数里面被定义)。
当foo%的值变成10的时候,UNTIL 语句就停止了循环,继续执行下面的程序。因为这里没有什么程序执行,ENDP语句将把程序返回到loop函数被调用的地方。
判断
在编程过程中,你经常会遇到这样的情况,需要判断真假,然后根据这个结果分别执行不同的函数。判断语句使用以下的命令:
IF guess%=1
Guess_right:
ELSEIF guess%=2
guess_close:
ELSE
Guess_wrong%
ENDIF
这段代码同样不难。当guess%=1的时候,函数调用guess_right:当guess%=2的时候,函数调用guess_close;当guess%是其他值得时候,执行guess_wrong。
IF…ELSE…ENDIF函数是计算机语言中第二种重要的模块。
请保证不会忘记:
在很多代码中,你会看到这样的代码
REM This routine calculates the cursor position
Or…
REM foo_x represents the temporary x co-ordinate
REM foo_y represents the temporary x co-ordinate
事实上,这段REM代码没有任何作用。所有出现在REM后面的句子都将被电脑忽略,只到下一行代码出现。
你可以利用REM做一些记录,解释代码的含义,告诉将来读代码的人该代码的意义。另外,当你6个月以后再来读这段代码的时候,REM 后面的解释将会有非常重要的意义。
总结
简单吧!尽管我们还有很多东西去学习,但是不要担心,我们需要几个星期去掌握这些知识。下一步,我们将要学习Event Core OPL,了解其如何工作的。你可以在学习之前先去看一下,运行那些代码也不会造成你的机器崩溃,你会发现,其实你已经可以阅读和理解很大部分。其中键盘输入和事件的处理部分可能会比较难,但是这也是利用Core Framework开始的最大好处。

相关文章:
遍历文件夹
如何在进程间共享文件句柄
MMI of UIQ (三)
Symbian系统中DLL的冻结
如何改变CEikLabel的颜色
创建Log文件调试Symbian程序
CCoeControl类中Draw()函数的调试
Symbian程序中的观察者模式
 

站点地图 | 加入收藏 | 联系站长 | 广告服务 |
QQ:280529124  Tel:0592-8271361 辽ICP备05021703号