Wml và J2me khoa Công Nghệ Thông Tin



tải về 4.79 Mb.
trang5/28
Chuyển đổi dữ liệu07.01.2018
Kích4.79 Mb.
#35862
1   2   3   4   5   6   7   8   9   ...   28






CHƯƠNG 2 : WMLSCRIPT






CHƯƠNG 2: WMLSCRIPT

2.1 Giới thiệu WMLScript


Chúng ta đã biết WML đơn giản: trang tĩnh bố trí (layout) và tương tác người dùng đơn giản. Mặc dù WML cung cấp biến, thao tác và những sự kiện để tạo sự tương tác cleaner và easier, có một số thao tác mà không thể làm trong WML đơn giản.Nhưng với WMLScript thì bạn dễ dàng tiến đến kỹ thuật thiết kế chương trình làm tăng thêm chức năng, “look and feel” của ứng dụng WAP.

2.1.1 WMLScript with WML


Một trong những thứ quan trọng nhất về WMLScript là bằng cách nào nó kết hợp chặt chẽ với WML. Bạn có thể đặt một lời gọi đến WMLScript bất kì trong WML.Trong thư mục khác, tập lệnh có thể đọc và thay đổi biến và chạy tasks. Cả hai kết hợp để tạo lợi thế WMLScript.Thậm chí bạn có thể viết game thật tốt mà chỉ dùng WML và WMLScript

WMLScript là được gọi từ WML dùng một thao tác với một chỉ định URL.Bạn đặt lời gọi đến hàm tập lệnh và có thể thay thế bất kì thao tác nào với một lời gọi tập lệnh. Để giải thích tại sao WMLScript là một lợi ích cho WML, ta hãy thiết kế form nhập vào địa chỉ con tàu. Có những trường cho cả country và state. Trường state phải được nhập vào nếu country là United States,ngược lại thì không nhận ra. Nếu quên nhập vào state thì thông báo lỗi, bạn nên thông báo không có cho người dùng để đợi server thực hiện việc kiểm tra những trường và gởi trả về một hồi đáp, một tiến trình mà có thể dễ dàng lấy trong vài giây tiếp theo.


Ví dụ :

State (US only):

Country:

Chú ý: thuộc tính format ="AA" mà ép trường (field) thành 2 từ chữ hoa

Thẻ (card) này cũng chứa một điều khiển , mà gởi dữ liệu đến server:






Việc kiểm tra thật sự rất đơn giản: nếu là country là “US” và trường state là empty, không gởi dữ liệu đến server, nhưng thay vì thông báo người dùng phải gõ vào một state. Hiển thông báo thật dễ dàng bằng cách thêm một card trong deck:

Since you live in the US, you must enter a state.

Please go back and enter one.






Bây giờ bạn có thể hiện thị thông báo bằng cách thi hành một đến URL #nostate.Vấn đề là WML đó không cung cấp một phương pháp để thực hiện việc kiểm tra đơn giản này. Vừa không có bất cứ phương pháp nào để kiểm tra việc gởi dữ liệu đến server, có server kiểm tra giá trị và từ chối chúng, và sau đó gởi một thông báo lỗi tất cả phương pháp trả về. Trừ khi dùng WMLScript .

2.1.2 WMLScript to the Rescue


Dùng WMLScript để giải quyết vấn đề, dùng task để gởi dữ liệu đến server để gọi WMLScript thay vì load một thẻ WML.

Xem ví dụ sau:







Tong thao tác trình bày một lời gọi hàm check() trong file check.wmls.

extern function check( )

{

var state = WMLBrowser.getVar ("state");



var country = WMLBrowser.getVar ("country");

if (country == "US" && state == "") {

WMLBrowser.go ("#nostate");

return;


}

WMLBrowser.go ("address.cgi?s=" + state + "&c=" + country);

}

2.1.3 WMLScript là gì?


