Nhiệm vụ của ta lúc này là Click vào nút OK, sau đó con trỏ sẽ di chuyển đến vị trí
các ô nhập liệu cần thiết để ta có thể nhập các số liệu vào tính toán.
Công việc chuẩn bị, thiết lập các đề bài, xây dựng mối quan hệ giữa các nút điều
khiển và thiết lập được giao diện của các bài tập cụ thể. Yêu cầu cần thiết cho công việc tiếp
theo là ta nhập các số liệu vào các đối tượng Text nhập liệu và thực hiện tính toán để đưa ra
một kết quả hợp lý và phù hợp với từng điều kiện của bài toán.
                
              
                                            
                                
            
 
            
                
60 trang | 
Chia sẻ: baoanh98 | Lượt xem: 1364 | Lượt tải: 0
              
            Bạn đang xem trước 20 trang tài liệu Đề tài Biên soạn phần mềm - Soạn thảo nhanh một số bài tập Vật lý 10 cơ bản phần Nhiệt học, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
i với kết quả hoàn toàn mới để cung cấp cho học sinh. Như vậy, 
dưới đây tôi sẽ đưa ra một số bài toán đã được lập trình rồi, từ đó nó có thể xem là tài liệu 
tham khảo cho các giáo viên và sinh viên. 
 ***************** 
 Trang 24 
B - THỰC NGHIỆM NGÔN NGỮ LẬP TRÌNH VISUAL VỚI MỘT SỐ 
BÀI TẬP CỤ THỂ CỦA PHẦN NHIỆT HỌC LỚP 10 CƠ BẢN 
 I. ÁP DỤNG KIẾN THỨC CỦA VISUAL BASIC VÀO LẬP TRÌNH 
MỘT SỐ BÀI TẬP Ở SÁCH BÀI TẬP VẬT LÝ 10 CƠ BẢN PHẦN NHIỆT 
HỌC: 
 1. Công việc chuẩn bị cho lập trình 
 Mỗi một bài tập đều có một đặc thù và có cách giải riêng của nó. Để chuẩn bị cho việc 
lập trình được một bài tập như ý muốn thì trước tiên tôi phải có đề bài, có cả cách giải bài 
tập đó dưới dạng một văn bản Word. Sau đó sử dụng chương trình PrimoPDF để chuyển 
toàn bộ File Word sang File PDF. 
 * Đặc điểm của File PDF: Đây là một ứng dụng đặc sắc, cho phép xuất bản PDF chất 
lượng cao và hỗ trợ mọi chương trình có sử dụng lệnh in, từ bộ phần mềm điện toán văn 
phòng của Microsoft cho đến các trình biên tập ảnh số 
 Primo PDF còn giúp chúng ta dễ dàng tối ưu hóa chất lượng xuất bản PDF theo hướng 
sát với mục đích sử dụng (để xem, in ra giấy, làm sách điện tử, chế bản), gia tăng độ bảo 
mật dữ liệu (phải mở tập tin bằng mật khẩu, mã hóa dữ liệu, cấm in ra giấy, chống sao chép 
nội dung vào Clipboard), không đóng dấu nước lên tập tin xuất, đặc biệt còn cho phép 
ghép nhiều tập tin PDF rời rạc thành một tập tin duy nhất. 
 Như vậy, với một máy tính thông thường chúng ta sẽ cài đặt chương trình Adobe 
Reader 7.0 để đọc và hiển thị được File PDF. 
 Một phần không thể thiếu trong quá trình lập trình là máy tính phải cài đặt thêm 
chương trình Corel Graphics Suite 11 trong đó có phần mềm Corel PHOTO-PAINT 11, 
để sử dụng lệnh cắt trong File PDF và chuyển sang Corel PHOTO-PAINT 11 dán vào và 
lưu lại với File dạng hình ảnh có tên (*.jpg). 
 Một phần không thể thiếu và nó có vai trò rất quan trọng là máy tính phải được cài đặt 
chương trình của Visual Basic 6.0, để từ đó chúng ta có thể lập trình được những chương 
trình khá quan trọng phù hợp với từng nhu cầu của công việc. 
 Nghiên cứu các kiến thức cơ sở của Visual Basic 6.0. 
 Làm một số bài tập ứng dụng của Visual Basic 6.0. 
 2. Quá trình lập trình 
 2.1. Thiết kế giao diện 
 Bài tập Vật lý là một phần rất quan trọng trong bộ môn Vật lý. Vì vậy, để lập trình 
được một loạt các bài tập theo chương trình phổ thông dưới ứng dụng của Visual Basic. Tôi 
chọn một số bài tập tiêu biểu, đại diện cho từng chương trong phần giới hạn đề tài mà tôi 
nghiên cứu. Tuy với số lượng bài tập có giới hạn nhưng mỗi bài đều có một nét riêng và 
một đặc trưng riêng cần nghiên cứu. Phần Nhiệt học cuả chương trình lớp 10 cơ bản có 3 
chương nên tôi quyết định chọn 15 bài tập trong chương V, 10 bài tập trong chương VI và 
15 bài tập trong chương VII ở sách bài tập để lập trình. 
 Dưới đây là một số bài tiêu biểu cho từng chương: 
 29.8. Tính khối lượng khí oxi đựng trong bình thể tích 10lit dưới áp suất 150atm ở 
nhiệt độ 0oC. Biết ở điều kiện chuẩn khối lượng riêng của oxi là 1,43 kg/m3. 
Giải 
 Trang 25 
 Biết 0
0
m
V
ρ = và m
V
ρ = suy ra 0 0V Vρ ρ= (1) 
 Mặt khác 0 0PV PV= (2) 
 (vì nhiệt độ của khí bằng nhiệt độ ở điều kiện chuẩn). 
 Từ (1) và(2) suy ra: 
 30
0
1, 43.150 214,5 /
1
p kg m
p
ρρ = = = và 2214,5.10 2,145 .m kg−= = 
 Đối với bài tập này chỉ có hai biến số thể tích V và áp suất p có thể thay đổi được còn 
0ρ , 0p là những thông số cố định, vì vậy ta có thể xây dựng giao diện của bài tập này như 
sau: Gồm có hai ô nhập liệu với hai giá trị V và p. Đến phần kết quả có hai ô, một ô chỉ khối 
lượng riêng của không khí ở áp suất p và một ô chỉ giá trị khối lượng m cần tính. Qua quá 
trình viết các đoạn lệnh cho bài toán thì ta có thể nhập vào hai ô nhập liệu V và p một số bất 
kỳ, sau đó click vào nút Tính thì ta sẽ được một kết quả phù hợp mà không cần tính toán 
phức tạp. 
Hình 06. Giao diện bài tập 29.8 sách BT 
 30.10*. Một chai chứa không khí được nút kín bằng một nút có trọng lượng không đáng kể, tiết 
diện 2,5cm2. Hỏi phải đun nóng không khí trong chai lên tới nhiệt độ tối thiểu bằng bao nhiêu để nút 
bật ra? Biết lực ma sát giữa nút và chai có độ lớn là 12N, áp suất ban đầu của không khí trong chai 
bằng áp suất khí quyển và bằng 9,8.104Pa, nhiệt độ ban đầu của không khí trong chai là -30C. 
Giải 
 Trang 26 
 Trước khi nút bật ra, thể tích khí trong chai không đổi và quá trình đun nóng là quá 
trình đẳng tích. Tại thời điểm nút bật ra, áp lực không khí trong chai tác dụng lên nút phải 
lớn hơn áp lực của khí quyển và lực ma sát: 
 2 1msp S F p S> + Do đó: 2 1msFp pS> + 
 Vì quá trình là đẳng tích nên: 
1 2
1 2
2
2 1
1
1
2 1
1
4
2 4 4
270 12 9,8.10 402
9,8.10 2,5.10
ms
p p
T T
pT T
p
FTT p
p S
T K−
=
⇒ =
⎛ ⎞⇒ = +⎜ ⎟⎝ ⎠
⎛ ⎞⇒ = + ≈⎜ ⎟⎝ ⎠
 Phải đun nóng tới nhiệt độ ít nhất là T2 = 402 K hoặc t2 = 1290C. 
Hình 07. Giao diện bài tập 30.10* sách BT 
 Đối với bài này có ba thông số tiết diện S của chai, nhiệt độ ban đầu của không khí 
trong chai và lực ma sát giữa nút và chai là những đại lượng có thể thay đổi được nên riêng 
bài này sẽ có ba biến số cần nhập liệu. Ở phần kết quả của đề bài yêu cầu tính nhiệt độ. Vậy 
nhiệm vụ của mình là phải tính được nhiệt độ tuyệt đối T, từ đó suy ra nhiệt độ t của không 
khí phải đun nóng trong chai. Nên ta sẽ thiết lập hai ô kết quả tính được, một ô là nhiệt độ 
tuyệt đối T và một ô là nhiệt độ t cần tìm. 
 Trang 27 
 Tóm lại, đối với từng bài toán khác nhau, tôi sẽ thiết lập một giao diện của màn hình 
tương đối và phù hợp với nó. Điều đó thể hiện nét đặc trưng của bài tập cần thiết kế. 
 Mặt khác, do có nhiều loại máy tính khác nhau nên khi thiết lập giao diện của Visual 
