Tài liệu thực hành 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Ô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ình biên dịch cùng các tính  
chất của chúng.  
1. Chạy VB 6.0, cửa sổ hiển thị nhö sau :  
2. Chọn button "Open" để tạo Project mới theo dạng "Standard EXE", cửa sổ thiết kế Form ứng  
dụng ban đầu nhö sau :  
176  
3. Thiết kế Form có 2 đối töợng : 1 button v 1 Listbox nhö hình döới đy. Để vẽ 1 đối töợng giao  
diện, dời chuột về icon miu tả nó trong cửa sổ Toolbox bn tri, chọn icon, dời chuột về vị trí cần vẽ  
trong Form rồi vẽ nó. Chọn đối töợng Button, đặt tn cho nó l btnStart, caption cho nó l Start nhö  
hình döới đy :  
177  
4. Töông tự, chọn đốitöợng ListBox v đặt tn cho nó l lbOutput. Ấn kp chuột vo button để tạo thủ  
tục xử lý sự kiện Click chuột cho nó rồi viết đoạn code VB sau đy :  
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 = 7  
Dim songhiem As Integer  
Dim hang(MAX + 1) As Integer  
178  
' kiem tra xem co the dat con 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 con hau nao nam o hang h ?  
For c1 = 0 To c - 1  
If hang(c1) = h Then  
testvitri = False  
Exit Function  
End If  
Next c1  
' co con hau nao nam tren duong cheo tren trai - duoi phai  
c1 = c - 1: h1 = h - 1  
While (c1 >= 0) And (h1 >= 0)  
If hang(c1) = h1 Then  
testvitri = False  
Exit Function  
End If  
h1 = h1 - 1: c1 = c1 - 1  
Wend  
' xem co con hau nao nam tren duong cheo tren phai - duoi trai  
c1 = c - 1: h1 = h + 1  
While (c1 >= 0) And (h1 <= MAX)  
If hang(c1) = h1 Then  
testvitri = False  
Exit Function  
End If  
h1 = h1 + 1: c1 = c1 - 1  
Wend  
testvitri = True  
End Function  
' Tim vi tri hang cho con hau o cot c  
Private Function timvitri(ByVal c As Integer) As Integer  
179  
Dim h As Integer  
Dim hmin As Integer  
hmin = hang(c) + 1  
For h = hmin To MAX ' thu hang h  
If testvitri(h, c) Then  
timvitri = h  
Exit Function  
End If  
Next h  
timvitri = -1  
End Function  
' In kt qua con ma i trn ban c  
Private Sub InKetqua()  
Dim h As Integer, c As Integer  
Dim buf As String  
songhiem = songhiem + 1  
lbOutput.AddItem "Cach i th : " & songhiem  
For h = 0 To MAX  
' Hiín th hang li ngang ban c  
buf = ""  
For c = 0 To MAX  
buf = buf & "+---"  
Next c  
lbOutput.AddItem buf & "+"  
' Hiín th nöi dung hang th h ban c  
buf = ""  
For c = 0 To MAX  
If hang(c) = h Then  
buf = buf & "| x "  
Else  
buf = buf & "| "  
End If  
Next c  
lbOutput.AddItem buf & ("|")  
Next h  
180  
' Hiín th hang li ngang ban c cuöi cung  
buf = ""  
For c = 0 To MAX  
buf = buf & "+---"  
Next c  
lbOutput.AddItem buf & "+"  
End Sub  
Private Sub btnStart_Click()  
Dim h As Integer, c As Integer  
Dim stime As Long  
Dim etime As Long  
' xoa listbox  
lbOutput.Clear  
' ghi nhan thoi diem bat dau chay giai thuat  
stime = GetTickCount  
songhiem = 0  
' khoi dong trang thai xuat phat  
For c = 0 To MAX  
hang(c) = -1  
Next c  
songhiem = 0  
' bat dau dat con hau vao vi tri 0,0  
hang(0) = 0  
' bat dau tim con hau cho cot thu hai (1)  
c = 1  
Lap:  
While c <= MAX  
' tim con hau cho cot c  
h = timvitri(c)  
If h >= 0 Then 'tim duoc  
hang(c) = h  
c = c + 1  
GoTo tieptuc  
End If  
' tim khong duoc  
181  
If c > 0 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 1 thoi gian nua  
For h = 1 To 10000  
For c = 1 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  
InKetqua  
c = c - 1  
GoTo Lap  
End Sub  
5. Chọn menu File.Save Project As..., cửa sổ sau sẽ hiển thị :  
182  
6. Duyệt hệ thống file v chọn thö mục löu cc file của Project ứng dụng.  
7. Chọn menu Run.Start để chạy ứng dụng, Khi cửa sổ ứng dụng hiển thị, dời chuột về button  
Start rồi click chuột trn nó để chạy giải thuật "xếp 8 con hậu trn bn cờ sao cho chng không thể ăn  
nhau". Đợi 1 lc, cửa sổ ứng dụng sẽ hiển thị kết quả nhö sau :  
183  
8. Dời marker trn scrollbar của Listbox về döới đy Listbox để hiển thị nội dung cuối cng của  
Listbox nhö hình sau :  
184  
9. Bạn sẽ 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, mỗi lần quan st v ghi nhận lại thời gian chạy.  
11. Chọn menu File.Make Project1.exe, cửa sổ sau sẽ hiển thị :  
185  
12. Duyệt hệ thống file về thö mục chứa Project rồi ấn button OK để my löu file khả thi töông  
ứng vo 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 nó để hiển  
thị cc file trong Project. Dời chuột về file Project1.exe, ấn kp chuột vo nó để chạy ứng dụng, cửa  
sổ sau sẽ hiển thị :  
186  
14. Dời chuột về button Start rồi click chuột trn nó để chạy giải thuật "xếp 8 con hậu trn bn cờ  
sao cho chng không thể ăn nhau". Đợi 1 lc, cửa sổ ứng dụng sẽ hiển thị kết quả nhö sau :  
187  
15. Dời marker trn scrollbar của Listbox về döới đy Listbox để hiển thị nội dung cuối cng của  
Listbox nhö hình sau :  
188  
16. Bạn sẽ 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, mỗi lần quan st v ghi nhận lại thời gian chạy.  
18. So snh cc gi trị thời gian chạy ứng dụng ở böớc 10 v ở böớc 17. Lý giải vì sao gi trị thời gian  
ở böớc 17 nhỏ hôn nhiều so với ở böớc 10, từ đó thấy r öu điểm của trình bin dịch so với trình  
thông dịch.  
19. By giờ đóng cửa sổ VB 6.0, chọn Start.All Program.Accessories.Command Prompt để mở  
cửa sổ hng lệnh nhö sau :  
189  
20. Nhập thử lần löợt cc lệnh sau :  
cd \  
dir /w  
type Form.bas  
...  
v quan st kết quả xử lý từng lệnh m bạn nhập vo. Bạn thử nghó xem có thể dng trình bin dịch cc  
lệnh trong tröờng hợp ny không ? Hay l cch khả thi duy nhất l dng trình thông dịch để dịch  
chạy từng lệnh ngay sau khi ngöời dng nhập vo ?  
190  
doc 15 trang myanh 25200 Free
Bạn đang xem tài liệu "Tài liệu thực hành 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", để tải tài liệu gốc về máy hãy click vào nút Download ở trên

File đính kèm:

  • doctai_lieu_thuc_hanh_mon_nhap_mon_dien_toan_bai_thuc_hanh_so_4.doc