$(result)
WMLScript код във файла ex6-08_07.wmls:
extern function doBreak(number, result) {
for (var i = -10; i <= 10; i++) {
// If argument number is between -10 and 10,
// control comes out from the loop, when
// i is equal to number
if (i == number) break;
} var answer = i * number; WMLBrowser.setVar(result,answer);
Стр. 4 от 7
WAP/WML 8
WMLBrowser.refresh();
}
8. Команда continue
o тази команда прекратява изпълнението на текущата итерация от цикъл – for или while
– като управлението се предава към следващата итерация на цикъла (ако има такава)
o тази команда също се ползва само в блок на цикъл
o пример
"http://www.wapforum.org/DTD/wml_1.1.xml">
$(result1)
Second card (evens)
$(result2)
WMLScript код във файла ex6-08_08.wmls:
extern function odds() {
var answer = "";
for (var i = 1; i < 10; ++i) {
if (i%2 == 0) continue;
answer += " " + i + " *";
} WMLBrowser.setVar("result1",answer); WMLBrowser.refresh();
}
extern function evensWhile() {
var answer = "";
var i = 0;
while (i < 10) {
++i;
if (i%2 == 1) continue;
answer += " " + i + " *";
} WMLBrowser.setVar("result2",answer); WMLBrowser.refresh();
}
9. Директивни метаелементи
o освен директивите access (т. 5, л. 7.) и url (т. 2., л. 8.) се ползва и директивата meta
за метаелементи (описания), предназначени за WWW сърверите
o метаелементите се въвеждат с директивните опции name, http equiv и user agent
o с тях се въвежда допълнителна информация за документа, която обикновено не се интерпретира от браузера
o опциите name и http equiv имат еднакви функции (обикновено въвеждат версия, дата, автор, съдържание) но за разлика от name при опция http equiv метаелементите се предават към микробраузера; пример:
use meta name “Creation” “13-April-2003”
use meta name “Author” “None of Your Business”
Стр. 5 от 7
WAP/WML 8
use meta http equiv “Creation” “13-April-2003”
use meta http equiv “Author” “None of Your Business”
o при директивната опция user agent метаелементите се предават към микробраузера и освен това се предполага, че някои браузери интерпретират тяхното съдържание; пример:
use meta user agent “type” “examination test”
10. Конверсия на типовете - 2
o отново: типа на променливите се определя от операциите, в които те участват и ако има несъответствие с регламентирания тип на операнда, се извършва конверсия на типа на променливата преди изпълнението на дефинираната операция
o целите и плаващите числа и булевите променливи се конвертират (при необходимост) до низове напр. 5 до “5”; 0.5 до “.5”, “0.5” или “.5е0”, а булевите до низове или до цели или плаващи числа: напр. true до “true” или до 1 или до 1.0 (false до 0)
o конверсия от низ към числов тип може да доведе до грешка – напр. ако низът съдържа нерегламентирани за числата символи (букви) или ако е съставен само от цифри
(евентуално и знак и десетична точка) но означеното число е извън съответната област на стойностите; неизпълнимите конверсии са до тип invalid
o конверсия от низ към булева стойност поражда винаги true освен в при нулева дължина на низа – “” се конвертира до false
o аналогично целите и плаващи стойности се конвертират до true, а само 0 и 0.0 до false; в последния случай дори 0.000000013 ( < MinFloat ) също се конвертира до true, макар че като плаваща стойност се интерпретира като 0.0
o операторите с типова конвенция са както следва:
o !, &&, || : приемат булеви операнди и връщат булева стойност
o ~, <<, >>, >>>, &, ^, |, %, div : приемат цели числа като операнди и връщат цяла стойност
o <<=, >>=, >>>=, &=, ^=, |=, %=, div= : приемат произволен тип за първи операнд,
цяло число за втори операнд и връщат цяла стойност
o пример (променете WMLScript кода за да проверите и други типови конверсии):
"http://www.wapforum.org/DTD/wml_1.1.xml">
$(result)
WMLScript код във файла ex6-08_10.wmls: extern function conversion(result) {
var booleanValue = true;
var thisIsLie;
var someInteger = 10;
var someFloat = 5.5;
var my_string = "Hello!";
var answer = "";
if (someFloat) { // Float 5.5 is converted to true:
// Thus, these statements are executed.
someInteger = booleanValue << 2; // Conversion is possible
// to integer.
Стр. 6 от 7
WAP/WML 8
answer += "someInteger: " + someInteger + ". ";
// After division someInteger is converted to float.
// Not operand converts float to boolean. thisIsLie = !(someInteger / someFloat);
answer += "thisIsLie: " + thisIsLie + ". ";
if (my_string>someInteger){ // someInteger is converted
// to string for this comparison
}
}
// Next, first thisIsLie variable is converted to
// integer, and then the expression’s result is converted to boolean. booleanValue = !(3 < thisIsLie);
answer += "booleanValue: " + booleanValue + ".";
WMLBrowser.setVar(result,answer); WMLBrowser.refresh();
}
Стр. 7 от 7
IX. Стандартни библиотеки в WMLScript
1. Стандартни библиотеки с WMLScript функции
WAP/WML 9
o съдържат тематично групирани функции, които разширяват възможностите на езика
o библиотеките са 6: Lang, Float, String, URL, WMLBrowser и Dialogs
o те следват аналогия с JavaScript методите, като
o плаващата аритметика е отделена в самостоятелна библиотека, тъй като не всички браузери я поддържат
o добавена е библиотека за специфичния интерфейс между WML и WMLScript код
o библиотеката Dialogs поддържа функционално потребителския интерфейс по аналогия с метода аlert() на JavaScript
o функциите се извикват по идентификатор на библиотеката и идентификатор на функцията – с разделител точка (а не диез) – за синтаксиса на библиотечинте функции вж. примерите от лекции 7. и 8.
2. Библиотека Lang; функции abort, exit, abs и characterSet
o тази библиотека съдържа функции, обслужващи интерфейса между WML и WMLScript
код – типови конверсии и проверки, управление на скрипт кода и т.н.
o функцията abort преустановява изпълнението на скрипт кода и връща управлението в точката на обръщение към WMLScript интерпретатора като присвоява на функцията стойността на параметъра й ако е низ – в противен случай invalid
o прилага се когато изпълнението на скрипт кода трябва да се преустанови при непоправима грешка
o резюме
синтаксис abort(value)
параметър typeof(value) = String
стойност на
функцията value или invalid ако value не е низ
примери Lang.abort("Script aborts with " + result); // Returns a string
Lang.abort(in_valid); // Returns invalid
o функцията exit преустановява изпълнението на скрипт кода и връща управлението в точката на обръщение към WMLScript интерпретатора като присвоява на функцията стойността на параметъра й от произволен тип
o прилага се когато изпълнението на скрипт кода трябва да се преустанови по алгоритмична логика, а не при непоправима грешка
o резюме
синтаксис exit(value)
параметър typeof(value) = Any
стойност на функцията value
примери Lang.exit("Script Ends with " + result); // Returns a string
Lang.exit(invalid); // Returns invalid
o функцията abs връща абсолютната стойност на числовия параметър, като запазва типа му (цял или с плаваща запетая) а нечисловите параметри конвертира до invalid
Стр. 1 от 25
WAP/WML 9
o резюме
синтаксис abs(value)
параметър typeof(value) = Number
стойност на
функцията |value| или invalid ако value не е число
var a = -6;
примери
var b = Lang.abs(a); // b = 6;
var c = -8.4;
var d = Lang.abs(c); // d = 8.4
o функцията charcterSet връща целочислената стойност на знакогенаратора съгласно MIBEnum списъка на знакогенератори (напр. на http://www.iana.org/assignments/character-sets)
o резюме
синтаксис characterSet()
стойност на функцията integer
пример a = characterSet(); //a = 1000 i.e. ISO-10646-UCS-2 aka Unicode
o пример:
"http://www.wapforum.org/DTD/wml_1.1.xml">
The Lang.abort result: $(result1)_The_Lang.abs_result:_$(result2)__The_Lang.characterSet_result:_$(result3)_The_Lang.exit_result:_$(result4)'>$(result1)
The Lang.abs result: $(result2)
The Lang.characterSet result: $(result3)
The Lang.exit result: $(result4)
WMLScript код във файла ex7-09_02.wmls:
extern function error(result) {
var errorCode = "ERROR";
var answ=Lang.abort(errorCode); WMLBrowser.setVar(result,answ);
WMLBrowser.refresh(); }
extern function absValue(result) {
var a = -10;
var b = 20;
var c = -0.5;
var d = 2.5;
var answer = "";
var e = Lang.abs(a); // e = 10
answer += e + ",";
e = Lang.abs(b); // e = 20
answer += e + ",";
e = Lang.abs(c); // e = 0.5
answer += e + ",";
Стр. 2 от 25
WAP/WML 9
e = Lang.abs(d); // e = 2.5
answer += e; WMLBrowser.setVar(result,answer); WMLBrowser.refresh();}
extern function charset(result) {
var chars = Lang.characterSet(); WMLBrowser.setVar(result,chars);
WMLBrowser.refresh(); }
extern function doExit(result) {
var exitCode = "Function execution ends.";
result = Lang.exit(exitCode);}
3. Библиотека Lang; функции float, isFloat, parseFloat, isInt и parseInt
o функцията float връща стойност true ако микробраузера поддържа стойности с плаваща запетая
o резюме
синтаксис float()
стойност на функцията Boolean
пример var a = Lang.float();
o функциите parseFloat и parseInt конвертират символен низ до числова стойност от съответения тип, като разборът започва от първия символ в низа и завършва при откриване на символ, който не може да се идентифицира като компонент на числов запис
o резюме
синтаксис parseInt(value); parseFloat(value)
параметър typeof(value) = String
стойност на
функцията Number или invalid
var a = Lang.parseInt("+9351"); // a = 9351
var b = Lang.parseInt(" 9351 x/y"); // b = invalid
примери
var c = Lang.parseInt("9351 x/y"); // c = 9351
var d = Lang.parseFloat("935.14"); // d = 935.14
var e = Lang.parseFloat("-85.17e2 Kg"); // e = -85.17e2
var f = Lang.parseFloat("4.2e"); // f = invalid
o функциите isFloat и isInt връщат стойност true ако параметърът им може да се конвертира до числова стойност от съответния тип с използване на функциите parseFloat и parseInt съответно
o резюме
синтаксис isFloat(value); isInt(value)
параметър typeof(value) = Any
стойност на
функцията Boolean или invalid
var a = Lang.isFloat("-935"); // a = true
var b = Lang.isFloat("-85.17e3"); // b = true
примери
var c = Lang.isFloat("pi"); // b = false var d = Lang.isFloat("@157"); // d = false
var e = Lang.isFloat(invalid); // e = invalid var f = Lang.isInt("-935"); // f = true
Стр. 3 от 25
WAP/WML 9
o пример:
var g = Lang.isInt("-85.17"); // g = true
var h = Lang.isInt("thousand "); // h = false var i = Lang.isInt("$157"); // i = false
var j = Lang.isInt(invalid); // j = invalid
"http://www.wapforum.org/DTD/wml_1.1.xml">
The Lang.float result: $(result1)
The Lang.isFloat result: $(result2)
The Lang.isInt result: $(result3)
The Lang.parseFloat result: $(result4)
The Lang.parseInt result: $(result5)
WMLScript код във файла ex7-09_03.wmls:
extern function floats(result) {
var supportFloats = Lang.float(); // true or false WMLBrowser.setVar(result,supportFloats); WMLBrowser.refresh();}
extern function giveFloat(result) {
var string1 = "10.8";
var string2 = "100.99 levs";
var string3 = "$40.10";
var string4 = "40e-2 or something";
var answer;
var a = Lang.parseFloat(string1); // a = 10.8
answer += a;
a = Lang.parseFloat(string2); // a = 100.99
answer += ", " + a;
// Left uncommented, next couple of lines would have returned
// an invalid value:
// a = Lang.parseFloat(string3); // invalid!!!
// answer += ", " + a;
a = Lang.parseFloat(string4); // a = 0.4 answer += ", " + a; WMLBrowser.setVar(result,answer); WMLBrowser.refresh();}
extern function giveInt(result) {
var string1 = "10";
var string2 = "100 levs";
var string3 = "£40";
var answer;
var a = Lang.parseInt(string1); // a = 10
answer += a;
a = Lang.parseInt(string2); // a = 100
answer += ", " + a;
// Next lines have been commented out for a good reason:
// a = Lang.parseInt(string3); // invalid!
// answer += ", " + a;
a = Lang.parseInt("13.7"); // a = 13 answer += ", " + a; WMLBrowser.setVar(result,answer); WMLBrowser.refresh();}
Стр. 4 от 25
WAP/WML 9
extern function isItFloat(result) {
var answer = "";
var a = Lang.isFloat("2000"); // a = true
answer += a + ", ";
a = Lang.isFloat("09.10"); // a = true
answer += a + ", ";
a = Lang.isFloat("string"); // a = false
answer += a; WMLBrowser.setVar(result,answer); WMLBrowser.refresh();}
extern function isItInt(result) {
var a = Lang.isInt("2000"); // a = true var answer = a;
a = Lang.isInt("9.10"); // a = true,
// parseInt can be used with float 9.10
// It returns value 9, which is
// an integer. answer += ", " + a;
a = Lang.isInt("string"); // a = false answer += ", " + a; WMLBrowser.setVar(result,answer); WMLBrowser.refresh();}
4. Библиотека Lang; функции min, max, minInt, maxInt, random и seed
o функциите min и max връщат съответно по-малкото и по-голямото число от двата си параметъра, които могат да бъдат цели или плаващи; при равенство се връща стойността на първия параметър
o специално внимание изисква сравнението на отрицателни стойности
o резюме
синтаксис min(value1, value2); max(value1, value2)
параметри typeof(value1,2) = Number
стойност на
функцията Number или invalid
var a = Lang.min(40, 50.3); // a = 40 (integer)
примери
var b = Lang.min(40, 35.7); // b = 35.7 (floating) var c = Lang.max(40, 50.3); // c = 50.3 (floating) var d = Lang.max(40, 35.7); // d = 40 (integer)
o функциите minInt и maxInt връщат съответно най-малкото и най-голямото цяло число,
дефинирани за съответния микробраузер
o резюме
синтаксис minInt(); maxInt()
стойност на функцията Integer
примери var a = Lang.minInt(); // a = -2147483648
var a = Lang.maxInt(); // a = 2147483647
o функцията random връща неотрицателна цяла стойност, не по-голяма от зададения параметър и получена в резултат на псевдо-случайна генерация; ако е необходимо и възможно параметърът се конвертира до цяло число с вътрешно извикване на Float.int
o резюме
синтаксис random(value)
Стр. 5 от 25
WAP/WML 9
параметър typeof(value) = Number
стойност на функцията
Integer; 0 (value = 0); invalid (value < 0 | value not а
Number)
примери a = Lang.random(8.2); // a = 0..8
b = Lang.random("bsp"); // b = invalid
o функцията seed инициализира генератора на псевдо-случайни числа със зададения параметър и връща празен низ; ако е необходимо и възможно параметърът се конвертира до цяло число с вътрешно извикване на Float.int; отрицателен или нечислов параметър поражда резултат invalid като инициализацията на генератора остава неопределена
o резюме
синтаксис seed(value)
параметър typeof(value) = Number
стойност на
функцията Integer или invalid
a = Lang.seed(8.2); // a = ""
примери
o пример
b = Lang.seed("bsp"); // b = invalid (генераторът не е променен)
"http://www.wapforum.org/DTD/wml_1.1.xml">
Lang.max result: $(result1)
Lang.min result: $(result2)
Lang.random result: $(result3)
Lang.seed result: $(result4)
WMLScript код във файла ex7-09_04.wmls:
extern function max_mum(result) {
var a = -10;
var b = 20;
var c = -0.5;
var d = 2.5;
var answer;
var e = Lang.max(a,b); // e = 20
answer = e;
e = Lang.max(c,d); // e = 2.5
answer += ", " + e;
e = Lang.max(c,e); // e = 2.5 answer += ", " + e; WMLBrowser.setVar(result, answer); WMLBrowser.refresh();}
Стр. 6 от 25
WAP/WML 9
extern function min_mum(result) {
var a = -10;
var b = 20;
var c = -0.5;
var d = 2.5;
var answer;
var e = Lang.min(a,b); // e = -10
answer = e;
e = Lang.min(c,d); // e = -0.5
answer += ", " + e;
e = Lang.min(d,e); // e = -0.5 answer += ", " + e; WMLBrowser.setVar(result, answer); WMLBrowser.refresh();}
extern function ran_dom(result) {
var rand1 = 10;
var rand2 = 1000;
var answer;
var x = Lang.random(5.1)*rand1; // x = 0, 10, 20, ..., 50
answer += x;
var y = Lang.random(rand2); // y = 0..1000 answer += ", " + y; WMLBrowser.setVar(result,answer); WMLBrowser.refresh();}
extern function c_it(result) { Lang.seed(200); // a = ""
var number = Lang.random(100); // number = 0..100 var answer = "Random seed: " + number; WMLBrowser.setVar(result,answer); WMLBrowser.refresh();}
5. Библиотека Float; функции ceil, floor, int, maxFloat и minFloat
o тази библиотека съдържа функции за обработка на стойности с плаваща запетая но някои от функциите имат и целочислени параметри
o функцията ceil връща най-малкото цяло число, не по-малко от нейния числов параметър
o резюме:
синтаксис ceil(value)
параметър typeof(value) = Number
стойност на
функцията Integer или invalid
var a = Float.ceil(9.13); // a = 10
примери
var b = Float.ceil(9); // b = 9
var c = Float.ceil(-9.53); // c = -9
var d = Float.ceil("bsp"); // d = invalid
o функцията floor връща най-голямото цяло число, не по-голямо от нейния числов параметър
o резюме:
синтаксис floor(value)
параметър typeof(value) = Number
стойност на
функцията Integer или invalid
var a = Float.floor(9.13); // a = 9
примери
var b = Float.floor(9); // b = 9
var c = Float.floor(-9.53); // c = -10
Стр. 7 от 25
Сподели с приятели: |