WMLScript là cơ bản trên JavaScript nhưng là rất đơn giản để giảm bớt thủ tục trên thiết bị chạy trình duyệt. (JavaScript yêu cầu số lượng bộ nhớ hoàn toàn,để chạy nó thì phức tạp). Nếu bạn đã từng dùng Java, JavaScript, C, C++, ECMAScript, hay bất cứ sự đa dạng lớn của những ngôn ngữ mà vay mượn cú pháp của bits từ mọi cái khác, thì nhiều cú pháp của WMLScript rất quen thuộc. Ví dụ, dùng một hàm WMLScript để tính giai thừa số nguyên (integer) chính xác có thể được viết như sau:

/* Calculate factorial of n. */

function factorial (n)

{

var result = 1;



for (var i=2; i

result *= n;

}

return result;



}

Dấu ngoặc mốc xoắn, cú pháp for ở giữa, và cú pháp return tại cuối là tất cả tượng tự nhau cho những ngôn ngữ như C, java, JavaScript, hay C++. Dòng function và dòng var có thể ít quen thuộc, chúng sẽ đề cập trong chương sau. Những lời chú thích WMLScript có thể 2 forms: giống như trong C, bắt đầu với /* và kết thúc */ và giống trong C++, bắt đầu với // và tiếp tục cho đến khi kết thúc dòng

Trong WMLScript có phân biệt dạng chữ, bao gồm tên hàm (function), tên biến, giá trị chữ (literal values), từ khoá (keywords), và mọi thứ còn lại.Khoảng cách thì không.Bất cứ chỗ nào bạn có thể đặt một khoảng trống, bạn có thể đặt nhiều nếu bạn muốn và cũng bao gồm cả items như linebreaks và tabs và được tính đơn giản như khoảng trống.Ví dụ trong đoạn mã trích ngắn sau:

if (x)


a = b;

else if (y)

foo (c, d);

Chỉ cách khoảng mà thật sự yêu cầu là một trong giữa else và if vì nó tách rời 2 từ khoá. Đoạn có thể viết :

if(x)a=b;else if(y)foo(c,d);

Không có thay đổi thuộc tính nó tại tất cả. Chỉ có nguyên nhân cho tất cả thêm khoảng cách trong phiên bản đầu là có thể đọc được.


2.1.3.1 Thư viện Chuẩn (Standard Libraries )

Vì ngôn ngữ chính WMLScript đã làm đơn giản đến mức thu nhỏ, nhiều task không được làm ngay lập tức.Ví dụ, không có thao thêm ký tự riêng lẻ từ Strings.May mắn, những hàm này lại được chứa trong thư viện chuẩn đã được định nghĩa trong ngôn ngữ WMLScript và được thi hành tất cả.Vì vậy, chúng thành hiệu quả của chính ngôn. Thư viện bao gồm các hàm mở rộng, bao gồm quá trình chuyển đổi giữa các kiểu dữ liệu khác, xử lý chuỗi string, và số chấm động. Mức độ cao hơn, hàm để giải quyết URLs và trình bày hộp thoại (dialog boxes) đến người dùng.
2.1.3.2 Bytecode

Trên trình duyệt, WMLScript được biên dịch sang bytecode trước khi truyền. Bytecode này là một dãy các mã được truyền cho máy tính và công việc của WMLScript hiển thị trên thiết bị rất dễ dàng. Có 2 loại WMLScript interperter và WMLScript virtual machine(hay WMLScript VM) thì thường được dùng thay thế cho nhau. WAP biên dịch mã code cho bạn nếu cần. Lý do là giảm kích thước và giấu mã source gốc. Phương pháp này hay kia, không có sự khác nhau trong code của bạn.
2.1.3.3 Functions

Giống như bất kì ngôn ngữ nào khác, WMLScript hỗ trợ functions, giống như ví dụ check() cho dễ dàng hơn. Mặt khác, WMLScript code chỉ cho phép một hàm bên trong. Tương tự như ngôn ngữ như C, Java và ngôn ngữ khác như JavaScript và Perl

2.2 Những kiểu dữ liệu , biến và chuyển đổi của WMLScript ( WMLScript Datatypes, Variables, and Conversions)