Basic, tôi đã chọn màn hình 14inch làm chuẩn và cố định các kích thước: chiều ngang là 
11310, và chiều dọc là 8640 cho mọi chế độ của màn hình để đảm bảo khi cho chương trình 
hoạt động sẽ đáp ứng đủ màn hình của từng loại máy, nhằm tạo cho người dùng làm việc 
một cách dễ dàng với chương trình. 
 2.2. Kỹ thuật thực hiện 
 * Tạo màn hình của chương trình được trình diễn 
 Mở phần mềm Visual Basic 6.0 bằng cách vào menu Start | Programs | Microsoft 
Visual Basic 6.0| Chọn biểu tượng của Microsoft Visual Basic 6.0 | Stadard EXE. 
 Khi đó màn hình của chương trình Visual Basic 6.0 sẽ có dạng như sau: 
Hình 08. Màn hình làm việc của Visual Basic 6.0 
 Lúc màn hình hiện lên như trên, ta sẽ làm việc với giao diện Visual Basic này. 
 - Dùng TextBox để vẽ các ô Text: 
 + TextBox1: Name là Text1, thuộc tính Text là CHƯƠNG TRÌNH. 
 + TextBox2: Name là Text2, thuộc tính Text là CHƯƠNG. 
 + TextBox3: Name là Text3, thuộc tính Text là Text3. 
 + TextBox4: Name là Text4, thuộc tính Text là BÀI. 
 Trang 28 
 + TextBox5: Name là Text5, thuộc tính Text là 
 “TRƯỜNG ĐẠI HỌC AN GIANG 
 GVHD: Ths. GIANG VĂN PHÚC 
 SVTH: NGUYỄN THỊ KIM HUỆ 
 LỚP DH5L” 
 + TextBox6: Name là Bienso_1, thuộc tính Text rỗng. 
 + TextBox7: Name là Bienso_2, thuộc tính Text rỗng. 
 + TextBox8: Name là Bienso_3, thuộc tính Text rỗng. 
 + TextBox9: Name là Bienso_4, thuộc tính Text rỗng. 
 + TextBox10: Name là Bienso_5, thuộc tính Text rỗng. 
 + TextBox11: Name là Bienso_6, thuộc tính Text rỗng. 
 + TextBox12: Name là donvibien_1, thuộc tính Text rỗng. 
 + TextBox13: Name là donvibien_2, thuộc tính Text rỗng. 
 + TextBox14: Name là donvibien_3, thuộc tính Text rỗng. 
 + TextBox15: Name là donvibien_4, thuộc tính Text rỗng. 
 + TextBox16: Name là donvibien_5, thuộc tính Text rỗng. 
 + TextBox17: Name là donvibien_6, thuộc tính Text rỗng. 
 + TextBox18: Name là Biensokq_1, thuộc tính Text rỗng. 
 + TextBox19: Name là Biensokq_2, thuộc tính Text rỗng. 
 + TextBox20: Name là donvibienkq_1, thuộc tính Text rỗng. 
 + TextBox21: Name là donvibienkq_1, thuộc tính Text rỗng. 
 - Dùng Label để nhập các chuỗi dữ liệu: 
 + Label1 : Name là Label1, thuộc tính Caption là Bộ môn Vật Lý khoa Sư Phạm 
trường Đại Học An Giang biên soạn và giữ bản quyền. 
 + Label2 : Name là Label2, thuộc tính Caption là “Có công mài sắt, có ngày nên 
kim”. 
 + Label3 : Name là Label3, thuộc tính Caption là ĐỀ BÀI. 
 + Label4 : Name là Label4, thuộc tính Caption là soạn nhanh bài tập Vật Lý 10 
phần Nhiệt học. 
 + Label5: Name là Label5, thuộc tính Caption là kết quả. 
 - Dùng Combo Box để thêm vào các list của chương trình: 
 + Combo Box1: Name là Chuongtrinh_Combo, thuộc tính List là VẬT LÝ 10, VẬT 
LÝ 11, VẬT LÝ 12. 
 + Combo Box2: Name là Chuong_Combo, thuộc tính List là 1,2,3,4,5,6,7. 
 + Combo Box3: Name là Bai_Combo, thuộc tính List là từ 1 → 15. 
 - Dùng nút CommandButton để vẽ các nút lệnh điều khiển : 
 Trang 29 
 + CommandButton1: Name là Giothieu_Cmd, thuộc tính Caption là GIỚI THIỆU. 
 + CommandButton2: Name là Ketthuc_Cmd, thuộc tính Caption là KẾT THÚC. 
 + CommandButton3: Name là Cmd_batdau, thuộc tính Caption là BẮT ĐẦU. 
 + CommandButton4: Name là Cmd_Tinh, thuộc tính Caption là TÍNH. 
 + CommandButton5: Name là Cmd_tieptuc, thuộc tính Caption là TIẾP TỤC. 
 + CommandButton6: Name là Command_phu, thuộc tính Caption là Cau b. 
 - Dùng nút Image vẽ các khung hình chữ nhật để load các file có dạng hình ảnh 
(*.jpg) vào đó : 
 + Image1: Name là Image_debai. 
 + Image2: Name là Image_bien_1. 
 + Image3: Name là Image_bien_2. 
 + Image4: Name là Image_bien_3. 
 + Image5: Name là Image_bien_4. 
 + Image6: Name là Image_bien_5. 
 + Image7: Name là Image_bien_6. 
 + Image8: Name là Image_bienkq_1. 
 + Image9: Name là Image_bienkq_2. 
 - Dùng nút Shape để vẽ thêm các hình đa giác trên màn hình giao tiếp Form. Hình 
Shape được vẽ là hình chữ nhật bao luôn các ô TextBox chỉ giá trị của các biến, các Image 
và các CommandButton. 
 - Dùng nút Timer : quy định thời gian chữ chạy trên màn hình khi trình diễn. 
 * Xây dựng mối liên quan giữa các Control điều khiển 
 Đầu tiên trước khi lập trình cho một chương trình thì công việc đầu tiên ta sẽ khai 
báo các biến có trong chương trình làm việc. Phần lập trình Visual ở trên các biến 
“chuongtrinh, chuong, bai, tentaptin” là những biến kiểu dữ liệu cơ sở dưới dạng chuỗi. Do 
đó khi khai báo biến, ta sẽ chọn thuộc tính String. String cho phép sử dụng chuỗi dữ liệu từ 
0 đến 65.500 ký tự hay ký số, thậm chí là các giá trị đặc biệt như ^%@. Giá trị kiểu chuỗi 
được đặt giữa hai dấu ngoặc kép (“ ”). 
 ** Đối với từng Combo Box 
 - Ứng với Chuongtrinh_Combo để nó hiển thị khi chạy thuộc tính gán cho Combo 
này là Visible = True. Đồng thời thuộc tính List của Combo phải có 3 chuỗi là VẬT LÝ 10, 
VẬT LÝ 11, VẬT LÝ 12. 
 Private Sub Chuongtrinh_Combo_Click() 
 If Chuongtrinh_Combo.ListIndex = 0 Then Chuong_Combo.Enabled = True 
 If Chuongtrinh_Combo.ListIndex=1OrChuongtrinh_Combo.ListIndex=2 Then 
 Dim thongbao As Boolean 
 thongbao = MsgBox("PHAN NAY CHUA CAP NHAT", vbOKOnly) 
 End If 
 Trang 30 
 End Sub 
 Khi Click vào Chuongtrinh_Combo thì List của Combo sẽ hiện lên 3 chuỗi VẬT 
LÝ 10, VẬT LÝ 11, VẬT LÝ 12, nhiệm vụ ta chọn một trong ba dòng chuỗi này để 
chương trình hiện lên theo yêu cầu của người sử dụng. Do giới hạn đề tài, tôi chỉ nghiên cứu 
các bài tập trong chương trình VẬT LÝ 10 nên khi gặp dòng lệnh: 
 “If Chuongtrinh_Combo.ListIndex = 0 Then Chuong_Combo.Enabled = True” 
là nếu List của Combo chuongtrinh được click vào vị trí đầu tiên “ListIndex=0” là ứng với 
chuỗi VẬT LÝ 10 thì chuong_Combo có thuộc tính Enabled = True là hiện sáng. Ngược 
lại, nếu List của chuongtrinh_Combo được click vào vị trí kế tiếp “ListIndex=1Or 
ListIndex=2” là ứng với chuỗi VẬT LÝ 11 hoặc VẬT LÝ 12 thì chuong_Combo có thuộc 
tính Enabled = False là làm mờ đối tượng. Đồng thời chương trình chạy hiện lên một thông 
báo lỗi với biến thongbao dạng lý luận “PHAN NAY CHUA CAP NHAT” nhờ lệnh MsgBox 
có thuộc tính vbOKOnly chỉ có thể đọc và Click OK. 
 “Dim thongbao As Boolean 
 thongbao = MsgBox("PHAN NAY CHUA CAP NHAT", vbOKOnly)” 
Hình 09. Màn hình thông báo giới hạn của đề tài không có chương trình Vật Lý 11. 
 Bất kỳ một nút lệnh nào cũng vậy, khi viết code cho nút điều khiển đó thì nó cũng 
