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
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:
tai_lieu_thuc_hanh_mon_nhap_mon_dien_toan_bai_thuc_hanh_so_4.doc

