Chuong 5 - Mang - Chuoi
-
Upload
ngo-khoa-nguyen -
Category
Documents
-
view
17 -
download
0
description
Transcript of Chuong 5 - Mang - Chuoi
2
Mảng – Array • Mảng là tập hợp các phần tử:
• Cùng kiểu dữ liệu kích thước các phần tử bằng nhau.• Sắp xếp liên tục trong bộ nhớ truy xuất trực tiếp thông qua chỉ
số.
• Mảng tĩnh: chiều dài cố định• Mảng động: chiều dài có thể thay đổi tùy ý trong lúc thực
thi.
3
Mảng – Array
10 -9 5 17
-5
A
(0) (1) (2) (3) (4)
Tên mảng
Phần tử của mảng
Chỉ số thứ tự Phần tử của mảng
4
Mảng tĩnh - 1 chiều• Khai báo mảng thông thường(chỉ số phần tử đầu tiên là 0)
Public/Private/Static/Dim <tên mảng>(<chỉ số lớn nhất>) As <Kiểu dữ liệu>
VD:
Dim A(10) As Integer
Dim B(50) As Double
5
Mảng tĩnh - 1 chiều• Khai báo mảng có chỉ số cụ thể
Public/Private/Static/Dim <tên mảng>(<chỉ số đầu> to <chỉ số cuối>) As <kiểu dữ liệu>
VD:
Dim A(2 to 5) As Integer
• Đặt lại chỉ số phần tử đầu tiên của mảng: khai báo trong phần General câu lệnh:
Option Base 1
6
Mảng động• Khai báo:
Public/Private/Static/Dim <tên mảng>() As <Kiểu dữ liệu>
VD:
Dim dynamicArray() as Double
• Sử dụng: cấp phát vùng nhớ cụ thểReDim <tên mảng>(chỉ số lớn nhất)
VD:
ReDim dynamicArray(9)
7
Mảng động• ReDim chỉ có thể xuất hiện trong thủ tục.• Mỗi lần gọi ReDim, tất cả giá trị chứa trong mảng hiện
hành bị mất. VB khởi tạo lại giá trị dữ liệu cho mảng:• Variant – Empty• Số - 0• Chuỗi – “”• Mảng các đối tượng – nothing
8
Mảng động• ReDim Preserve thay đổi kích thước mảng mà không làm
mất dữ liệu.VD:
ReDim Preserve dynamicArray(50) As Double
9
Các thao tác cơ bản trên mảng• Truy xuất mảng
<tên mảng>(<chỉ số>[, <chỉ số>])
VD:
A(2) = 9
MatrixA(2,3)=1
• LBound, UBound: hàm xác nhận chỉ số thấp nhất và cao nhất của một mảng. VD:
LBound(mArray): lấy chỉ số thấp nhất của mảng.
10
Một số vấn đề khác• Nhập giá trị cho mảng 1 chiều từ bàn phím
• Thông qua mảng đối tượng TextBox trên Form• Thông qua hàm InputBox
• In giá trị của mảng 1 chiều ra màn hình• Xuất giá trị của mảng 1 chiều vào trong một mảng đối tượng
TextBox.• Gán các giá trị của các phần tử của mảng 1 chiều vào một biến
chuỗi, hiển thị nội dung biến chuỗi trong TextBox, Label hoặc Msgbox.
11
Một số vấn đề khác
• Khai báo chương trình con có thông số truyền vào kiểu mảngVD:
Private Sub ModifyArray(a() As Integer)
Call ModifyArray(mArray())• Muốn viết hàm trả về là Array phải khai báo một biến kiểu Variant, gán biến đó bằng Array rồi trả về.
12
Mảng đối tượng điều khiển• Với nhiều đối tượng điều khiển cùng loại, có thể định
nghĩa mảng để không phải đặt quá nhiều tên và định nghĩa nhiều thủ tục xử lý sự kiện.
OpNam OpNu
Private sub OpNam_Click() …End sub
Private sub OpNu_Click() …End sub
OpPhai(0) OpPhai(1)
Private sub OpPhai_Click(Index as Integer) …End sub
NuNamNuNam
13
Mảng đối tượng điều khiển• Tạo mảng:
1. Đặt đối tượng muốn tạo mảng lên Forma. Đặt tên ( dùng làm tên mảng)
b. Thiết lập giá trị các thuộc tính
2. Right – click trên đối tượng, chọn lệnh Copy
3. Right – click trên form, chọn lệnh Paste, VB sẽ yêu cầu xác nhận tạo mảng.
14
Mảng đối tượng điều khiển
4. Chọn Yes để định nghĩa mảng và lặp lại các thao tác Paste cho phần tử kế tiếp. Thuộc tính Index của các phần tử mảng có thứ tự tăng dần theo đúng thứ tự được Copy trên Form.
15
Mảng đối tượng điều khiển• Định nghĩa phương thức xử lý sự kiện: nhấp đúp lên một
trong các đối tượng tạo mảng. Thủ tục xử lý sự kiện có dạng
Private Sub <Tên>_<Sự kiện>(Index As Integer)
…
End Sub
16
Mảng đối tượng điều khiển• Duyệt mảng - TH1: chưa xác định chỉ số index của đối
tượng đầu, đối tượng cuối và chỉ số index của các đối tượng liên tục nhau.
For i = txtA.Lbound to txtA.Ubound
‘Lệnh xử lý txtA(i)
Next
17
Mảng đối tượng điều khiển• Duyệt mảng – TH 2: chưa xác định chỉ số index của đối
tượng đầu, đối tượng cuối và chỉ số index của các đối tượng không cần liên tục nhau.
Dim txt As TextBox
For Each txt In TxtA
‘Lệnh xử lý txt
Next
18
Mảng đối tượng điều khiển• Duyệt mảng – TH 3: đã xác định chỉ số index của đối
tượng đầu, đối tượng cuối và chỉ số index của các đối tượng liên tục nhau.
For i=0 to 5
‘Lệnh xử lý TxtA(i)
Next
19
Chuỗi ký tự - String
• String là một tập hợp các ký tự bất kỳ (tối đa là 2 tỷ ký tự) được đặt trong cặp dấu nháy đôi.
• Chỉ số ký tự đầu tiên trong chuỗi là 1
20
Chuỗi ký tự - String• Khai báo chuỗi có chiều dài thay đổi (tối đa 2 tỷ ký tự)
Dim <Biến> As String
VD:
Dim s As String• Khai báo chuỗi có chiều dài cố định (tối đa 65535 ký tự)
Dim <biến> As String * Chiều dài
VD:
Dim ht As String * 25
21
So sánh chuỗi• Toán tử like: trả về True/False
* : đại diện cho nhiều ký tự
? : đại diện cho một ký tự
#: đại diện cho một chữ số
[c1-c2]: ký tự thuộc đoạn từ c1 – c2
VD:
“abc” like “a*c” True
“abc” like “a?c” True
“abc” like “a#c” False
“abc” like “a[a-f]c” True
“abc” like “a[!a-f]c” False
22
So sánh chuỗi• Khai báo trong phần General câu lệnh
Option Compare type• type:
• Binary (mặc định): A < B < E < Z < a < b < e < z < À < Ê < Ø < à < ê < ø • Text: (A=a) < ( À=à) < (B=b) < (E=e) < (Ê=ê) < (Z=z) < (Ø=ø) • Database
23
Các hàm xử lý chuỗi• Format(s,format): định dạng chuỗi s theo chuỗi định dạng
format.• Ký tự sử dụng trong chuỗi định dạng:
• @: thay thế một ký tự hoặc khoảng trắng.• &: thay thế một ký tự hoặc không có ký tự nào.
VD:
Format(“1234.567”, “Currency”) $1,234.57
Format(“abcde”, “@@@@@@”) “ abcde”
24
Các hàm xử lý chuỗi• Len(s): lấy chiều dài chuỗiVD: len(“abcd”) = 4
• Ucase(s): đổi chuỗi thường thành chuỗi in hoaVD: Ucase(“abcd”) “ABCD”
• Lcase(s): đổi chuỗi in hoa thành chuỗi thườngVD: Lcase(“ABCD”) “abcd”
25
Các hàm xử lý chuỗi• Ltrim(s): cắt khoảng trắng bên trái chuỗi
VD: Ltrim(“ Anh”) Anh
• Rtrim(s): cắt khoảng trắng bên phải chuỗiVD: Rtrim(“Anh “) Anh
• Trim(s): cắt khoảng trắng hai bên chuỗiVd: Trim(“ Anh “) “Anh”
26
Các hàm xử lý chuỗi• Left(s,n): trả về n ký tự đầu tiên bên trái chuỗiVD: Left(“Visual Basic”,6) “Visual”
• Right(s,n): trả về n ký tự đầu tiên bên phải chuỗiVD: Right(“Visual Basic”,5) “Basic”
• Mid(s,i,n): trả về n ký tự trong chuỗi bắt đầu từ vị trí iVD: Mid(“Visual Basic”,8,3) “Bas”
27
Các hàm xử lý chuỗi• Space(n): trả về chuỗi có n khoảng trắngVD: Space(5) “ “
• String(n,c): trả về chuỗi có n ký tự cVD: String(4,”x”) “xxxx”
28
Các hàm xử lý chuỗi• Instr([i,]s1,s2[,n]): tìm vị trí xuất hiện đầu tiên của chuỗi s2
trong chuỗi s1. Nếu không có trả về 0.• i: vị trí bắt đầu xét (tùy chọn)• s1: chuỗi cần dò tìm• s2: chuỗi cần tìm• n: cách so sánh (0 – từng ký tự, 1 – không phân biệt chữ thường,
chữ hoa)
Vd: s = “Visual Basic”
Instr(s,”a”) = 5
Instr(6,s,”a”)=9
29
Các hàm xử lý chuỗi• Replace(s,s1,s2[,i[,n]]): tìm và thay thế s1 trong s bởi s2.
• i: vị trí bắt đầu tìm(mặc định là 1 - tìm từ đầu)• n: số lần thay thế (mặc định là 1 – thay thế tất cả)
VD:
s = “tôi đi học với bạn tôi”
Replace(s,”tôi”,”anh”) “anh đi học với bạn anh”