1. Trang chủ
  2. » Công Nghệ Thông Tin

Giáo trình Lập trình trực quan (Nghề: Quản trị mạng máy tính - Cao đẳng) - Trường Cao đẳng Cộng đồng Đồng Tháp

105 6 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Giáo Trình Lập Trình Trực Quan
Trường học Trường Cao đẳng Cộng đồng Đồng Tháp
Chuyên ngành Quản trị mạng máy tính
Thể loại sách giáo trình
Năm xuất bản 2017
Thành phố Đồng Tháp
Định dạng
Số trang 105
Dung lượng 1,39 MB

Nội dung

Giáo trình Lập trình trực quan cung cấp cho người học những kiến thức như: Tổng quan về Framework.Net; Ngôn ngữ lập trình C#; Lập trình hướng đối tượng; Form và Các điều khiển. Mời các bạn cùng tham khảo!

ỦY BAN NHÂN DÂN TỈNH ĐỒNG THÁP TRƢỜNG CAO ĐẲNG CỘNG ĐỒNG ĐỒNG THÁP GIÁO TRÌNH MƠN HỌC: LẬP TRÌNH TRỰC QUAN NGÀNH, NGHỀ: QUẢN TRỊ MẠNG MÁY TÍNH TRÌNH ĐỘ: CAO ĐẲNG (Ban hành kèm theo Quyết định số /QĐ-CĐCĐ ngày tháng năm 20… Hiệu trƣởng trƣờng Cao đẳng Cộng đồng Đồng Tháp) Đồng Tháp, năm 2017 TUYÊN BỐ BẢN QUYỀN Tài liệu thuộc loại sách giáo trình nên nguồn thơng tin đƣợc phép dùng nguyên trích dùng cho mục đích đào tạo tham khảo Mọi mục đích khác mang tính lệch lạc sử dụng với mục đích kinh doanh thiếu lành mạnh bị nghiêm cấm LỜI GIỚI THIỆU  Giáo trình Lập trình trực quan, nhằm cung cấp cho sinh viên kiến thức lập trình trực quab Visual Studio Net Nội dung giảng gồm chƣơng sau:  Tổng quan Framework.Net  Ngơn ngữ lập trình c#  Lập trình hƣớng đối tƣợng  Form Các điều khiển Bài giảng dành cho đối tƣợng học viên trung cấp tin học - ngành quản trị sở liệu Dù cố gắng để hoàn thành giảng nhƣng khơng thể tránh khỏi sai sót Rất mong đóng góp quý đồng nghiệp để giảng ngày hồn thiện Tơi chân thành cảm ơn động viên đóng góp ý kiến bạn đồng nghiệp trình biên soạn tài liệu Nhóm biên soạn MỤC LỤC MỤC LỤC LỜI GIỚI THIỆU MỤC LỤC CHƢƠNG – TỔNG QUAN VỀ FRAMEWORK NET Mục tiêu: 1.1 Giới thiệu Net 1.2 Các loại ứng dụng 10 1.3 Các bƣớc xây dựng môi trƣờng Net 10 1.4 Ứng dụng 11 CHƢƠNG – NGÔN NGỮ LẬP TRÌNH C# 15 Mục tiêu: 15 2.1 Giới thiệu 15 2.2 Các thành phần 17 2.2.1 Biến 17 2.2.2 Các kiểu liệu 18 2.2.3 Hằng 20 2.2.4 Biểu thức 21 2.2.5 Toán tử 21 2.3 Các cấu trúc điều khiển 26 2.3.1 Cấu trúc rẽ nhánh 26 2.3.2 Cấu trúc chọn 28 2.3.3 Cấu trúc lặp 33 2.3.4 Lệnh nhảy 43 2.4 Các kiểu liệu có cấu trúc 47 2.4.1 Mảng 47 2.4.2 Chuỗi 50 2.4.3 Kiểu liệt kê 50 2.4.4 Không gian tên 54 MỤC LỤC 2.5 Hàm 55 2.5.1 Khai báo hàm 56 2.5.2 Cách gọi hàm 58 2.5.3 Truyền tham số 59 2.6 Exception cấu trúc try catch 60 2.6.1 Exception 60 2.6.2 Cấu trúc try…catch 62 CHƢƠNG – LẬP TRÌNH HƢỚNG ĐỐI TƢỢNG 70 Mục tiêu 70 3.1 Giới thiệu 70 3.2 Các tính chất lập trình hƣớng đối tƣợng 70 3.2.1 Tính trừu tƣợng 70 3.2.2 Tính đóng gói 71 3.2.3 Tính thừa kế 71 3.2.4 Tính đa hình 71 3.3 Các thành phần lập trình hƣớng đối tƣợng 72 3.3.1 Lớp 72 3.3.2 Đối tƣợng 76 3.3.3 Thuộc tính 77 3.3.4 Phƣơng thức 79 CHƢƠNG – FORM VÀ CÁC ĐIỀU KHIỂN 81 Mục tiêu: 81 4.1 Các khái niệm 81 4.1.1 Thủ tục kiện 81 4.1.2 Lập trình kiện 82 4.2 Form 82 4.2.1 Các dạng form 82 4.2.2 Các thuộc tính 83 4.2.3 Các phƣơng thức 85 4.3 Các điều khiển 87 MỤC LỤC 4.3.1 Label 87 4.3.2 TextBox 88 4.3.3 Button 90 4.3.4 Listbox 91 4.3.5 CheckListBox 94 4.3.6 Combobox 96 4.3.7 RadioButton 96 4.3.8 CheckBox 97 4.3.9 GroupBox 98 4.3.10 Panel 98 4.3.11 Menu, ToolBar 98 4.4 Ứng dụng MDI 101 4.5 Hộp thông điệp 101 Chƣơng – Tổng quan FrameWork Net CHƢƠNG – TỔNG QUAN VỀ FRAMEWORK NET Mục tiêu: - Trình bày tổng quan FrameWork Net, khái niệm môi trƣờng Net - Trình bày đƣợc bƣớc để xây dựng ứng dụng môi trƣờng Net - Tạo đƣợc ứng dụng đơn giản môi trƣờng Net - Rèn luyện tính tích cực, chủ động, thích học hỏi - Thực thao tác an tồn, xác máy tính 1.1 Giới thiệu Net Microsoft NET gồm phần chính: Framework Integrated Development Environment (IDE) Framework cung cấp cần thiết bản, chữ Framework có nghĩa khung hay khung cảnh ta dùng hạ tầng sở theo qui ƣớc định để cơng việc đƣợc trơi chảy IDE cung cấp môi trƣờng giúp triển khai dễ dàng, nhanh chóng ứng dụng dựa tảng NET Nếu khơng có IDE dùng trình soạn thảo ví nhƣ Notepad hay trình soạn thảo văn sử dụng command line để biên dịch thực thi, nhiên việc nhiều thời gian Tốt dùng IDE phát triển ứng dụng, cách dễ sử dụng Thành phần Framework quan trọng NET cốt lõi tinh hoa mơi trƣờng, cịn IDE cơng cụ để phát triển dựa tảng thơi Trong NET tồn ngơn ngữ C#, Visual C++ hay Visual Basic.NET dùng IDE Chƣơng – Tổng quan FrameWork Net Tóm lại Microsoft NET tảng cho việc xây dựng thực thi ứng dụng phân tán hệ Bao gồm ứng dụng từ client đến server dịch vụ khác Một số tính Microsoft NET cho phép nhà phát triển sử dụng nhƣ sau:  Một mơ hình lập trình cho phép nhà phát triển xây dựng ứng dụng dịch vụ web ứng dụng client với Extensible Markup Language (XML)  Tập hợp dịch vụ XML Web, nhƣ Microsoft NET My Services cho phép nhà phát triển đơn giản tích hợp ngƣời dùng kinh nghiệm  Cung cấp server phục vụ bao gồm: Windows 2000, SQL Server, BizTalk Server, tất điều tích hợp, hoạt động, quản lý dịch vụ XML Web ứng dụng  Các phần mềm client nhƣ Windows XP Windows CE giúp ngƣời phát triển phân phối sâu thuyết phục ngƣời dùng kinh nghiệm thơng qua dịng thiết bị  Nhiều công cụ hỗ trợ nhƣ Visual Studio NET, để phát triển dịch vụ Web XML, ứng dụng Windows hay web cách dể dàng hiệu Kiến trúc NET Framework NET Framework platform làm đơn giản việc phát triển ứng dụng môi trƣờng phân tán Internet .NET Framework đƣợc thiết kế đầy đủ để đáp ứng theo quan điểm sau:  Để cung cấp môi trƣờng lập trình hƣớng đối tƣợng vững chắc, mã nguồn đối tƣợng đƣợc lƣu trữ thực thi cách cục Thực thi cục nhƣng đƣợc phân tán Internet, thực thi từ xa Chƣơng – Tổng quan FrameWork Net  Để cung cấp môi trƣờng thực thi mã nguồn mà tối thiểu đƣợc việc đóng gói phần mềm tranh chấp phiên  Để cung cấp môi trƣờng thực thi mã nguồn mà đảm bảo việc thực thi an toàn mã nguồn, bao gồm việc mã nguồn đƣợc tạo hãng thứ ba hay hãng mà tuân thủ theo kiến trúc NET  Để cung cấp môi trƣờng thực thi mã nguồn mà loại bỏ đƣợc lỗi thực script hay môi trƣờng thông dịch  Để làm cho ngƣời phát triển có kinh nghiệm vững nắm vững nhiều kiểu ứng dụng khác Nhƣ từ ứng dụng Windows đến ứng dụng dựa web  Để xây dựng tất thông tin dựa triên tiêu chuẩn công nghiệp để đảm bảo mã nguồn NET tích hợp với mã nguồn khác .NET Framework có hai thành phần chính: Common Language Runtime (CLR) thƣ viện lớp NET Framework CLR tảng NET Framework Chúng ta hiểu runtime nhƣ agent quản lý mã nguồn đƣợc thực thi, cung cấp dịch vụ cốt lõi nhƣ: quản lý nhớ, quản lý tiểu trình, quản lý từ xa Ngồi cịn thúc đẩy việc sử dụng kiểu an tồn hình thức khác việc xác mã nguồn, đảm bảo cho việc thực đƣợc bảo mật mạnh mẽ Thật vậy, khái niệm quản lý mã nguồn nguyên lý tảng runtime Mã nguồn mà đích tới runtime đƣợc biết nhƣ mã nguồn đƣợc quản lý (managed code) Trong mã nguồn mà khơng có đích tới runtime đƣợc biết nhƣ mã nguồn không đƣợc quản lý (unmanaged code) Thƣ viện lớp, thành phần khác NET Framework tập hợp hƣớng đối tƣợng kiểu liệu đƣợc dùng lại, cho phép phát triển ứng dụng từ ứng dụng truyền thống command-line hay Chƣơng – Tổng quan FrameWork Net ứng dụng có giao diện đồ họa (GUI) đến ứng dụng đƣợc cung cấp ASP.NET, nhƣ Web Form dịch vụ XML Web Hình 1.1: Mơ tả thành phần NET Framework 1.2 Các loại ứng dụng Ứng dụng Console: ứng dụng giao tiếp với ngƣời dùng thơng quan bàn phím khơng có giao diện ngƣời dùng (UI), giống nhƣ ứng dụng thƣờng thấy Windows Ứng dụng WindowsForms: ứng dụng có giao diện đồ họa chạy hệ điều hành Windows 1.3 Các bƣớc xây dựng môi trƣờng Net Bƣớc 1: Tạo dự án 10 Chƣơng – Form điều khiển Tên thuộc tính Text Mơ tả Đặt tiêu đề cho điều khiển, tạo phím nóng cách đặt ký tự & phía trƣớc ký tự muốn làm phím nóng Ví dụ: &Thốt  Thốt Để thi hành nút lệnh click chuột gõ Atl+phím nóng Ví dụ: Alt+T 4.3.4 Listbox ListBox ComboBox điều khiển hiển thị danh sách lựa chọn mà ngƣời dùng chọn nhiều (chỉ dành cho ListBox) Các mục lựa chọn đƣợc thêm vào danh sách thông qua lệnh cửa sổ thuộc tính (Property Windows) Để thêm lựa chọn vào thời điểm thiết kế, chọn thuộc tính Items cửa sổ thuộc tính, cửa sổ String Collection Editor ra, bạn nhập vào mục lựa chọn cho danh sách Các thuộc tính Các thuộc tính InteralHeight Mô tả Nếu giá trị True ListBox tự động thay đổi chiều cao để không hiển thị phần mục Ngƣợc lại, ListBox giữ nguyên kích thƣớc Giá trị mặc định 91 Chƣơng – Form điều khiển thuộc tính True Items Đây tập hợp chứa mục chọn điều khiển Bạn thêm vào mục chọn vào thời điểm thiết kế thông qua cửa sổ String Collection Editor thơng qua lệnh MultiColumn ListBox hiển thị mục chọn nhiều cột bạn đặt giá trị MultiColumn = True Giá trị mặc định thuộc tính False SelectionMode Xác định cách thức chọn mục ListBox - None: không vho phép chọn mục - One: cho phép chọn mục - MultiSimple: chọn nhiều chọn lựa, nhấn chuột nhấn phím Space để chọn bỏ chọn - MultiExtented: Cho phép chọn nhiều chọn lựa, nhấn Shift+Chuột để chọn nhiều mục danh sách, nhấn Ctrl+Chuột chọn bỏ chọn mục danh sách Sorted Cho phép chọn xếp mục danh sách Text Trả giá trị đƣợc mục đƣợc chọn danh sách, trƣờng hợp có nhiều mục chọn hiển thị mục 92 Chƣơng – Form điều khiển Tập hợp Items Add ListBox.Items.Add () thêm mục vào danh sách Clear ListBox.Items.Clear xoá tất mục danh sách Count Trả số mục có danh sách Insert ListBox.Items.Insert(,): thêm mục Item vào danh sách vị trí Index CopyTo ListBox.Items.CopyTo(Destination,Index): lấy giá trị tất Item Index lƣu vào mảng Destination Remove ListBox.Items.Remove(): xoá mục Item khỏi danh sách RemoveAt ListBox.Items.RemoveAt(): xoá mục vị trí Index Contains ListBox.Items.Contain(): kiểm tra mục có danh sách chƣa Các mục đƣợc chọn 93 Chƣơng – Form điều khiển SelectedItem Mục đƣợc chọn SelectedIndex Chỉ mục mục đƣợc chọn SelectedItems Các mục đƣợc chọn SelectedIndices Vị trí mục đƣợc chọn Các phƣơng thức tìm kiếm FindString ListBox.FindString() ListBox.FindString(,): tìm gần danh sách, tìm thấy trả vị trí (bắt đầu từ 0), khơng tìm thấy trả -1 FindStringExact FindStringExact(,[]): giống FindString nhƣng tìm xác 4.3.5 CheckListBox Các thuộc tính phƣơng thức CheckListBox Thuộc tính CheckOnClick Mơ tả Thuộc tính có giá trị mặc định False: nhấn lần mục chọn hay CheckBox 94 Chƣơng – Form điều khiển chọn dịng xảy kiện SelectedIndexChanged, nhấn lần hai, kiện SelectedIndexChanged lại xảy ra, trạng thái CheckBox thay đổi True, Item dòng đƣợc đƣa vào tập hợp CheckedItems điều khiển ngƣợc lại Nếu thuộc tính có giá trị True, nhấn lần đầu vừa chọn dòng trạng thái CheckBox thay đổi CheckedItems CheckedItems tập hợp Item có CheckBox đƣợc chọn tập hợp CheckedIndices chứa số (vị trí dịng) Item tập hợp Items Phƣơng thức GetItemChecked Mô tả GetItemChecked(i) kiểm tra xem CheckBox Item dịng thứ i có đƣợc chọn hay khơng SetItemChecked SetItemChecked(i) để thay đổi trạng thái CheckBox Item dòng thứ i 95 Chƣơng – Form điều khiển 4.3.6 Combobox Các thuộc tính ComboBox Thuộc tính Mơ tả - DropDown: điều khiển bao gồm DropDownStyle ListBox TextBox - DropDownList: cho phép ngƣời dùng chon danh sách nhƣng không đƣợc nhập liệu vào TextBox - Simple: không DropDown ngƣời dùng chọn danh sách nhập liệu vào TextBox MaxDropDownItem Quy định số Item hiển thị ListBox DropDownWidth định lại kích thƣớc ngang DropDown ListBox 4.3.7 RadioButton Tên thuộc tính Text Mơ tả Hiển thị tiêu đề cho nút chọn 96 Chƣơng – Form điều khiển Checked Trạng thái nút chọn: True: đƣợc chọn False: không đƣợc chọn Sự kiện: Click Chú ý: Các nút chọn nhóm tuỳ chọn phải đƣợc đặt vào khung (GroupBox) Trong nhóm có nút đƣợc chọn 4.3.8 CheckBox Tên thuộc tính Mô tả Text Hiển thị tiêu đề cho hộp chọn Checked Cho biết hộp chọn có đƣợc chọn hay khơng: True/False CheckState Trạng thái hộp chọn: 0-Unchecked: không đƣợc chọn 1-Checked: Đƣợc chọn 2-Indeterminate: xám, cảnh báo ngƣời chọn khơng thay đổi ThreeState Cho biết ngƣời sử dụng có hay khơng có chọn trạng thái thứ ba (Indeterminate) Sự kiện: Click 97 Chƣơng – Form điều khiển 4.3.9 GroupBox Điều khiển dùng để nhóm Tên thuộc tính Text Mơ tả Hiển thị tiêu đề cho khung 4.3.10 Panel Cũng nhƣ GroupBox, Panel điều khiển dùng để chứa điều khiển nhóm Panel có thuộc tính AutoSize, AutoSizeMode nhƣ GroupBox thuộc tính đƣờng viền BorderStyle nhƣ Label Điểm khác biệt hai điều khiển Panel có trƣợt AutoScroll Thuộc tính luận lý quy định có trƣợt hay không nội dung điều khiển lớn vùng nhìn thấy đƣợc Mặc định, thuộc tính có trị False, khơng trƣợt 4.3.11 Menu, ToolBar Thực đơn (Menu) công cụ (Toolbar) thành phần quan trọng cửa sổ, chúng chứa đựng chức chƣơng trình mà ngƣời dùng thực Thanh thực đơn chứa hầu hết tất chức chƣơng trình, tổ chức theo dạng phân cấp, công cụ thƣờng chứa số chức thiết yếu mà ngƣời dùng hay quan tâm dƣới dạng biểu tƣợng hình ảnh để ngƣời dùng thao tác cách nhanh chóng 98 Chƣơng – Form điều khiển Đƣa Menustrip vào Form, để tạo danh mục Menu cách nhấp đúp chuột vào Menu vào viết tên MenuItem vào Type Here Nhƣ hình dƣới bạn thấy hiểu cách tạo Items đối tƣợng Menu Để tạo vạch ngăn cách Items cách đặt thuộc tính Text menu dấu trừ (-) Các thuộc tính MenuItem Text Tiêu đề MenuItem BackColor Màu MenuItem Image Hình hiển thị MenuItem ShortcutKey Tạo shortcut cho MenuItem 99 Chƣơng – Form điều khiển ToolStrip Đƣa điều khiển ToolStrip vào form thiết kế nhƣ sau Chúng ta đặt điều khiển khác ToolBar Button Label SplitButton DropDownButton ComboBox TextBox ProgressBar 100 Chƣơng – Form điều khiển 4.4 Ứng dụng MDI Ứng dụng MDI (Multiple Document Interface) cho phép xử lý nhiều cửa sổ thời điểm Ứng dụng MDI gồm: - MDI Parent Window - Các MDI Child Windows Cách tạo MDI ParentForm gán thuộc tính IsMDIContainer = True Cách tạo MDI ChildForms: Form frmNew = new frmGiaiPT(); frmNew.MdiParent = this; frmNew.Show(); 4.5 Hộp thông điệp Hộp thông điệp (MessageBox) đối tƣợng dùng để xuất thơng báo hình lấy hiệu lệnh từ ngƣời dùng cách hiệu Nó ln xuất ứng dụng từ nhỏ đến lớn Ngƣời lập trình tùy chỉnh phối hợp thuộc tính MessageBox để tạo hộp thoại phù hợp cho mục đích sử dụng: 101 Chƣơng – Form điều khiển Phƣơng thức Show Hiển thị hộp thông điệp với tham số sau: String Text: Nội dung thông điệp String Caption: tiêu đề hộp thông điệp MessageBoxButtons buttons: nút lệnh hộp thông điệp MessageBoxIcon icon: biểu tƣợng hiển thị hộp thông điệp MessageBoxDefaultButton defaultbutton: nút mặc định đƣợc chọn Các ví dụ minh họa: MessageBox.Show("Hello World!"); MessageBox.Show("Hello World!","Hello"); 102 Chƣơng – Form điều khiển MessageBox.Show("Hello World!", "Hello", MessageBoxButtons.YesNo); MessageBox.Show("Are you sure?", "Question", MessageBoxButtons.YesNo,MessageBoxIcon.Question ); 103 Chƣơng – Form điều khiển DialogResult ans = MessageBox.Show("Do you want to close this program?", "Exit", MessageBoxButtons.YesNoCancel ,MessageBoxIcon.Question ); if (ans == DialogResult.Yes) this.Close; DialogResult ans = MessageBox.Show("Do you want to close this program?", "Exit", MessageBoxButtons.YesNoCancel ,MessageBoxIcon.Question,MessageBoxDefaultButton.Button2 ); if (ans == DialogResult.Yes) this.Close; 104 Chƣơng – Form điều khiển 105 ... THIỆU  Giáo trình Lập trình trực quan, nhằm cung cấp cho sinh viên kiến thức lập trình trực quab Visual Studio Net Nội dung giảng gồm chƣơng sau:  Tổng quan Framework.Net  Ngơn ngữ lập trình. .. hành chƣơng trình 13 Chƣơng – Tổng quan FrameWork Net 14 Chƣơng – Ngơn ngữ lập trình c# CHƢƠNG – NGƠN NGỮ LẬP TRÌNH C# Mục tiêu: - Trình bày đƣợc thành phần ngơn ngữ lập trình c# - Trình bày sử... Tổng quan FrameWork Net CHƢƠNG – TỔNG QUAN VỀ FRAMEWORK NET Mục tiêu: - Trình bày tổng quan FrameWork Net, khái niệm môi trƣờng Net - Trình bày đƣợc bƣớc để xây dựng ứng dụng môi trƣờng Net - Tạo

