You are on page 1of 64

Chương 3: Biɼn và các toán tͭ

Phan Tr͍ng Tiɼn


Department of Software Engineerng
Hanoi University of Agricaltural
Office location: 3rd floor, Administrative building
Office phone: 8276346, Ext: 132
Email:phantien84@gmail.com

1
N͙i dung chính
1. T͕ng quan
2. Các kiʀu dͯ liʄu
3. Sͭ dͥng các biɼn
4. Demo: Sͭ dͥng biɼn và các cɢu trúc dͯ
liʄu
5. Functions, Subroutines, and Properties
6. Demo: Làm viʄc v͛i biɼn và các thͧ tͥc
7. Xͭ lý ngoɞi lʄ (Exception Handing)
8. Demo: Cɢu trúc xͭ lý ngoɞi lʄ
9. Lab: Thͱc hiʄn các cɢu trúc xͭ lý ngoɞi lʄ

2
1. T͕ng quan
¬ VB.Net gi͛i thiʄu nhiɾu cɠi tiɼn vɾ ngôn
ngͯ và cú pháp giúp phát triʀn m͙t cách
t͑t nhɢt:
Kɼt hͣp chɴt chɺ v͛i các kiʀu hʄ th͑ng trong
.Net Framework làm VB.Net tương thích v͛i các
ngôn ngͯ khác.
Các cɠi tiɼn vɾ cú pháp v͛i các biɼn làm tăng sͱ
sáng sͧa và thi hành code.
Các thay đ͕i vɾ Functions, Subroutines và
Properties làm code dʂ đ͍c và bɠo trì
Cɢu trúc xͭ lý ngoɞi lʄ, làm ngôn ngͯ VB.Net tr͟
nên mɞnh mɺ

3
Kɼt quɠ cɤn đɞt đưͣc
¬ Mô tҧ thay đәi các kiӇu dӳ liӋu trong VB.Net
¬ Khai báo và khӣi tҥo các biӃn và mҧng
¬ Dùng câu lӋnh rút gӑn đӇ khӣi gán giá trӏ cho
biӃn
¬ Thӵc thi Functions và Subroutines
¬ Gӑi các Properties cӫa mӝt đӕi tưӧng
¬ Sӱ dөng cú pháp ! 
  đӇ
thӵc hiӋn xӱ lý ngoҥi lӋ

4
2. Các kiʀu dͯ liʄu
¬ Kiʀu dͯ liʄu hʄ th͑ng thông thư͝ng
¬ So sánh tham biɼn và tham trʈ
¬ Các kiʀu dͯ liʄu m͛i
¬ Thay đ͕i v͛i các kiʀu dͯ liʄu t͓n tɞi
¬ Sͭ dͥng CType đʀ chuyʀn đ͕i giͯa
các kiʀu dͯ liʄu

5
Kiʀu dͯ liʄu hʄ th͑ng thông
thư͝ng
¬ Đưͣc tích hͣp trong CLS
¬ Chia sɸ lúc chɞy (Runtime), biên dʈch
(compiler) và các Tool.
¬ Điɾu khiʀn cách khai báo, sͭ dͥng và
quɠn lý các kiʀu dͯ liʄu lúc chɞy
¬ Bao g͓m tɪp hͣp các kiʀu dͯ liʄu tͱ
đʈnh nghĩa
¬ Các kiʀu dͯ liʄu hʄ th͑ng thông
thư͝ng đưͣc kɼ thͫa tͫ l͛p
System.Object
6
So sánh tham biɼn và tham trʈ
¬ Các biɼn kiʀu tham trʈ
Chͩa dͯ liʄu trͱc tiɼp
M͗i bɠn sao là dͯ liʄu cͧa chính nó
Các thao tác trên 1 biɼn không ɠnh hư͟ng đɼn
biɼn khác
Câu lʄnh gán tɞo m͙t bɠn sao dͯ liʄu
¬ Các biɼn kiʀu tham biɼn
Lưu trͯ tham chiɼu t͛i giá trʈ cͧa chúng (đ͑i
tưͣng tham chiɼu đã biɼt)
Hai tham chiɼu có thʀ tham chiɼu đɼn cùng m͙t
đ͑i tưͣng
Các thao tác trên m͙t biɼn có thʀ ɠnh hư͟ng
đɼn biɼn khác
7
Các kiʀu dͯ liʄu m͛i

