1. Trang chủ
  2. » Luận Văn - Báo Cáo

Bài thực hành số 1- buổi 1

15 3 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 đề Tính Hiệu Quả Của Trình Thông Dịch Và Biến Dịch
Trường học University of Engineering and Technology
Chuyên ngành Information Technology
Thể loại Bài thực hành
Thành phố Hà Nội
Định dạng
Số trang 15
Dung lượng 401,8 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

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ì[.]

Trang 1

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 :

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 :

Trang 2

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 miêu tả nó trong cửa sổ Toolbox bên trái, 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 tên cho nó là btnStart, caption cho nó là Start như hình dưới đây :

Trang 3

4 Tương tự, chọn đốitượng ListBox và đặt tên cho nó là lbOutput Ấn kép chuột vào 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

Trang 4

Dim songhiem As Integer

Dim hang(MAX + 1) As Integer

' 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

Trang 5

testvitri = True

End Function

' Tim vi tri hang cho con hau o cot c

Private Function timvitri(ByVal c As Integer) As Integer 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 kïët quẫ con mậ ài trïn bân cúâ

Private Sub InKetqua()

Dim h As Integer, c As Integer

Dim buf As String

songhiem = songhiem + 1

lbOutput.AddItem "Cấch ài thûá : " & songhiem For h = 0 To MAX

' Hiïín thõ hâng lûúái ngang bân cúâ

buf = ""

For c = 0 To MAX

buf = buf & "+ -"

Next c

lbOutput.AddItem buf & "+"

' Hiïín thõ nưåi dung hâng thûá h bân cúâ

buf = ""

For c = 0 To MAX

Trang 6

If hang(c) = h Then

buf = buf & "| x "

Else

buf = buf & "| "

End If

Next c

lbOutput.AddItem buf & ("|")

Next h

' Hiïín thõ haâng lûúái ngang baân cúâ cuöëi cuâng 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)

Trang 7

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

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

Trang 8

InKetqua

c = c - 1

GoTo Lap

End Sub

5 Chọn menu File.Save Project As , cửa sổ sau sẽ hiển thị :

6 Duyệt hệ thống file và chọn thư mục lưu các 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 trên nó để chạy giải thuật "xếp 8 con hậu trên bàn cờ sao cho chúng không thể ăn nhau" Đợi 1 lúc, cửa sổ ứng dụng sẽ hiển thị kết quả như sau :

Trang 9

8 Dời marker trên scrollbar của Listbox về dưới đáy Listbox để hiển thị nội dung cuối cùng của Listbox như hình sau :

Trang 10

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 sát 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ị :

Trang 11

12 Duyệt hệ thống file về thư mục chứa Project rồi ấ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 nó để hiển thị các file trong Project Dời chuột về file Project1.exe, ấn kép chuột vào nó để chạy ứng dụng, cửa sổ sau sẽ hiển thị :

Trang 12

14 Dời chuột về button Start rồi click chuột trên nó để chạy giải thuật "xếp 8 con hậu trên bàn cờ sao cho chúng không thể ăn nhau" Đợi 1 lúc, cửa sổ ứng dụng sẽ hiển thị kết quả như sau :

Trang 13

15 Dời marker trên scrollbar của Listbox về dưới đáy Listbox để hiển thị nội dung cuối cùng của Listbox như hình sau :

Trang 14

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 sát và ghi nhận lại thời gian chạy

18 So sánh các 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 biên dịch so với trình thông dịch

19 Bây giờ đóng cửa sổ VB 6.0, chọn Start.All Program.Accessories.Command Prompt

để mở cửa sổ hàng lệnh như sau :

Trang 15

20 Nhập thử lần lượt các lệnh sau :

cd \

dir /w

type Form.bas

và quan sát kết quả xử lý từng lệnh mà bạn nhập vào Bạn thử nghĩ xem có thể dùng trình biên dịch các lệnh trong trường hợp này không ? Hay là cách khả thi duy nhất là dùng trình thông dịch để dịch chạy từng lệnh ngay sau khi người dùng nhập vào ?

Ngày đăng: 11/05/2023, 10:24

w