được bắt đầu “Private Sub Chuongtrinh_Combo_Click()” và kết thúc là “End Sub”. 
 - Khi Click vào List VẬT LÝ 10 của Chuongtrinh_Combo thì nút Chuong_Combo 
sẽ bật sáng, điều đó nói lên rằng chương trình cho phép người sử dụng được tiếp tục chọn 
với List của Chuong_Combo. Cũng tương tự như cách sử dụng các thuộc tính trong 
Chuongtrinh_Combo, cũng do đề tài có giới hạn nghiên cứu, tôi chỉ làm việc với ba 
chương của phần Nhiệt học là chương 5, chương 6 và chương 7. Vì thế, khi nút 
Chuong_Combo đang ở chế độ làm việc (bật sáng) nếu ta Click vào vị trí List của 
 Trang 31 
Chuong_Combo là các chương 5,6,7 thì nút Bai_Combo tiếp tục bật sáng và ở tư thế sẵn 
sàng làm việc. Ngược lại, nếu ta Click vào vị trí List của Chuong_Combo là các chương 
1,2,3,4 thì chương trình sẽ hiện lên một thông báo lỗi “PHAN NAY CHUA CAP NHAT”. 
Như vậy đoạn lệnh chương trình con của Chuong_Combo được thiết lập như sau: 
 Private Sub Chuong_Combo_Click() 
 If (Chuong_Combo.ListIndex = 0) Then chuong = "01" 
 If (Chuong_Combo.ListIndex = 1) Then chuong = "02" 
 If (Chuong_Combo.ListIndex = 2) Then chuong = "03" 
 If (Chuong_Combo.ListIndex = 3) Then chuong = "04" 
 If Chuong_Combo.ListIndex = 0 Or Chuong_Combo.ListIndex = 1 Or 
Chuong_Combo.ListIndex = 2 Or Chuong_Combo.ListIndex = 3 Then 
 Dim thongbao As Boolean 
 thongbao = MsgBox(" PHAN NAY CHUA CAP NHAT", vbOKOnly) 
 End If 
 If (Chuong_Combo.ListIndex = 4) Then chuong = "05" 
 If (Chuong_Combo.ListIndex = 5) Then chuong = "06" 
 If (Chuong_Combo.ListIndex = 6) Then chuong = "07" 
 If Chuong_Combo.ListIndex = 4 Or Chuong_Combo.ListIndex = 5 Or 
Chuong_Combo.ListIndex = 6 Then Bai_Combo.Enabled = True 
 Mỗi Combo Box đều có những thuộc tính riêng nhưng nó đều được liên hệ với nhau. 
Chẳng hạn như có làm việc được với Chuongtrinh_Combo rồi tiếp tục mới làm việc được 
với Chuong_Combo và như thế mới có thể làm việc tiếp với Bai_Combo được. Ở 
Bai_Combo List của Combo này gồm 15 bài có số thứ tự từ 01 đến 15. Khi Click vào đúng 
vị trí đang làm việc của Chuong_Combo thì Bai_Combo sẽ bật sáng và cùng làm việc 
chung với chương trình đang chạy. Vì vậy, khi viết code cho Combo này trước hết phải xác 
định được vị trí bài ứng với từng lúc click chuột vào List nào. Khi đó, đoạn code có dạng 
như sau: 
Hình 10. Màn hình đoạn lệnh của nút Bai_Combo. 
 Trang 32 
 - Tiếp tục để thiết lập được mối quan hệ giữa các biến “chuong” và “bai” trong khi 
chương trình hoạt động, thể hiện được từng đề bài của bài tập cần lập trình. Tôi đã đặt thêm 
một tên biến mới là “tentaptin”, khi đó dùng lệnh ghép chuỗi “&” để ghép các biến lại tạo 
thành một chuỗi có tên là “tentaptin”, tên này được gán vào giá trị của ô Text3 
 tentaptin = chuong & bai & ".jpg" 
 Text3.Text = tentaptin 
 Như vậy, khi Click vào Bai_Combo chọn được bài thì ô Text3 sẽ hiện lên chương 
được chọn & bài được chọn & ".jpg", đây là một File dạng hình ảnh đã được cắt ra từ File 
PrimoPDF chuyển qua Corel PHOTO-PAINT và Save lại dưới dạng một File ảnh ".jpg". 
 Ví dụ: Tôi muốn chọn chương 05 bài 05 lúc này ô Text3 chỉ hiện lên một chuỗi có tên 
như sau: 
 Đó là một chuỗi dữ liệu đã được ghép sẽ hiện lên trong Text3 khi trình diễn chương 
trình. Nhưng chỉ hiện lên bao nhiêu chưa đủ, quan trọng là phải làm sao cho thấy được đề 
bài dưới dạng một hình ảnh. Lúc này, ta cần đặt thêm một lệnh SET vào chỗ Image là 
khung chứa hình ảnh một Picture. Vì vậy khi chương trình hoạt động lệnh Set này sẽ 
LoadPicture với tên phù hợp vào Image_debai trong giao diện làm việc của Visual nói 
trên. 
 Set cau = LoadPicture(tentaptin) 
 Set Image_debai = cau 
 Ngay đây, chúng ta hãy quan sát một đề bài đã được Load vào ô Image_debai. Chúng 
ta trở lại ví dụ chọn ở trên là chương 05 bài 05, đề bài được save dưới dạng File hình ảnh có 
tên là “0505.jpg”. 
Hình 11. Màn hình giao diện của bài 0505.jpg. 
 Trang 33 
 ** Đối với các Command Button 
 - Người ta thường nói để vào một chương trình, một buổi họp nào đó thì thường có 
một “Lời mở đầu” như có ý mời gọi mọi người cùng tham gia với mình. Ở đây cũng vậy, 
chúng ta muốn vào được bên trong một cách hệ thống thì giao diện Giới thiệu là phần rất 
quan trọng. Vì vậy, khi chương trình được trình diễn chúng ta sẽ Click vào nút “GIỚI 
THIỆU” thì màn hình sẽ hiện lên một hình bìa “Phần mềm SOẠN BÀI TẬP VẬT LÝ”. 
Muốn vậy, tôi đã đặt thuộc tính cho Command giới thiệu như sau: 
 Private Sub Giothieu_Cmd_Click() 
 Set Image_debai = LoadPicture("gioithieunhoA.jpg") 
 Text5.Visible = True 
 Label1.Visible = True 
 Picture1. Visible = False 
 Bienso_1.Visible = False 
 Bienso_2.Visible = False 
 Bienso_3.Visible = False 
 Bienso_4.Visible = False 
 Bienso_5.Visible = False 
 Bienso_6.Visible = False 
 Biensokq_1.Visible = False 
 Biensokq_2.Visible = False 
 donvibien_1.Visible = False 
 donvibien_2.Visible = False 
 donvibien_3.Visible = False 
 donvibien_4.Visible = False 
 donvibien_5.Visible = False 
 donvibien_6.Visible = False 
 donvibienkq_1.Visible = False 
 donvibienkq_2.Visible = False 
 Image_bien_1.Visible = False 
 Image_bien_2.Visible = False 
 Image_bien_3.Visible = False 
 Image_bien_4.Visible = False 
 Image_bien_5.Visible = False 
 Image_bien_6.Visible = False 
 Image_bienkq_1.Visible = False 
 Image_bienkq_2.Visible = False 
 Cmd_batdau.Visible = False 
 Cmd_Tinh.Visible = False 
 Cmd_ketqua.Visible = False 
 Cmd_tieptuc.Visible = False 
 Trang 34 
 End Sub 
Hình 12. Màn hình khi Click vào nút “GIỚI THIỆU”. 
 Hình 12, mà chúng ta quan sát được ở trên là khi ta Click chuột vào nút “GIỚI 
THIỆU”. Hình ảnh này cũng được Lệnh Set vào khung Image_debai tương tự như lúc ta 
đặt thuộc tính cho Bai_Combo. Khi đó, các ô TextBox nhập liệu và các Command còn lại 
được đặt thuộc tính ẩn. 
 - Một chương trình, một bài tập hay một quyển sách nào cũng vậy, có mở đầu thì phải 
có kết thúc. Vì thế, bên cạnh Giothieu_Cmd thì Ketthuc_Cmd cũng có một vai trò rất 
quan trọng. Nó có tác dụng đóng chương trình trình diễn lại bất cứ lúc nào không cần sử 
dụng nữa. Ketthuc_Cmd có thể viết code một trong hai cách sau đây, nhưng nó đều có 
cùng một tác dụng là khi click chuột vào nút “KẾT THÚC” (Sub có thuộc tính Click) thì 
sự trình diễn sẽ tạm ngưng để trở về màn hình nền của Viual. 
 Cách 1: Private Sub Ketthuc_Cmd_Click() 
 End 
 End Sub 
 Cách 2: Private Sub Ketthuc_Cmd_Click() 
 Unload Me 
 End Sub 
 - Dữ liệu về các đề của bài tập đã được chuẩn bị xong, nhưng ứng với mỗi bài tập có 
