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 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.
Biết 0 0 m V ρ = và m V ρ = suy ra ρ0 0V =ρV (1) Mặt khác PV0 0 =PV (2) (vì nhiệt độ của khí bằng nhiệt độởđiều kiện chuẩn).
Từ (1) và(2) suy ra: 3 0 0 1, 43.150 214,5 / 1 p kg m p ρ ρ = = = và m=214,5.10−2=2,145 .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
ρ , p0 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.
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 ms 1 p S>F + p S Do đó: 2 Fms 1 p p S > + 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 p T T p F T T 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 độ
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.
+ 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ínhCaption 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 :
+ 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 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ênkhi 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 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 Listcủ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:
- 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ó