Bài giảng cung cấp cho người học các kiến thức: Sử dụng các MODULE (đơn thể) và thủ tục (PROCEDURE), tạo các module chuẩn, khai báo và sử dụng các biến, gọi thực thi hàm và thủ tục,... Hi vọng đây sẽ là một tài liệu hữu ích dành cho các bạn sinh viên đang theo học môn dùng làm tài liệu học tập và nghiên cứu. Mời các bạn cùng tham khảo chi tiết nội dung bài giảng.
Hướng dẫn lập trình VB.NET Chương 10: Sử dụng module thủ tục Chương 10: Sử dụng MODULE (đơn thể) thủ tục (PROCEDURE) oOo -Nội dung thảo luận: - Tạo module chuẩn - Khai báo sử dụng biến Public toàn cục - Tạo hàm thủ tục tự định nghĩa người dùng - Gọi thực thi hàm thủ tục người dùng cài đặt Module nơi chứa biến, hàm, thủ tục triệu gọi từ nơi chương trình Làm việc với MODULE chuẩn Khi dự án bạn lớn việc có nhiều form điều đương nhiên Có điều bạn khơng thể sử dụng hàm, biến khai báo form cho form Để chia sẻ biến hàm, thủ tục form dự án bạn khai báo chúng module dự án Module file có mở rộng vb chứa mã Bạn lưu module cách chọn Flie | Save Module1 As 1.1 Tạo lưu module chuẩn Bây tạo module với ví dụ MymoduleTest sau đây: Bạn tạo giải pháp thêm vào dự án tên MyModuleTest biết Tại cửa sổ Solution Explorer bạn R-Click vào tên dự án chọn Add | New Item… hình: Biên soạn: Phạm Đức Lập -1- Add: cnt-44-dh, VIMARU Hướng dẫn lập trình VB.NET Chương 10: Sử dụng module thủ tục Bạn chọn mẫu Module nhấn Open Ở bạn để tên mặc định Module1.vb hay nhập tên module ln Nếu để tên mặc định việc thay đổi tên sau dùng phương thức File | Save Module1 As bàn: Khi nhấn Open cửa sổ chế độ Code Editor cho phép ta thao tác mã Bạn xem liệt kê thành phần dự án ba gồm module1 ta vừa tạo cách double click vào phần tiêu đề cửa sổ Solution Explorer: Để cho cửa sổ trở vị trí cũ bạn double click lần Để xem thuộc tính module, bạn R-Click vào module chọn Properties: Biên soạn: Phạm Đức Lập -2- Add: cnt-44-dh, VIMARU Hướng dẫn lập trình VB.NET Chương 10: Sử dụng module thủ tục Bạn thử thay đổi tên module thuộc tính File Name xem Ở ta thay tên thành MathFuction: Để xóa module, bạn r-clik vào chọn Delete Để tạm loại bỏ khỏi dự án bạn RClick chọn Exclude From Projects (có thể chọn Project | Exclude From Project) Khi muốn thêm trở lại bạn chọn Add | Exist Item Làm việc với biến Public (biến toàn cục) Biến toàn cục biến khai báo với từ khóa Public trước Biến cho phép bạn triệu gọi xử lý nơi chương trình Ví dụ: Public toancuc As Integer Khai báo khai báo biến tên toancuc có kiểu liệu Integer Bây ta quay lại chương trình LuckySeven làm chương trước ví dụ ta sử dụng biến tồn cục có tên solanthang để lưu lại số lần người chơi chiến thắng cho hiển thị lên nhãn Biên soạn: Phạm Đức Lập -3- Add: cnt-44-dh, VIMARU Hướng dẫn lập trình VB.NET Chương 10: Sử dụng module thủ tục Ví dụ LUCKYSEVEN: Bạn lưu lại dự án đóng lại Chọn tạo giải pháp thêm vào dự án tên LuckySeven biết Bạn thiết kế Form hình: Chương trình gồm ba nhãn hiển thị số ngẫu nhiên, hai nút cho phép click quay số kêt thúc chương trình, PictureBox hiển thị ảnh chiến thắng, nhãn ghi tên chương trình LuckySeven Bây ta thiết kế thêm nhãn (Label5) hiển thị số lần chiến thắng người chơi Bây ta thêm vào module – module module1 gõ vào khai báo biến sau: Public solanchienthang As Integer Bây sử dụng biến thủ tục Button1_Click sau: Private Sub Button1_Click(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles Button1.Click PictureBox1.Visible = False Label1.Text = CStr(Int(Rnd() * 10)) Label2.Text = CStr(Int(Rnd() * 10)) Label3.Text = CStr(Int(Rnd() * 10)) If (Label1.Text = "7") Or (Label2.Text = "7") _ Or (Label3.Text = "7") Then PictureBox1.Visible = True Beep() solanchienthang += Label5.Text = "Wins: " & solanchienthang End If End Sub Bạn dùng hàm Randomize() kiện Form_Load ví dụ trước Biên soạn: Phạm Đức Lập -4- Add: cnt-44-dh, VIMARU Hướng dẫn lập trình VB.NET Chương 10: Sử dụng module thủ tục Như bước đầu dùng đến module biến toàn cục Bây bạn chạy chương trình để xem hoạt động Biến phạm vi form biến public module: Biến phạm vi form biến khai báo đầu chương trình dịng khai báo form Với chương trình hai cách cho kết Nhưng biến khai báo mức độ form sử dụng hàm, thủ tục form mà Tạo thủ tục (Procedure) Thủ tục nhằm để nhóm phát biểu lệnh liên quan đến thực thi tác vụ Có hai dạng thủ tục là, thủ tục dạng hàm Function thủ tục dạng túy Procedure Thủ tục hàm thường để tính tốn trả kết cho nơi gọi hàm Còn thủ tục túy để thực tác vụ Cả hai dạng nhận đối số để làm nguồn tính tốn, thực thao tác xử lý Bạn khai báo hàm thủ tục form thường việc khai báo đặt module Thủ tục giúp bạn viết lại đoạn mã trùng lặp nhiều lần để thực tác vụ Khi thủ tục hồn thiện bạn biên dịch thành file dll lưu thư viện để sử dụng cho dự án khác Xây dựng hàm (FUNCTION) Hàm khai báo từ khóa Function kết thúc từ khóa End Function Việc thực thi hay gọi hàm cách dùng tên hàm đối số ngoặc đơn có Biên soạn: Phạm Đức Lập -5- Add: cnt-44-dh, VIMARU Hướng dẫn lập trình VB.NET Chương 10: Sử dụng module thủ tục Khi hàm khai báo module mặc định hàm tồn cục triệu gọi từ nơi dự án 4.2 Cú pháp khai báo hàm Cú pháp hàm: Function FunctionName([argument]) As Type Function_statements() [Return value] End Function Trong đó: - FunctionName: tên hàm mà muốn tạo, dùng để gọi hàm sau - As Type: định nghĩa kiểu dl trả hàm sau tính tốn xong - Argument: danh sách đối số truyền cho hàm Mặc định VB thêm từ khóa Byval tức truyền theo tham trị, tất thay đổi hàm lên đối số không làm thay ảnh hưởng đến đối số truyền vào hàm chấm dứt - Function_Statement: khối phát biểu cài đặt cho hàm - Return: cho phép trả lại kết sau hàm cho nơi gọi hàm Ví dụ: Function TotalTax(ByVal Cost As Single) As Single Dim StateTax, CityTax As Single StateTax = Cost * 0.05 CityTax = Cost * 0.015 TotalTax = StateTax + CityTax End Function Hàm trả giá trị thuế tổng TotalTax câu lệnh phát biểu cuối Bạn dùng phát biểu Return ví dụ sau để trả kết cho hàm: Function TotalTax(ByVal Cost As Single) As Single Dim StateTax, CityTax As Single StateTax = Cost * 0.05 CityTax = Cost * 0.015 Return (StateTax + CityTax) End Function 4.2 Gọi hàm Việc gọi hàm theo cú pháp sau: Label1.Text = TotalTax(500) Phát biểu tính thuế dựa chi phí đầu vào $500 gán kết cho thuộc tính Text nhãn label1 4.3 Sử dụng hàm thực tác vụ tính tốn Trong ví dụ sau ta quay trở lại ví dụ LuckySeven tính tỷ lệ chiến thắng gán vào thuộc tính nhãn Label6 Bạn thiết kế lại giao diện sau: Biên soạn: Phạm Đức Lập -6- Add: cnt-44-dh, VIMARU Hướng dẫn lập trình VB.NET Chương 10: Sử dụng module thủ tục Viết mã: Trước hết ta khai báo thêm biến public module1 sau: Public solanchienthang As Short Public Spins As Short Sau bạn tạo thủ tục HitRate tính số phần trăm chiến thắng Số phần trăm tính tỉ số số lần chiến thắng tổng số lần quay: Function HitRate(ByVal Hits As Short, _ ByVal Tries As Short) As String Dim percent As Single percent = Hits / Tries Return Format(percent, "0.0%") End Function Bây bạn trở lại thủ tục Button1_Click nhập sau: Private Sub Button1_Click(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles Button1.Click PictureBox1.Visible = False Label1.Text = CStr(Int(Rnd() * 10)) Label2.Text = CStr(Int(Rnd() * 10)) Label3.Text = CStr(Int(Rnd() * 10)) Spins += If (Label1.Text = "7") Or (Label2.Text = "7") _ Or (Label3.Text = "7") Then PictureBox1.Visible = True Beep() solanchienthang += Label5.Text = "Wins: " & solanchienthang End If Label6.Text = HitRate(solanchienthang, Spins) End Sub Biên soạn: Phạm Đức Lập -7- Add: cnt-44-dh, VIMARU Hướng dẫn lập trình VB.NET Chương 10: Sử dụng module thủ tục Giá trị hàm HitRate gán cho thuộc tính Text nhãn Label6 Chạy chương trình: Bạn chọn Save All chạy cách ấn F5 theo dõi kết Viết xây dựng thủ tục SUB Thủ tục khơng trả giá trị Nó thiết kế để thực thao tác Nó khai báo từ khóa Sub…End Sub Tuy khơng trả giá trị cuối thủ tục trả giá trị thơng qua đối số truyền vào thủ tục 5.1 Khai báo thủ tục Cú pháp: Sub ProcedureName([Arguments]) 'Procedure Statement End Sub Trong đó: - ProcedureName: tên thủ tục - Arguments: đối số - Procedure Statements: Các phát biểu cài đặt cho phần nội dung thủ tục Ví dụ: Bạn tạo ví dụ BestWishesForBirthday để minh họa cách tạo dùng hàm Sub Thiết kế form1 có nút “End” nhập End vào thủ tục Button1_Click Bây bạn thêm module vào chương trình khai báo thủ tục sau: Biên soạn: Phạm Đức Lập -8- Add: cnt-44-dh, VIMARU Hướng dẫn lập trình VB.NET Chương 10: Sử dụng module thủ tục Sub BirthdayGreeting(ByVal Person As String) Dim msg As String If Person "" Then msg = "Happy Birthday " & Person & "!" Else msg = "Name no specified" End If MsgBox(msg, , "BestWhished") End Sub Thủ tục cho phép lời chào với người có tên đối số truyền vào cho biến Person Bây trở cửa sổ soạn mã cho form1 tạo kiện Form1_Load nhập đoạn mã sau: Private Sub Form1_Load(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles MyBase.Load Dim name As String Do name = InputBox("Enter a name.", "Birthday") BirthdayGreeting(name) Loop Until name = "" End Sub Đoạn mã hộp thoại để người dùng nhập tên họ cho chương trình gọi thủ tục chúc sinh nhật người Khi khơng nhập vào chương trình form1 với nút “End” cho phép kết thúc chương trình: 5.3 Sử dụng thủ tục SUB quản lý nhập liệu người dùng Bài tập sau tạo thủ tục module cho phép người dùng nhập vào tên hiển thị tên textbox Tìm hiểu chương trình: Biên soạn: Phạm Đức Lập -9- Add: cnt-44-dh, VIMARU Hướng dẫn lập trình VB.NET Chương 10: Sử dụng module thủ tục Chương trình mơ form cập nhật tên nhân viên vào hai vị trí Sales Marketing Khi người dùng click vào nút addname bên ô textbox sales để thêm vào nhân viên sales nhập liệu Inputbox lên Tên nhân viên hiển thị vào ô textbox tương ứng Tương tự với việc nhập nhân viên vào vị trí marketing Thiết kế giao diện: Giao diện chương trình hình: Bạn tạo giải pháp có tên MyTextboxSub thêm vào dự án tên thiết kế form hình Trong thuộc tính name điều khiển sau: - Ô textbox nhãn Sales txtSales - Ô textbox nhãn Marketing txtMkt - Nút Add Name ô txtSales btnSaleAdd - Nút Add Name txtMkt btnMktAdd Các thuộc tính khác hai textbox tạo chế độ MultiLine cuộn dọc bạn biết tạo ví dụ trước Viết mã : Trước hết ta tạo thủ tục để người dùng nhập vào tên nhân viên click nút Add Name thêm tên nhân viên – thủ tục có tên AddName Bạn add vào dự án module1.vb tạo hàm AddName sau : Biên soạn: Phạm Đức Lập - 10 VIMARU Add: cnt-44-dh, Hướng dẫn lập trình VB.NET Chương 10: Sử dụng module thủ tục Module Module1 Sub AddName(ByVal vitri As String, _ ByRef tenNVmoi As String) Dim Prompt, ten, dinhdang As String Prompt = "Enter a " & vitri & "employee." ten = InputBox(Prompt, "InputBox") dinhdang = Chr(13) + Chr(10) tenNVmoi = ten & dinhdang End Sub End Module Trong đó, đối số vitri “Sales” hay “Marketing”; tenNVmoi tên nhân viên người dùng nhập vào inputBox; Bạn tạo thủ tục btnsaleAdd_Click cách double click vào nút btnSale nhập đoạn mã sau: Dim salesTeam As String AddName("Sales", salesTeam) txtSale.Text = txtSale.Text & salesTeam Tiếp tục tạo thủ tục btnMktAdd_Click nhập mã sau: Dim MktTeam As String AddName("Marketing", MktTeam) txtMkt.Text = txtMkt.Text & MktTeam Ngoài bạn tạo thủ tục click nút btnQuit với phát biểu End để kết thúc chương trình Chạy chương trình: Bây bạn chạy chương trình thêm vào vài nhân viên hai vị trí Biên soạn: Phạm Đức Lập - 11 VIMARU Add: cnt-44-dh, Hướng dẫn lập trình VB.NET Chương 10: Sử dụng module thủ tục Truyền đối số theo tham trị tham biến Trong phần bàn thủ tục, ta thấy đối số truyền theo tham trị (Byval) hay tham chiếu (Byref) Mặc định khơng khai báo truyền theo tham trị Để truyền theo tham trị ta khai báo đối số thủ tục từ khóa Byval Khi thay đổi thủ tục không làm thay đổi giá trị biến sau thủ tục chấm dứt Ngược lại, để truyền theo tham chiếu, ta khai báo đối số từ khóa Byref Khi thay đổi hàm hay thủ tục làm thay đổi giá trị biến Khi bạn chưa biết dùng Byval hay Byref bạn nên dùng Byval Tổng kết chương 10 Chương kết thúc Bạn làm bảng tổng kết học Biên soạn: Phạm Đức Lập - 12 VIMARU Add: cnt-44-dh, ... tính module, bạn R-Click vào module chọn Properties: Biên soạn: Phạm Đức Lập -2 - Add: cnt-44-dh, VIMARU Hướng dẫn lập trình VB.NET Chương 10: Sử dụng module thủ tục Bạn thử thay đổi tên module. .. chương trình Chạy chương trình: Bây bạn chạy chương trình thêm vào vài nhân viên hai vị trí Biên soạn: Phạm Đức Lập - 11 VIMARU Add: cnt-44-dh, Hướng dẫn lập trình VB.NET Chương 10: Sử dụng module. .. tạo thủ tục module cho phép người dùng nhập vào tên hiển thị tên textbox Tìm hiểu chương trình: Biên soạn: Phạm Đức Lập -9 - Add: cnt-44-dh, VIMARU Hướng dẫn lập trình VB.NET Chương 10: Sử dụng module