Bài 1 : Giới thiệu lập trình VBA trên Excel
Bài 2 : Khai báo biến và phép gán
Bài 3 : Lệnh IF, SELECT CASE
Bài 4 : Vòng lặp xác định FOR
Bài 5 : Vòng lặp không xác định DO WHILE
Bài 6 : Kiểu dữ liệu mảng
Bài 7 : Hàm và sự đệ quy
79 trang |
Chia sẻ: candy98 | Lượt xem: 550 | Lượt tải: 0
Bạn đang xem trước 20 trang tài liệu Bài giảng Tin học lập trình - Đào Quốc Phương, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
TIN HỌC LẬP TRÌNHPhần 1 : Lý thuyếtPhần 2 : Thực hànhTài liệu tham khảoWebsite: daoquocphuong@gmail.com1TIN HỌC LẬP TRÌNHMục tiêu : cung cấp cho SVHS tư duy phân tích và tìm ra giải pháp để giải quyết các vấn đề gặp phảiĐánh giá : 1 cột điểm chuyên cần (A) 1 cột điểm kiểm tra giữa môn (B) 1 cột điểm kiểm tra cuối môn (C) Tổng kết = { [(A) + (B) * 2] / 3 + (C) } / 22TIN HỌC LẬP TRÌNHBài 1 : Giới thiệu lập trình VBA trên ExcelBài 2 : Khai báo biến và phép gánBài 3 : Lệnh IF, SELECT CASEBài 4 : Vòng lặp xác định FORBài 5 : Vòng lặp không xác định DO WHILEBài 6 : Kiểu dữ liệu mảngBài 7 : Hàm và sự đệ quy3Lập trình là gì ?4Giải thuật là gì ?5TIN HỌC LẬP TRÌNHBài 1:VBA TRÊN EXCEL6Môi trường VBA trên ExcelTools Macro Visual Basic Editor7Môi trường VBA trên Excel (tiếp)8Môi trường VBA trên Excel (tiếp)9Tạo mới một UserFormInsert UserForm10Biên dịch và chạy thửChạy thử : F511Dừng ứng dụng để design tiếp12Ứng dụng đầu tiênClick chuột vào form xuất hiện thông báo “VBA chao cac ban lop THKT”sự kiện click13Lập trình sự kiệnVề màn hình Design FormDouble click vào Form và viết code Private Sub UserForm_Click( ) câu lệnh 1 câu lệnh 2 . End Sub14Lập trình sự kiện (tiếp) Private Sub UserForm_Click( ) MsgBox "VBA chao cac ban lop THKT" End Sub15TIN HỌC LẬP TRÌNHBài 2:KHAI BÁO BIẾNPHÉP GÁN16Khai báo biến và câu lệnh gánPrivate Sub UserForm_Click( ) Dim a as Integer a = 7 MsgBox aEnd Sub17Khai báo biến và câu lệnh gán (tiếp)Private Sub UserForm_Click( ) Dim a as Integer Dim b as Integer a = 7 b = a + 3 MsgBox bEnd Sub18Kiểu nguyênKích thướcPhạm viByte1 byte0 đến 255Integer2 bytes-32,768 đến 32,767Long4 bytes-2,147,483,648 đến 2,147,483,647Kiểu dữ liệu19Kiểu thựcKích thướcPhạm viSingle4 bytesTừ -3.402823E38 đến -1.401298E-45và từ 1.401298E-45 đến 3.402823E38Double8 bytes-1.79769313486231E308 đến -4.94065645841247E-324và từ 4.94065645841247E-324 đến 1.79769313486232E308Currency8 bytesTừ -922,337,203,685,477.5808 đến 922,337,203,685,477.5807Kiểu dữ liệu (tiếp)20Ví dụ Dim a as Double Dim b as Double Dim c as Double a = 8.75 b = 2.33 c = a + b Msgbox c21Ví dụ khác Dim a as Integer Dim b, c as Double a = 8 b = 7/3 c = a + b Msgbox c22Kiểu dữ liệu chuỗiVí dụ 1: Dim name as String name = “James Bond”Ví dụ 2: Dim firstname as String Dim lastname as String Dim fullname as String firstname = “David” lastname = “Coperfield” fullname = firstname & “ ” & lastname23Kiểu dữ liệu logic Dim abc as Boolean abc = (1 > 2) Msgbox abc abc = (2 Khác>Lớn hơn=Lớn hơn hoặc bằng= 5) then Msgbox “Ban dau roi”Else Msgbox “Ban chua dau. Hay thu lan sau”End If41Ví dụPrivate Sub UserForm_Click( ) Dim a as Integer a = 7 If (a = 100) then MsgBox “a is 100” Else MsgBox “a is not 100” End IfEnd Sub42Câu lệnh điều kiện IFTHENELSE (tiếp) Dim x as Integer x = -10 if ( x > 0 ) then Msgbox “x is positive” ElseIf ( x = To khối lệnhNextVí dụ: For i = 1 To 3 Msgbox i Next51Cú pháp khácFor = To Step [khối lệnh]NextVí dụ: For i = 1 To 7 Step 2 Msgbox i Next52Vòng lặp xác định FORVí dụ 1: For i = 1 To 10 Step 3 Msgbox i NextVí dụ 2: For i = 10 To 0 Step -1 Msgbox i NextVí dụ 3: For i = 10 To 0 Step -2 Msgbox i NextVí dụ 4: For i = 1 To 10 If (i Mod 2 = 0) Then Msgbox i End If NextVí dụ 5: For i = 10 To 1 Step -1 If (i Mod 2 0) Then Msgbox i End If Next53Ví dụ : tính tổng dãy sốDim Tong as IntegerTong = 0For i = 1 To 10 Tong = Tong + iNext Dim Tong as IntegerTong = 0For i = 1 To 10 If (i mod 2 = 0) then Tong = Tong + i End IfNext54TIN HỌC LẬP TRÌNHBài 5:VÒNG LẶP KHÔNG XÁC ĐỊNHDO WHILE55Vòng lặp không xác định DO WHILEDim n as Integer;n = 3;Do While (n > 0) MsgBox n n = n - 1Loop56Vòng lặp không xác định DO WHILE (tiếp)Dim n as Integern = 3Do While (n > 0) MsgBox “Chao cac ban” n = n - 1Loop57Vòng lặp không xác định DO WHILE (tiếp)Dim n as Integern = 0Do While (n > 0) MsgBox “Chao cac ban” n = n - 1Loop58Vòng lặp không xác định DOLOOP WHILEDim n as Integern = 0Do MsgBox “Chao cac ban” n = n - 1Loop While (n > 0)59Ví dụ: đếm số chữ số19 : một chữ số1099 : hai chữ số100999 : ba chữ số10009999 : bốn chữ số txtNumberbtnAnswer60Ý tưởng2351052310321020chuso = 0Do chuso = chuso + 1 n = n \ 10Loop While (n > 0)61Mã lệnh cho sự kiện clickPrivate Sub btnAnswer_Click( ) Dim n, chuso as Integer n = Val (txtNumber.value) chuso = 0 Do chuso = chuso + 1 n = n \ 10 Loop While (n > 0) MsgBox “So nay co ” & chuso & “ chu so”End Sub62Ví dụ: đếm ngược giâytxtSecondbtnStartlbCount63Mã lệnh cho sự kiện clickPrivate Sub btnAnswer_Click( ) Dim n as Integer n = Val (txtSecond.value) Do lbCount.Caption = n DoEvents Sleep(1000) n = n - 1 Loop While (n > 0)End Sub64TIN HỌC LẬP TRÌNHBài 6:KIỂU DỮ LIỆU MẢNG65Kiểu dữ liệu mảng 1 chiều (array)// khai báo mảng gồm có 3 phần tử số nguyênDim a(2) as Integer// gán dữ liệu vào mảnga(0) = 2a(1) = 4a(2) = 624666Kiểu dữ liệu mảng 2 chiều// khai báo mảng ma trận gồm có 9 phần tử số nguyênDim a(2,2) as Integer// gán dữ liệu vào mảnga(0,0) = 2a(0,1) = 4a(0,2) = 6a(1,0) = 5a(1,1) = 3a(1,2) = 1a(2,0) = 7a(2,1) = 8a(2,2) = 924653178967TIN HỌC LẬP TRÌNHBài 7:HÀM VÀ SỰ ĐỆ QUI68Tạo mới một ModuleInsert Module69Hàm trong VBAPublic Function cong2so (a as Integer, b as Integer) as Integer Dim ketqua as Integer ketqua = a + b cong2so = ketquaEnd Functiontên hàmcác đối sốkiểu trả về70Sử dụng hàmDim a, b, c as IntegerMsgBox cong2so(1, 6)a = 2b = 5c = cong2so(a, b)MsgBox c71Ứng dụng trong trang tính72Hàm trong VBAPublic Sub fullname (a as String, b as String) MsgBox a & “ ” & bEnd Subtên hàmcác đối số73Truyền tham số cho hàm (truyền trị)Public Sub change (a as Integer, b as Integer) a = 2 b = 4End Sub// mã lệnh xử lý sự kiện clickDim x, y as Integerx = 1y = 3MsgBox “x = ” & x & “ y = ” & ychange(x, y)MsgBox “x = ” & x & “ y = ” & y74Truyền tham số cho hàm (truyền tham khảo)Public Sub change (Byref a as Integer, b as Integer) a = 2 b = 4End Sub// mã lệnh xử lý sự kiện clickDim x, y as Integerx = 1y = 3MsgBox “x = ” & x & “ y = ” & ychange(x, y)MsgBox “x = ” & x & “ y = ” & y75Ví dụ: hoán đổi giá trị 2 biếnPublic Sub swap (Byref a as Integer, Byref b as Integer) Dim temp as Integer temp = a a = b b = tempEnd Sub// mã lệnh xử lý sự kiện clickDim x, y as Integerx = 1y = 3MsgBox “x = ” & x & “ y = ” & yswap(x, y)MsgBox “x = ” & x & “ y = ” & y76Đệ qui77Hàm tính giai thừaPublic Function giaithua (n as Integer) as Integer Dim i, r as Integer r =1 If (n = 0) then giaithua = r Exit Function End If For i = 1 to n do r = r * i Next giaithua = rEnd Function78Hàm tính giai thừa kiểu đệ quiPublic Function giaithua (n as Integer) as Integer If (n = 0) then giaithua = 1 Exit Function End If giaithua = n * giaithua (n – 1)End Function79