WMLScript là một ngôn ngữ không mạnh. Đây có nghĩa là bạn chưa bao giờ chỉ định kiểu dữ liệu của biến hay kiểu trả về của một hàm nhưng chính WMLScript chuyển đổi giá trị trả về. Ví dụ, giá trị 1234 là integer, nhưng nếu bạn sử dụng hàm thư viện String.length( ), mà mong chờ một chuỗi (string), nó chuyển hoàn toàn thành chuỗi string "1234", chiều dài là 4. Tương tự , nếu bạn cố đánh giá biểu thức:"1234" * "2"

Cả giá trị là được chuyển đổi thành integer trước khi dùng, và kết quả là integer 2468.


2.2.1 Datatypes and Literals


WMLScript có 5 kiểu dữ liệu: string, integer, floating-point number, Boolean, chỉ định kiểu không hợp lệ( invalid). Mọi giá trị trong WMLScript thuộc một trong những kiểu dữ liệu này, mặc dù hầu hết có thể chuyển đổi đến những kiểu khác. (Một literal là một hằng số rõ ràng bao gồm trong một code.)
2.2.1.1 Strings

Strings trong WMLScript có thể là chuỗi những kí tự Unicode. Chúng có thể kèm theo dấu nháy đơn hay đôi trong đoạn trích dẫn.WMLScript hỗ trợ việc chỉ định các ký tự đặc biệt trong strings như là dòng mới, đoạn trích dẫn, những ký tự mà không thể xem được source(như là ký tự trung quốc nếu file source của bạn là ASCII).

Table trình bày shows escape sequences đặc biệt, mà trình bày ký tự đặc biệt


Những ví dụ của chuỗi chữ bao gồm :

""

'foo'


"Hello, World!"

'String with embedded single \' and double " quotes'

"String with embedded single ' and double \" quotes"

'Price is \24317 (seventeen pounds)'

"Price is $17 (seventeen dollars)"

'To include a backslash, use \\'


2.2.1.2 Integers

Những giá trị Integer là đuợc lưu trữ 32-bit integer. Literal integers có thể được chỉ định trong bát phân, thập phân, hệ thập lục nhưng không làm ảnh hưởng chính số đó, integers luôn luôn hiện thị như thập phân khi được chuyển thành strings. Ví dụ của những chữ integer hợp lệ bao gồm:

17

42



0

0105


00007777

01232


0x00

0x2A


0x3e8

0x7fffffff


2.2.1.3 Booleans

WMLScript cung cấp giá trị Boolean, trình bày true hoặc false. Hai giá trị chữ hợp lệ Boolean là

true


false

Chú ý rằng những chữ này là phân biệt dạng chữ(case-sensitive.)


2.2.1.4 Số dấu chấm động (Floating-Point Numbers)

Giá trị chấm động Float trong WMLScript được lưu trữ trong IEEE , mà định dạng là 32-bit floating-point.Những số này cho phép gần bằng 3.4e+38 để lưu trữ.Sử dụng hàm thư viện Lang.float() để biểu diễn kiểu Float .Ví dụ dấu chấm động hợp lệ bao gồm :

.0

0.0



0E+0

0e23


0.44

1.0


10E6

10e-6


123.456e-7

.42e+23


Chú ý rằng 4 giá trị đầu tiên trình bày tất cả cùng giá trị 0
2.2.1.5 Invalid

Kiểu giá trị thứ 5 của WMLScript, invalid là điều mà bạn cần phải chu ý. Nó hỗ trợ hiển thị một giá trị đơn giản mà các kiểu khác không có. Ví dụ, biểu thức (1/2) cho giá trị dấu chấm động là 0.5. Biểu thức (1/0) không thể định giá (chia cho 0 là không hợp lệ), và kết quả là invalid. Tương tự hàm thư viện, cho tính căn bậc hai của một số trả về không hợp lệ khi cho số âm. Nếu được yêu cầu, có thể tham khảo một giá trị chữ invalid như sau:

Invalid


