Tin học dại cương - Chương 9: Định nghĩa thủ tục và sử dụng

pdf 22 trang vanle 2270
Bạn đang xem 20 trang mẫu của tài liệu "Tin học dại cương - Chương 9: Định nghĩa thủ tục và sử dụng", để 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:

  • pdftin_hoc_dai_cuong_chuong_9_dinh_nghia_thu_tuc_va_su_dung.pdf

Nội dung text: Tin học dại cương - Chương 9: Định nghĩa thủ tục và sử dụng

  1. MÔN TIN HỌC Ch ươ ng 9 ĐỊ NH NGHĨA THỦ TỤC & SỬ DỤNG 9.1 Thủ t ục & t ầm v ực s ử d ụng thủ t ục 9.2 Cú pháp đị nh ngh ĩa hàm. 9.3 Cú pháp đị nh ngh ĩa th ủ t ục 9.4 Gọi th ủ t ục 9.5 Cơ ch ế truy ền tham s ố 9.6 Các th ủ t ục đị nh ngh ĩa s ẵn Môn: Tin h ọc Khoa Công ngh ệ Thông tin Ch ươ ng 9: Đị nh ngh ĩa th ủ t ục & s ử d ụng Tr ườ ng ĐH Bách Khoa Tp.HCM Slide 236
  2. Nhắc l ại cấu trúc t ổ chức 1 chương trình  Một ch ươ ng trình th ườ ng cung c ấp nhi ều ch ức n ăng cho ng ườ i dùng ⇒ Ch ươ ng trình th ườ ng là 1 h ệ th ống ph ức t ạp. Để d ễ qu ản lý và xây dựng ch ươ ng trình, ng ườ i ta th ườ ng chia nó ra nhi ều đơ n v ị nh ỏ h ơn. Hi ện có 2 ph ươ ng pháp chia nh ỏ ch ươ ng trình:  ph ươ ng pháp có c ấu trúc: ch ươ ng trình đượ c chia nh ỏ thành nhi ều module ch ức n ăng, mỗi module ch ứa nhi ều điểm nh ập (entry), mỗi điểm nh ập cung c ấp 1 d ịch v ụ (ch ức n ăng) rõ ràng, đơ n gi ản nào đó. Ta g ọi mỗi điểm nh ập là th ủ t ục th ực hi ện ch ức n ăng t ươ ng ứng.  ph ươ ng pháp h ướ ng đố i t ượ ng: ch ươ ng trình đượ c chia nh ỏ thành nhi ều đố i t ượ ng, mỗi đố i t ượ ng ch ứa nhi ều điểm nh ập (entry), mỗi điểm nh ập cung c ấp 1 d ịch v ụ (ch ức n ăng) rõ ràng, đơ n gi ản nào đó. Ta g ọi mỗi điểm nh ập là th ủ t ục th ực hi ện ch ức n ăng t ươ ng ứng.  Tóm l ại, dù dùng ph ươ ng pháp chia nh ỏ ch ươ ng trình nào thì đơ n v ị ch ức n ăng nh ỏ nh ất mà ng ườ i l ập trình có th ể xây d ựng và dùng (g ọi) lại nhi ều l ần trong ch ươ ng trình là th ủ t ục. Môn: Tin h ọc Khoa Công ngh ệ Thông tin Ch ươ ng 9: Đị nh ngh ĩa th ủ t ục & s ử d ụng Tr ườ ng ĐH Bách Khoa Tp.HCM Slide 237
  3. 9.1 Phân loại thủ t ục trong VB  Nếu ta phân tích ch ươ ng trình theo c ấu trúc thì ch ươ ng trình VB là t ập các standard module, trong mỗi module ta có th ể đị nh ngh ĩa n th ủ t ục khác nhau thu ộc 1 trong 2 d ạng:  th ủ t ục - Sub: 1 đoạn l ệnh th ực thi VB để th ực hi ện 1 ch ức n ăng rõ ràng, đơ n gi ản nh ưng không tr ả v ề giá tr ị kèm theo tên th ủ t ục.  hàm - Function: 1 đoạn l ệnh th ực thi VB để th ực hi ện 1 ch ức n ăng rõ ràng, đơ n gi ản và tr ả v ề giá tr ị kèm theo tên hàm.  Nếu ta phân tích ch ươ ng trình theo h ướ ng đố i t ượ ng thì ch ươ ng trình VB là t ập các form hay class module, trong mỗi module ta có th ể đị nh ngh ĩa n th ủ t ục khác nhau thu ộc 1 trong 3 d ạng:  th ủ t ục - Sub: 1 đoạn l ệnh th ực thi VB để th ực hi ện 1 ch ức n ăng rõ ràng, đơ n gi ản nh ưng không tr ả v ề giá tr ị kèm theo tên th ủ t ục.  hàm - Function: 1 đoạn l ệnh th ực thi VB để th ực hi ện 1 ch ức n ăng rõ ràng, đơ n gi ản và tr ả v ề giá tr ị kèm theo tên hàm.  truy xu ất thu ộc tính - Property: 1 đoạn l ệnh th ực thi VB để đọ c/ghi 1 thu ộc tính t ươ ng ứng c ủa đố i t ượ ng. Có 3 th ủ t ục lo ại này là Get, Set và Let. Môn: Tin h ọc Khoa Công ngh ệ Thông tin Ch ươ ng 9: Đị nh ngh ĩa th ủ t ục & s ử d ụng Tr ườ ng ĐH Bách Khoa Tp.HCM Slide 238
  4. Tầm vực sử dụng thủ t ục trong VB  Trong mỗi standard module, ta có th ể xác đị nh t ầm v ực s ử d ụng c ủa t ừng th ủ tục:  cục b ộ trong module: dùng t ừ khóa Private trong l ệnh đị nh ngh ĩa th ủ t ục.  toàn c ục trong ch ươ ng trình: dùng t ừ khóa Public trong l ệnh đị nh ngh ĩa th ủ tục.  Trong mỗi form hay class module, ta có th ể xác đị nh t ầm v ực s ử d ụng c ủa t ừng th ủ t ục:  cục b ộ trong module ( đố i t ượ ng): dùng t ừ khóa Private trong l ệnh đị nh ngh ĩa th ủ t ục.  cục b ộ trong Project: dùng t ừ khóa Friend trong l ệnh đị nh ngh ĩa th ủ t ục.  công c ộng (ai dùng c ũng đượ c): dùng t ừ khóa Public trong l ệnh đị nh ngh ĩa th ủ t ục. Các th ủ t ục công c ộng c ủa đố i t ượ ng đượ c g ọi là method để phân bi ệt v ới Sub/Function.  Về nguyên t ắc, các th ủ t ục Property Get, Set và Let đề u ph ải có t ầm v ực công c ộng (dùng t ừ khóa Public). Môn: Tin h ọc Khoa Công ngh ệ Thông tin Ch ươ ng 9: Đị nh ngh ĩa th ủ t ục & s ử d ụng Tr ườ ng ĐH Bách Khoa Tp.HCM Slide 239
  5. 9.2 Cú pháp đị nh nghĩa hàm - Function  Cú pháp để đị nh ngh ĩa 1 hàm: [Public | Private | Friend ] [ Static ] Function name [(arglist )] [ As type ] [statements ] [name = expression ] [Exit Function ] [statements ] [name = expression ] End Function  Dùng t ừ khóa Public để đị nh ngh ĩa hàm có t ầm v ực toàn c ục, ngh ĩa là bất k ỳ l ệnh nào c ủa ch ươ ng trình đề u có th ể g ọi hàm Public.  Dùng t ừ khóa Friend để đị nh ngh ĩa method thu ộc 1 class module nh ưng ch ỉ có t ầm v ực c ục b ộ trong Project, ngh ĩa là ch ỉ có các l ệnh trong cùng Project mới có th ể g ởi thông điệp đế n hàm Friend c ủa đố i tượ ng đó, còn các l ệnh ở ngoài Project thì không th ấy hàm Friend c ủa đố i t ượ ng này. Môn: Tin h ọc Khoa Công ngh ệ Thông tin Ch ươ ng 9: Đị nh ngh ĩa th ủ t ục & s ử d ụng Tr ườ ng ĐH Bách Khoa Tp.HCM Slide 240
  6. Cú pháp đị nh nghĩa hàm - Function (tt)  Dùng t ừ khóa Private để đị nh ngh ĩa hàm có t ầm v ực c ục b ộ trong module, ngh ĩa là ch ỉ có các l ệnh trong cùng module mới có th ể g ọi hàm Private trong module t ươ ng ứng.  Dùng t ừ khóa Static để đị nh ngh ĩa các bi ến c ục b ộ trong hàm đề u là Static, ngh ĩa là giá tr ị c ủa chúng v ẫn t ồn t ại qua các l ần g ọi khác nhau đế n hàm này.  [statements] là danh sách các l ệnh đị nh ngh ĩa bi ến, h ằng, ki ểu c ục b ộ trong function và các l ệnh th ực thi miêu t ả chính xác ch ức n ăng c ủa hàm.  Lệnh gán name = expression cho phép gán giá tr ị tr ả v ề cho l ệnh g ọi hàm.  Lệnh Exit Function cho phép tr ả ngay điều khi ển v ề l ệnh g ọi hàm này (thay vì th ực thi ti ếp các l ệnh còn l ại c ủa hàm). Môn: Tin h ọc Khoa Công ngh ệ Thông tin Ch ươ ng 9: Đị nh ngh ĩa th ủ t ục & s ử d ụng Tr ườ ng ĐH Bách Khoa Tp.HCM Slide 241
  7. Cú pháp đị nh nghĩa hàm - Function (tt)  arglist là danh sách các tham s ố hình th ức, mỗi tham s ố đượ c cách nhau b ởi d ấu ',' và đượ c đị nh ngh ĩa theo cú pháp nh ư sau: [Optional ] [ ByVal | ByRef ] [ ParamArray ] varname [( ) ] [ As type ] [=defaultvalue ]  Dùng t ừ khóa Optional để khai báo r ằng tham s ố t ươ ng ứng là nhi ệm ý trong lúc g ọi hàm: truy ền hay không c ũng đượ c. Trong tr ườ ng h ợp này ta nên dùng thêm thành ph ần [ = defaultvalue ] để xác đị nh giá tr ị c ần truy ền nhi ệm ý.  Dùng t ừ khóa ByRef để khai báo vi ệc truy ền tham s ố b ằng tham kh ảo, đây là ch ế độ truy ền tham s ố nhi ệm ý. Ng ượ c l ại dùng t ừ khóa ByVal để khai báo c ơ ch ế truy ền tham s ố b ằng giá tr ị.  Ch ỉ có th ể dùng t ừ khóa ParamArray cho tham s ố cu ối trong danh sách tham s ố, tham s ố này cho phép ta truy ền bao nhiêu tham s ố c ụ th ể c ũng đượ c. Môn: Tin h ọc Khoa Công ngh ệ Thông tin Ch ươ ng 9: Đị nh ngh ĩa th ủ t ục & s ử d ụng Tr ườ ng ĐH Bách Khoa Tp.HCM Slide 242
  8. Thí dụ đị nh nghĩa hàm  Đoạn code sau đị nh ngh ĩa hàm tính n! giai th ừa theo gi ải thu ật đệ qui: Public Function giaithua(ByVal n As Long) As Long If n 1 thì tính theo công th ức n! = n * (n-1)! giaithua = n * giaithua(n - 1) End Function Môn: Tin h ọc Khoa Công ngh ệ Thông tin Ch ươ ng 9: Đị nh ngh ĩa th ủ t ục & s ử d ụng Tr ườ ng ĐH Bách Khoa Tp.HCM Slide 243
  9. 9.3 Cú pháp đị nh nghĩa thủ t ục - Sub  Cú pháp để đị nh ngh ĩa 1 th ủ t ục Sub: [Private | Public | Friend ] [ Static ] Sub name [(arglist )] [statements ] [Exit Sub ] [statements ] End Sub  Ý ngh ĩa c ủa các t ừ khóa Public, Private, Friend, Static cũng nh ư các thành ph ần arglist , Exit Sub , statements gi ống y nh ư trong vi ệc đị nh ngh ĩa hàm mà chúng ta đã gi ới thi ệu ở nh ững slide tr ướ c.  Sự khác bi ệt gi ữa hàm và th ủ t ục là hàm luôn tr ả v ề giá tr ị k ết h ợp v ới tên hàm, còn th ủ t ục thì không tr ả v ề tr ị k ết h ợp v ới tên th ủ t ục (nh ưng nó v ẫn có th ể tr ả k ết qu ả v ề thông qua các tham s ố truy ền b ằng tham kh ảo).  Nếu quan sát k ỹ, ta th ấy các hàm x ử lý s ự ki ện cho các đố i t ượ ng giao di ện đề u là Sub, ch ứ không ph ải là Function, do đó t ừ đây ta dùng đoạn câu "th ủ t ục x ử lý s ự ki ện" thay cho "hàm x ử lý s ự ki ện". Môn: Tin h ọc Khoa Công ngh ệ Thông tin Ch ươ ng 9: Đị nh ngh ĩa th ủ t ục & s ử d ụng Tr ườ ng ĐH Bách Khoa Tp.HCM Slide 244
  10. Cú pháp đị nh nghĩa method Get thuộc tính đối t ượng  Cú pháp để đị nh ngh ĩa 1 method Get: [Public | Private | Friend ] [ Static ] Property Get name [(arglist )] [ As type ] [statements ] [name = expression ] [Exit Property ] [statements ] [name = expression ] End Property  Ý ngh ĩa c ủa các t ừ khóa Public, Private, Friend, Static cũng nh ư các thành ph ần arglist , Exit Property , statements, [name = expression ] gi ống y nh ư trong l ệnh đị nh ngh ĩa hàm mà chúng ta đã gi ới thi ệu ở nh ững slide tr ướ c.  Method Get cho phép bên ngoài có th ể đọ c giá tr ị c ủa 1 thu ộc tính bên trong đố i t ượ ng nh ưng d ướ i s ự ki ểm soát c ủa đố i t ượ ng đó. Môn: Tin h ọc Khoa Công ngh ệ Thông tin Ch ươ ng 9: Đị nh ngh ĩa th ủ t ục & s ử d ụng Tr ườ ng ĐH Bách Khoa Tp.HCM Slide 245
  11. Cú pháp đị nh nghĩa method Let thuộc tính đối t ượng  Cú pháp để đị nh ngh ĩa 1 method Let: [Public | Private | Friend ] [ Static ] Property Let name ([arglist ,] value ) [statements ] [Exit Property ] [statements ] End Property  Ý ngh ĩa c ủa các t ừ khóa Public, Private, Friend, Static cũng nh ư các thành ph ần arglist , Exit Property , statements gi ống y nh ư trong l ệnh đị nh ngh ĩa hàm mà chúng ta đã gi ới thi ệu ở nh ững slide tr ướ c.  Method Let cho phép bên ngoài có th ể gán giá tr ị mới cho 1 thu ộc tính bên trong đố i t ượ ng nh ưng d ướ i s ự ki ểm soát c ủa đố i t ượ ng đó. Môn: Tin h ọc Khoa Công ngh ệ Thông tin Ch ươ ng 9: Đị nh ngh ĩa th ủ t ục & s ử d ụng Tr ườ ng ĐH Bách Khoa Tp.HCM Slide 246
  12. Cú pháp đị nh nghĩa method Set thuộc tính đối t ượng  Cú pháp để đị nh ngh ĩa 1 method Set: [Public | Private | Friend ] [ Static ] Property Set name ([arglist ,] reference ) [statements ] [Exit Property ] [statements ] End Property  ý ngh ĩa c ủa các t ừ khóa Public, Private, Friend, Static cũng nh ư các thành ph ần arglist , Exit Property , statements gi ống y nh ư trong l ệnh đị nh ngh ĩa hàm mà chúng ta đã gi ới thi ệu ở nh ững slide tr ướ c.  Method Set cho phép bên ngoài có th ể gán tham kh ảo cho 1 thu ộc tính bên trong đố i t ượ ng nh ưng d ướ i s ự ki ểm soát c ủa đố i t ượ ng đó.  Sự khác bi ệt gi ữa method Let và Set là Let gán giá tr ị thu ộc 1 ki ểu c ổ điển, còn Set gán tham kh ảo vào 1 thu ộc tính có ki ểu là class đố i t ượ ng. Môn: Tin h ọc Khoa Công ngh ệ Thông tin Ch ươ ng 9: Đị nh ngh ĩa th ủ t ục & s ử d ụng Tr ườ ng ĐH Bách Khoa Tp.HCM Slide 247
  13. 9.4 Gọi thủ t ục  Sau khi th ủ t ục đã đượ c đị nh ngh ĩa, ta có th ể s ử d ụng (g ọi) nó nh ờ l ệnh gọi th ủ t ục. Cú pháp g ọi th ủ t ục đã đượ c miêu t ả trong slide 216 (ch ươ ng 8). Do Function là d ạng th ủ t ục có tr ả v ề k ết qu ả k ết h ợp v ới tên hàm nên l ệnh g ọi hàm th ườ ng đượ c dùng trong 1 bi ểu th ức (l ệnh gọi hàm là bi ểu th ức c ơ b ản để c ấu thành bi ểu th ức ph ức t ạp h ơn).  Thí d ụ, gi ả s ử ta đã đị nh ngh ĩa hàm tính n! tên là giaithua(n) thì ta có th ể gọi nó nh ư sau: n = 8 MsgBox (n & "! = " & giaithua(n))  Thí d ụ, gi ả s ử ta đã đị nh ngh ĩa th ủ t ục hoán v ị 2 s ố nguyên tên là Hoanvi(a,b) thì ta có th ể g ọi nó nh ư sau: n = 8 m = 4 Call Hoanvi (n,m) ' ho ặc Hoanvi n,m ' Lúc này n = 8 và m = 4 Môn: Tin h ọc Khoa Công ngh ệ Thông tin Ch ươ ng 9: Đị nh ngh ĩa th ủ t ục & s ử d ụng Tr ườ ng ĐH Bách Khoa Tp.HCM Slide 248
  14. 9.5 Cơ chế truy ền tham s ố  Các tham s ố trong l ệnh đị nh ngh ĩa th ủ t ục đượ c g ọi là tham s ố hình th ức. Các tham s ố (th ườ ng là bi ểu th ức) trong l ệnh g ọi th ủ t ục đượ c g ọi là tham s ố th ực. Nguyên t ắc g ọi th ủ t ục là:  số l ượ ng các tham s ố th ực ph ải b ằng s ố l ượ ng các tham s ố hình th ức.  và ki ểu c ủa t ừng tham s ố th ực trong l ệnh g ọi th ủ t ục ph ải trùng (hay tươ ng thích) v ới ki ểu c ủa tham s ố hình th ức t ươ ng ứng trong l ệnh đị nh ngh ĩa th ủ t ục.  Lệnh g ọi th ủ t ục s ẽ truy ền tham s ố th ực trong l ệnh g ọi cho th ủ t ục r ồi kh ởi độ ng th ủ t ục ch ạy để x ử lý tham s ố th ực v ừa nh ận đượ c. Theo th ời gian, th ủ t ục s ẽ đượ c g ọi nhi ều l ần, mỗi l ần v ới danh sách tham s ố th ực cụ th ể.  Có 2 c ơ ch ế truy ền tham s ố cho th ủ t ục t ại th ời điểm g ọi th ủ t ục: truy ền giá tr ị (n ội dung c ủa tham s ố) hay truy ền tham kh ảo ( đị a ch ỉ - vị trí b ộ nh ớ c ủa tham s ố). Mỗi c ơ ch ế truy ền tham s ố có tính ch ất riêng mà ta sẽ trình bày k ỹ trong các slide k ế ti ếp: Môn: Tin h ọc Khoa Công ngh ệ Thông tin Ch ươ ng 9: Đị nh ngh ĩa th ủ t ục & s ử d ụng Tr ườ ng ĐH Bách Khoa Tp.HCM Slide 249
  15. Cơ chế truy ền tham s ố (tt)  Dùng t ừ khóa ByVal kết h ợp v ới tham s ố hình th ức để khai báo nó đượ c truy ền b ằng giá tr ị. Khi g ọi th ủ t ục, giá tr ị c ủa tham s ố th ực sẽ đượ c truy ền cho th ủ t ục c ần th ực thi. Nh ờ cách truy ền tham s ố này mà th ủ t ục c ần th ực thi s ẽ không th ể truy xu ất d ữ li ệu c ủa th ủ t ục g ọi. Tuy nhiên cách truy ền b ằng giá tr ị ch ỉ thích h ợp cho các tham s ố IN (truy ền từ ph ần t ử g ọi đế n th ủ t ục c ần g ọi) có ki ểu vô h ướ ng (scalar).  Để truy ền hi ệu qu ả tham s ố có n ội dung chi ếm nhi ều ô nh ớ hay để nh ận kết qu ả ta s ẽ ph ải dùng c ơ ch ế truy ền b ằng tham kh ảo ( đị a ch ỉ). Để đị nh ngh ĩa tham s ố hình th ức đượ c truy ền b ằng tham kh ảo, ta dùng t ừ khóa ByRef kết h ợp v ới tham s ố hình th ức đó. Khi g ọi th ủ t ục, đị a ch ỉ c ủa tham s ố th ực sẽ đượ c truy ền cho th ủ t ục c ần th ực thi. V ới đặ c điểm này, tham s ố th ực ph ải là bi ến ch ứ không th ể là bi ểu th ức.  Lưu ý r ằng n ếu ta không dùng t ừ khóa ByRef hay ByVal k ết h ợp v ới tham s ố hình th ức thì default nó đượ c truy ền b ằng tham kh ảo. Môn: Tin h ọc Khoa Công ngh ệ Thông tin Ch ươ ng 9: Đị nh ngh ĩa th ủ t ục & s ử d ụng Tr ườ ng ĐH Bách Khoa Tp.HCM Slide 250
  16. Cơ chế truy ền tham s ố (tt) // version truy ền b ằng giá tr ị Private Sub Hoanvi1(ByVal x As Integer, ByVal y As Integer) Dim tmp As Integer tmp = x x = y y = tmp End Sub // version truy ền b ằng tham kh ảo Private Sub Hoanvi2(ByRef x As Integer, ByRef y As Integer) Dim tmp As Integer tmp = x x = y y = tmp End Sub // version truy ền b ằng tham kh ảo Private Sub Hoanvi3(x As Integer, y As Integer) Dim tmp As Integer tmp = x x = y y = tmp End Sub Môn: Tin h ọc Khoa Công ngh ệ Thông tin Ch ươ ng 9: Đị nh ngh ĩa th ủ t ục & s ử d ụng Tr ườ ng ĐH Bách Khoa Tp.HCM Slide 251
  17. Cơ chế truy ền tham s ố (tt) Hãy kh ảo sát k ỹ 3 th ủ t ục hoán v ị d ữ li ệu trong slide tr ướ c. Bây gi ờ hãy chú ý t ới vi ệc s ử d ụng chúng và k ết qu ả đạ t đượ c: Dim intN As Integer Dim intM As Integer intN = 4 intM = 8 Call Hoanvi1(intN, intM) ' k ết qu ả intN = 4 và intM = 8 (không đổ i) Call Hoanvi2(intN, intM) ' k ết qu ả intN = 8 và intM = 4 ( đã hoán v ị đượ c) Call Hoanvi3(intN, intM) ' k ết qu ả intN = 4 và intM = 8 ( đã hoán v ị đượ c) Môn: Tin h ọc Khoa Công ngh ệ Thông tin Ch ươ ng 9: Đị nh ngh ĩa th ủ t ục & s ử d ụng Tr ườ ng ĐH Bách Khoa Tp.HCM Slide 252
  18. 9.6 Các thủ t ục đị nh s ẵn c ủa VB  Về nguyên t ắc, ng ườ i l ập trình ph ải đị nh ngh ĩa th ủ t ục (Sub, Function, Property) tr ướ c khi có th ể s ử d ụng l ại (g ọi) nó. Tuy nhiên, VB đã đị nh ngh ĩa r ất nhi ều th ủ t ục d ạng Sub, Function để th ực hi ện các ch ức n ăng rất ph ổ bi ến, ng ườ i l ập trình có th ể g ọi chúng b ất c ứ khi nào c ần thi ết. Ta g ọi các th ủ t ục này là các th ủ t ục đị nh s ẵn c ủa VB.  Nếu ch ưa đòi h ỏi độ chính xác cao, ng ườ i ta còn g ọi các th ủ t ục đị nh sẵn c ủa VB là các l ệnh th ực thi.  Sau đây ta chúng ta hãy làm quen v ới 1 s ố th ủ t ục th ườ ng dùng. Môn: Tin h ọc Khoa Công ngh ệ Thông tin Ch ươ ng 9: Đị nh ngh ĩa th ủ t ục & s ử d ụng Tr ườ ng ĐH Bách Khoa Tp.HCM Slide 253
  19. Hàm hi ển thị form thông báo  Cú pháp MsgBox( prompt [, buttons] [, title] [, helpfile, context] ) trong đó:  prompt là bi ểu th ức chu ỗi miêu t ả thông báo c ần hi ển th ị.  buttons là bi ểu th ức s ố miêu t ả s ố l ượ ng và lo ại button đượ c hi ển th ị trong thông báo, nhi ệm ý là 0 ngh ĩa là ch ỉ có button Ok đượ c hi ển th ị.  title là bi ểu th ức chu ỗi miêu t ả title bar c ủa form thông báo.  helpfile là bi ểu th ức chu ỗi miêu t ả đườ ng d ẫn file Help đượ c dùng với form thông báo (theo c ơ ch ế context-sensitive Help).  context là bi ểu th ức s ố miêu t ả ch ỉ s ố c ủa "topic" c ần dùng trong file Help  Th ườ ng để g ọi d ễ dàng hàm MsgBox, ta ch ỉ c ần miêu t ả tham s ố prompt bắt bu ộc. Môn: Tin h ọc Khoa Công ngh ệ Thông tin Ch ươ ng 9: Đị nh ngh ĩa th ủ t ục & s ử d ụng Tr ườ ng ĐH Bách Khoa Tp.HCM Slide 254
  20. Hàm hi ển thị form nhập li ệu (dạng chuỗi)  Cú pháp InputBox ( prompt [, title ] [, default ] [, xpos ] [, ypos ] [, helpfile ,context ]) trong đó:  prompt, title, helpfile, context là các tham s ố v ới ý ngh ĩa y nh ư trong hàm MsgBox.  xpos, ypos là bi ểu th ức s ố miêu t ả t ọa độ (x,y) c ủa điểm trên trái c ủa form thông báo trong màn hình. N ếu không đượ c khai báo, form thông báo s ẽ đượ c ch ỉnh v ị trí t ự độ ng (gi ữa màn hình).  default là bi ểu th ức chu ỗi miêu t ả giá tr ị default c ủa chu ỗi đượ c nh ập.  Th ườ ng để g ọi d ễ dàng hàm InputBox, ta ch ỉ c ần miêu t ả tham s ố prompt bắt bu ộc. Môn: Tin h ọc Khoa Công ngh ệ Thông tin Ch ươ ng 9: Đị nh ngh ĩa th ủ t ục & s ử d ụng Tr ườ ng ĐH Bách Khoa Tp.HCM Slide 255
  21. Hàm chuyển đổi ki ểu  VB cung c ấp các hàm sau để ta có th ể chuy ển giá tr ị t ừ ki ểu nào đó v ề ki ểu xác đị nh: CBool ( expression ): chuy ển tr ị c ủa bi ểu th ức v ề ki ểu Boolean CByte ( expression ): chuy ển tr ị c ủa bi ểu th ức v ề ki ểu Byte CCur ( expression ): chuy ển tr ị c ủa bi ểu th ức v ề ki ểu Currency CDate ( expression ): chuy ển tr ị c ủa bi ểu th ức v ề ki ểu Date CDbl ( expression ): chuy ển tr ị c ủa bi ểu th ức v ề ki ểu Double CDec ( expression ): chuy ển tr ị c ủa bi ểu th ức v ề ki ểu Decimal CInt ( expression ): chuy ển tr ị c ủa bi ểu th ức v ề ki ểu Integer CLng ( expression ): chuy ển tr ị c ủa bi ểu th ức v ề ki ểu Long CSng ( expression ): chuy ển tr ị c ủa bi ểu th ức v ề ki ểu Single CStr ( expression ): chuy ển tr ị c ủa bi ểu th ức v ề ki ểu String CVar ( expression ): chuy ển tr ị c ủa bi ểu th ức v ề ki ểu Variant Môn: Tin h ọc Khoa Công ngh ệ Thông tin Ch ươ ng 9: Đị nh ngh ĩa th ủ t ục & s ử d ụng Tr ườ ng ĐH Bách Khoa Tp.HCM Slide 256
  22. Các hàm thư vi ện liên k ết động  Trong code VB, ngoài vi ệc g ọi các th ủ t ục đượ c đị nh ngh ĩa trong Project và các th ủ t ục đị nh s ẵn, ng ườ i l ập trình còn có th ể g ọi các hàm trong các th ư vi ện liên kết độ ng.  1 th ư vi ện liên k ết độ ng có d ạng *.dll th ườ ng đượ c xây d ựng b ằng ngôn ng ữ VC++ và ch ứa 1 danh sách các hàm d ịch v ụ. Khi ch ươ ng trình VB g ọi 1 hàm trong file th ư vi ện DLL, file đượ c n ạp vào b ộ nh ớ và hàm đượ c liên k ết vào vùng nh ớ c ủa ch ươ ng trình để ch ươ ng trình có th ể g ọi đượ c hàm c ần g ọi. Các hàm th ư vi ện DLL đượ c s ử d ụng chung cho mọi ph ần mềm đang ch ạy, ngh ĩa là ch ỉ có 1 b ản (copy) c ủa hàm th ư vi ện DLL trong b ộ nh ớ máy tính để ph ục v ụ cho mọi ứng d ụng g ọi nó.  Ta có th ể coi Windows nh ư 1 th ư vi ện ph ần mềm DLL l ớn, th ư vi ện này cung cấp r ất nhi ều hàm d ịch v ụ khác nhau, ng ườ i ta g ọi các hàm này là các hàm API (Application Programming Interface). Ch ươ ng trình VB có th ể g ọi b ất k ỳ hàm nào trong th ư vi ện này theo c ơ ch ế liên k ết độ ng nh ư đã trình bày ở trên.  Tr ướ c khi 1 hàm DLL đượ c dùng trong module VB nào đó, ta c ần khai báo đặ c tả hàm DLL này nh ờ l ệnh Declare của VB v ới cú pháp đượ c trình bày trong slide 153 (ch ươ ng 6). Môn: Tin h ọc Khoa Công ngh ệ Thông tin Ch ươ ng 9: Đị nh ngh ĩa th ủ t ục & s ử d ụng Tr ườ ng ĐH Bách Khoa Tp.HCM Slide 257