8
Thay đ͕i v͛i các kiʀu dͯ liʄu t͓n
tɞi

9
Sͭ dͥng hàm CType đʀ chuyʀn
đ͕i giͯa các kiʀu dͯ liʄu
¬ Dùng CType đʀ chuyʀn đ͕i các giá trʈ
tͫ m͙t kiʀu này sang m͙t kiʀu khác.
¬ Tương tͱ như hàm CStr và CInt trong
VB6
¬ Cú pháp:
CType(ë ë
ë ë)
¬ Ví dͥ:
˜    
   ëë



ë  ëë

10
3. Sͭ dͥng các biɼn
¬ Khai báo và sͭ dͥng biɼn và mɠng
¬ Khai báo nhiɾu biɼn
¬ Phɞm vi cͧa biɼn
¬ Tɞo các kiʀu dͯ liʄu có cɢu trúc
¬ Các tùy ch͍n biên dʈch

11
Dùng biɼn
¬ Đʀ lưu trͯ dͯ liʄu, m͙t ngôn ngͯ lɪp
trình dùng biɼn. Biɼn là vʈ trí b͙ nh͛
tɞm trong máy. M͙t biɼn có tên biɼn
và kiʀu dͯ liʄu cͧa nó.
¬ VB.Net cung cɢp các kiʀu dͯ liʄu khác
nhau đʀ giúp lưu trͯ dͯ liʄu.
¬ Ví dͥ:
˜   ëë

12
Khai báo và sͭ dͥng biɼn và
mɠng
¬ Bɞn có thʀ kh͟i tɞo biɼn khi bɞn khai
báo chúng
¬ Bɞn có thʀ kh͟i tɞo mɠng v͛i kích
thư͛c xác đʈnh hoɴc không có kthư͛c
Bɞn phɠi đʈnh lɞi kích thư͛c mɠng bɮng
cách dung tͫ khóa ReDim

13
Khai báo sͭ dͥng biɼn và mɠng
¬ Cú pháp:
Dim varname [As [New] type] [=
initexpr]
¬ Khai báo mɠng
Dim x( ) As String
ReDim x(5) 'Correct in Visual Basic .NET
Dim y(2) As String
ReDim Preserve y(5) 'Allowed in Visual Basic .NET

14
Khai báo nhiɾu biɼn
¬ Khai báo nhiɾu biɼn trong VB6

¬ Khai báo nhiɾu biɼn trong VB.Net

15
Dɞng viɼt ngɬn khai báo
¬ Có thʀ khai báo dùng ký tͱ nhɪn
dɞng
¬ Ví dͥ:
Dim strVar$

16
Bɠng ký tͱ nhɪn dɞng

17
Tɞo các kiʀu dͯ liʄu có cɢu trúc
¬ Kiʀu cɢu trúc ngư͝i dùng tͱ đʈnh nghĩa
¬ Kiʀu cɢu trúc h͗ trͣ nhiɾu đɴc điʀm trong
Class
¬ Sͭ dͥng khai báo Structure « End
Structure
¬ Khai báo cɢu trúc các thành viên v͛i thu͙c
tính truy cɪp

18
Các kiʀu dͯ liʄu
Kiʀu dͯ liʄu Kích thư͛c(Mô tɠ)
Integer 4 bytes
Long 8 bytes
Short 2 bytes
Byte 1 byte
Double 8 bytes
Single 4 bytes
Decimal 16 bytes
Boolean 2 bytes
Char 2 bytes
DateTime 8 bytes
String 10 bytes + 2 bytes cho m͗i chͯ
Object Chͩa bɢt kƒ loɞi dͯ liʄu nào
19
Cách đɴt tên biɼn
¬ Bɬt đɤu bɮng m͙t ký tͱ
¬ Không có dɢu chɢm hoɴc ký tͱ nhɪn
dɞng, không khoɠng trɬng
¬ <= 255 ký tͱ
¬ Phɠi là duy nhɢt trong cùng phɞm vi