thể có một biến số thay đổi, có bài tập lại có tới hai hoặc ba, bốn biến số thay đổi, nên việc 
trình bày một giao diện của từng bài tập cũng có phần khác nhau, chẳng hạn như đối với 
chương 05 bài tập 01 có một biến thay đổi là thể tích V; còn đối với chương 06 bài tập 05 
có 4 biến số thay đổi là m1, m2, t, t2. Do vậy, việc thiết kế giao diện của từng bài tập cũng 
 Trang 35 
đòi hỏi phải có một đặc điểm riêng. Chúng ta sẽ trở lại với Bai_Combo, sử dụng lệnh If để 
tạo các giao diện tương ứng của từng bài. 
 Private Sub Bai_Combo_Click() 
 If tentaptin = "0501.jpg" Then 
 Label1.Visible = True 
 Text5.Visible = False 
 donvibien_2.FontName = "VNI-times" 
 Bienso_1.Visible = False 
 donvibien_1.Visible = False 
 Bienso_2.Visible = True 
 donvibien_2.Visible = True 
 Bienso_3.Visible = False 
 donvibien_3.Visible = False 
 Bienso_4.Visible = False 
 donvibien_4.Visible = False 
 Bienso_5.Visible = False 
 donvibien_5.Visible = False 
 Bienso_6.Visible = False 
 donvibien_6.Visible = False 
 Biensokq_1.Visible = True 
 donvibienkq_1.Visible = True 
 Biensokq_2.Visible = False 
 donvibienkq_2.Visible = False 
 Cmd_batdau.Visible = True 
 Cmd_Tinh.Visible = True 
 Cmd_tieptuc.Visible = True 
 Cmd_ketqua.Visible = True 
 donvibien_2.Text = "(cm3)" 
 donvibienkq_1.Text = "(phan tu)" 
 Trang 36 
 Set Image_bien_2 = LoadPicture("thetich V.jpg") 
 Image_bien_2.Visible = True 
 Image_bien_1.Visible = False 
 Image_bien_3.Visible = False 
 Image_bien_4.Visible = False 
 Image_bien_5.Visible = False 
 Image_bien_6.Visible = False 
 Set Image_bienkq_1 = LoadPicture("n.jpg") 
 Image_bienkq_1.Visible = True 
 Image_bienkq_2.Visible = False 
 End If 
 Nếu bài tập được chọn là bài 01 chương 05 thì Label1 hiện ra, Text5 ẩn đi, các biến số 
chỉ có biến số thứ 2, biến số kết quả thứ 1, đơn vị của biến số thứ 2, đơn vị của biến số kết 
quả thứ 1, Imgae_bien_2 và Imgae_bienkq_1 hiện ra còn các biến khác có thuộc tính ẩn (tức 
là không nhìn thấy khi chạy chương trình). 
Hình 13. Màn hình giao diện của bài 0501. jpg 
 Nếu bài tập được chọn là bài 05 chương 06 thì Label1 hiện ra, Text5 ẩn đi, các biến số 
chỉ có biến số thứ 2,3,4,5; biến số kết quả thứ 1, đơn vị của biến số thứ 2,3,4,5; đơn vị của 
biến số kết quả thứ 1, Imgae_bien_2,3,4,5 và Imgae_bienkq_1 hiện ra còn các biến khác có 
thuộc tính ẩn. 
 If tentaptin = "0605.jpg" Then 
 Label1.Visible = True 
 Text5.Visible = False 
 Trang 37 
 donvibien_2.FontName = "VNI-times" 
 donvibien_3.FontName = "VNI-times" 
 donvibien_4.FontName = "VNI-times" 
 donvibien_5.FontName = "VNI-times" 
 Bienso_1.Visible = False 
 donvibien_1.Visible = False 
 Bienso_2.Visible = True 
 donvibien_2.Visible = True 
 Bienso_3.Visible = True 
 donvibien_3.Visible = True 
 Bienso_4.Visible = True 
 donvibien_4.Visible = True 
 Bienso_5.Visible = True 
 donvibien_5.Visible = True 
 Bienso_6.Visible = False 
 donvibien_6.Visible = False 
 Biensokq_1.Visible = True 
 donvibienkq_1.Visible = True 
 Biensokq_2.Visible = False 
 donvibienkq_2.Visible = False 
 Cmd_batdau.Visible = True 
 Cmd_Tinh.Visible = True 
 Cmd_tieptuc.Visible = True 
 Cmd_ketqua.Visible = True 
 donvibien_2.Text = "(g)" 
 donvibien_3.Text = "(kg)" 
 donvibien_4.Text = "(kJ)" 
 donvibien_5.Text = "(oC)" 
 Trang 38 
 donvibienkq_1.Text = "(oC)" 
 Set Image_bien_2 = LoadPicture("m1.jpg") 
 Image_bien_2.Visible = True 
 Image_bien_1.Visible = False 
 Set Image_bien_3 = LoadPicture("m2.jpg") 
 Image_bien_3.Visible = True 
 Set Image_bien_4 = LoadPicture("nhietluong Q.jpg") 
 Image_bien_4.Visible = True 
 Set Image_bien_5 = LoadPicture("ndt2.jpg") 
 Image_bien_5.Visible = True 
 Image_bien_6.Visible = False 
 Set Image_bienkq_1 = LoadPicture("ndt1.jpg") 
 Image_bienkq_1.Visible = True 
 Image_bienkq_2.Visible = False 
 End If 
Hình 14. Màn hình giao diện của bài 0605. jpg 
 - Khi các giao diện của các bài được thiết lập cho tương ứng với từng bài xong. Mỗi 
bài sẽ có các ô nhập số liệu để thực hiện việc tính toán. Trước hết, ta sẽ dùng chuột Click 
vào nút “BẮT ĐẦU”, lúc đó trên màn hình sẽ xuất hiện một thông báo “XIN NHAP CAC 
BIEN SO” nhờ lệnh MsgBox. 
 Private Sub Cmd_batdau_Click() 
 Trang 39 
 Dim thongbao As Boolean 
 thongbao = MsgBox("XIN NHAP CAC BIEN SO", vbOKOnly) 
 End Sub 
Hình 15. Màn hình thông báo khi Click vào nút “BẮT ĐẦU”. 
 Nhiệm vụ của ta lúc này là Click vào nút OK, sau đó con trỏ sẽ di chuyển đến vị trí 
các ô nhập liệu cần thiết để ta có thể nhập các số liệu vào tính toán. 
 Công việc chuẩn bị, thiết lập các đề bài, xây dựng mối quan hệ giữa các nút điều 
khiển và thiết lập được giao diện của các bài tập cụ thể. Yêu cầu cần thiết cho công việc tiếp 
theo là ta nhập các số liệu vào các đối tượng Text nhập liệu và thực hiện tính toán để đưa ra 
một kết quả hợp lý và phù hợp với từng điều kiện của bài toán. 
 * Lập trình một số bài tập cụ thể 
 Khi xây dựng xong các giao diện của các bài tập, tôi tiến hành lập trình đối với các bài 
toán này. Các bài tập khác nhau tôi sẽ có những công thức và biểu thức phù hợp với nó, thể 
hiện đặc trưng của từng bài. Công việc này thực chất là viết lại các biểu thức tính toán của 
bài tập. Để làm được điều này tôi tiến hành với nút lệnh Command “TÍNH”. 
 Từ hình nền của Visual đã làm, double Click vào Cmd_Tinh, khi đó sẽ hiện một Sub 
của nút lệnh “TÍNH” 
 Private Sub Cmd_Tinh_Click() 
 End Sub 
 Tôi đã sử dụng lệnh If để chọn vào từng bài tập mà lập trình. Ứng với từng bài, tôi 
xác định nó có bao nhiêu biến, có bao nhiêu kết quả, mỗi biến có đơn vị là gì, xác định được 
giao diện của mỗi bài. Từ đó, tiến hành viết code cho từng bài tập ở nút lệnh Cmd_Tinh. 
 Ở đây tôi sẽ đưa ra một số bài tượng trưng cho quá trình viết, chẳng hạn như: 
“0502.jpg”, “0514.jpg”, “0601.jpg”, “0605.jpg”, “0701.jpg”, “0709.jpg”. Để giải được 
bài tập một cách nhanh chóng ta cần biết được đề bài như sau: 
 * “0502.jpg” là bài V.9* sách BT 
 V.9* Một khí cầu vỏ thể tích 3336V m= và khối lượng vỏ 84m kg= được bơm không 
khí nóng tới áp suất bằng áp suất không khí bên ngoài. Không khí nóng phải có nhiệt độ 
 Trang 40 
bằng bao nhiêu để khí cầu bắt đầu bay lên? Biết không khí bên ngoài có nhiệt độ 270C và áp 
suất 1 atm; khối lượng mol của không khí ở điều kiện chuẩn là 29.10-3 kg/mol. 
Giải 
 Gọi 1ρ và 2ρ là khối lượng riêng của không khí ở nhiệt độ 1 27 273 300T K= + = ,và 
nhiệt độ 2T khi khí cầu bắt đầu bay lên. 
 Khi khí cầu bắt đầu bay lên: 
 A v kknF P P= + 
 1 2gV mg gVρ ρ= + 2 1 mVρ ρ⇒ = − (1) 
 Ở điều kiện chuẩn ta có : 3 30
