CAC PHEP TOAN CO BAN ' YÊU CẦU CỦA ĐẦU BÀI Để giới thiệu thêm cách dùng hàm, yêu cầu các bạn viết chương trình và thiết kế sao cho người sử dụng nhập vào 2 số nguyên a và b trong hai h
Trang 1+ Nhung trong thủ tục, nếu bạn gán cho tên của thủ tục là GiaithuaThutuc giá trị của n ! qua biến Giaithua, thì chương trình sẽ không hiểu
5) Viết lệnh cho điều kiểm CmdThoat
Private Sub CmdThoat_Click()
= TINH GIA THUA DUNG HAM HOAC THU TUC
| Tinh giai thừa bằng thủ tục |
Thoát khủi chương trình
Aston] |B Ss) WY ( #y Poee -Meose | NVMeresetWed-C |[TS TỊNH GIAITH lẲ 631PM
Hình 18b._ Form khi nhập vào số 0
273
Trang 2+ Nhìn vào hình trên, bạn thấy trong hộp TextBox có tên TxtKetqua
là 0!=1
+ Bây giờ bạn thử nhập vào TextBox có tên TxtNhap một số âm, giả sử bạn nhập vào - 5 Bạn thử Click vào 2 nút Command như trên Bạn cũng có hình như sau :
PER
ists Không tính được vì là số âm
mstart| | BSA DY By Power -m.| By Microw |[ty TINH GI #j20b-Pam | (Ấ7 837PM
Hình 18c Form khi nhập vào ~5
+ Nhìn vào hình trên, trong cả hai trường hợp bạn thấy trong hộp TextBox có tên TxtKetqua sẽ thông báo :
~5 ! = không tính được vì là số âm + Bây giờ bạn thử nhập vào số 10, bạn sẽ thấy hình xuất hiện như sau :
274
Trang 3Thoát khúi chương trình
net GAD | Aeron wy meoenwalleg rome Zc-Pen | KE ee
Hình 18d_ Form khi nhập vào số 10
+ Nhìn vào hình trên, bạn sẽ thấy thông báo kết quả ở hộp TextBox là :
10 ! = 3628800
Trang 4
CAC PHEP TOAN CO BAN
' YÊU CẦU CỦA ĐẦU BÀI
Để giới thiệu thêm cách dùng hàm, yêu cầu các bạn viết chương trình và thiết kế sao cho người sử dụng nhập vào 2 số nguyên a và b trong hai hộp TextBox, bạn có thể xem kết quả của :
như sau :
IỤC HIEN CAC PHEP TOAN - CÔNG THÚ, NHAN, CHIA, LUY THUA BES
Thực hiện các nhón toán cơ bản
a+n| a-n | axn| a/m | a^h|
Thoát khỏi chương trình |
wiser] |B IEA 99 (Aynseetak.|RVMcoetw.| Z7Z16:Pa4 JÍS YHUCML- (£ 10037
Hình 19a Form của chương trình
276
Trang 56 bjchia cho sé chia
pet eee
Mời hạn nhận số chia E+ ⁄⁄4:]
Không đúng theo yêu cầu của đầu hài
Basten) |B EAD | ty reeen-m [fs wo PHO 724-Pai |BVMeoeetV.| ‹ƒ- ssym
Hình 21e Form khi nhap vao - 125 va 34 + Ban thấy chương trình sẽ báo lỗi, bây giờ ngược lại chúng tôi nhập số bị chia là số dương, giả sử là 20, nhập số chia là 34, bạn sẽ
Pasion] | B Es A © || Ay Proectt-m ffs mo PH gr 240-Pan | wy Microsonw.| Í|(- «søpw
Hinh 21f Form khi nhập vào 20 và ~34
+ Nhìn vào hình trên, bạn thấy là đã viết Code đúng, bây giờ chắc chắn khi bạn nhập vào cả 2 số đều là số âm, bạn sẽ thấy chương trình
sẽ báo lỗi như trên
303
Trang 6YÊU CẦU CỦA ĐẦU BÀI
+ Bạn hãy thiết kế và viết Code cho chương trình để khi nhập một
số nguyên n, chương trình sẽ :
-_ Inra n số lẻ bình phương đầu tiên
-_ In ra n số chẩn bình phương đầu tiên
- In ra Tổng bình phương của n số lẻ đầu tiên
~ In ra Tổng bình phương của n số chẩn dầu tiên
+ In ra Tổng bình phương của n số chẩn như sau :
Tổng bình phương của 3 -ố chan la : 56
+ Bạn dùng 2 TextBox để hiện ra kết quả, TextBox có tên TxtKetqua1 sẽ hiện ra chuỗi tổng bình phương của n số lẻ hoặc chuỗi tổng bình phượr 3 của n sé chan dau tiên, TextBox có tên TxtKetqua2
304
Trang 7sẽ hiện ra kết quả tính được của Tổng bình phương n số lẻ hoặc tổng bình phương của n số chẳn đầu tiên
+ 4 Command button dùng để thể hiện kết quả của 4 câu hỏi tương ứng ở trên (các câu hỏi đều độc lập, không có liên quan gì đến nhau) Với yêu cầu như trên, chúng tôi thiết kế Form của chương trình như sau :
&,TONG BÌNH PHUONG CÁC SỐ LE, CÁC S0 CHAN DAU TIỀN CEG
Tổng hình nhương Số lẻ và số chấn đầu tiên
Thoát khỏi chương trình
stort] | B Es Dy Proctt -Morosa.| BY MisosotWerd-c.[t TÔNG BNHP (Ý 30174
Hinh 22a Form của chương trình
Nhìn vào Form trên, bạn thấy có các điều kiểm như sau :
* 3 TextBox; 1 ding dé nhap s6 can tinh, 2 dé thông báo kết quả
= 2 Label ding dé lam tiéu dé
* 5 Command Button, trong dé 1 Command Button dùng để Thoát khỏi chương trình, 4 Command button dùng để xem kết quả
* Form có tiéu dé “ TONG BINH PHUONG CAC SO LE, CAC SO CHAN DAU TIEN “
305
Trang 8BANG CAC THUOC TINH CUA CAC DIEU KIEM
TT | Péditugng | Các thuộc tính Giá trị
BackColor Mau xanh két
SO LE, CAC SO CHAN DAU TIEN
WindowState 2-Maximized
BackColor Mau héng phan Caption Tổng bình phương số lể và
số chẵn đâu tiên,
Font Name VNI — Swiss Condense Font Size 20
Font Style Bold
Caption Mời bạn nhập vào một số
nguyên dương Font Name VNI - Swiss - Condense Font Size 14
Font Style Bold
BackColor Mau vang nhat Font Name MS - Sans Serif Font Size 24
Font Style Bold
Trang 9BackColor Mau xanh xám Font Name MS ~ Aptima Font Size 16
Font Style Bold
Button Caption Inra: 142 + 342 +5424
Font Name MS — Swiss Condense Font Size 14
Font Style Normal
Button Caption Tính tổng : 1^2 + 3 ^2 +
322 cu
Font Name MS ~ Swiss Condense Font Size 14
Font Style Normal
Button Caption In ra: 242 + 4424+ 6424
Font Name MS — Swiss Condense
Trang 10
Button Caption Thoát khói chương trình
Font Name MS — Swiss Condense Font Size 26
Font Style Bold
Buéc 1
THIET KE FORM CUA CHUONG TRINH
+ Bạn lần lượt lấy các điều kiểm từ hộp công cụ để dua vao Form
của chương trình, sau đó xác lập các thuộc tính cho tất cả các điều
kiểm theo như bằng đã cho ở trên
+ Bạn hai ý thiết kế TextBox nhập đầu tiên, để khi chạy chương trình, dấu nháy sẽ nằm tại TextBox này
For i = 2 To Txtnhap * 2 Step 2
chech &i & "42+"
Next
TxtKetqual = Left (ch, Len (ch) - 3)
End Sub
308
Trang 11+ Trong thủ tục trên, trước tiên là khai báo biến ¡ có kiểu Số nguyên
để dùng trong vòng lặp For
+ Biến Ch kiểu chuối dùng để chứa chuỗi kết quả
+ Vĩ ín ra các số chắn bình phương nên ¡ sẽ chay từ 2 cho đến số nhập vào ở TextBox nhập nhân cho 2, điều này chúng tôi đã giải thích một lần trong bài tập ở trên Step 2, dùng để nhảy 2 bước để ¡ luôn là
2) Viết Code cho điều kiểm CmdSole
Private Sub Cmdsole_Click()
Trang 123) Viết Code cho điều kiểm CmdTBPSochan
Private Sub CmdTBPsoChan_Ciick()
+ Biến n kiểu Long dùng để chứa kết qua là một số
+ Vì in ra tổng bình phương của n số chắn đầu tiên, nên ¡ sẽ chạy
từ 2 cho đến số nhập vào ở TextBox nhập nhân cho 2 Step 2, dùng để nhảy 2 bước để ¡ luôn là số chẩn
> Chay:
+ Trong vòng For này, bạn phải đổi số nhập vào TextBox sang kiểu
số, bạn dùng ham Val 0 để đổi
+ Bạn suy nghĩ tại sao và tự tìm hiểu nhé
+ Tại sao trong các thủ tục ở rên ta không cần đổi mà chương trình vẫn thực hiện dược
+ In kết quả ra hộp TextBox có tên TxtKetqua2
310
Trang 134) Viét Code cho điều kiểm CmdTBPSole
Private Sub CmdTBPsole_Click()
5) Viết Code cho điều kiểm CmdThoat
Private Sub CmdThoat_Click()
+ Bay giờ bạn chạy thử chương trình và nhập n = 5 trong TextBox
có tên TxtNhap, Click vào nút Command Button có tiêu để “ In ra: 1
^22+3^2+5^2, “ bạn sẽ có hình như sau :
811
Trang 14Thoát khỏi chương trình
st) @ 6:02 19) byhsetsM.| 8VMemAv.| 2i + lÍaYoNem lỆ 350M
Hình 22b_ Form khi nhập số 5 và Click vào nút như trên
+ Nhìn vào hình trên, bạn thấy in ra chuỗi 5 số lẻ bình phương đầu tiên, đúng như yêu cầu của đầu bài
+ Bây giờ bạn thử Click vào nút có tiêu đề “ Tính tổng : 1 ^ 2
+3^2+5^2+ “ bạn sẽ có kết quả như sau :
+ TÔNG BINH PHUONG CAC S0 L£, CÁC S0 CHAN DAU TIEN
gRsua| Ø8 6: 0) 9) (yPaetcM |fVAeseew | gam-Pae [fo toNG a Ee «seem
Hình 22c Form khi click vào nút có tiêu để như vừa nói
312
Trang 15+ Bạn thấy trong TextBox có tên TxtKetqua2 sẽ thông báo câu
“Tổng bình phương của 5 số lẻ đầu tiên là : 165”
+ Chúng ta thử kiểm tra xem 165 có phải là kết quả đúng hay
không nhé
342 = 9 Sted =6,
742 = 49 9'4U na = 8]
+ Vậy kết quả thông báo là chính xác
+ Bây giờ bạn thử Click vào nút có tiêu đề “ In ra ; 2 ^ 2+4^2+
Thoát khỏi chương trình
ston] | B Es 4 8 || tyPoeel -M.J[B ToNG BỊ lE124:Pam | tVMoœo.| ÍỆ“ SssPM
Hình 22d
313
Trang 16+ Bạn thấy khi Click như vậy, nội dung mới sẽ được thay thế trong TextBox TxtKetqual, riêng TextBox có tên TxtKetqua2 thì không có gì thay đổi
+ Bây giờ nếu các bạn Click vào nút có tiêu để “ Tính tổng : 2^2+4^2+6^2+ “ các bạn sẽ thấy hình như sau :
Thoát khôi chương trì inh
stat] | @ GD || Power ffm TONG or paed-ra_ | wrMeownw.] KE 6orrw
1042 =100
Vậy là kết quả thông báo chính xác
314
Trang 17+ Bây giờ giả sử bạn nhập vào số 9 và Click lần lượt 2 nút thuộc về
số lẻ, bạn sẽ có hình như sau :
DE EEE -EEI Tổng hình phương Số lẻ và số chấn đầu tiên
Mũi bạn nhập vào một số nguyên dưng mm
1^2+3^2+52^2+7^2+9^2+ 11^2 + 1342 4.1542 +1742
sie) |B Os A O)|) ty Prove wilfes ro H 294-044 | Mesetw.| lẶ- eam
Hinh 22f Form khi nhap sé 9 va Click 2 nut về số lẻ
+ Chúng ta thử kiểm tra xem 969 có đúng với tổng bình phương của 9 số lẻ đầu tiên hay không
Tathấy: 1^2 = 1
342 = 9 5A2 = 25
Trang 18+ Bây giờ các bạn thử Click vào 2 nút để xem số chẵn, bạn sẽ có hình như sau :
'a TONG BINH PHUONG CAC SO LE, CAC SO CHAN DAU TIEN
Vig bình phở ud $ế lủ và số chấn đầu tiên
Bren
AQ + 4A2 + GAZ + BA2 + 1042 + 1242 + 1442 + 1642 + 1842
Psion) |S Ey D1) tyemeralles rono ai đi25:043- [BWMesáu/| [( giơ
Hinh 22g Form khi Click vào 2 nút số chấn
+ Bạn thấy Thông tin báo kết quả tổng bình phương của 9 số chẵn đầu tiên là 1140 Chúng ta kiểm tra xem kết quả thông báo như vậy là
có đúng hay không
4^2=_ 16 6^2=_ 36 8^2=_ 64 10^2 = 100 12^2= 144
Trang 19
TINH a x b THEO THUẬT TOÁN KHÁC
YÊU CẦU CỦA ĐẦU BÀI
+ Bạn thiết kế và viết chương trình để nhân 2 số nguyên dương a
và b (a là số thứ nhất với điều kiện a > 0 „b là số thứ hai, b > = 0) vai thuật toán như sau :
+ Chia đôi số thứ nhất chỉ lấy phan nguyên và gấp đôi số thứ 2 Lập lại quá trình trên cho đến khi số thứ nhất bằng 1
+ Tổng các số thứ 2 tương ứng với các trị lẻ của số thứ nhất sẻ là tích a nhân b cần tính
+ Bạn nhập số a vào TextBox thứ nhất,
+ Số b vào TextBox thứ hai
+ Click vào nút xem kết quả, nó sẽ in ra như ví dụ dưới đây:
Trang 20Với yêu cầu như trên, chúng tôi thiết kế Form của chương trình như sau :
[etd
tena chadl tink od hte igud:\ Exit |
wmstat| | BE; DO || ty Preicct -merote|| By Moosstwee:C.|ÏS axb heotho |JKẾ”34PÁ”
Hình 23a Form của chương trình Nhìn vào Form trên, bạn thấy có các điều kiểm như sau :
= 3 TextBox; 1 dung để nhập số a, 1 để nhập số b, 1 để thông báo kết quả
Trang 21BANG CAC THUOC TINH CUA CAC DIEU KIỂM
TT | Đối tượng | Các thuộc tính Giá trị
BackColor Mau cam nhat Caption ax b theo thuat toan chia doi
va nhan doi
BackColor Mau xanh xdm
theo thuật toán đã cho
Font Name VNI ~ Swiss Condense
Font Style Bold
BackCalor Mau cam dém Caption Bạn nhập số thứ nhất Font Name VNI — Brush
Font Size 24 Font Style Italic
BackColor Mau cam dam Caption Bạn nhập số thứ hai Font Name VNI — Brush
Font Size 24 Font Style Italic
BackColor Mau xanh nhạt Font Name MS Sans Serif Font Size 18
Font Style Bold
319
Trang 22
BackColor Màu xanh nhạt Font Name MS Sans Serif Font Size 18
Font Style Bold
BackColor Màu xanh xắm Font Name VNI - Aptima font Size 14
Font Style Normat
Button Caption In ra chudi tinh va két qua
Font Name VNI — Brush Font Size 24
Font Style Italic
Font Name MS — Swiss Condense Font Size 28
Font Style Normal
8ước 1
THIẾT KẾ FORM CỦA CHƯƠNG TRÌNH
+ Bạn lẫn lượt lấy các điều kiểm từ hộp công cụ để đưa vào Form của chương trình, sau đó xác lập các thuộc tính cho tất cả cá“ điều kiểm theo như bảng đã cho ở trên
+ Bạn lưu ý thiết kế TextBox nhập vào số thứ nhất, sau đó là đến TextBox nhập vào số thứ hai, để khi chạy chương trình, dấu nháy sẽ nằm tại textBox có tên TxtSoa, sau đó sẽ nhảy đến TextBox có tên Txt5ob
320
Trang 23Bước 2 VIẾT CODE CHO CHƯƠNG TRÌNH
Option Explicit
1) Viết Code cho điều kiểm CmdKetqua
Private Sub CmdKetqua_Click0
Dim Soa(20) As Integer
Dim Sob(20) As Integer
Dim Tong As Long
Trang 24Soa (0) = TxtSoa
Sob (0) = TxtSob
If Soa {0) Mod 2 = 1 Then Tong = Tong + Sob (0) End If
Ch1 = Ch† & Soa (j) & ", "
lí TxtSoa Mod 2 = 1 Then Tong = Tong + Sob ()
Endlf
Next
Xh = Chr(13} & Chr(10)
322
Trang 25TxtKetqua = Ch2 & Xh & Ch] & Xh & "Tích của " & Soa(0) & " nhân " & Sob(0) & " Tính theo giải thuật của đầu
bai cho" & "=" & Tong
+ Trong thủ tục trên, biến ¡ có kiểu nguyên dùng để đếm số lần xuất hiện của các số khi chia số thứ nhất cho 2 đến khi có kết quả bằng 1
> Ví dụ: 20 10 5 2 1
+ Trong trường hợp này ¡ sẽ bằng 5
+ Chúng tôi dùng biến này để làm điều kiện trong các vòng lặp For
để duyệt các số ở trên
+ Biến ¡ này sẽ tính được qua vòng lặp Do While trong thủ tục Tại sao đầu tiên biến ¡ = 2 Với ví dụ trên, bạn thấy khi số thứ nhất chia cho 2 lần đầu tiên (có kết quả là 10), ¡ sẽ tăng lên 1 đơn vị, tiếp tục chia lần thứ 2 (có kết quả là 5), ¡ sẽ tăng lên 1 đơn vị, tiếp tục chia lần
3 (có kết quả là 2), ¡ sẽ tăng thêm 1 đơn vị, quay lại vòng lặp lúc này điều kiện không thoả vì 2 \ 2 = 1 (mà điều kiện là phải khác 1) Dọ
Trang 26đó khi bạn nhập bất kỳ số nguyên dương nào thì số nguyên đó và số 1
sẽ không được tính, mất 2 số nên ta phải cho biến ¡ = 2 là như vậy + Tiếp đến ta gán số thứ nhất cho phần tử đầu tiên của mảng 1 là Soa (0), số thứ hai cho phần tử đầu tiên của mảng 2 là Sob (0) Sở dĩ ta gán như vậy để thuận tiện cho các vòng lặp For
+ Vì số thứ nhất bạn nhập vào có thé là số chắn hoặc số lẻ, nếu là
số lẻ thi số thứ hai sẽ được cộng vào phép tính, nêủ chúng tôi dùng biến Tong để lấy được số dau tiên tham gia vào phép tính kết quả
> Vídụ: 20, 40, 80
5, 2, 1
Trong trường hợp này số thứ nhất là số 5, là số lẻ, nên số thứ 2 là
20 sẽ được lấy để tham gia tính toán
»> Chú ý:
Số thứ nhất chúng tôi để ở hàng dưới
+ Để in ra chuỗi các số nhân đôi của số thứ 2, chúng tôi dùng biến
Ch2 có kiểu String để chứa
+ Đầu tiên chúng tôi gán biến Ch2= Sob (0) & “„ “, Sau đó dùng vòng lặp For với k chạy từ 1 đến ¡ — 1 để in ra được số thứ 2 nhập vào
và tất cả các số sau khi đã nhân đôi, số cuối cùng sẽ là số tương ứng với số thứ nhất sau khi chia 2 có kết quả bằng 1, và các số này sẽ được cách nhau bởi dấu phẩy “,*
+ Tại sao không chạy đến biến ¡ mà là biến ¡ ~ 1 Vì mảng chạy từ 0 + Kết quả cuối cùng của vòng lặp For này sẽ là một chuỗi chứa dãy
số như chúng tôi đề cập ở trên