20
Kh͟i tɞo biɼn
¬ Mɴc đʈnh, m͙t biɼn mang m͙t giá trʈ
khi khai báo. Integer mɴc đʈnh là 0.
¬ Bɞn có thʀ kh͟i tɞo giá trʈ cͧa biɼn
khi bɬt đɤu.
¬ Ví dͥ:
Dim iNum as Integer
iNum = 20 µhoɴc
Dim iNum as Integer = 20

21
Tͫ khóa më
¬ Biɼn thͱc sͱ đưͣc tɞo khi bɞn dùng chúng
trong code hoɴc kh͟i tɞo chúng. Có thʀ
dùng tͫ khóa mëđʀ tɞo m͙t biɼn ngay khi
bɞn khai báo.
¬ Ví dͥ
˜ m   ëë
m ë ëë
˜ m   ëëmë ëë
˜ m  më ëë

22
Tͫ khóa m  m!!
¬ m  ¢ iɠi phóng m͙t biɼn đưa nó
vɾ giá trʈ mɴc đʈnh
¬ Ví dͥ:
˜ m   ëë"#
m m 
$%
m #
¬ m!!& Không h͗ trͣ trong VB.Net.

23
Phɞm vi cͧa biɼn
¬ Xác đʈnh phɞm vi truy cɪp cͧa biɼn
¬ Biɼn có thʀ chʆ dùng trong kh͑i lʄnh hoɴc
toàn b͙ chương trình.
¬ M͙t biɼn khai báo trong thͧ tͥc thì chʆ dùng
đͱͣc trong thͧ tͥc
¬ Đôi khi cɤn các biɼn khai báo biɼn dùng
khɬp chương trình như các biɼn tham chiɼu
͟ mͩc module. Biɼn ͟ mͩc module phân
làm hai loɞi private và '!
( ë)*+,  +!ë- '.
('!)+,  / 0. +!ë

24
Phɞm vi cͧa biɼn
¬ Các biɼn trong thͧ tͥc
Đưͣc sͭ dͥng trong phɞm thͧ tͥc đó.
¬ Các biɼn trong kh͑i lʄnh
Các biɼn chʆ đưͣc truy cɪp trong kh͑i lʄnh đó
Th͝i gian t͓n tɞi biɼn trong kh͑i lʄnh là kɼt thúc
kh͑i lʄnh

25
Các tùy ch͍n biên dʈch
¬ Option Explicit [On/Off]
On là tùy ch͍n mɴc đʈnh, bɞn phɠi khai
báo biɼn trư͛c khi sͭ dͥng
¬ Option Strict [On/Off]
Cho phép/không cho phép chuyʀn đ͕i
ngɤm đʈnh
Chuyʀn đ͕i sang kiʀu dͯ liʄu Object
không cho phép khi
¬ Option Base 1 không h͗ trͣ
Chʆ s͑ mɠng luôn bɬt đɤu là 0

26
Khai báo tư͝ng minh và không
tư͝ng minh (Implicit and Explicit)
¬ Khai báo không tư͝ng minh ¢ M͙t
biɼn sͭ dͥng không cɤn khai báo
¬ Các nhà lɪp trình khuyên nên khai
báo tư͝ng minh
¬ Cú pháp:
K 1 ! 2K3K 
Mɴc đʈnh
K 1 ! K

27
Các kiʀu chuyʀn đ͕i(Convertion)
¬ VB.Net cung cɢp hai kiʀu chuyʀn d͕i

4567)-8 90-:'; /  !:
 :<=>+?) @A ëë<

456B)-8 90C 4'; /  C 4
-:  :<=>+? ëë@A
¬ VB.Net cung cɢp cho phương pháp chuyʀn
đ͕i dͯ liʄu.
¬ Câu lʄnh:
Option Strict [On | Off]
m8! K -4+D!E.'8F-4    GH
-
456<