29 1,295 / 1,295 /
22,4
g g dm kg m
l
ρ = = = 
 Khi áp suất không đổi, ta có: 01 0
1
T
T
ρ ρ= (2) 
 Từ (1) và (2): 31
273.1,295 1,178 /
300
kg mρ = = . Do đó: 32 0,928 /kg mρ = 
 Vì 0 0 02 0 2
2 2
273.1,295 381
0,928
T TT K
T
ρρ ρ ρ= ⇒ = = = 
 02 108t C⇒ = 
 | Đoạn lệnh lập trình được trình bày như sau: 
 If tentaptin = "0502.jpg" Then 
 If Val(Bienso_1.Text) = 0 Or Val(Bienso_1.Text) < 0 Then 
 Bienso_1.Text = "" 
 MsgBox "m chi nhan gia tri duong. Xin hay nhap lai!" 
 Exit Sub 
 End If 
 If Val(Bienso_3.Text) = 0 Or Val(Bienso_3.Text) < 0 Then 
 Bienso_3.Text = "" 
 MsgBox "V chi nhan gia tri duong. Xin hay nhap lai!" 
 Exit Sub 
 End If 
 If Val(Bienso_5.Text) < -273 Then 
 Bienso_5.Text = "" 
 MsgBox "t1>-273. Xin hay nhap lai!" 
 Exit Sub 
 End If 
 Dim giatri_1, giatri_2 As Single 
 giatri_1 = 273 * 1.295 / (Val(Bienso_5.Text) + 273) 
 Trang 41 
 giatri_2 = giatri_1 - (Val(Bienso_1.Text) / Val(Bienso_3.Text)) 
 tam = 273 * 1.295 / giatri_2 
 Biensokq_1.Text = tam 
 Biensokq_2.Text = tam – 273 
 Biensokq_2.Visible = False 
 donvibienkq_2.Visible = False 
 Image_bienkq_2.Visible = False 
 Command_phu.Visible = True 
 End If 
 * “0514.jpg” là bài 31.10* sách BT 
 31.10*. Người ta bơm khí oxi ở điều kiện chuẩn vào một bình có thể tích 5000l. Sau nữa giờ 
bình chứa đầy khí ở nhiệt độ 240C và áp suất 765mmHg. Xác định khối lượng khí bơm vào sau mỗi 
giây. Coi quá trình bơm diễn ra một cách đều đặn. 
Giải 
 Sau t giây khối lượng khí trong bình là: 
 m Vt Vρ ρ= ∆ = . Với ρ là khối lượng riêng của khí. 
 V∆ là thể tích khí bơm vào sau mỗi giây. 
 V là thể tích khí bơm vào sau t giây. 
 0 0
0
p VpV
T T
= (1) với mV ρ= và 0 0
mV ρ= 
 thay V và V0 vào (1) ta được: 
 0 0
0
pT
p T
ρρ = 
 Lượng khí bơm vào sau mỗi giây là: 
 0 0
0
5.765.273.1, 29. 0,0033 / 3,3 / .
1800.760.297
pTm V Vx kg s g s
t t t p T
ρρ= = = = = = 
 | Đoạn lập trình được trình bày như sau: 
 If tentaptin = "0514.jpg" Then 
 If Val(Bienso_2.Text) = 0 Or Val(Bienso_2.Text) < 0 Then 
 Bienso_2.Text = "" 
 MsgBox "V chi nhan gia tri duong. Xin hay nhap lai!" 
 Exit Sub 
 End If 
 If Val(Bienso_3.Text) = 0 Or Val(Bienso_3.Text) < 0 Then 
 Bienso_3.Text = "" 
 MsgBox "T chi nhan gia tri duong. Xin hay nhap lai!" 
 Exit Sub 
 Trang 42 
 End If 
 If Val(Bienso_4.Text) = 0 Or Val(Bienso_4.Text) < 0 Then 
 Bienso_4.Text = "" 
 MsgBox "t>0. Xin hay nhap lai!" 
 Exit Sub 
 End If 
 If Val(Bienso_5.Text) = 0 Or Val(Bienso_5.Text) < 0 Then 
 Bienso_5.Text = "" 
 MsgBox "p chi nhan gia tri duong. Xin hay nhap lai!" 
 Exit Sub 
 End If 
 Dim thuong As Single 
 tam = (Bienso_5.Text) * 273 * 1.29 / (760 * (Bienso_3.Text)) 
 Biensokq_1.Text = tam 
 thuong = tam * (Bienso_2.Text) * (10 ^ -3)/((Bienso_4.Text) * 3600) 
 Biensokq_2.Text = thuong 
 End If 
 * “0601.jpg” là bài 32.6 sách BT 
 32.6. Người ta bỏ một miếng hợp kim chì và kẽm có khối lượng 50g ở nhiệt độ 136oC vào một 
nhiệt lượng kế có nhiệt dung (nhiệt lượng cần để làm cho vật nóng lên thêm 1oC) là 50 J/K chứa một 
100g nước ở 14oC. Xác định khối lượng của kẽm và chì trong hợp kim trên, biết nhiệt độ khi bắt đầu 
có sự cân bằng nhiệt trong nhiệt kế là 18oC. Bỏ qua sự trao đổi nhiệt với môi trường bên ngoài. 
 Nhiệt dung riêng của kẽm là 337 (J/kg.K), của chì là 126 (J/kg.K), của nước là 4180 (J/kg.K). 
Giải 
 Nhiệt lượng tỏa ra : ( ) tcmtcmQ ∆−+∆= 2111 05,0 (1) 
 Với m1, c1 là khối lượng và nhiệt dung riêng của kẽm 
 c2 là nhiệt dung riêng của chì. 
 Nhiệt lượng thu vào: ( ) '''''' tcmctctmcQ ∆+=∆+∆= (2) 
 Với m,c là khối lượng và nhiệt dung riêng của nước 
 c’là nhiệt dung của nhiệt lượng kế. 
 Từ (1) & (2) rút ra: 'Q Q= 
 ( )( ) 21 1 2
' ' 0,05
0,045
mc c t c t
m kg
t c c
+ ∆ − ∆= =∆ − 
 Khối lượng của chì: 
 kgmm 005,0045,005,005,0 12 =−=−= 
 | Đoạn lệnh lập trình được trình bày như sau: 
 If tentaptin = "0601.jpg" Then 
 Trang 43 
 If Val(Bienso_1.Text) = 0 Or Val(Bienso_1.Text) < 0 Then 
 Bienso_1.Text = "" 
 MsgBox "M chi nhan gia tri duong. Xin hay nhap lai!" 
 Exit Sub 
 End If 
 If Val(Bienso_2.Text) = 0 Or Val(Bienso_2.Text) < 0 Then 
 Bienso_2.Text = "" 
 MsgBox "m chi nhan gia tri duong. Xin hay nhap lai!" 
 Exit Sub 
 End If 
 If Val(Bienso_3.Text) < -273 Then 
 Bienso_3.Text = "" 
 MsgBox "t1>-273. Xin hay nhap lai!" 
 Exit Sub 
 End If 
 If Val(Bienso_4.Text) < -273 Then 
 Bienso_4.Text = "" 
 MsgBox "t2>-273. Xin hay nhap lai!" 
 Exit Sub 
 End If 
 If Val(Bienso_5.Text) < -273 Then 
 Bienso_5.Text = "" 
 MsgBox "t>-273. Xin hay nhap lai!" 
 Exit Sub 
 End If 
 tam = ((Val(Bienso_2.Text) * (10 ^ -3) * 4180 + 50) * 
(Val(Bienso_5.Text) - Val(Bienso_4.Text)) - Val(Bienso_1.Text) * (10 ^ -3) 
* 126 * (Val(Bienso_3.Text) - Val(Bienso_5.Text))) / ((Val(Bienso_3.Text) 
- Val(Bienso_5.Text)) * (337 - 126)) 
 Biensokq_1.Text = tam 
 thuong = Val(Bienso_1.Text) * (10 ^ -3) – tam 
 Biensokq_2.Text = thuong 
 End If 
 * “0605.jpg” là bài tập thêm sách tham khảo [10] 
 BT thêm.6.05. Một ấm đun nước bằng nhôm có khối lượng 400g, chứa 3 kg nước, 
được đun trên bếp. Khi nhận được nhiệt lượng là 646,9 kJ thì ấm đạt đến nhiệt độ 600C. Hỏi 
nhiệt độ ban đầu của ấm là bao nhiêu? Biết nhiệt dung riêng của nhôm và nước lần lượt là 
920 / .Alc J kg K= và 4190 / .nc J kg K= . 
Giải 
 Khối lượng ấm nhôm: 1 400 0, 4m g kg= = 
 Trang 44 
 Khối lượng nước: 2 3m kg= 
 Nhiệt lượng ấm nhôm đựng nước nhận được: 
 1 2Al nQ m c t m c t= ∆ + ∆ 
 ( ) ( )1 2 1 2 2 1Al nQ m c t t m c t t= − + − 
 Nhiệt độ ban đầu của ấm nhôm: 
 ( )( )1 2 21 1 2
Al n
Al n
m c m c t Q
t
m c m c
+ −= + 
 ( )( ) 01
