Bài thực hành số 1 buổi 1 176 MÔN NHẬP MÔN ĐIỆN TOÁN Bài thực hành số 4 1 Tính hiệu quả của trình thông dịch và biên dịch Mục tiêu sinh viên cần đạt được Thấy rõ việc sử dụng trình thông dịch và trì[.]
MƠN : NHẬP MƠN ĐIỆN TỐN Bài thực hành số 4.1 : Tính hiệu trình thơng dịch biên dịch Mục tiêu sinh viên cần đạt được: Thấy rõ việc sử dụng trình thơng dịch trình biên dịch tính chất chúng Chạy VB 6.0, cửa sổ hiển thị sau : Chọn button "Open" để tạo Project theo dạng "Standard EXE", cửa sổ thiết kế Form ứng dụng ban đầu sau : 176 Thiết kế Form có đối tượng : button Listbox hình Để vẽ đối tượng giao diện, dời chuột icon miêu tả cửa sổ Toolbox bên trái, chọn icon, dời chuột vị trí cần vẽ Form vẽ Chọn đối tượng Button, đặt tên cho btnStart, caption cho Start hình : 177 Tương tự, chọn đốitượng ListBox đặt tên cho lbOutput Ấn kép chuột vào button để tạo thủ tục xử lý kiện Click chuột cho viết đoạn code VB sau : Private Type SYSTEMTIME wYear As Integer wMonth As Integer wDayOfWeek As Integer wDay As Integer wHour As Integer wMinute As Integer wSecond As Integer wMilliseconds As Integer End Type Private Declare Sub GetLocalTime Lib "kernel32" (lpSystemTime As SYSTEMTIME) Private Declare Function GetTickCount Lib "kernel32" () As Long Const MAX = 178 Dim songhiem As Integer Dim hang(MAX + 1) As Integer ' kiem tra xem co the dat hau o vi tri h,c ? ' tra ve TRUE neu duoc, FALSE neu khong Private Function testvitri(ByVal h As Integer, ByVal c As Integer) As Boolean Dim c1 As Integer Dim h1 As Integer ' xem co hau nao nam o hang h ? For c1 = To c - If hang(c1) = h Then testvitri = False Exit Function End If Next c1 ' co hau nao nam tren duong cheo tren trai - duoi phai c1 = c - 1: h1 = h - While (c1 >= 0) And (h1 >= 0) If hang(c1) = h1 Then testvitri = False Exit Function End If h1 = h1 - 1: c1 = c1 - Wend ' xem co hau nao nam tren duong cheo tren phai - duoi trai c1 = c - 1: h1 = h + While (c1 >= 0) And (h1 = Then 'tim duoc hang(c) = h c=c+1 GoTo tieptuc End If ' tim khong duoc If c > Then hang(c) = -1 c=c-1 GoTo tieptuc End If ' het cach > dung chuong trinh lbOutput.AddItem "So nghiem la " & songhiem 'thu chay them thoi gian nua For h = To 10000 For c = To 10000 h = h: c = c Next c Next h ' ghi nhan thoi diem ket thuc chay giai thuat etime = GetTickCount diff = etime - stime 'hien thi tong thoi gian chay lbOutput.AddItem "Chuong trinh chay ton " & diff & " ms" Exit Sub tieptuc: Wend ' tim duoc nghiem 182 InKetqua c=c-1 GoTo Lap End Sub Chọn menu File.Save Project As , cửa sổ sau hiển thị : Duyệt hệ thống file chọn thư mục lưu file Project ứng dụng Chọn menu Run.Start để chạy ứng dụng, Khi cửa sổ ứng dụng hiển thị, dời chuột button Start click chuột để chạy giải thuật "xếp hậu bàn cờ cho chúng ăn nhau" Đợi lúc, cửa sổ ứng dụng hiển thị kết sau : 183 Dời marker scrollbar Listbox đáy Listbox để hiển thị nội dung cuối Listbox hình sau : 184 Bạn thấy số lượng thời gian chạy giải thuật 10 Tiếp tục ấn button Start nhiều lần, lần quan sát ghi nhận lại thời gian chạy 11 Chọn menu File.Make Project1.exe, cửa sổ sau hiển thị : 185 12 Duyệt hệ thống file thư mục chứa Project ấn button OK để máy lưu file khả thi tương ứng vào thư mục tương ứng 13 Chạy trình Windows Explorer, duyệt tìm thư mục chứa Project ứng dụng, chọn để hiển thị file Project Dời chuột file Project1.exe, ấn kép chuột vào để chạy ứng dụng, cửa sổ sau hiển thị : 186 14 Dời chuột button Start click chuột để chạy giải thuật "xếp hậu bàn cờ cho chúng ăn nhau" Đợi lúc, cửa sổ ứng dụng hiển thị kết sau : 187 15 Dời marker scrollbar Listbox đáy Listbox để hiển thị nội dung cuối Listbox hình sau : 188 16 Bạn thấy số lượng thời gian chạy giải thuật 17 Tiếp tục ấn button Start nhiều lần, lần quan sát ghi nhận lại thời gian chạy 18 So sánh giá trị thời gian chạy ứng dụng bước 10 bước 17 Lý giải giá trị thời gian bước 17 nhỏ nhiều so với bước 10, từ thấy rõ ưu điểm trình biên dịch so với trình thơng dịch 19 Bây đóng cửa sổ VB 6.0, chọn Start.All Program.Accessories.Command Prompt để mở cửa sổ hàng lệnh sau : 189 20 Nhập thử lệnh sau : cd \ dir /w type Form.bas quan sát kết xử lý lệnh mà bạn nhập vào Bạn thử nghĩ xem dùng trình biên dịch lệnh trường hợp không ? Hay cách khả thi dùng trình thơng dịch để dịch chạy lệnh sau người dùng nhập vào ? 190