28
Khai báo Hɮng
¬ Hɮng là m͙t biɼn mà giá trʈ cͧa nó không
thay đ͕i trong su͑t quá trình chɞy chương
trình.
¬ Ví dͥ:
Const MAX_SCORE As Integer =100
or
Const MAX_SCORE = 100
¬ Sͭ lý m͙t hɮng nhanh hơn m͙t biɼn
¬ Đɴt tên hɮng bɮng các tͫ hoa, gɞch chân
dư͛i (_) v͛i m͗i tͫ.

29
Các toán tͭ
¬ Toán tͭ toán h͍c
¬ Toán tͭ gán
¬ Toán tͭ so sánh
¬ Toán tͫ logic
¬ Toán tͭ c͙ng chu͗i

30
Các toán tͭ tóan h͍c
¬ Toán tͭ s͑ mũ: ^ (dùng cho dͯ liʄu s͑)
¬ Toán tͭ nhân: * (dùng cho dͯ liʄu s͑)
¬ Toán tͭ chia: / (dùng cho dͯ liʄu s͑)
¬ Toán tͭ chia nguyên: \ (chia hai s͑ nguyên)
¬ Toán tͭ Mod: phép chia dư (dùng cho dͯ
liʄu s͑)
¬ Toán tͭ +: c͙ng hai s͑(dùng cho kiʀu s͑ và
kiʀu ký tͱ)
¬ Toán tͭ ¢: Trͫ hai s͑ (dùng cho kiʀu s͑)

31
Các toán tͭ gán
¬ Toán tͭ +=
¬ Toán tͭ ¢=
¬ Toán tͭ *=
¬ Toán tͭ /=
¬ Toán tͭ \=
¬ Toán tͭ &=
¬ Toán tͭ ^=

32
Các toán tͭ so sánh
¬ Các toán tͭ quan hʄ
¬ Toán tͭ 
¬ Toán tͭ $-ë

33
Các toán tͭ quan hʄ
¬ Dùng so sánh hai biʀu thͩc
ë! IëJ"ToanTuSoSanh IëJK

34
Toán tͭ 
¬ Tóan tͭ đưͣc dùng đʀ so sánh hai
đ͕i tưͣng tham chiɼu.
¬ Cú pháp:
ë! K'Lë " K'Lë K
Kɼt quɠ trɠ vɾ giá trʈ kiʀu Boolean. Toán tͭ
xác đʈnh khi nào cɠ hai đ͑i tưͣng Object1
và Object2 là gi͑ng nhau.
¬ Ví dͥ:

35
Ví dͥ
Dim Object1, Object2 As New Object
Dim MyObjectA, MyObjectB, MyObjectC As Object
Dim MyResult As Boolean
MyObjectA = Object1
MyObjectB = Object2
MyObjectC = Object2
MyResult = MyObjectA Is MyObjectB
'Returns False
MyResult = MyObjectB Is MyObjectC
'Returns True

MyResult = MyObjectA Is MyObjectC


'Returns False

36
Toán tͭ $-ë
¬ Dùng đʀ so sánh các chu͗i
¬ Cú pháp:
ë! M$-ë NO
P8 90 0Q. ;-4I!ë <
¬ Khi dùng toán tͭ $-ëcũng có thʀ
dùng các ký tͱ đɞi diʄn.
¬ Kɼt quɠ trɠ vɾ True nɼu M đưͣc
so kh͛p v͛i NO

37
Bɠng ký tͱ đɞi diʄn

38
Ví dͥ
Dim MyValue As Boolean
MyValue = "A" Like "A"
'Returns True
MyValue = "A" Like "a"
'Returns False
MyValue = "C" Like "[A¢F]"
'Returns True

MyValue = "H" Like "[A¢F]"


'Returns False
MyValue = "D" Like "[!A¢F]"
'Returns False
MyValue = "zxyz" Like "z*z"
'Returns True
MyValue = " FdAT13h4g" Like " F?A*"
'Returns True

39
Các toán tͭ logic
¬ Toán tͭ And
¬ Toán tͭ Not
¬ Toán tͭ Or
¬ Toán tͭ Xor
¬ Toán tͭ AndAlso
¬ Toán tͭ OrElse