0, 4.920 3.4190 60 646900
10
0,4.920 3.4190
t C
+ −= =+ 
 | Đoạn lệnh lập trình được trình bày như sau: 
 If tentaptin = "0605.jpg" Then 
 If Val(Bienso_2.Text) = 0 Or Val(Bienso_2.Text) < 0 Then 
 Bienso_2.Text = "" 
 MsgBox "m1 chi nhan gia tri duong. Xin hay nhap lai!" 
 Exit Sub 
 End If 
 If Val(Bienso_3.Text) = 0 Or Val(Bienso_3.Text) < 0 Then 
 Bienso_3.Text = "" 
 MsgBox "m2 chi nhan gia tri duong. Xin hay nhap lai!" 
 Exit Sub 
 End If 
 If Val(Bienso_4.Text) = 0 Or Val(Bienso_4.Text) < 0 Then 
 Bienso_4.Text = "" 
 MsgBox "Q chi nhan gia tri duong. Xin hay nhap lai!" 
 Exit Sub 
 End If 
 If Val(Bienso_5.Text) < -273 Then 
 Bienso_5.Text = "" 
 MsgBox "t2>-273. Xin hay nhap lai!" 
 Exit Sub 
 End If 
 tam = ((920 * Val(Bienso_2.Text) * (10 ^ -3) + Val(Bienso_3.Text) 
* 4190) * Val(Bienso_5.Text) - (Val(Bienso_4.Text) * (10 ^ 3))) / (920 * 
Val(Bienso_2.Text) * (10 ^ -3) + Val(Bienso_3.Text) * 4190) 
 Biensokq_1.Text = tam 
 End If 
 Trang 45 
* “0701.jpg” là bài 35.7 sách BT 
 35.7. Một thanh thép dài 5,0m có tiết diện 1,5cm2 được giữ chặt một đầu. Cho biết 
suất đàn hồi của thép là 112.10E = Pa. Lực kéo F tác dụng lên đầu kia của thanh thép bằng 
bao nhiêu để thanh dài thêm 2,5mm? 
Giải 
 Lực kéo F tác dụng lên đầu kia của thanh thép là: 
0
SF E l
l
= ∆ 
4
11 3 41,5.102.10 . 2,5.10 1,5.10
5
F
−
−= = N 
 Chọn B. 
 | Đoạn lệnh lập trình được trình bày như sau: 
 If tentaptin = "0701.jpg" Then 
 If Val(Bienso_1.Text) = 0 Or Val(Bienso_1.Text) < 0 Then 
 Bienso_1.Text = "" 
 MsgBox "Lo chi nhan gia tri duong. Xin hay nhap lai!" 
 Exit Sub 
 End If 
 If Val(Bienso_3.Text) = 0 Or Val(Bienso_3.Text) < 0 Then 
 Bienso_3.Text = "" 
 MsgBox "S chi nhan gia tri duong. Xin hay nhap lai!" 
 Exit Sub 
 End If 
 If Val(Bienso_5.Text) = 0 Or Val(Bienso_5.Text) < 0 Then 
 Bienso_5.Text = "" 
 MsgBox "chi nhan gia tri duong. Xin hay nhap lai!" 
 Exit Sub 
 End If 
 tam= 2 * 10 ^ 11 * Val(Bienso_3.Text) * (10 ^ -4) * 
Val(Bienso_5.Text) * 10 ^ -3 / Val(Bienso_1.Text) 
 Biensokq_1.Text = tam 
 End If 
 * “0709.jpg” là bài 37.10 sách BT 
 37.10 Một mẫu gỗ hình lập phương có khối lượng 20g được đặt nổi trên mặt nước. 
Mẫu gỗ có cạnh chiều dài 30mm và dính ướt hoàn toàn. Nước có khối lượng riêng là 
1000kg/m3 và hệ số căng bề mặt là 0,072N/m. Tính độ ngậm sâu trong nước của mẫu gỗ. 
Giải 
 Do mẫu gỗ bị dính ướt hoàn toàn nên: Điều kiện để mẫu gỗ nổi trên mặt nước tức là 
mẫu gỗ nằm cân bằng: 
 Trang 46 
 0AF P F+ + =
r r r
 hay AP F F+ = 
 Gọi a là độ dài mỗi cạnh của mẫu gỗ, x là độ ngập sâu trong nước của mẫu gỗ. Thay 
, 4P mg F aσ= = và 2AF a xgρ= (bằng trọng lượng khối nước bị phần mẫu gỗ chìm trong 
nước chiếm chỗ), ta được: 24mg a a xgσ ρ+ = 
 nên 2
4mg ax
a g
σ
ρ
+= 
 ( ) ( )
3 3
23
20.10 .9,8 0,072.4.30.10 2,2 0,1 2,3
1000. 30.10 .9,8
x cm cm
− −
−
+= ≈ + = 
 | Đoạn lệnh lập trình được trình bày như sau: 
 If tentaptin = "0709.jpg" Then 
 If Val(Bienso_1.Text) = 0 Or Val(Bienso_1.Text) < 0 Then 
 Bienso_1.Text = "" 
 MsgBox "m chi nhan gia tri duong. Xin hay nhap lai!" 
 Exit Sub 
 End If 
 If Val(Bienso_3.Text) = 0 Or Val(Bienso_3.Text) < 0 Then 
 Bienso_3.Text = "" 
 MsgBox "a chi nhan gia tri duong. Xin hay nhap lai!" 
 Exit Sub 
 End If 
 tam = ((Val(Bienso_1.Text) * 9.8 * 10 ^ -3) + (0.072 * 4 * 
Val(Bienso_3.Text) * 10 ^ -3)) / (1000 * 9.8 * (10 ^ -6) * 
(Val(Bienso_3.Text)) ^ 2) 
 Biensokq_1.Text = tam 
 End If 
 Trên đây là một số kỹ thuật lập trình đơn giản cho từng bài tập cụ thể trong 
Cmd_Tinh. Như vậy, khi gọi bài tập hiển thị ra trong lúc trình diễn, sau đó nhập số liệu và 
click vào nút “TÍNH” kết quả sẽ được hiển thị trong TextBox kết quả. Để có thể thay số 
vào các TextBox nhập liệu ta sử dụng “TIẾP TỤC”. Cmd_tieptuc có các thuộc tính sau 
đây: 
 Private Sub Cmd_tieptuc_Click() 
 Bienso_1.Text = " " 
 Bienso_2.Text = " " 
 Bienso_3.Text = " " 
 Bienso_4.Text = " " 
 Bienso_5.Text = " " 
 Bienso_6.Text = " " 
 Trang 47 
 Biensokq_1.Text = " " 
 Biensokq_2.Text = " " 
 End Sub 
 Nghĩa là khi ta Click vào Command “TIẾP TỤC” các ô TextBox nhập số sẽ là những 
ô trống để cho phép người dùng có thể điền các số khác để tính lại kết quả khác. 
 Trên đây là một số đoạn lập trình tiêu biểu và các thuộc tính trong các nút lệnh được 
tạo ra lúc ban đầu khi làm việc với môi trường Visual Basic. Tuy nhiên, trong quá trình làm 
việc có một số trường hợp cần phải chú ý, phải đặt thuộc tính giới hạn vào những ô nhập 
liệu, tăng khả năng chịu lỗi của các TextBox,... Phần này sẽ được trình bày kỹ hơn ở phần 
một số kỹ thuật được áp dụng sau . 
 II. MỘT SỐ KỸ THUẬT ĐƯỢC ÁP DỤNG 
 Chương trình được thiết kế để có thể chịu lỗi do người dùng vô ý thực hiện mà không 
bị treo hay rối loạn bằng cách sử dụng một số kỹ xảo lập trình, bao gồm: 
 1. Kiểm tra dữ liệu nhập trước khi tính 
 Trong thiết kế chương trình bất kỳ, để tăng khả năng chịu lỗi không cho phép người 
dùng nhập các dữ liệu không hợp lý vào ô nhập liệu. Đối với phần lập trình của đề tài này, 
tôi đã đưa ra một giới hạn khi nhập liệu vào các giá trị của biến số cần tính. Đoạn lệnh 
chương trình sau không cho nhập ký tự chỉ cho nhập số vào các ô Text Bienso_1, 
Bienso_2, Bienso_3, Bienso_4, Bienso_5, Bienso_6. 
 Private Sub Bienso_1_KeyPress (KeyAscii As Integer) 
 Dim Tmp As String 
 Tmp = Bienso_1.Text 
 Select Case Chr$(KeyAscii) 
 Case "0" To "9", Chr$(8) 
 Case "-" 
 If InStr(1, Tmp, "-") = 0 Then 
 If Bienso_1.SelStart > 0 Then 
 KeyAscii = 0 
 End If 
 Else 
 KeyAscii = 0 
 End If 
 Case "." 
 If InStr(1, Tmp, ".") > 0 Then 
 KeyAscii = 0 
 End If 
 Case Else 
 KeyAscii = 0 
 End Select 
 Beep 
 End Sub 
 Trang 48 
 Trước tiên, ta khai báo biến Tmp dạng chuỗi. (KeyAscii As Integer) trong thủ tục xử 