Gán invalid == invalid là chưa bao giờ true, ngay cả đây có thể một chữ không quen biết hay thậm chí sai. Trong thực tế, kết quả biểu thức liền trước cũng là invalid. Hầu như tất cả thao tác trong WMLScript cho một kết quả invalid nếu bất kì những đối số của chúng là invalid.

Ví dụ :


1 + (1/0)

(1/0) == (-1/0)

1/(1/0)

2.2.2 Variables


WMLScript chỉ cung cấp biến cục bộ và truy xuất đến biến WML (luôn luôn là giá trị string) Không có biến toàn ,một biến WMLScript có thể lấy một giá trị bất kì của 5 kiểu dữ liệu, bao gồm invalid. Biến được khai báo với cú pháp var. Biến có thể được chỉ định cách nhau bởi dấu phẩy như là :

var foo;


var x, y, z;

var a, b, c, d, e, f, g, h, i, j;

Biến phải khai báo trước khi dùng, ví dụ sau là không đúng:

function foo ( )

{

wibble = 2;



var wibble;

}

Tất cả những biến được khởi tạo hoàn toàn từ chuỗi empty, "". Nếu giá trị nào đó là một số bắt buộc thì khai báo như sau:



var foo = 17, bar = 42;

hay


var foo, bar;

foo = 17;

bar = 42;

Biến sẽ được đọc ra đầu tiên trong trình duyệt. Ví dụ 2.1 cập nhập lại giá trị mới cho biến.



Example 2.1. Outline of a Function Called from WML

extern function called_from_wml ( )

{

/* First read variables from browser context.



* These could also be passed in as function arguments.

*/

var username = WMLBrowser.getVar ("username");



var password = WMLBrowser.getVar ("password");

/* Next, process those variables. */

username = validate_username (username);

password = validate_password (password);

/* Write back new values. */

WMLBrowser.setVar ("username", username);

WMLBrowser.setVar ("password", password);

/* Finally, a refresh task. */

WMLBrowser.refresh ( );

}

** Phạm vi biến (Variable Scope)



Chỉ khai báo một lần một biến trong phạm vi một hàm. Ví dụ:

function foo (x)

{

if (x) { var y = 42; }



return y;

}

Phạm vi biến y: từ lúc y được khai báo cuối hàm (function), vì vậy cú pháp return là valid. Nếu x là false thì var y = 42 chưa bao giờ được thi hành. Tuy nhiên, khởi tạo y sau đó đặt giá trị 42 vào thì biến y thật sự thi hành.Thật vậy, hàm này chạy khi nó được viết như sau:



function foo (x)

{

var y;



if (x) { y = 42; }

return y;

}
2.2.2 Variable Names

Tên biến hợp lệ trong WMLScript chỉ chứa mẫu tự hay chữ, con số và đường gạch dưới từ ngữ . Ký tự đầu tiên không thế là 1 con số; nó phải là một chữ hay đường gạch dưới.Ví dụ, từ khoá như for, function



và var là tất cả không hợp lệ là tên biến. Những từ sau là tất cả từ khoá:

Sau đây là tất cả ví dụ của tên biến hợp lệ:

x

foo


___name_with_underscores__ _

ThisVariableNameIsImpracticalBecauseItIsTooLong

xy17

_0

Sau đây là ví dụ của những tên biến không hợp lệ:



17xy

(starts with a digit)

name with spaces



