Visual Basic 6.0
Nguyễn Đăng Quang
Chương 4
Các cấu trúc điều khiển
Cấu trúc IF
Dạng 1 (một dòng)
if <Điều kiện đúng> then <Lệnh>
(Chỉ có một lệnh viết sau then)
Dạng 2 (nhiều dòng)
if <Điều kiện đúng> then
Max = a
If Max < b then max = b
<Lệnh>
End if
(Có nhiều lệnh viết sau then)
Nguyễn Đăng Quang UTE-HCM 2005
Cấu trúc IF…
Dạng 3
if <ĐK 1> then
<Lệnh 1>
Elseif <ĐK 2> then
<Lệnh 2>
…
Else
<Lệnh>
End if
If a > b then
Max = a
Else
Max = b
End if
Nguyễn Đăng Quang UTE-HCM 2005
Cấu trúc Select case
Dạng:
Select case <trị>
Case <trị 1>
<lệnh 1>
Case <trị 2>
<lệnh 2>
…
Case else
<lệnh n>
End select
Select Case Weekday(nDay)
Case 1
VnDay = “Chủ nhật”
Case 2
VnDay = “Thứ hai”
Case 3
VnDay = “Thứ ba”
Case 4
VnDay = “Thứ tư”
Case 5
VnDay = “Thứ năm”
Case 6
VnDay = “Thứ sáu”
Case 7
VnDay = “Thứ bảy”
End select
Nguyễn Đăng Quang UTE-HCM 2005
Lệnh lặp For..Next
For <biến> = <tđ> to <tc> [ step <b> ]
<lệnh>
Next <Biến>
<lệnh> được thực hiện từ <trị đầu> đến <trị cuối>,
giá trị của <biến> được thay đổi theo <bước tăng>
S=0
For i = 1 to 10
s=s+i
Next i
S=0
For i = 1 to 10 step 2
s=s+i
Next i
Nguyễn Đăng Quang UTE-HCM 2005
Kết thúc sớm lệnh lặp FOR
S=0
For i = 1 to 10
s=s+i
Next i
S=0
For i = 1 to 10
s=s+i
If i = 5 then exit for
Next i
Lặp 10 lần
Phát biểu exit for
kết thúc sớm lệnh
lặp For
Nguyễn Đăng Quang UTE-HCM 2005
Lệnh lặp Do..Loop
Do while <Điều kiện>
<Lệnh>
Loop
Các lệnh trong vòng lặp bắt đầu được thực
hiện nếu điều kiện đúng và lặp lại cho đến khi
nào điều kiện sai
i=1
Do while i <= 10
StrS = strS & “a”
i = i +1
Loop
Nguyễn Đăng Quang UTE-HCM 2005
Lệnh lặp Do Loop Until
Do
<Lệnh>
Loop Until <Điều kiện>
Các lệnh trong vòng lặp được thực hiện cho
đến khi nào điều kiện đúng
i=1
Do
StrS = strS & “a”
i = i +1
Loop Until i > 10
Nguyễn Đăng Quang UTE-HCM 2005
Chương trình con
Có hai loại chương trình con trong Visual
Basic, đó là
Sub (thủ tục)
và
function (hàm)
Nguyễn Đăng Quang UTE-HCM 2005
Chương trình con Sub
Có hai loại
Thủ tục tổng quát do người lập trình dịnh
nghĩa và được kích hoạt bằng lệnh gọi.
Thủ tục xử lý sự kiện được khai báo tự động
bởi VB và được kích hoạt khi có một sự kiện
tác động lên form hoặc đối tượng điều khiển
trên form.
Nguyễn Đăng Quang UTE-HCM 2005
Thủ tục tổng quát
Khai báo
Private/Public Sub <Tên>(<tham số>)
<Lệnh>
End sub
Private sub Tinh()
lblTong.Caption = val(txtSo1.Text)+val(txtSo2.Text)
End sub
Private sub Tinh(so1 as Integer, so2 as Integer)
lblTong.Caption =so1+so2
End sub
Nguyễn Đăng Quang UTE-HCM 2005
Thủ tục xử lý sự kiện
Được khai báo tự động bởi VB
Tên có dạng <đối tượng>_<sự kiện>
Private sub Tinh(a as Integer, b as Integer)
lblTong.Caption = a+b
End sub
Private sub CmdTinh_Click()
so1 = val(txtSo1.Text)
so2 = val(txtSo2.Text)
Tinh so1, so2
End sub
Nguyễn Đăng Quang UTE-HCM 2005
Chương trình con function
Loại chương trình con luôn luôn trả về giá trị
thông qua tên của nó
Private function Tinh(so1 as Integer, so2 as Integer)
Tinh = so1+so2
End function
Private sub CmdTinh_Click()
so1 = val(txtSo1.Text)
so2 = val(txtSo2.Text)
lblTong.Caption = Tinh(so1, so2)
End sub
as
Integer
Nguyễn Đăng Quang UTE-HCM 2005
Khai báo
Chương trình con khai báo với từ khoá
Private chỉ có ý nghĩa trong phạm vi khai
báo.
Chương trình con khai báo với từ khoá Public
trong form có thể sử dụng trong form đó và
trong các form khác .
Chương trình con khai báo với từ khoá Public
trong module có thể sử dụng trong toàn bộ
chương trình.
Nguyễn Đăng Quang UTE-HCM 2005
Chương 5
Mảng – chuỗi
Đặt vấn đề
Tính tổng 3 biến số nguyên:
Khai báo
Dim a as integer, b as integer, c as integer, t as integer
t=a+b+c
a
10
b
+
-9
c
+
23
t
24
Nguyễn Đăng Quang UTE-HCM 2005
Tính tổng 10 số nguyên
Không thể khai báo
Dim a as integer, b as integer… t as integer
Và không thể tính:
t = a + b +…
Biến đổi cách tính tổng thành:
T=0
T = t+a
T = t+b
…
t
a
b
c
…
t
t
Nguyễn Đăng Quang UTE-HCM 2005
a(1)
t
a
b
c
…
t
…
t
t
a(2) a(3)
t = t+a(1)
t = t+a(2)
t
t
t = t+a(3)
t = t+a(i)
i=1..10
t=0
For i = 1 to 10
t = t + a(i)
Next
t=0
t = t+a(1)
t = t+a(2)
t = t+a(3)
…
t = t+a(10)
Nguyễn Đăng Quang UTE-HCM 2005
Mảng
Mảng là tập hợp các phần tử cùng kiểu dữ
liệu được đánh thứ tự. Số thứ tự của mỗi
phần tử được gọi là chỉ số.
a
10
-9
5
17
-5
(1)
(2)
(3)
(4)
(5)
Nguyễn Đăng Quang UTE-HCM 2005
Khai báo mảng
Dim/Public <Tên>(<Số phần tử>) As <Kiểu>
Ví dụ:
Dim A(10) As Integer
Dim Hoten(50) As String
Phần tử đầu tiên có chỉ số 0
Nguyễn Đăng Quang UTE-HCM 2005
Khai báo mảng với chỉ số bắt
đầu khác 0
Dim a(1 to 10) As Integer
Hoặc
Option base 1
Dim a(10) As integer
Nguyễn Đăng Quang UTE-HCM 2005
Các giải thuật thường dùng
Tính tổng
S=0
for i = 1 to n
s = s + a(i)
Next i
Tìm max/min
max = a(1)
k=1
for i = 2 to n do
if max < a(i) then
max = a(i)
k=i
end if
Nguyễn Đăng Quang UTE-HCM 2005
Các giải thuật thường dùng
Tìm kiếm phần từ có giá trị x
found = false
for i = 1 to n
if a(i)=x then
found = true
exit for
end if
Next i
Nguyễn Đăng Quang UTE-HCM 2005
Các giải thuật thường dùng
Sắp xếp tăng/giảm
for i = 1 to n-1 do
for j=i+1 to n do
if a(i) > a(j) then
swap a(i), a(j)
end if
next
next
Nguyễn Đăng Quang UTE-HCM 2005