lý biến cố KeyPress quy định chỉ cho phép nhập các phím ký số (09) trong Text mà thôi. 
 + Khi một ô nhập liệu nhận một ký tự do người dùng cung cấp thì đoạn lệnh xem xét 
xem ký tự nhập vào có phải là ký tự số từ 0 – 9 không, có phải là dấu trừ “-” hay không, có 
phải là dấu chấm “.” hay không? Nếu đúng thì nhận và sai tức là không thỏa điều kiện trên 
thì loại. 
 + Nếu có hai dấu chấm “.”, hai dấu trừ “-” cũng bị loại ô Text không nhận. 
 “If InStr(1, Tmp, ".") > 0 Then 
 KeyAscii = 0” 
 + Mỗi lần nhấn phím nhập số liệu vào sẽ có một tiếng Beep. 
 * Trong trường hợp nhập thiếu các biến số thì tùy vào từng ô Text đó là biến gì, nó 
sẽ hiện lên một thông báo lỗi “Xin hay nhap lai!” bằng lệnh MsgBox. Đoạn lệnh của 
“0504.jpg”. 
 If Val(Bienso_1.Text) = 0 Or Val(Bienso_1.Text) < 0 Then 
 Bienso_1.Text = "" 
 MsgBox "p1 chi nhan gia tri duong. Xin hay nhap lai!" 
 Exit Sub 
 End If 
 * Bên cạnh mỗi một ô Text nó cũng có một ràng buộc về thông số, ý nghĩa vật lý: 
không thể chia cho giá trị “0”, thể hiện kết quả thập phân ở dạng lũy thừa “E”. 
 * Một điểm người dùng cần chú ý là dấu chấm làm dấu thập phân chứ không phải dấu 
phẩy. Ta chỉnh ở hệ thống của mỗi máy như sau: Vào Control Panel  Regional and 
Language Options  thẻ Format  Customize this format  thẻ Numbers  Decimal 
symbol  “dấu chấm”. Hệ thống sẽ hiện dấu chấm làm dấu phân cách thập phân. Nếu 
không, chương trình sẽ hoạt động rối loạn. 
 2. Chữ chạy trên nền màn hình 
 Trường hợp này khi thiết lập ta cần có một biểu tượng Timer và một Label. Sau đó, 
ta sẽ lập đoạn chương trình cho các dòng chữ trong Label chạy trên màn hình. 
 Private Sub Timer1_Timer() 
 Dim x As String 
 Dim y As String 
 x = Left(Label4.Caption, 1) 
 y = Right(Label4.Caption, Len(Label4.Caption) - 1) 
 Label4.Caption = y + x 
 End Sub 
 3. Cập nhật nội dung trong List của Combo Box cho phù hợp với từng 
chương 
 Ở chế độ thiết kế, chúng ta có thể thêm hoặc xóa bớt các mục trong danh sách chọn 
của List Box hoặc Combo Box bằng thuộc tính List. Nhưng khi chương trình đang chạy để 
thêm hoặc xóa bớt các mục của List Box hoặc Combo Box, ta phải dùng phương thức 
AddItem hoặc RemoveItem. Tuy nhiên, mỗi khi ta xóa một mục nào đó ra khỏi List 1, vị 
 Trang 49 
trí của các mục cũng như số phần tử còn lại trong danh sách sẽ bị thay đổi. Đồng thời, khi 
xóa các mục trong List 1 thì List 2 ngay sau List 1 sẽ có các thuộc tính giống như các thuộc 
tính của List 1, nhưng ở đây yêu cầu đòi hỏi là List 2 phải có danh sách khác hơn so với ở 
List 1, nên để làm được điều này ta phải làm như thế nào? Để giải quyết vấn đề nêu trên tôi 
đã sử dụng vòng lặp For duyệt ngược như sau: 
 Private Sub Chuong_Combo_Click() 
 If Chuong_Combo.ListIndex = 5 Then 
 Dim i As Integer 
 For i = Bai_Combo.ListCount - 1 To Bai_Combo.ListCount - 5 Step -1 
 Bai_Combo.RemoveItem (i) 
 Next i 
 End If 
 If Chuong_Combo.ListIndex = 6 Then 
 For i = 1 To 5 
 Bai_Combo.AddItem (10 + i) 
 Next i 
 End If 
 End Sub 
 Tôi nghiên cứu với 3 chương của phần Nhiệt học, ở chương 5 có 15 bài tập, chương 6 
có 10 bài tập nhưng chương 7 lại có 15 bài tập. Vì vậy, để cho List của các Combo khớp 
với số lượng bài tập được chọn, tôi đã sử dụng vòng lặp For duyệt ngược để xóa bớt các 
mục trong List danh sách Bai_Combo của chương 6. Khi đó chương 7 chỉ hiện lên 10 bài 
tập trong List, nên tôi phải thêm vào List danh sách Bai_Combo của chương 7 số bài tập 
tương ứng như đã chọn bằng việc sử dụng vòng lặp For như trên. Kết quả, khi chạy chương 
trình List của Bai_Combo hiện đúng với số lượng bài tập đưa ra. 
 4. Chèn một Command khác vào bài tập cụ thể 
 Trường hợp một bài toán có hai yêu cầu là câu a và b, tôi thiết lập bài toán sau khi 
tính toán được kết quả của câu a rồi dùng chuột Click vào Command “Câu b” thì kết quả 
câu b mới hiện lên. Điều đó yêu cầu cần thiết phải thiết lập một Command_phu mà thuộc 
tính Caption của Command này là “Câu b” và đoạn lệnh của Command này được viết như 
sau: 
 Private Sub Command_phu_Click() 
 Biensokq_2.Visible = True 
 donvibienkq_2.Visible = True 
 Image_bienkq_2.Visible = True 
 Command_phu.Visible = False 
 End Sub 
 5. Đặt thuộc tính ẩn, hiện cho một đối tượng nào đó: cần phải ghi tên đối 
tượng “ .Visible = True” là hiện các đối tượng, “ .Visible = Flase” là ẩn các đối tượng. 
 6. Chặn không cho phép người dùng nhập liệu vào các ô Text cố định 
 Khi muốn người sử dụng không thể nhập hay thay đổi dữ liệu có trong một TextBox, 
ta sẽ đặt thuộc tính Locked của TextBox là True. 
 Trang 50 
 7. Các phím nóng: Để có được các gạch dưới trong các Command “GIỚI 
THIỆU”, “KẾT THÚC” thì thuộc tính Caption ta thêm ký hiệu & trước ký hiệu cần gạch 
dưới. Thay vì ta phải Click chuột vào nút “GIỚI THIỆU” hay “KẾT THÚC” thì chỉ có 
thể nhấn phím “Alt+G” hay “Alt+K”, khi đó chương trình sẽ hoạt động như ta Click chuột. 
 ******************* 
 Trang 51 
PHẦN KẾT LUẬN CHUNG 
F	G 
 1. Kết luận 
 Hiện nay, công nghệ thông tin phát triển rất mạnh mẽ, nó đứng ở vị trí hàng đầu trong 
mạch máu thông tin và xử lý số liệu. Các phần mềm hỗ trợ lần lượt ra đời để đáp ứng cho 
nhu cầu sử dụng ngày càng cao của con người. Trong nhiều lĩnh vực đời sống, đặc biệt là 
trong giáo dục, việc ứng dụng công nghệ thông tin là rất cần thiết, không những trong 
những bài giảng mô phỏng còn trong cả việc soạn thảo giáo án, các bài tập Vì theo xu 
hướng của ngày nay giáo dục theo phương pháp mới là dạy cho các em các kỹ năng thực 
hành và việc kiểm tra đánh giá chủ yếu là trắc nghiệm khách quan. Vì vậy, đòi hỏi các em 
phải hiểu được các vấn đề một cách sâu sắc mới có thể làm được thành thạo và học có kết 
quả cao. Trước yêu cầu cấp bách như thế, nhiệm vụ của người giáo viên là rất quan trọng, 
từ đó cũng tạo cho các giáo viên áp lực soạn nhiều bài tập sao cho ngắn, nhanh và chính xác 
cao trên các mẫu bài tập đã có. Từ đó, giáo viên sẽ cung cấp cho học sinh nhiều bài tập để 
học sinh có thể vận dụng nhanh các thủ thuật làm toán và hiểu được vấn đề một cách sâu 
sắc hơn. Bây giờ, máy tính thực sự là một công cụ đắc lực để giúp giáo viên trong công việc 
của mình. Bên cạnh đó, kiến thức tin học cũng đóng một vai trò rất quan trọng. Từ đó, tôi đã 
nghiên cứu ngôn ngữ lập trình Visual Basic để tạo ra được những sản phẩm làm công cụ hỗ 
trợ cho giáo viên trong công việc giảng dạy của mình. 
 Visual Basic 6.0 là một trong những ngôn ngữ lập trình hiện nay đang được ứng dụng 