(space isn't a letter, digit, or underscore)

while


(is a keyword)

switch


(is a reserved word)

2.2.3 Quá trình chuyển đổi kiểu (Type Conversion )


Những thao tác WMLScript chuyển đổi toán hạng đúng yêu cầu. Ví dụ, thao tác * cho phép nhân có thể đem lại kết quả integers hay floating points, cho nên toán hạng đầu tiên phải được chuyển thành một trong những kiểu này.Nếu một đối số không thể được chuyển, kết quả là invalid.
2.2.3.1 Quá trình chuyển đổi thành String(Conversion to String )

• Integers chuyển đổi thành một string . Ví dụ, integer 1234 chuyển thành string "1234", và integer -42 chuyển thành string "-42".

• Floating-point numbers (số dấu chấm động) chuyển thành một string.Ví dụ, số dấu chấm động (floating-point number ) 0.2 có thể chuyển thành bất kì strings "0.2", "2e-1", ".2", "0.2e+0", và v.v.v...

• Boolean true là được chuyển thành string "true", và Boolean false là được chuyển thành string "false".

• invalid không thể chuyển thành một string.

2.2.3.2 Quá trình chuyển đổi thành Integer (Conversion to Integer )

•Một string chuyển thành integer.Ví dụ strings "1234" và cả "+1234" chuyển đổi thành integer 1234, nhưng string "1234x" không thể được chuyển

• Kiểu dấu chấm động không chuyển đổi thành một integer.

• Boolean true chuyển thành 1, và Boolean false chuyển thành 0.

• invalid không thể chuyển thành một integer.


2.2.3.3 Quá trìnhh chuyển đổi thành số dấu chấm động (Conversion to Floating-Point Number )

•Một chuỗi string chứa một số chấm động (floating-point of a number) thì chuyển thành số đó. Không có strings nào khác có thể được chuyển. Ví dụ, string "5.0e-1" chuyển thành số dấu chấm động là 0.5; string "5.0x" không thể chuyển được

•Nếu quá trình chuyển kết quả của một số lớn hơn hiển thị định dạng trong dấu chấm động thì chuyển đổi thất bại (vì kết quả là invalid).

• Nếu chuyển đổi kết quả trong dấu chậm động thiếu thì kết quả là lấy 0.0.Ví dụ, string "1e999" không thể chuyển và string "1e- 999" chuyển thành 0.0.

• Integers được chuyển thành tương ứng là giá trị kiểu dấu chấm động (floating-point).

• Boolean true là chuyển thành dấu chấm động (floating-point) 1.0, Boolean false là chuyển thành dấu chấm động ( floating-point )0.0.

• invalid không thể chuyển thành một số dấu chấm động (floating-point number.)


2.2.3.4 Quá trình chuyển thành Boolean (Conversion to Boolean )

• Chuỗi empty là được chuyển thành false. Tất cả chuỗi khác là chuyển thành true. Có nghĩa là "" thành false, nhưng "false" chuyển thành true!

• Integer 0 là được chuyển thành false.Tất cả integers khác được chuyển thành true.

• Floating-point 0.0 là được chuyển thành false. Tất cả giá trị chấm động khác thì được chuyển thành true.

• invalid không thể chuyển thành một giá trị Boolean



Каталог: data
data -> HƯỚng dẫn càI ĐẶt và SỬ DỤng phần mềm tạo bài giảng e-learning
data -> CỘng hòa xã HỘi chủ nghĩa việt nam độc lập Tự do Hạnh phúc
data -> Qcvn 81: 2014/bgtvt
data -> Trung taâm tin hoïC Ñhsp ñEÀ thi hoïc phaàn access
data -> PHỤ LỤC 2 TỔng hợp danh mục tài liệu tham khảO
data -> Công ty cổ phần Xây dựng Điện vneco3
data -> Nghiên cứu một số đặc điểm
data -> NHỮng đÓng góp mới của luậN Án tiến sĩ CẤP ĐẠi học huế Họ và tên ncs : Nguyễn Văn Tuấn
data -> Mẫu 01/hc-sn-dn (Ban hành kèm theo Thông tư số 83/2007/tt-btc ngày 16/7/2007 của Bộ Tài chính) TỜ khai hiện trạng sử DỤng nhà, ĐẤt thuộc sở HỮu nhà NƯỚc và ĐỀ xuất phưƠng án xử LÝ

tải về 4.79 Mb.

Chia sẻ với bạn bè của bạn:
1   2   3   4   5   6   7   8   9   ...   28




Cơ sở dữ liệu được bảo vệ bởi bản quyền ©hocday.com 2024
được sử dụng cho việc quản lý

    Quê hương