Bài giảng môn Tin học đại cương - Chương 7: Biểu thức VB

pdf 35 trang phuongnguyen 3030
Bạn đang xem 20 trang mẫu của tài liệu "Bài giảng môn Tin học đại cương - Chương 7: Biểu thức VB", để tải tài liệu gốc về máy bạn click vào nút DOWNLOAD ở trên

Tài liệu đính kèm:

  • pdfbai_giang_mon_tin_hoc_dai_cuong_chuong_7_bieu_thuc_vb.pdf

Nội dung text: Bài giảng môn Tin học đại cương - Chương 7: Biểu thức VB

  1. MÔN TIN HỌC Ch ươ ng 7 BI ỂU THỨC VB 7.1 T ổng quát v ề bi ểu th ức VB 7.2 Các toán t ử 7.3 Qui trình tính bi ểu th ức 7.4 Quyền ưu tiên c ủa các toán t ử Môn: Tin h ọc Khoa Công ngh ệ Thông tin Ch ươ ng 7: Bi ểu th ức VB Tr ườ ng ĐH Bách Khoa Tp.HCM Slide 174
  2. 7.1 Tổng quát về bi ểu thức VB  Ta đã bi ết trong toán học công th ức là ph ươ ng ti ện miêu tả 1 qui trình tính toán nào đó trên các số.  Trong VB (hay ngôn ng ữ lập trình khác), ta dùng bi ểu th ức để miêu tả qui trình tính toán nào đó trên các dữ li ệu ⇒ bi ểu th ức cũng gi ống nh ư công th ức toán học, tuy nó tổng quát hơn (x ử lý trên nhi ều lo ại dữ li ệu khác nhau) và ph ải tuân theo qui tắc cấu tạo kh ắt khe hơn công th ức toán học.  Để hi ểu đượ c bi ểu th ức, ta cần hi ểu đượ c các thành ph ần của nó:  Các toán hạng: các bi ến, hằng dữ li ệu,  Các toán tử tham gia bi ểu th ức: +,-,*,/,  Qui tắc kết hợp toán tử và toán hạng để tạo bi ểu th ức.  Qui trình mà máy dùng để tính tr ị của bi ểu th ức.  Ki ểu của bi ểu th ức là ki ểu của kết qu ả tính toán bi ểu th ức. Môn: Tin h ọc Khoa Công ngh ệ Thông tin Ch ươ ng 7: Bi ểu th ức VB Tr ườ ng ĐH Bách Khoa Tp.HCM Slide 175
  3. Các bi ểu thức cơ bản Bi ểu th ức cơ bản là ph ần tử nh ỏ nh ất cấu thành bi ểu th ức bất kỳ. Một trong các ph ần tử sau đượ c gọi là bi ểu th ức cơ bản:  Bi ến,  Hằng gợi nh ớ,  Giá tr ị dữ li ệu cụ th ể thu ộc ki ểu nào đó (nguyên, th ực, )  Lời gọi hàm,  1 bi ểu th ức đượ c đóng trong 2 dấu (). Qui trình tạo bi ểu th ức là qui trình đệ qui: ta kết hợp từng toán tử với các toán hạng của nó, trong đó toán hạng ho ặc là bi ểu th ức cơ bản ho ặc là bi ểu th ức sẵn có (đã đượ c xây dựng tr ướ c đó và nên đóng trong 2 dấu () để bi ến nó tr ở thành bi ểu th ức cơ bản). Môn: Tin h ọc Khoa Công ngh ệ Thông tin Ch ươ ng 7: Bi ểu th ức VB Tr ườ ng ĐH Bách Khoa Tp.HCM Slide 176
  4. 7.2 Các toán t ử Dựa theo số toán hạng tham gia, có 2 lo ại toán tử th ườ ng dùng nh ất:  Toán tử 1 ngôi : ch ỉ cần 1 toán hạng. Ví dụ toán tử '-' để tính ph ần âm của 1 đạ i lượ ng.  Toán tử 2 ngôi : cần dùng 2 toán hạng. Ví dụ toán tử '*' để tính tích của 2 đạ i lượ ng. VB th ườ ng dùng các ký tự đặ c bi ệt để miêu tả toán tử. Ví dụ:  Toán tử '+' : cộng 2 đạ i lượ ng.  Toán tử '-': tr ừ đạ i lượ ng 2 ra kh ỏi đạ i lượ ng 1.  Toán tử '*' : nhân 2 đạ i lượ ng.  Toán tử '/' : chia đạ i lượ ng 1 cho đạ i lượ ng 2 Trong vài tr ườ ng hợp, VB dùng cùng 1 ký tự đặ c bi ệt để miêu tả nhi ều toán tử khác nhau. Trong tr ườ ng hợp này, ng ữ cảnh sẽ đượ c dùng để gi ải quy ết nh ằm lẫn. Ng ữ cảnh th ườ ng là ki ểu của các toán hạng tham gia ho ặc do thi ếu toán hạng thì toán tử đượ c hi ểu là toán tử 1 ngôi. Môn: Tin h ọc Khoa Công ngh ệ Thông tin Ch ươ ng 7: Bi ểu th ức VB Tr ườ ng ĐH Bách Khoa Tp.HCM Slide 177
  5. Các toán t ử (tt) Dựa theo độ ưu tiên của các toán tử trong qui trình tính toán bi ểu th ức, có 3 lo ại toán tử:  Toán tử số học: có độ ưu tiên cao nh ất trong qui trình tính toán bi ểu th ức.  Toán tử so sánh : có độ ưu tiên kế ti ếp.  Toán tử lu ận lý và bitwise : có độ ưu tiên th ấp nh ất. Trong các slide sau, chúng ta sẽ trình bày chi ti ết các toán tử VB thu ộc từng lo ại trên. Môn: Tin h ọc Khoa Công ngh ệ Thông tin Ch ươ ng 7: Bi ểu th ức VB Tr ườ ng ĐH Bách Khoa Tp.HCM Slide 178
  6. Các toán t ử số học Tùy thu ộc ki ểu của các toán hạng tham gia mà ta đượ c phép dùng nh ững toán tử nào trên chúng ⇒ số lượ ng toán tử có giá tr ị trên từng ki ểu dữ li ệu là khác nhau ⇒ ph ải học và nh ớ từ từ. Dữ li ệu số là lo ại dữ li ệu th ườ ng đượ c xử lý nh ất trong các ứng dụng (may mắn cho chúng ta vì ta đã quen với toán học). Các toán tử trên dữ li ệu số là:  Toán tử '&' : nối kết 2 chu ỗi thành 1 chu ỗi.  Toán tử '+' : cộng 2 đạ i lượ ng.  Toán tử '-': tr ừ đạ i lượ ng 2 ra kh ỏi đạ i lượ ng 1.  Toán tử '*' : nhân 2 đạ i lượ ng.  Toán tử '/' : chia đạ i lượ ng 1 cho đạ i lượ ng 2.  Toán tử '\': chia nguyên.  Toán tử Mod : lấy ph ần dư của phép chia nguyên.  Toán tử '^' : lũy th ừa. Môn: Tin h ọc Khoa Công ngh ệ Thông tin Ch ươ ng 7: Bi ểu th ức VB Tr ườ ng ĐH Bách Khoa Tp.HCM Slide 179
  7. Toán t ử '&' để nối kết 2 chuỗi Cú pháp: expr1 & expr2 (→ kết qu ả)  Nối kết 2 toán hạng ki ểu chu ỗi thành 1 chu ỗi mới, nếu 1 trong 2 toán hạng thu ộc ki ểu số thì nó sẽ đượ c đổ i thành dạng chu ỗi tr ướ c khi th ực hi ện nối kết. Ví dụ: Dim MyStr As String MyStr = "Hello" & " World" ' k ết qu ả là "Hello World". MyStr = "Check " & 123 & " Check" ' kq là "Check 123 Check".  Lưu ý nên có ký tự tr ống trong các chu ỗi con sao cho nối kết chu ỗi kết qu ả dễ đọ c. Môn: Tin h ọc Khoa Công ngh ệ Thông tin Ch ươ ng 7: Bi ểu th ức VB Tr ườ ng ĐH Bách Khoa Tp.HCM Slide 180
  8. Toán t ử '+' trên dữ li ệu số Cú pháp: expr1 + expr2 (→ kết qu ả) ho ặc + expr1 Nếu cả 2 toán hạng đề u là số thì ki ểu kết qu ả là ki ểu chính xác nh ất của phép + theo th ứ tự sau: Byte, Integer, Long, Single, Double, Currency, Decimal với các ngo ại lệ sau: Nếu thì k ết qu ả là: 1 toán h ạng Single,1 toán h ạng Long Double kết qu ả ki ểu Variant ch ứa giá tr ị Single, Long, Date và b ị Variant ch ứa Double tràn kết qu ả ki ểu Variant ch ứa giá tr ị Byte và b ị tràn Variant ch ứa Integer kết qu ả ki ểu Variant ch ứa giá tr ị Integer và b ị tràn Variant ch ứa Long 1 toán h ạng Date,1 toán h ạng ki ểu khác Date Môn: Tin h ọc Khoa Công ngh ệ Thông tin Ch ươ ng 7: Bi ểu th ức VB Tr ườ ng ĐH Bách Khoa Tp.HCM Slide 181
  9. Toán t ử '+' trên dữ li ệu số (tt) Nếu ki ểu của cả 2 toán hạng đề u là Variant thì vi ệc xác đị nh ng ữ ngh ĩa phép + và ki ểu kết qu ả sẽ theo qui lu ật của bảng sau: Nếu thì: cả 2 toán h ạng là Variant ch ứa s ố Cộng cả 2 toán h ạng là Variant ch ứa chu ỗi Nối k ết 2 chu ỗi 1 là Variant ch ứa s ố, 1 là Variant ch ứa chu ỗi Cộng Môn: Tin h ọc Khoa Công ngh ệ Thông tin Ch ươ ng 7: Bi ểu th ức VB Tr ườ ng ĐH Bách Khoa Tp.HCM Slide 182
  10. Toán t ử '+' trên dữ li ệu số (tt) Nếu ít nh ất 1 toán hạng không ph ải Variant thì vi ệc xác đị nh ng ữ ngh ĩa phép + và ki ểu kết qu ả sẽ theo qui lu ật của bảng sau: Nếu thì: cả 2 toán h ạng là d ữ li ệu s ố Cộng cả 2 toán h ạng là chu ỗi Nối k ết 2 chu ỗi 1 là s ố, 1 là Variant giá tr ị khác Null Cộng 1 là chu ỗi, 1 là Variant giá tr ị khác Null Nối k ết 2 chu ỗi 1 bi ểu th ức là Variant ch ứa Empty kết qu ả là toán h ạng còn l ại 1 là s ố và 1 là chu ỗi A Type mismatch error 1 trong 2 toán h ạng là Null kết qu ả là Null Môn: Tin h ọc Khoa Công ngh ệ Thông tin Ch ươ ng 7: Bi ểu th ức VB Tr ườ ng ĐH Bách Khoa Tp.HCM Slide 183
  11. Toán t ử '-' trên dữ li ệu số Cú pháp: expr1 - expr2 (→ kết qu ả) ho ặc - expr1 Ki ểu kết qu ả th ườ ng là ki ểu chính xác nh ất của phép - theo th ứ tự sau: Byte, Integer, Long, Single, Double, Currency, Decimal với các ngo ại lệ sau: Nếu thì k ết qu ả là: 1 toán h ạng Single,1 toán h ạng Long Double kết qu ả ki ểu Variant ch ứa giá tr ị Single, Long, Date và b ị Variant ch ứa Double tràn kết qu ả ki ểu Variant ch ứa giá tr ị Integer và b ị tràn Variant ch ứa Long 1 toán h ạng Date,1 toán h ạng ki ểu khác Date cả 2 toáng h ạng Date Double Môn: Tin h ọc Khoa Công ngh ệ Thông tin Ch ươ ng 7: Bi ểu th ức VB Tr ườ ng ĐH Bách Khoa Tp.HCM Slide 184
  12. Toán t ử '*' trên dữ li ệu số Cú pháp: expr1 * expr2 (→ kết qu ả) Ki ểu kết qu ả th ườ ng là ki ểu chính xác nh ất của phép * theo th ứ tự sau: Byte, Integer, Long, Single, Double, Currency, Decimal với các ngo ại lệ sau: Nếu thì k ết qu ả là: 1 toán h ạng Single,1 toán h ạng Long Double kết qu ả ki ểu Variant ch ứa giá tr ị Single, Long, Date và b ị Variant ch ứa Double tràn kết qu ả ki ểu Variant ch ứa giá tr ị Byte và b ị tràn Variant ch ứa Integer kết qu ả ki ểu Variant ch ứa giá tr ị Integer và b ị tràn Variant ch ứa Long Môn: Tin h ọc Khoa Công ngh ệ Thông tin Ch ươ ng 7: Bi ểu th ức VB Tr ườ ng ĐH Bách Khoa Tp.HCM Slide 185
  13. Toán t ử '/' trên dữ li ệu số Cú pháp: expr1 / expr2 (→ kết qu ả) Ki ểu kết qu ả th ườ ng là ki ểu Double hay Variant ch ứa Double với các ngo ại lệ sau: Nếu thì k ết qu ả là: cả 2 toán h ạng là Byte, Integer,Single Single, n ếu tràn thì báo sai cả 2 toán h ạng là variant ch ứa tr ị Byte, Integer, Single Variant ch ứa Single, n ếu tràn thì đổ i thành Variant ch ứa Double 1 toán h ạng Decimal Decimal Môn: Tin h ọc Khoa Công ngh ệ Thông tin Ch ươ ng 7: Bi ểu th ức VB Tr ườ ng ĐH Bách Khoa Tp.HCM Slide 186
  14. Toán t ử '\' và Mod trên dữ li ệu số Cú pháp: expr1 \ expr2 (→ kết qu ả)  Đây là phép chia nguyên, 2 toán hạng đượ c đổ i về dạng nguyên (đượ c làm tròn) tr ướ c khi th ực hi ện phép chia.  Ki ểu kết qu ả ho ặc là Byte, Integer, Long ho ặc là Variant ch ứa tr ị Byte, Integer, Long. Ví dụ: 19 \ 6.7 → kết qu ả là 2 Cú pháp: expr1 Mod expr2 (→ kết qu ả)  Đây là phép lấy ph ần dư của phép chia nguyên, 2 toán hạng đượ c đổ i về dạng nguyên (đượ c làm tròn) tr ướ c khi th ực hi ện phép chia.  Ki ểu kết qu ả ho ặc là Byte, Integer, Long ho ặc là Variant ch ứa tr ị Byte, Integer, Long. Ví dụ: 19 Mod 6.7 → kết qu ả là 5 Môn: Tin h ọc Khoa Công ngh ệ Thông tin Ch ươ ng 7: Bi ểu th ức VB Tr ườ ng ĐH Bách Khoa Tp.HCM Slide 187
  15. Toán t ử '^' trên dữ li ệu số Cú pháp: number ^ exponent (→ kết qu ả)  Đây là phép lũy th ừa, 2 toán hạng thu ộc ki ểu số (Byte, Integer, Long, Single, Double, ) với hạn ch ế là nếu ph ần mũ là số nguyên thì ph ần cơ số (number) mới đượ c phép âm.  Ki ểu kết qu ả ho ặc là Double ho ặc là Variant ch ứa tr ị Double. Ví dụ: (-5) ^ 3 → kết qu ả là -125.0 3 ^ 3 ^ 3 → kết qu ả là 19683.0 3.2 ^ 2.7 → kết qu ả là 23.115587799 Môn: Tin h ọc Khoa Công ngh ệ Thông tin Ch ươ ng 7: Bi ểu th ức VB Tr ườ ng ĐH Bách Khoa Tp.HCM Slide 188
  16. Các toán t ử so sánh dữ li ệu Cú pháp: expr1 op expr2 (→ kết qu ả)  2 toán hạng th ườ ng là ki ểu số hay chu ỗi. Kết qu ả luôn là ki ểu lu ận lý (nh ận 1 trong 2 tr ị True, False).  op là 1 trong các toán tử so sánh sau: : phép toán l ớn h ơn >= : phép toán l ớn h ơn ho ặc b ằng = : phép toán so sánh b ằng <> : phép toán khác nhau (không b ằng) Ngoài các toán tử so sánh thông th ườ ng trên, VB còn cung cấp 2 toán tử so sánh đặ c bi ệt sau (v ới ng ữ ngh ĩa đặ c bi ệt sẽ đượ c trình bày trong các slide sau): expr1 Like expr2 (→ kết qu ả) expr1 Is expr2 (→ kết qu ả) Môn: Tin h ọc Khoa Công ngh ệ Thông tin Ch ươ ng 7: Bi ểu th ức VB Tr ườ ng ĐH Bách Khoa Tp.HCM Slide 189
  17. Toán t ử Like Cú pháp: string Like pattern (→ kết qu ả)  xác đị nh xem chu ỗi cụ th ể string có thu ộc về pattern không. Nếu thu ộc về thì cho kết qu ả True, nếu không thu ộc về thì cho kết qu ả False. Ví dụ: MyCheck = "aBBBa" Like "a*a" ' Returns True. MyCheck = "F" Like "[A-Z]" ' Returns True. MyCheck = "F" Like "[!A-Z]" ' Returns False. MyCheck = "a2a" Like "a#a" ' Returns True. MyCheck = "aM5b" Like "a[L-P]#[!c-e]" ' Returns True. MyCheck = "BAT123khg" Like "B?T*" ' Returns True. MyCheck = "CAT123khg" Like "B?T*" ' Returns False. Môn: Tin h ọc Khoa Công ngh ệ Thông tin Ch ươ ng 7: Bi ểu th ức VB Tr ườ ng ĐH Bách Khoa Tp.HCM Slide 190
  18. Toán t ử Like (tt) Hành vi của toán tử Like ph ụ thu ộc vào 1 trong 2 ch ế độ do phát bi ểu "Option Compare" qui đị nh:  Option Compare Binary ' default  Option Compare Text Trong ch ế độ so sánh Binary, VB dựa vào th ứ tự sắp xếp các ký tự trên cơ sở mã nh ị phân của các ký tự. Trong bảng mã ISO8859-1, ta có: A < B < E < Z < a < b < e < z < À < Ê < Ø < à < ê < ø Trong ch ế độ so sánh Text, VB dựa vào th ứ tự sắp xếp các ký tự trên cơ sở ng ữ ngh ĩa ký tự và thông tin "locale" của Windows (do đó không phân bi ệt ch ữ th ườ ng và hoa): (A=a) < (À=à) < (B=b) < (E=e) < (Ê=ê) < (Z=z) < (Ø=ø) Thông tin về ch ế độ so sánh cũng đượ c áp dụng cho các toán tử so sánh thông th ườ ng trên các chu ỗi. Môn: Tin h ọc Khoa Công ngh ệ Thông tin Ch ươ ng 7: Bi ểu th ức VB Tr ườ ng ĐH Bách Khoa Tp.HCM Slide 191
  19. Toán t ử Like (tt) Toán hạng string là chu ỗi ký tự cụ th ể, còn toán hạng pattern là chu ỗi ch ứa các ký tự cụ th ể và/ho ặc các ký tự đặ c bi ệt có ý ngh ĩa theo bảng sau: Ký t ự trong pattern Tươ ng ứng v ới: ? Bất k ỳ 1 ký t ự nào * bất k ỳ chu ỗi ký t ự nào (dài t ừ 0 ký t ự tr ở lên) # Bất k ỳ ký s ố th ập phân nào (0–9). [! charlist ] Bất k ỳ ký t ự không có trong charlist . [charlist ] Bất k ỳ ký t ự có trong charlist .  dùng '-' để miêu tả 1 ph ạm vi xác đị nh bởi 2 cận dướ i và trên.  dùng cú pháp [c] để miêu tả các ký tự đặ c bi ệt. Môn: Tin h ọc Khoa Công ngh ệ Thông tin Ch ươ ng 7: Bi ểu th ức VB Tr ườ ng ĐH Bách Khoa Tp.HCM Slide 192
  20. Toán t ử Is Cú pháp: ObjVar1 Is ObjVar1 (→ kết qu ả)  xác đị nh xem 2 bi ến ObjVar1 và ObjVar2 có ch ứa cùng tham kh ảo đế n 1 đố i tượ ng duy nh ất không. Nếu đúng vậy thì kết qu ả của bi ểu th ức là True, nếu không tr ị bi ểu th ức là False. Ví dụ: Dim MyObject, YourObject, ThisObject, ThatObject Dim MyCheck As Boolean Set YourObject = New Clipboard ' tạo object và gán tham kh ảo. Set ThisObject = YourObject Set ThatObject = New Clipboard MyCheck = YourObject Is ThisObject ' kết qu ả True. MyCheck = ThatObject Is ThisObject ' kết qu ả False. Môn: Tin h ọc Khoa Công ngh ệ Thông tin Ch ươ ng 7: Bi ểu th ức VB Tr ườ ng ĐH Bách Khoa Tp.HCM Slide 193
  21. Các toán t ử luận lý Các toán tử lu ận lý cho phép th ực hi ện 1 hành vi lu ận lý trên 1 hay 2 toán hạng thu ộc ki ểu lu ận lý để cho kết qu ả là 1 giá tr ị lu ận lý. Các toán tử lu ận lý là:  toán tử And : phép toán 'và'.  toán tử Or : phép toán 'ho ặc'.  toán tử Xor : phép toán lo ại tr ừ.  toán tử Not : phép toán đả o.  toán tử Eqv : phép toán tươ ng đươ ng.  toán tử Imp : phép toán kéo theo. Nếu cả 2 toán hạng đề u là số thì các phép toán trên sẽ th ực hi ện hành vi của chúng trên từng cặp bit tươ ng ứng của 2 toán hạng (s ẽ gi ải thích cụ th ể sau). Môn: Tin h ọc Khoa Công ngh ệ Thông tin Ch ươ ng 7: Bi ểu th ức VB Tr ườ ng ĐH Bách Khoa Tp.HCM Slide 194
  22. Toán t ử luận lý And Cú pháp: expr1 And expr2 (→ kết qu ả)  kết qu ả đượ c xác đị nh theo bảng sau: Ghi chú: expr1 expr2 kết qu ả True True True o kết qu ả ch ỉ True khi c ả 2 True False False toán h ạng là True. True Null Null o Kết qu ả là False n ếu có 1 False True False toán h ạng là False. False False False False Null False Null True Null Null False False Null Null Null Môn: Tin h ọc Khoa Công ngh ệ Thông tin Ch ươ ng 7: Bi ểu th ức VB Tr ườ ng ĐH Bách Khoa Tp.HCM Slide 195
  23. Toán t ử bitwise And Cú pháp: expr1 And expr2 (→ kết qu ả)  2 toán hạng thu ộc ki ểu số và toán tử And th ực hi ện hành vi trên từng cặp bit tươ ng ứng của 2 toán hạng, kết qu ả trên từng cặp bit đượ c xác đị nh theo bảng sau: biti of expr1 biti of expr2 kết qu ả 1 1 1 1 0 0 0 1 0 0 0 0 Môn: Tin h ọc Khoa Công ngh ệ Thông tin Ch ươ ng 7: Bi ểu th ức VB Tr ườ ng ĐH Bách Khoa Tp.HCM Slide 196
  24. Toán t ử luận lý Or Cú pháp: expr1 Or expr2 (→ kết qu ả)  kết qu ả đượ c xác đị nh theo bảng sau: Ghi chú: expr1 expr2 kết qu ả True True True o kết qu ả là True n ếu có 1 True False True toán h ạng là True. True Null True o Kết qu ả ch ỉ False khi c ả 2 False True True toán h ạng đề u là False. False False False False Null Null Null True True Null False Null Null Null Null Môn: Tin h ọc Khoa Công ngh ệ Thông tin Ch ươ ng 7: Bi ểu th ức VB Tr ườ ng ĐH Bách Khoa Tp.HCM Slide 197
  25. Toán t ử bitwise Or Cú pháp: expr1 Or expr2 (→ kết qu ả)  2 toán hạng thu ộc ki ểu số và toán tử Or th ực hi ện hành vi trên từng cặp bit tươ ng ứng của 2 toán hạng, kết qu ả trên từng cặp bit đượ c xác đị nh theo bảng sau: biti of expr1 biti of expr2 kết qu ả 1 1 1 1 0 1 0 1 1 0 0 0 Môn: Tin h ọc Khoa Công ngh ệ Thông tin Ch ươ ng 7: Bi ểu th ức VB Tr ườ ng ĐH Bách Khoa Tp.HCM Slide 198
  26. Toán t ử luận lý Xor Cú pháp: expr1 Xor expr2 (→ kết qu ả)  kết qu ả đượ c xác đị nh theo bảng sau: Ghi chú: expr1 expr2 kết qu ả True True False o Nếu có 1 toán h ạng là Null True False True thì k ết qu ả là Null. True Null Null o Kết qu ả là True n ếu 2 toán False True True hạng khác nhau và khác False False False Null. False Null Null Null True Null o Kết qu ả là False n ếu 2 Null False Null toán h ạng gi ống nhau và Null Null Null khác Null. Môn: Tin h ọc Khoa Công ngh ệ Thông tin Ch ươ ng 7: Bi ểu th ức VB Tr ườ ng ĐH Bách Khoa Tp.HCM Slide 199
  27. Toán t ử bitwise Xor Cú pháp: expr1 Xor expr2 (→ kết qu ả)  2 toán hạng thu ộc ki ểu số và toán tử Xor th ực hi ện hành vi trên từng cặp bit tươ ng ứng của 2 toán hạng, kết qu ả trên từng cặp bit đượ c xác đị nh theo bảng sau: biti of expr1 biti of expr2 kết qu ả 1 1 0 1 0 1 0 1 1 0 0 0 Môn: Tin h ọc Khoa Công ngh ệ Thông tin Ch ươ ng 7: Bi ểu th ức VB Tr ườ ng ĐH Bách Khoa Tp.HCM Slide 200
  28. Toán t ử luận lý Eqv Cú pháp: expr1 Eqv expr2 (→ kết qu ả)  kết qu ả đượ c xác đị nh theo bảng sau: expr1 expr2 kết qu ả Ghi chú: True True True True False False o Nếu có 1 toán h ạng là Null True Null Null thì k ết qu ả là Null. False True False o Kết qu ả là True n ếu 2 toán False False True hạng gi ống nhau và khác False Null Null Null. Null True Null Null False Null o Kết qu ả là False n ếu 2 toán Null Null Null hạng khác nhau và khác Null. Môn: Tin h ọc Khoa Công ngh ệ Thông tin Ch ươ ng 7: Bi ểu th ức VB Tr ườ ng ĐH Bách Khoa Tp.HCM Slide 201
  29. Toán t ử bitwise Eqv Cú pháp: expr1 Eqv expr2 (→ kết qu ả)  2 toán hạng thu ộc ki ểu số và toán tử Eqv th ực hi ện hành vi trên từng cặp bit tươ ng ứng của 2 toán hạng, kết qu ả trên từng cặp bit đượ c xác đị nh theo bảng sau: biti of expr1 biti of expr2 kết qu ả 1 1 1 1 0 0 0 1 0 0 0 1 Môn: Tin h ọc Khoa Công ngh ệ Thông tin Ch ươ ng 7: Bi ểu th ức VB Tr ườ ng ĐH Bách Khoa Tp.HCM Slide 202
  30. Toán t ử luận lý Imp Cú pháp: expr1 Imp expr2 (→ kết qu ả)  kết qu ả đượ c xác đị nh theo bảng sau: Ghi chú: expr1 expr2 kết qu ả True True True o Nếu toán h ạng 1 là False thì True False False kết qu ả là True. True Null Null o Kết qu ả là True n ếu 2 toán False True True hạng đề u là True. False False True False Null True Null True True Null False Null Null Null Null Môn: Tin h ọc Khoa Công ngh ệ Thông tin Ch ươ ng 7: Bi ểu th ức VB Tr ườ ng ĐH Bách Khoa Tp.HCM Slide 203
  31. Toán t ử bitwise Imp Cú pháp: expr1 Imp expr2 (→ kết qu ả)  2 toán hạng thu ộc ki ểu số và toán tử Imp th ực hi ện hành vi trên từng cặp bit tươ ng ứng của 2 toán hạng, kết qu ả trên từng cặp bit đượ c xác đị nh theo bảng sau: biti of expr1 biti of expr2 kết qu ả 1 1 1 1 0 0 0 1 1 0 0 1 Môn: Tin h ọc Khoa Công ngh ệ Thông tin Ch ươ ng 7: Bi ểu th ức VB Tr ườ ng ĐH Bách Khoa Tp.HCM Slide 204
  32. Toán t ử luận lý và bitwise Not Cú pháp: Not expr (→ kết qu ả)  kết qu ả của bi ểu th ức theo bảng sau: expr kết qu ả True False biti of expr kết qu ả False True 1 0 Null Null 0 1 Cú pháp: Not expr (→ kết qu ả)  toán hạng thu ộc ki ểu số và toán tử Not th ực hi ện hành vi trên từng bit tươ ng ứng của toán hạng, kết qu ả trên từng bit đượ c xác đị nh theo bảng trên: Môn: Tin h ọc Khoa Công ngh ệ Thông tin Ch ươ ng 7: Bi ểu th ức VB Tr ườ ng ĐH Bách Khoa Tp.HCM Slide 205
  33. 7.3 Qui trình tính bi ểu thức Nếu bi ểu th ức đượ c xây dựng ch ỉ trên các bi ểu th ức cơ bản thì qui trình tính bi ểu th ức chính là qui trình xây dựng bi ểu th ức đó. Nếu bi ểu th ức đượ c xây dựng trên các bi ểu th ức con bất kỳ thì qui trình tính toán nh ư sau: tính từ trái sang ph ải, mỗi lần gặp 1 toán tử (ký hi ệu là CurrentOp) thì ph ải nhìn tr ướ c toán tử đi ngay sau nó (SussesorOp), so sánh độ ưu tiên của 2 toán tử và ra quy ết đị nh nh ư sau:  nếu không có SussesorOp thì tính ngay toán tử CurrentOp (trên 1 hay 2 toán hạng của nó).  nếu toán tử CurrentOp có độ ưu tiên cao hơn hay bằng toán tử SussesorOp thì tính ngay toán tử CurrentOp (trên 1 hay 2 toán hạng của nó).  nếu toán tử CurrentOp có độ ưu tiên th ấp hơn SussesorOp thì cố gắng th ực hi ện toán tử SussesorOp tr ướ c. Vi ệc cố gắng này cũng có th ể bị tạm ho ản nếu toán tử đi sau toán tử SussesorOp có độ ưu tiên cao hơn SussesorOp,  Khi toán tử SussesorOp đượ c th ực hi ện xong thì toán tử ngay sau SussesorOp tr ở thành toán tử đi ngay sau CurrentOp ⇒ vi ệc ki ểm tra xem CurrentOp có đượ c th ực hi ện không sẽ đượ c lặp lại. Môn: Tin h ọc Khoa Công ngh ệ Thông tin Ch ươ ng 7: Bi ểu th ức VB Tr ườ ng ĐH Bách Khoa Tp.HCM Slide 206
  34. 7.4 Thứ t ự ưu tiên cụ thể của các toán t ử Các toán t ử s ố h ọc có độ ưu tiên cao nh ất, r ồi t ới các toán t ử so sánh và sau cùng là các toán t ử lu ận lý:  Gi ữa các toán t ử s ố h ọc, quy ền ưu tiên t ừ cao xu ống th ấp theo t ứ t ự từ trên xu ống trong b ảng sau.  Các toán t ử so sánh có cùng th ứ t ự ưu tiên.  Gi ữa các toán t ử lu ận lý, quy ền ưu tiên t ừ cao xu ống th ấp theo t ứ t ự từ trên xu ống trong b ảng sau. Arithmetic Comparison Logical 1.Exponentiation (^) 8.Equality (=) 9. Not 2.Negation (–) 8.Inequality ( ) 12.Xor 5.Modulus arithmetic (Mod) 8.Less than or equal to ( =) 14.Imp 7.String concatenation (&) 8.Like, Is Môn: Tin h ọc Khoa Công ngh ệ Thông tin Ch ươ ng 7: Bi ểu th ức VB Tr ườ ng ĐH Bách Khoa Tp.HCM Slide 207
  35. Thí dụ về qui trình tính bi ểu thức Thí d ụ sau là bi ểu th ức tính giá tr ị mới c ủa ph ần t ử Display trong ch ươ ng trình MiniCalculator trong tr ườ ng h ợp ng ườ i dùng mới nh ập thêm 1 ký s ố ở ph ần l ẻ, trong đó:  dblDispValue là bi ến ch ứa tr ị c ủa Display.  intNegative là bi ến miêu t ả d ấu c ủa tr ị Display (1: d ươ ng, -1: âm).  d là bi ến ch ứa ký s ố mới nh ập.  bytPosDigit là bi ến miêu t ả v ị trí ký s ố v ừa nh ập ở bên ph ải d ấu '.'. dblDispValue = dblDispValue + intNegative * d * (10 ^ -bytPosDigit) Ghi chú : theo th ứ t ự, toán t ử l ũy th ừa đượ c tính tr ướ c toán t ử -, 2 nh ưng ở đây để tính đượ c lu ỹ 1 th ừa, ta bu ộc ph ải xác đị nh 3 đượ c toán h ạng đi sau nó và 5 4 nh ư v ậy toán t ử - ph ải đượ c tính tr ướ c trong tr ườ ng h ợp này. Môn: Tin h ọc Khoa Công ngh ệ Thông tin Ch ươ ng 7: Bi ểu th ức VB Tr ườ ng ĐH Bách Khoa Tp.HCM Slide 208