40
Toán tͭ AndAlso
¬ Là m͙t toán tͭ m͛i VB.Net
¬ Cú pháp:
ë! IëJ"AndAlso IëJK
¬ Toán tͭ AndAlso làm viʄc gi͑ng như
toán tͭ And nhưng nó mɞnh hơn And.
¬ Hoɞt đ͙ng: Trư͛c hɼt nó kiʀm tra giá
trʈ cͧa Bieu_Thuc1, nɼu trɠ vɾ true
thì nó m͛i kiʀm tra Bieu_Thuc2

41
Ví dͥ
Dim A As Integer = 15
Dim B As Integer = 10
Dim C As Integer = 5
Dim MyResult As Boolean
MyResult = A  B AndAlso B  C
'Returns
True
MyResult = B  A AndAlso B  C
'Returns
False
MyResult = A  B AndAlso C  B
'Returns
False

42
Toán tͭ OrElse
¬ Là m͙t toán tͭ m͛i VB.Net
¬ Cú pháp:
ë! IëJ"OrElse IëJK
¬ Toán tͭ này hoɞt đ͙ng cũng gi͑ng như toán
tͭ Or nhưng mɞnh hơn toán tͭ Or.
¬ Hoɞt đ͙ng: Trư͛c hɼt kiʀm tra IëJ",
nɼu nó trɠ vɾ True thì gán luôn cho kɼt
quɠ, nɼu không thì nó m͛i kiʀm tra
IëJK<

43
Ví dͥ
Dim A As Integer = 15
Dim B As Integer = 10
Dim C As Integer = 5
Dim MyResult As Boolean
MyResult = A  B OrElse B  C
'Returns
True
MyResult = B  A OrElse B  C
'Returns
True
MyResult = B  A OrElse C  B
'Returns
False

44
4. Demo: Sͭ dͥng biɼn và các cɢu
trúc dͯ liʄu

45
5. Functions, Subroutines, and
Properties
¬ ͍i hàm và thͧ tͥc
¬ Đɴt các đ͑i s͑ ByRef và ByVal
¬ Các đ͑i s͑ tùy ch͍n
¬ Hàm và thͧ tͥc tĩnh (Static)
¬ Trɠ lɞi giá trʈ tͫ hàm
¬ Sͭ dͥng các thu͙c tính mɴc đʈnh

46
͍i hàm và thͧ tͥc
¬ Trong VB.Net
Bɞn phɠi dùng dɢu ngoɴc đơn đi kèm v͛i
các biɼn trong hàm hoɴc thͧ tͥc
Bɞn phɠi dùng dɢu ngoɴc đơn r͗ng cho
các hàm hoɴc thͧ tͥc không có tham s͑.
¬ Ví dͥ
˜!
˜ "K"R' ë
 !!˜!
˜ "K"

47
Đɴt các đ͑i s͑ ByRef và ByVal
¬ VB6
Mɴc đʈnh tham s͑ truyɾn vào hàm và thͧ
tͥc là ByRef
¬ VB.Net
Mɴc đʈnh tham s͑ truyɾn vào hàm và thͧ
tͥc là ByVal
¬ ByRef và ByVal khác gì nhau?

48
Các đ͑i s͑ tùy ch͍n
¬ VB6
Bɞn không cɤn cung cɢp giá trʈ mɴc đʈnh
cho tham s͑ tùy ch͍n
Bɞn có thʀ dùng hàm IsMissing
¬ VB.Net
Bɞn phɠi cung cɢp giá trʈ mɴc đʈnh cho
tham s͑ tùy ch͍n
Hàm IsMissing không h͗ trͣ

49
Hàm tĩnh và thͧ tͥc tĩnh (Static)
¬ VB6
Bɞn có thʀ đɴt Static trư͛c Funtion và
Sub
Các biɼn cͥc b͙ trong hàm tĩnh hoɴc thͧ
tͥc tĩnh giͯ nguyên giá trʈ cͧa chúng qua
nhiɾu lɤn g͍i
¬ VB.Net
Hàm tĩnh và thͧ tͥc tĩnh không h͗ trͣ
Bɞn phɠi khai báo m͙t cách rõ ràng tɢt
cɠ các biɼn là tĩnh
50
Ví dͥ cách dùng biɼn tĩnh
˜ $ë   ëë
  N    ëë