rất nhiều trong lĩnh vực giáo dục và nhất là trong lĩnh vực lập trình. Với sự hỗ trợ của ngôn 
ngữ này, tôi đã soạn thảo nhanh được một số bài tập ở sách bài tập, chỉ cần người dùng thay 
đổi bất kỳ một con số nào trong đề bài là chúng ta đã có một kết quả mới. Điều này đã giúp 
cho giáo viên trong công việc soạn giảng nhiều bài tập trắc nghiệm rất nhanh và chính xác. 
Một ưu điểm của việc lập trình trong môi trường Visual Basic 6.0 là chương trình có thể 
được biên dịch thành phần mềm hoàn chỉnh, đóng gói gọn gàng và chạy được trên hầu hết 
các máy tính sử dụng hệ điều hành Window với nhiều phiên bản khác nhau từ window98 
đến window xp và nhất là cả các máy có cấu hình thấp. Điều này đã được tính đến trước khi 
tiến hành nghiên cứu lập trình. Cần phải trình bày thêm là nếu kết hợp với phần mềm Install 
Creator, sản phẩm sẽ được chuyển thành một tập tin duy nhất tự động cài đặt vào máy mà 
không cần một can thiệp nào của người dùng, khiến cho phần mềm có đủ sức hấp dẫn như 
các phần mềm thương phẩm khác. 
 Tuy nhiên, công cụ nào cũng vậy nó chỉ có thể hỗ trợ cho con người làm việc chứ nó 
không thay thế hoàn toàn công việc của con người. Vì vậy, sản phẩm này ngoài những ưu 
điểm như trên thì cũng có mặt hạn chế như chỉ lập trình với một số bài tập định lượng cụ 
thể, không làm việc được với các bài tập định tính, khi nghiên cứu một phần của một môn 
học thì chỉ có thể làm việc một số lượng bài tập nhất định chưa làm được hết tất cả các bài 
tập ở các sách và các đề bài, cách giải là cố định không cắt dán hoặc sao chép được. 
 Việc tìm hiểu vấn đề này sẽ giúp ích cho bản thân tôi rất nhiều trong công việc giảng 
dạy sau này vì là một giáo viên Vật lý, việc soạn thảo nhiều bài tập có sự hỗ trợ của công 
nghệ thông tin cũng tạo cho giáo viên một hứng thú khi làm việc, thông qua đó sẽ tạo cho 
học sinh thái độ tích cực trong học tập nhiều hơn nữa. 
 Đối với các bạn sinh viên cùng khóa, có thể nghiên cứu làm tài liệu cho mình sau này 
khi các bạn ra dạy ở các trường phổ thông. Đối với các bạn ở các khóa sau cũng có thể làm 
 Trang 52 
tư liệu tham khảo học tập và vận dụng để thiết kế nhiều chương trình khác tương tự, để có 
được nhiều công cụ hỗ trợ cho công việc giảng dạy sau này. 
 Kết quả của việc nghiên cứu đề tài: Đây là một trong những phương tiện hỗ trợ đắc 
lực cho giáo viên trong việc soạn thảo nhanh và nhiều dạng bài tập Vật Lý, giúp cho học 
sinh dễ tiếp thu, dễ hệ thống hóa kiến thức Vật lý một cách chặt chẽ, sâu sắc và giúp các em 
nhớ bài lâu hơn. Bên cạnh đó, giúp cho người giáo viên đáp ứng được yêu cầu của thực tiễn 
giáo dục, đồng thời thấy được tầm quan trọng của việc ứng dụng công nghệ thông tin vào 
công tác giảng dạy được tốt và có hiệu quả hơn. 
 Do thời gian có hạn nên đề tài cũng có một giới hạn cho phép, chỉ nghiên cứu với 
phần Nhiệt học của chương trình lớp 10. Trong quá trình thực hiện, tôi và các bạn chung 
nhóm có trao đổi lẫn nhau để sử dụng thử nghiệm và phát hiện các yếu tố cần bổ sung để đề 
tài được hoàn chỉnh. Kết quả là chúng tôi đã thành công trong công việc lập trình, và tạo ra 
được sản phẩm phục vụ cho nhiều độc giả, đặc biệt là các giáo viên trung học phổ thông. 
Mặc dù đã rất cố gắng nhưng đề tài không tránh khỏi những thiếu sót nhất định, kính mong 
quý thầy, cô thông cảm. 
 Trong tương lai, tôi sẽ tiếp tục nghiên cứu vấn đề này, khi đó tôi sẽ thiết lập chuẩn bị 
với số lượng các bài tập nhiều hơn và có thể mở rộng ở nhiều môn khoa học tự nhiên khác, 
để công cụ ngày càng hoàn thiện và phục vụ tốt hơn trong công tác giảng dạy sau này. 
 2. Những kiến nghị rút ra từ kết quả nghiên cứu 
 Qua quá trình thực hiện đề tài này tôi có một số kiến nghị như sau: 
 - Đối với giáo viên, đây là một công cụ chỉ hỗ trợ cho việc soạn giảng, không phải 
thay thế hoàn toàn các hình thức dạy học theo kiểu cũ. Do vậy, phải hiểu và áp dụng đúng 
với các thiết bị công nghệ trong thời đại khoa học công nghệ thông tin đang phát triển như 
hiện nay. 
 - Phần mềm soạn nhanh các bài tập Vật Lý rất cần thiết cho các giáo viên phổ thông 
trong công tác giảng dạy. Vì đây là lần đầu tiên biên soạn nên cần có một tổ chức để phổ 
biến các sản phẩm này và cần được sự phản hồi từ phía người dùng, để sản phẩm ngày càng 
hoàn thiện hơn. 
 - Đối với các bạn sinh viên ở các khóa sau khi thực hiện đề tài, cần mở rộng số lượng 
bài tập trong cả chương trình để lắp đầy chương trình Vật lý phổ thông và đại học ở các 
phân môn như: Cơ, nhiệt, điện, quang. Ngoài ra, chúng ta cũng có thể mở rộng cho việc 
biên soạn phần mềm hỗ trợ cho các môn khoa học tự nhiên khác như: Toán, Hóa. Từ đó sẽ 
tạo được một bộ sản phẩm phục vụ công tác giảng dạy ngày càng hoàn thiện hơn. 
 - Trong những năm học về sau, trường có thể đưa kỹ năng lập trình với môi trường 
Visual Basic thành môn học chính thức cho sinh viên các khóa học sư phạm Vật Lý, Hóa 
học và Toán học. 
 **************** 
 Trang 53 
TÀI LIỆU THAM KHẢO 
F	G 
[1] Đặng Thế Khoa. 2003. Giáo Trình Lập Trình Ứng Dụng Visual Basic. NXB Đại Học 
Quốc Gia TP.Hồ Chí Minh. 
[2] Lê Minh Trí. 2001. Tự học khả năng lập trình Visual Basic 6. Nhà xuất bản Thống Kê. 
[3] Lương Duyên Bình, Nguyễn Xuân Chi, Tô Giang, Trần Chí Minh, Vũ Quang, Bùi Gia 
Thịnh. 2006. Sách giáo khoa Vật Lý 10 cơ bản. Nhà xuất bản Gíáo Dục. 
[4] Lương Duyên Bình, Nguyễn Xuân Chi, Tô Giang, Vũ Quang, Bùi Gia Thịnh. 2006. Bài 
Tập Vật Lí 10. Nhà xuất bản Gíáo Dục. 
[5] Nguyễn Đình Tê (chủ biên), Nguyễn Ngọc Minh, Hoàng Nguyễn, Hoàng Đức Hải. 
2001. Giáo trình tin học phổ thông Tự học lập trình cơ sở dữ liệu Visual Basic 6 trong 
21 ngày, Tập 1. Nhà xuất bản Gíáo Dục. 
[6] PGS. Nguyễn Đức Thâm (chủ biên), TS. Nguyễn Ngọc Hưng, TS. Phạm Xuân Huế. 
2002. Phương pháp dạy học Vật lý ở trường phổ thông. NXB Đại Học Sư Phạm. 
[7] PGS.TS.Lê Công Triêm. 2005. Bài giảng phân tích chương trình vật lý phổ thông. 
Trường Đại học Sư Phạm Huế. 
[8] Trần Thể. 2007. Bài giảng phương pháp dạy học Vật lý. Trường Đại học An Giang. 
[9] Võ Hiếu Nghĩa. 2000. Các chương trình mẫu Visual Basic 6.0. Nhà xuất bản Thống Kê. 
[10] Vũ Thị Phát Minh, Châu Văn Tạo, Nguyễn Hoàng Hưng, Hoàng Thị Thu. 2006. Kiến 
Thức Cơ Bản Vật Lí 10 (chương trình chuẩn và nâng cao). NXB Đại Học Quốc Gia 
TP. Hồ Chí Minh. 
**************** 
 Trang 54 
PHỤ LỤC 
Màn hình sau khi ta mở Form. 
Click vào nút  hoặc phím F5 
 Trang 55 
Sau khi nhấn nút “GIỚI THIỆU” 
Chọn chương 5 bài 2 
 Trang 56 
Nhập số liệu vào các ô Text theo đề bài và nhấn nút “TÍNH” 
Nhấn nút “TIẾP TỤC” 
 Trang 57 
Nhập số liệu khác vào các ô Text 
Nhấn nút “TÍNH” 
Sau khi làm việc xong nhấn nút “KẾT THÚC” là đóng chương trình lại. 
            Các file đính kèm theo tài liệu này:
XT1233.pdf