Ngày đăng: 05/10/2022, 10:42

HÌNH ẢNH LIÊN QUAN

Hình 1.1: Mơ tả các thành phần trong .NET Framework. 1.2 Các loại ứng dụng  - Giáo trình Lập trình trực quan (Nghề: Quản trị mạng máy tính - Cao đẳng) - Trường Cao đẳng Cộng đồng Đồng Tháp
Hình 1.1 Mơ tả các thành phần trong .NET Framework. 1.2 Các loại ứng dụng (Trang 10)
Kiểu liệt kê là một kiểu hình thức do đó bắt buộc phải thực hiện phép chuyển đổi tƣờng minh với các kiểu giá trị nguyên:  - Giáo trình Lập trình trực quan (Nghề: Quản trị mạng máy tính - Cao đẳng) - Trường Cao đẳng Cộng đồng Đồng Tháp
i ểu liệt kê là một kiểu hình thức do đó bắt buộc phải thực hiện phép chuyển đổi tƣờng minh với các kiểu giá trị nguyên: (Trang 53)
Image Hình sẽ hiển thị lên Label - Giáo trình Lập trình trực quan (Nghề: Quản trị mạng máy tính - Cao đẳng) - Trường Cao đẳng Cộng đồng Đồng Tháp
mage Hình sẽ hiển thị lên Label (Trang 87)
Image Hình sẽ được hiển thị trên MenuItem ShortcutKey Tạo shortcut cho MenuItem  - Giáo trình Lập trình trực quan (Nghề: Quản trị mạng máy tính - Cao đẳng) - Trường Cao đẳng Cộng đồng Đồng Tháp
mage Hình sẽ được hiển thị trên MenuItem ShortcutKey Tạo shortcut cho MenuItem (Trang 99)
Hộp thông điệp (MessageBox) là đối tƣợng dùng để xuất thông báo ra màn hình hoặc lấy hiệu lệnh từ ngƣời dùng một cách hiệu quả nhất - Giáo trình Lập trình trực quan (Nghề: Quản trị mạng máy tính - Cao đẳng) - Trường Cao đẳng Cộng đồng Đồng Tháp
p thông điệp (MessageBox) là đối tƣợng dùng để xuất thông báo ra màn hình hoặc lấy hiệu lệnh từ ngƣời dùng một cách hiệu quả nhất (Trang 101)