S $ë" "#
N T"

NI N 

51
Trɠ lɞi giá trʈ tͫ hàm
¬ VB6
Dùng tên hàm đʀ trɠ vɾ kɼt quɠ
¬ VB.Net
Bɞn có thʀ dùng tên hàm
Bɞn có thʀ dùng câu lʄnh Return đʀ trɠ
vɾ kɼt quɠ

52
Sͭ dͥng các thu͙c tính mɴc đʈnh
¬ VB6
H͗ trͣ thu͙c tính trên m͗i đ͑i tưͣng
Dùng Set đʀ xác đʈnh khi nào kh͟i gán đang
tham chiɼu t͛i đ͑i tưͣng hoɴc thu͙c tính mɴc
đʈnh
¬ VB.Net
Chʆ h͗ trͣ thu͙c tính mɴc đʈnh cho các biɼn
Đ͓ng nhɢt giͯa phép gán đ͑i tưͣng và thu͙c
tính mɴc đʈnh
Thu͙c tính mɴc đʈnh thư͝ng đưͣc sͭ dͥng vào
chʆ s͑ trong các tɪp hơp ví dͥ như s 

53
Sͭ dͥng các thu͙c tính mɴc đʈnh
¬ Bɞn có thʀ g͍i thu͙c tính mɴc đʈnh
chʆ khi thu͙c tính làm các biɼn

54
6. Demo: Làm viʄc v͛i biɼn và các
thͧ tͥc

55
7. Xͭ lý ngoɞi lʄ
¬ Cɢu trúc xͭ lý ngoɞi lʄ
¬ Try « Catch « Finally
¬ Sͭ dͥng Try « Catch « Finally
¬ L͛p 
 ë <1 ë 
¬ L͍c các ngoɞi lʄ (Filtering Exception)
¬ Xͭ lý các ngoɞi lʄ (Throwing
Exception)

56
Cɢu trúc xͭ lý ngoɞi lʄ
¬ Nhͯng nhưͣc điʀm khi xͭ lý các l͗i không
theo cɢu trúc
Code khó đ͍c, g͡ r͑i và bɠo trì
Dʂ b͏ xót các l͗i
¬ Nhͯng thuɪn lͣi khi xͭ lý l͗i có cɢu trúc
Đưͣc h͗ trͣ b͟i nhiɾu ngôn ngͯ
Cho phép bɞn tɞo các kh͑i bɠo vʄ code
Cho phép bɞn l͍c các U!Etương tͱ như câu
lʄnh =  
Cho phép bɞn tɞo nhiɾu xͭ lý ngoɞi lʄ
Code bɞn dʂ đ͍c, dʂ g͡ r͑i và bɠo trì

57
Try« Catch« Finally
...
Try
' code cͧa bɞn làm ͟ đây
' Có thʀ dùng Exit Try đʀ kɼt thúc kh͑i lʄnh và
' khôi phͥc sau End Try
Catch
' Đʈnh nghĩa các kiʀu ngoɞi lʄ và hành đ͙ng xͭ lý
' Có thʀ dùng m͙t dãy các câu lʄnh (quɠn lý nhiɾu l͗i)
Finally
' là kh͑i tùy ch͍n
' Đʈnh nghĩa các hành đ͙ng cu͑i cùng làm ͟ đây
End Try
...
58
Sͭ dͥng Try « Catch « Finally

59
L͛p 
 ë <1 ë 
¬ Cung cɢp các thông tin vɾ Ngoɞi lʄ

60
L͍c các ngoɞi lʄ

61
Xͭ lý các ngoɞi lʄ (Throwing
Exception)
¬ Dùng tͫ khóa thay cho phương
thͩc Err.Raise trong VB6.

62
8. Demo: Cɢu trúc xͭ lý ngoɞi lʄ

63
Lab: Thͱc hiʄn cɢu trúc xͭ lý
ngoɞi lʄ (trang 55)

64

You might also like