[Ngôn ngữ Avenue #2]Cấu trúc ngôn ngữ Avenue

0
3208

1. CÁC KIỂU ĐỐI TƯỢNG DỮ LIỆU TRONG AVENUE

Kiểu đối tượng số

Avenue gom chung số nguyên, thực vào một lớp chung để quản lý gọi là lớp số học. Avenue hỗ trợ khái niệm số Null, Null là một đối tượng kiểu số và có giá trị là Null. Giá trị Null sinh ra khi ta thực hiện một tác vụ số học không đúng.
Ví dụ: -4.sqrt sẽ trả về một giá trị Null
Giá trị Null tham gia trong biểu thức thì biểu thức trả về kết quả là Null
Ví dụ: 2.5*3 + <Null Number>

Định dạng số

Lớp số học, Script và đối tượng số trong Avenue cung cấp thuộc tính Format cho phép ta điều khiển đầu ra của chuỗi dạng số. Avenue dùng chữ d để quy ước số lượng chữ số trong chuỗi ra.
Ví dụ:
aNumber.SetFormat(“d.dd” ): Định dạng chuỗi ra cho cho đối tượng số aNumber ít nhất một chữ số bên trái và chỉ có đúng hai chữ số bên phải.
Number.SetDefFormat(“d.dd”): Định dạng chuỗi số ra cho tất cả các đối tượng số trong project có dạng “d.dd”
aScript.SetNumberFormat(“d.dd”): Định dạng chuỗi số ra cho tất cả các đối tượng số trong script có dạng “d.dd”
Khi thực thi, đối tượng số kiểm tra định dạng của chính nó, sau đó tới script chứa nó, project chứa nó, cuối cùng là dạng của hệ thống.
Để bỏ định dạng số cho một đối tượng số ta truyền vào chuỗi format là rỗng
Ví dụ
aNumber.SetFormat(“”)

Một số yêu cầu trên lớp số học được tóm tắt trong bảng sau.

Ví dụ:
1234.56.AsString: Kết quả trả về là chuỗi “1234.56”
Round(123.34): Kết quả trả về là 123
Sqrt(9): Kết quả trả về là 3
Kiểu đối tượng String
Avenue quản lý các chuỗi thông qua lớp String. Một chuỗi được đặt trong dấu “”.
Ví dụ: “abc”
“ mua xuan lai den”
Một chuỗi cũng có thể có ký tự đặc biệt như ký tự xuống hàng ‘nl’, dấu tab ‘tab’, ‘cr’.
Ví dụ: “ Hello world “ + nl + “ have a nice day”
Đếm ký tự trong chuỗi
Ta có thể dùng yêu cầu Count để xác định số lượng ký tự trong một chuỗi
Ví dụ:
T=”hello world”.Count: T sẽ có giá trị là 11
Phép kết nỗi chuỗi
Để nối hai chuỗi ta dùng tác vụ + hay ++
Ví dụ: st = “mua xuan” + “ lai den” ‘ kết quả cho ta chuỗi st là “mua xuan lai den”
Phép so sánh chuỗi
Ta có thể dùng các toán tử =, <, >, <=, >= để so sánh hai chuỗi. Trong Avenue không phân biệt chữ hoa và chữ thường.
Ví dụ: if (“no” = “NO”) then
‘ sẽ thực hiện đoạn lệnh này
end
Phát biểu if ( điều kiện) then
End
Là một phát biểu có điều kiện trong Avenue, phát biểu này ta sẽ được tìm hiểu kỹ trong phần các phát biểu trong Avenue.
Yêu cầu Contains cho phép ta kiểm tra một chuỗi có nằm trong chuỗi cho trước
Ví dụ:
T=”abc cd ef”.Contains(“cd”): T sẽ trả về true vì chuỗi cd là chuỗi con của “abc cd ef”
Phép chuyển đổi chuỗi
Yêu cầu AsNumber cho phép ta chuyển một chuỗi sang số, để thực hiện được yêu cầu này ta phải thực hiện yêu cầu IsNumber trước nó, chỉ khi yêu cầu IsNumber trả về true thì yêu cầu AsNumber mới được thực hiện.
Ví dụ:
S=”123.34”
If (S.IsNumber) then
T=S.AsNumber ‘ kết quả T=123.34
End
Yêu cầu AsList trả về danh sách các từ trong một chuỗi.
Ví dụ:
S=” This is the world”
alist=S.AsList ‘ kết quả S={“This”,”is”,”the”,”world”}
Các phép thực thi trên chuỗi
Yêu cầu st.Left(n) trả về một chuỗi có số lượng ký tự là n ký tự bên trái chuỗi st.
Yêu cầu st.Right(n) trả về một chuỗi có số lượng là n ký tự bên phải chuỗi st.
Yêu cầu st.Middle(Offset,nCh) trả về một chuỗi có nCh ký tự bắt đầu từ vị trí Offset.
Yêu cầu st.UCase, st.LCase sẽ chuyển chuỗi st sang dạng in hoa hay in thường
Ví dụ:
T=”hello world”.Left(5) ‘ T là “hello”
T=”hello world”.UCase ‘ T là “HELLO WORLD”
Kiểu đối tượng Pattern
Patten là một String có dùng thêm các ký tự rút ngắn để biễu diễn, ký tự * và ký tự ?. ký tự * biểu diễn cho không hay nhiều ký tự, ký tự ? biểu diễn cho một ký tự.
Ví dụ:
P=”Yes*”.AsPattern
S=”Yes, I say”
Phép so sánh P=S sẽ cho kết quả là true
Dùng dấu ‘\’ nếu ta chỉ biểu diễn cho một ký tự ‘*’
Ví dụ
“\*” ‘chuỗi này có một dấu “*”
P=”\*”.AsPattern
S1=”*”
S2=”a”
Phép so sánh P=S1 có giá trị là true
Phép so sánh P=S2 có giá trị là false
Kiểu đối tượng luận lý
Lớp luận lý Boolean chỉ có hai thực thể thuộc về nó: true và false

Một số yêu cầu trên lớp Boolean được tóm tắt trong bảng sau.

Ví dụ:
T=true.Astring ‘ T =”true”
P=True
S=False
T=P And S ‘ T=false
T=P Or S ‘ T=true
Kiểu đối tượng Nil
Lớp Nil chỉ có một thực thể duy nhất thuộc về nó đó là đối tượng nil.
Trong Avenue ta hay dùng giá trị nil để chỉ một số yêu cầu không trả về giá trị nào cả.
Ví dụ:
t=av.FindDoc(“View1”)
if (t=nil) then
msgbox.info(“khong tim thay doi tuong khung nhin View1”,”Thong bao”)
end
Đoạn chương trình trên sẽ in ra thông điệp “khong tim thay doi tuong khung nhin View1” nếu trong project hiện thời của ta không có khung nhìn có tên là View1.
av là đối tượng của ứng dụng ArcView, đối tượng này ta sẽ tìm hiểu trong phần một số lớp và đối tượng của Avenue.
Msgbox là lớp cho phép ta thực hiện hiển thị các thông điệp lên màn hình, lớp này ta sẽ tìm hiểu trong phần một số lớp và đối tượng của Avenue
Danh sách
Danh sách là tập hợp có thứ tự của các đối tượng chứa trong nó. Các đối tượng chứa trong sanh sách có thể ở bất kỳ dạng nào. Mỗi đối tượng trong danh sách được gọi là một phần tử, vị trí của phần tử được xác định thông qua chỉ số.
Chỉ số đầu tiên của danh sách luôn luôn là 0. Chỉ số cuối cùng của danh sách là List.Count -1.
Ví dụ:
alist={1, 5, ”a”, ”hello world”} ‘ danh sách alist có 4 phần tử
blist={6 , alist, “nice” } ‘ danh sách blist có 3 phần tử mà phần tử thứ hai là một danh sách.
f = alist.Get(0) ‘ lấy phần tử đầu tiên của danh sách alist, f có giá trị là 1
l = alist.Get(alist.Count-1) ‘ lấy phần tử cuối cùng của danh sách alist, l có giá trị là “hello world”
Để duyệt từng phần tử trong danh sách ta hay dùng vòng lặp for
Ví dụ:
For each i in alist
Msgbox.info(i.AsString, “Phan tu”)
End
hoặc
For i=0 to alist.Count-1
Msgbox.info(alist.Get(i).AsString,”Phan tu”)
End
Phát biểu for là một dạng phát biểu lặp trong Avenue, ta sẽ tìm hiểu phát biểu này trong phần các phát biểu của Avenue.
Ta cũng có thể thực hiện các phép +, – trên danh sách
Ví dụ:
alist={1 ,2 , 4, 5}
blist={3, 4, 6, 7}
clist=alist + blist ‘clist={1,2,4,5,3,4,6,7}
dlist=alist- blist ‘dlist={1 ,2 ,5}
Ví dụ sau thực hiện việc in ra các phần tử trong một danh sách
alist={“pen”, “ruler”, “ink”, “table”, “chair”}
for each i in alist
msgbox.info(i,”Phan tu”)
end

Một số yêu cầu trên danh sách được tóm tắt trong bảng sau

Stack
Giống như danh sách, Stack cũng là tập hợp các đối tượng có thứ tự nhưng Stack có điểm khác biệt là cách thức truy xuất các phần tử. Với Stack ta truy xuất các phần tử theo thứ tự Last in, First out (LILO), tức là phần tử vào sau cùng được lấy ra đầu tiên.
Lớp Stack hỗ trợ hai yêu cầu chính đó là push và pop, push dùng để cho một phần tử vào Stack, pop dùng để lấy một phần tử ra khỏi Stack.
Dictionary
Dictionary là một loại tập hợp mà ta truy xuất vào các phần tử của nó không theo thứ tự, khác với danh sách dùng chỉ số là kiểu số để truy xuất vào một phần tử, Dictionary dùng khoá (key) có kiểu bất kỳ để xác định một phần tử trong nó.
Khi khởi tạo một Dictionary, ta cần xác định kích thước ban đầu cho nó, trong lúc chạy ta có thể thêm vào Dictionary số lượng phần tử lớn hơn kích thước của nó, tuy nhiên điều này sẽ làm tốn thời gian để truy xuất một phần tử.

Các yêu cầu của lớp Dictionary

Ví dụ:
d = Dictionary.Make(11) ‘ tạo Dictionary có kích thước là 11 d.Add(“List 1”, {“a”, “b”, “d”}) ‘ Thêm vào d một danh sách có khoá là “List 1” d.Add(“List 2”, {“What”, “Is”, “This?”}) ‘ Thêm vào d một danh sách có khoá là “List 2” d.Add(“List 3”, {“Goodnight”, “Night”, “John”, “Boy”}) ‘ Thêm vào d một danh sách có khoá là “List 3”
aList = d.Get(“List 1”) ‘ aList ={“a”,”b”,”d”}
Bitmap
Một bitmap là một tập hợp có thứ tự và có kích thước cố định của các giá trị luận lý được gọi là các bit. Giá trị mỗi bit cho ta biết bit đó được thiết lập hay không (nghĩa là true hay là false).
Bitmap thường được sử dụng để lựa chọn các record trong một bảng, với mỗi record được chọn bit tương ứng với record này được thiết lập ở giá trị true.
Bitmap còn được sử dụng để điều khiển cách hiển thị của theme, chẳng hạn trong lớp đường giao thông ta chỉ muốn hiển thị các con đường cao tốc, lúc đó ta thiết lập một bitmap để chỉ chọn các con đường cao tốc trong lớp đường giao thông.

Một số yêu cầu của lớp bitmap

Ví dụ:
abitmap=BitMap.make(5) ‘ tạo ra một bitmap có 5 bit
abitmap.Set(3) ‘ thiết lập bit ở vị trí thứ 3 là true
t=abitmap.Get(3) ‘t có giá trị là true vì bit 3 được thiết lập

2. CÁC TOÁN TỬ TRONG AVENUE

Toán tử số học
Trong Avenue các toán tử +, -, *, /, mod, div đều được xem là các yêu cầu.
Khi ta viết 3 + 4 có nghĩa là ta đã gửi một yêu cầu + tới đối tượng 3 yêu cầu đối tượng này thực hiện phép cộng với đối tượng 4.
Trong Avenue thứ tự ưu tiên của các toán tử là như nhau. Trong một biểu thức trình tự thực hiện từ trái qua phải.
Ví dụ:
3 + 4* 2 kết quả sẽ cho ta là 14 thay vì 11 như các ngôn ngữ khác.
3 + (4*2) cho ta kết quả là 11
Toán tử logic (luận lý)
Các toán tử Logic bao gồm các toán tử Not, And, Or, Xor giá trị trả về của các phép toán này chỉ là true hoặc false.
Bảng kết quả của các phép toán như sau:
T: true
F: false

3. BIẾN VÀ TẦM VỰC CỦA BIẾN

Tên biến trong Avenue có thể cả ký tự chữ và ký tự số nhưng không được có các ký tự đặc biệt.
Ví dụ: a, b, myList, myView, _aDoc …
Trong Avenue có 2 loại biến, biến cục bộ và biến toàn cục.
Biến cục bộ là biến chỉ có tầm vực hoạt động trong một script.
Biến toàn cục là biến có tầm vực hoạt động trong tất cả các script, tên biến này được viết bắt đầu bằng đấu _, ví dụ: _alist, _aname.
Khi ta không muốn lưu lại giá trị của các biến toàn cục nữa ta gọi yêu cầu ClearGlobals để xoá đi giá trị của các biến toàn cục.
Ví dụ:
av.ClearGlobals
Trong Avenue ta không cần phải khai báo biến, một biến khi được gán cho một đối tượng nào thì Avenue tự động hiểu biến đó có kiểu là kiểu của đối tượng được gán. Ví dụ:
a=nil ‘ biến a có kiểu là nil
a=List.make ‘ biến a bây giờ có kiểu là List vì a được gán cho một đối tượng danh sách mới tạo.

4. CÁC PHÁT BIỂU

Phát biểu gán
Phát biểu gán có dạng: biến = đối tượng
Một biến được gán cho một đối tượng nào đó.
Ví dụ:
a=5 ‘ gán cho biến a giá trị 5
myView=av.FindDoc(“View1”) ‘ gán đối tượng khung nhìn View1 cho biến myView.
Phát biểu điều kiện
Phát biểu điều kiện có ba dạng
Dạng 1
if (biểu thức luận lý 1) then
khối phát biểu
end
Ví dụ:
if ( i<5) then
i=i+1
end
Dạng 2
if (biểu thức luận lý 1) then
khối phát biểu 1
else
khối phát biểu 2
end
Ví dụ:
if (i<5) then
i=i+1
else
i=i+2
end
Dạng 3
if (biểu thức luận lý 1) then
khối phát biểu 1
elseif (biểu thức luận lý 2) then
khối phát biểu 2
else
khối phát biểu 3
end
Ví dụ:
if (i<5) then
i=i+1
elseif(i<10) then
i=i+2
else
i=i +3
end
Phát biểu lặp
Phát biểu lặp có 2 dạng
Lặp có điều kiện
while (Biểu thức luận lý)
khối phát biểu
end
Pháp biểu while thực thi khối phát biểu lặp đi lặp lại nếu biểu thức luận lý là true, khối phát biểu có thể được thực thi 0 lần, 1 lần hay nhiều lần.
Với phát biểu while ta phải xác định điều kiện dừng, phát biểu while dừng khi giá trị của biểu thức luận lý là false, nếu không có điều kiện dừng vòng lặp sẽ bị lặp vô tận, lúc đó để thoát khỏi vòng lặp chỉ bằng cách là thoát khỏi ArcView.
Ví dụ
i=0
while (i<100)
i = i+1
end
Trường hợp này vòng lặp while sẽ thực thi 99 lần.
i=1
while (i >0)
i=i+1
end
Trường hợp này vòng lặp while sẽ lặp vô tận do biểu thức luận lý (i>0) luôn trả về giá trị true, để thoát khỏi vòng lặp ta phải đóng ArcView.
Lặp không có điều kiện
for each ele in Col
khối phát biểu
end
Vòng lặp for duyệt qua các phần tử trong tập hợp Col, tập hợp Col có thể là một khoảng nhảy, một danh sách, một bitmap, một dictionary hay một tập lớp bất kỳ. Nếu các phần tử có thứ tự, thì vòng for duyệt theo thứ tự đó, ngược lại for duyệt theo một thứ tự bất kỳ.
Ví dụ: ta phải thêm alist=(“1,2,3,4”) cái thêm này tự làm
for each i in 0..10 by 2
msgbox.info(i.AsString,””)
end
for each i in alist
msgbox.info(i.AsString,””)
end
Điều khiển bên trong vòng lặp
Avenue cung cấp hai phát biểu Break và Continue cho phép ta điều khiển bên trong vòng lặp.
Phát biểu Break cho phép thoát ra khỏi vòng lặp for hay vòng lặp while.
for each num in 1..10 if (num = 5) then break end msgbox.info(“Num is”++num.asString,”ArcView Example”) end msgbox.info( “Complete”, “”)
( chỗ này là thêm vào )
Ví dụ
i=0
while (true)
if (i>5) then
Break
end
i=i+1
end
Vòng lặp while sẽ kết thúc ngay khi i có giá trị là 5.
Phát biểu Continue bỏ qua vòng lặp hiện thời và chuyển sang vòng lặp kế tiếp.
Ví dụ:
for each i in 1..100
if ((i mod 5)=0) then
continue
end
msgbox.info(“i khong chia het cho 5”, “thong bao”)
end

5. ĐIỀU KHIỂN GIỮA CÁC SCRIPT

Avenue cung cấp hai phát biểu cho ta điều khiển giữa các script: Phát biểu Return và phát biểu Exit
Phát biểu return
Phát biểu return có dạng return <anObject> . Phát biểu return trả về một đối tượng cho Script gọi. Phát biểu return luôn có đối số.
Ví dụ
‘ Script gọi
re=av.run(“getAction”,”Xanh”)
msgbox.info(re, “chi dan chay xe”)
‘ script getAction
if (self=”do”) then
return “dung”
elseif (self=”xanh”) then
return “di”
else
return “coi chung”
end
Phát biểu exit
Phát biểu exit kết thúc sự thực thi của script đang chạy.
Ví dụ
theView=av.getActiveDoc
for each t in theView.GetThemes
if (t.IsVisible=false) then
exit
end
end

6. ĐỐI TƯỢNG AV VÀ TỪ KHOÁ SELF

Đối tượng av
Khi ta mở ArcView, ta đã tạo một đối tượng ứng dụng ArcView, đối tượng này chứa một project, trong project này chứa tất cả các đối tượng mà ta có thể làm việc với chúng.
Trong phân cấp lớp của ArcView, đối tượng ứng dụng là đối tượng ở phân lớp cao nhất, đối tượng này gọi là av.
Ví dụ:
Lấy về đối tượng project hiện thời
theProject=av.getProject
Lấy về cửa sổ làm việc hiện hành
theView=av.getActiveDoc
av còn dùng để gọi một script trong script khác.
Có 2 cách gọi script dùng av.
Dùng av.run
Ví dụ:
av.run(“myscript”,{}) ‘ gọi script có tên myscript cung cấp đối số là danh sách rỗng
av.run(“ascript”,{1,5,7}) ‘ gọi script có tên script với đối số là danh sách {1,5,7}
Dùng av.delayedRun
Để gọi một Script sau một khoảng thời gian nào đó ta dùng av.delayedRun
Ví dụ: script có tên là Annoy
status = MsgBox.YesNo( “Is this annoying?”, “ANNOY”, FALSE )
if (NOT status) then
av.DelayedRun( “annoy”, “”, 10 ) ‘ cứ 10 giây lại gọi chính nó
end

Với script này cứ 10 giây lại hiển thị thông điệp như sau

Nếu ta kích vào nút “No” thì 10 giây tiếp theo ta lại thấy thông điệp này hiển thị lên, nếu ta kích vào nút “Yes” thì đoạn script annoy kết thúc thực thi.
Từ khoá self
Self thường dùng để tham khảo tới đối tượng gây ra sự kiện chạy script, khi nhấn chuột vào một button thì ta có thể dùng self để tham khảo đến button này.
Self còn dùng để lấy về tham số truyền từ script khác gọi nó.
Ví dụ:
‘ script1 có nội dung như sau
‘ tinh tong cua 2 so a, b
a=10
b=20
tong=av.run(“script2”,{a,b})
‘ script2 có nội dung như sau
a=self.get(0)
b=self.get(1)
c=a+b
return c
Khi chạy script1, giá trị của tổng trả về là 30

7. LỚP MSGBOX VÀ DIALOG

Lớp MsgBox
Lớp Msgbox cung cấp các yêu cầu cho phép hiển thị các hộp thoại lên màn hình, hộp thoại có thể là một thông điệp, một câu cảnh báo, một hộp thoại nhập chuỗi, hộp thoại chọn các phần tử …
Để hiển thị một thông điệp lên màn hình. Ta dùng Msgbox.info(msg,title), trong đó msg là thông điệp ta cần hiển thị, title là tiêu đề của hộp thoại
Ví dụ:
Msgbox.info(“Hello world”, “Thong bao”)

Hộp thoại sẽ xuất hiện như sau

Để hiển thị một banner lên màn hình, ta dùng hộp thoại Msgbox.banner( anImageFileName, duration, title ), trong đó anImageFileName là đường dẫn tới file hình ảnh cần hiển thị có dạng .tif, .im, .rs, .xbm, .bmp, and .gif, duration là thời gian hiển thị tính bằng giây, title là tiêu đề của hộp thoại.
Ví dụ:
Msgbox.Banner(“c: \GISLogof.GIF”.AsFileName,5,”Logo”)

Hộp thoại xuất hiện như sau trong vòng 5 giây

Để hiển thị hộp thoại có 2 nút Yes và No, ta dùng hộp thoại Msgbox.YesNo ( aMsg, aTitle, defaultIsYes ), trong đó aMsg là thông điệp của hộp thoại, aTitle là tiêu đề của hộp thoại, defaultIsYes là true thì button yes được chọn.
Ví dụ:
a=Msgbox.YesNo(“Chon Yes hay No”, “Yes & No”, true)

a có giá trị là true nếu ta click vào nút Yes, false nếu ta click vào nút No

Để hiển thị hộp thoại cho phép người sử dụng chọn một phần tử trong danh sách, ta dùng hộp thoại Msgbox.ChoiceAsString(alist,aMsg,aTitle), trong đó alist là danh sách các phần tử, aMsg là thông điệp của hộp thoại, aTitle là tiêu đề của hộp thoại.
Ví dụ:
alist= {“a”,”b”,”c”,”d”}

a= Msgbox.ChoiceAsString(alist,”Chon mot phan tu”,”Chon”)

a trả về tên của phần tử trong danh sách được chọn nếu ta click vào nút OK, ngược lại a có giá trị là nil.
Ngoài ra còn một số các hộp thoại thông điệp sau.

Dialog
Dialog chọn file: FileDialog
Dialog chọn file cung cấp ta hộp thoại cho phép chọn một file trên ỗ đĩa.
Để hiển thị hộp thoại chọn File ta viết
f =FileName.Show ( aPattern, aPatternLabel, FileWinTitle )
Trong đó aPattern là một chuỗi chỉ dạng mở rộng của file cần mở ví dụ “*.ave”, “*.gif”
aPatternLabel chỉ tên của loại file đó
FileWinTitle là tiêu đề của hộp thoại
Để tạo một file mới ta viết
FileDialog.Put (defaultFileName, aPattern, FileWinTitle)
Trong đó:
defaultFileName: tên file cần tạo
aPattern: chuỗi chỉ đuôi mở rộng của file cần tạo
FileWinTitle: tiêu đề của hộp thoại
Ví dụ:
Mở một file avenue, gán file này vào f
f=FileDialog.Show ( “*.ave”,”Avenue”,”Mo file” )
if (f<> nil) then
msgbox.info(f.AsString,”Thong bao”)
end
Tạo mới một file
f=FileDialog.Put ( “*.ave”.AsFileName,”Avenue”,”Tao file” )
if (f<> nil) then
msgbox.info(f.AsString,”Thong bao”)
end

Một số yêu cầu của FileDialog

Khái niệm Avenue là gì ?

8. VÍ DỤ

Ví dụ 1:
Viết script tính tổng của các phần tử trong một danh sách gồm các đối tượng kiểu số.
Hướng dẫn:
‘ script tinhtong
alist={1,3,5,6,3,2,25,30}
tong=0
for each i in alist
tong=tong + i
end
msgbox.info(“tong cac phan tu trong danh sach “ + tong.AsString, “Tong”)
Ví dụ 2:
Viết script tìm số lớn nhất của 3 số
Hướng dẫn:
‘ script timmax
a=4
b=5
c=7
m=a
if ((a>=b) and (a>=c)) then
m =a
elseif ((b>=a) and (b>=c)) then
m=b
elseif ((c>=a) and (c>=b)) then
m=c
end
( cái này chỉnh sửa oài mới đúng )
a=4
b=5
c=7
m=a
if ((a>=b) and (a>=c)) then
m =a
elseif ((b>=a) and (b>=c)) then
lon=b
elseif ((c>=a) and (c>=b)) then
m=c
end
msgbox.info(“phan tu lon nhat trong danh sach ” + m.AsString, “lon nhat”)
Ví dụ 3:
Cho một danh sách bất kỳ, tìm các phần tử có kiểu số. Ví dụ: alist={123, 45, “cd”, “ef”, 6,”55”}
blist={123,45,6}
Hướng dẫn:
alist={“123”,45,”cd”,”ef”,”6”}
blist={}
for each i in alist
if (i.getClass.getClassName=”Number”) then
blist.add(i)
end
end
( chưa làm đươc )
Yêu cầu getClass lấy về lớp của một đối tượng, yêu cầu getClassName trả về tên của một lớp.
Ví dụ 4:
Viết script nhập vào một chuỗi và đếm các chữ số trong chuỗi. Ví dụ: st=”co non 123 xanh ron 22 chan troi 89 canh le 671 trang diem 45 mot vai 609 bong hoa ”, thì số lượng số 0 là 1 số, số lượng số 1 là 2 số, …
Hướng dẫn:
st=msgbox.input(“Nhap vao mot chuoi”,”Nhap chuoi”,””)
sokhong = 0
somot = 0
sohai = 0
soba=0
sobon=0
sonam=0
sosau=0
sobay=0
sotam=0
sochin=0
i=0
while (i<st.count)
ch= st.Middle(i,1)
if (ch=”0″) then
sokhong=sokhong + 1
elseif (ch=”1″) then
somot=somot + 1
elseif (ch=”2″) then
sohai=sohai + 1
elseif (ch=”3″) then
soba=soba + 1
elseif (ch=”4″) then
sobon=sobon + 1
elseif (ch=”5″) then
sonam=sonam + 1
elseif (ch=”6″) then
sosau= sosau + 1
elseif (ch=”7″) then
sobay=sobay + 1
elseif (ch=”8″) then
sotam=sotam + 1
elseif (ch=”9″) then
sochin=sochin + 1
end
i = i+1
end
Bài tập phần 3
Bài tập 1:
Viết script tìm số lớn nhất của một danh sách các phần tử kiểu số.
Bài tập 2:
Viết script sắp xếp tăng dần các phần tử kiểu số trong một danh sách (các phần tử trong danh sách kiểu số).
Bài tập 3:
Viết script dùng Msgbox.input nhập vào n phần tử, sau đó in ra message giá trị trung bình của n phần tử này.
Bài tập 4:
Viết Script đổi một chuỗi có các chữ cái đầu thành chữ hoa
VD: truong dai hoc bach khoa
sẽ được đổi thành Truong Dai Hoc Bach Khoa
Bài tập 5:
Viết script giải phương trình bậc 2
Bài tập 6:
Viết script tính phương sai của một tập điểm.

Nguồn:”Bài giảng Lập trình Avenue – GV Nguyễn Văn Xanh – Đại học công nghệ thông tin”

Previous article[Ngôn ngữ Avenue #1] Giới thiệu ngôn ngữ Avenue
Next article[Ngôn ngữ Avenue #3] Tạo ứng dụng tùy biến

LEAVE A REPLY

Please enter your comment!
Please enter your name here

Website này sử dụng Akismet để hạn chế spam. Tìm hiểu bình luận của bạn được duyệt như thế nào.