Giải toán với Scratch
Chuyên đề này gồm 2 phần: ôn lại cách nhập dữ liệu (hỏi & đợi), các phép toán, dùng biến, điều kiện và vòng lặp; sau đó thực hành 30 bài toán cơ bản thường gặp - tính tổng/hiệu/tích/thương, kiểm tra chẵn lẻ, đếm, tìm số lớn nhất, tính chu vi/diện tích… Mỗi bài đều có đề bài và lời giải chi tiết.
Bạn có thể tải file .pdf ở đây: Giải toán với Scratch
Phần 1 - Lý thuyết: Nhập dữ liệu, biến, điều kiện, vòng lặp
Phần tiêu đề “Phần 1 - Lý thuyết: Nhập dữ liệu, biến, điều kiện, vòng lặp”Nhập dữ liệu: hỏi và đợi
Phần tiêu đề “Nhập dữ liệu: hỏi và đợi”Khối hỏi ... và đợi (nhóm Cảm biến) hiển thị ô nhập liệu ở dưới sân
khấu, tạm dừng chương trình cho tới khi người dùng gõ và bấm Enter. Giá trị
vừa nhập được lưu vào khối trả lời - thường gán ngay vào một biến để
dùng lại nhiều lần.
hỏi [Nhập một số:] và đợi đặt [n v] thành (trả lời)
Biến: lưu và cập nhật giá trị
Phần tiêu đề “Biến: lưu và cập nhật giá trị”đặt [tổng v] thành (0) thay đổi [tổng v] một lượng (1)
đặt gán giá trị tuyệt đối (ghi đè giá trị cũ), còn thay đổi
cộng thêm một lượng vào giá trị hiện tại (dùng số âm để trừ). Xem
thêm ở bài Biến số.
Phép toán: số học và so sánh
Phần tiêu đề “Phép toán: số học và so sánh”((5) + (3)) ((5) - (3)) ((5) * (3)) ((5) / (3)) ((5) chia lấy dư (3))
Đây là 5 khối phép toán số học dùng nhiều nhất trong các bài dưới đây -
chia lấy dư (modulo) đặc biệt hữu ích để kiểm tra chẵn/lẻ hoặc tách
phần dư khi đổi đơn vị.
<(5) > (3)> <(5) < (3)> <(5) = (5)>
Ba khối so sánh này trả về đúng/sai (boolean) - luôn đặt vào chỗ
trống hình lục giác của khối nếu ... thì hoặc lặp lại cho đến khi.
<<(5) > (3)> và <(5) < (10)>> <<(5) > (10)> hoặc <(5) < (3)>> <không phải <(5) > (10)>>
Ba khối logic này ghép nhiều điều kiện lại với nhau: và đúng khi
cả hai vế đều đúng, hoặc đúng khi ít nhất một vế đúng, không phải đảo ngược đúng/sai của một điều kiện. Rất hữu ích khi một bài toán
cần kiểm tra nhiều điều kiện cùng lúc (ví dụ Bài 13 - kiểm tra năm
nhuận). Xem đầy đủ các phép toán khác (chuỗi ký tự, số ngẫu nhiên…) ở
bài Toán tử.
Điều kiện: nếu … thì (… nếu không)
Phần tiêu đề “Điều kiện: nếu … thì (… nếu không)”nếu <(n) > (0)> thì nói [Số dương] nếu không thì nói [Số không dương]
Có thể lồng nhiều tầng nếu ... thì ... nếu không để kiểm tra nhiều
trường hợp liên tiếp, tương tự if/elif/else. Xem thêm ở bài
Cấu trúc rẽ nhánh.
Vòng lặp: lặp lại (N) lần / lặp lại cho đến khi
Phần tiêu đề “Vòng lặp: lặp lại (N) lần / lặp lại cho đến khi”lặp lại (5) nói [Xin chào] end đặt [i v] thành (1) lặp lại cho đến khi <(i) > (10)> thay đổi [i v] một lượng (1)
lặp lại (N) chạy đúng N lần rồi dừng. lặp lại cho đến khi <điều kiện> chạy tới khi điều kiện đúng - số lần lặp không cố định trước, hay
dùng khi cần đếm/duyệt tới một giá trị nhập từ bàn phím. Xem thêm ở bài
Vòng lặp.
Lưu ý: trả lời luôn là kiểu chữ, nhưng dùng được trong phép toán
Phần tiêu đề “Lưu ý: trả lời luôn là kiểu chữ, nhưng dùng được trong phép toán”Khối trả lời lưu giá trị người dùng gõ dưới dạng chuỗi ký tự,
nhưng Scratch tự động chuyển đổi sang số khi đặt vào các khối toán
học hoặc so sánh - miễn người dùng gõ đúng số, không cần ép kiểu thủ
công. Đây là lý do mọi bài dưới đây có thể gán thẳng (trả lời) vào
biến rồi tính toán ngay.
Nếu người dùng gõ sai định dạng (bỏ trống, gõ chữ, gõ ký tự đặc biệt…) thì Scratch không báo lỗi như nhiều ngôn ngữ khác - thay vào đó:
- Trong các khối số học (
+,-,*,chia lấy dư), một chuỗi không phải số được hiểu ngầm là 0. Ví dụ(trả lời) + (5)khi người dùng gõ “mười” sẽ cho ra 5, không phải một cảnh báo lỗi - kết quả sai nhưng chương trình vẫn chạy bình thường. - Riêng khối chia (
/): chia cho 0 (hoặc chia cho một chuỗi không phải số) không làm dừng chương trình mà trả vềInfinity(vô cực). - Trong các khối so sánh (
>,<,=): nếu cả 2 vế đều đổi được sang số thì so sánh theo giá trị số như bình thường; nếu một vế không phải số, Scratch chuyển sang so sánh theo thứ tự chữ cái (như so sánh chuỗi), dễ cho ra kết quả không như mong đợi.
Vì vậy các bài dưới đây đều giả định người dùng nhập đúng định dạng số
theo yêu cầu đề bài. Muốn chương trình chắc chắn hơn, có thể thêm bước
kiểm tra dữ liệu nhập vào bằng khối nếu ... thì trước khi tính - xem
gợi ý ở mục Mở rộng thêm cuối trang.
Phần 2 - Thực hành: 30 bài toán cơ bản
Phần tiêu đề “Phần 2 - Thực hành: 30 bài toán cơ bản”Nhóm 1: Tính toán số học cơ bản
Phần tiêu đề “Nhóm 1: Tính toán số học cơ bản”Bài 1: Chào hỏi theo tên
Phần tiêu đề “Bài 1: Chào hỏi theo tên”Hỏi tên người chơi, sau đó nói lời chào có kèm tên vừa nhập.
Xem lời giải
khi bấm vào @greenFlag hỏi [Bạn tên là gì?] và đợi đặt [tên v] thành (trả lời) nói (kết hợp [Xin chào, ] (tên))
Bài 2: Tính tổng hai số
Phần tiêu đề “Bài 2: Tính tổng hai số”Nhập 2 số bất kỳ, tính và in ra tổng của chúng.
Xem lời giải
khi bấm vào @greenFlag hỏi [Nhập số thứ nhất:] và đợi đặt [số 1 v] thành (trả lời) hỏi [Nhập số thứ hai:] và đợi đặt [số 2 v] thành (trả lời) đặt [tổng v] thành ((số 1) + (số 2)) nói (kết hợp [Tổng là: ] (tổng))
Bài 3: Tính hiệu hai số
Phần tiêu đề “Bài 3: Tính hiệu hai số”Nhập 2 số bất kỳ, tính và in ra hiệu (số thứ nhất trừ số thứ hai).
Xem lời giải
khi bấm vào @greenFlag hỏi [Nhập số thứ nhất:] và đợi đặt [số 1 v] thành (trả lời) hỏi [Nhập số thứ hai:] và đợi đặt [số 2 v] thành (trả lời) đặt [hiệu v] thành ((số 1) - (số 2)) nói (kết hợp [Hiệu là: ] (hiệu))
Bài 4: Tính tích hai số
Phần tiêu đề “Bài 4: Tính tích hai số”Nhập 2 số bất kỳ, tính và in ra tích của chúng.
Xem lời giải
khi bấm vào @greenFlag hỏi [Nhập số thứ nhất:] và đợi đặt [số 1 v] thành (trả lời) hỏi [Nhập số thứ hai:] và đợi đặt [số 2 v] thành (trả lời) đặt [tích v] thành ((số 1) * (số 2)) nói (kết hợp [Tích là: ] (tích))
Bài 5: Tính thương và số dư
Phần tiêu đề “Bài 5: Tính thương và số dư”Nhập 2 số nguyên, tính và in ra thương (phép chia thực) và số dư (phép chia lấy dư) của chúng.
Xem lời giải
khi bấm vào @greenFlag hỏi [Nhập số bị chia:] và đợi đặt [số 1 v] thành (trả lời) hỏi [Nhập số chia:] và đợi đặt [số 2 v] thành (trả lời) đặt [thương v] thành ((số 1) / (số 2)) đặt [số dư v] thành ((số 1) chia lấy dư (số 2)) nói (kết hợp [Thương: ] (thương)) trong (1.5) giây nói (kết hợp [Số dư: ] (số dư)) trong (1.5) giây
/ cho phép chia có phần thập phân, còn chia lấy dư chỉ lấy phần dư
nguyên - hai khối này bổ sung cho nhau khi cần cả thương lẫn số dư.
Bài 6: Tính trung bình cộng của ba số
Phần tiêu đề “Bài 6: Tính trung bình cộng của ba số”Nhập 3 số bất kỳ, tính trung bình cộng của chúng.
Xem lời giải
khi bấm vào @greenFlag hỏi [Nhập số thứ nhất:] và đợi đặt [số 1 v] thành (trả lời) hỏi [Nhập số thứ hai:] và đợi đặt [số 2 v] thành (trả lời) hỏi [Nhập số thứ ba:] và đợi đặt [số 3 v] thành (trả lời) đặt [trung bình v] thành ((((số 1) + (số 2)) + (số 3)) / (3)) nói (kết hợp [Trung bình cộng: ] (trung bình))
Bài 7: Đổi đơn vị đo (phút sang giờ và phút)
Phần tiêu đề “Bài 7: Đổi đơn vị đo (phút sang giờ và phút)”Nhập tổng số phút, đổi ra bao nhiêu giờ và bao nhiêu phút dư (ví dụ 75 phút = 1 giờ 15 phút).
Xem lời giải
khi bấm vào @greenFlag hỏi [Nhập tổng số phút:] và đợi đặt [tổng phút v] thành (trả lời) đặt [phút dư v] thành ((tổng phút) chia lấy dư (60)) đặt [giờ v] thành (((tổng phút) - (phút dư)) / (60)) nói (kết hợp [Số giờ: ] (giờ)) trong (1.5) giây nói (kết hợp [Số phút dư: ] (phút dư)) trong (1.5) giây
Tính phút dư trước rồi lấy tổng phút trừ đi phần dư đó mới chia cho
60 - đảm bảo phép chia luôn ra đúng số nguyên (không bị lẻ thập phân)
mà không cần khối làm tròn.
Bài 8: Tính tuổi
Phần tiêu đề “Bài 8: Tính tuổi”Nhập năm hiện tại và năm sinh, tính tuổi.
Xem lời giải
khi bấm vào @greenFlag hỏi [Nhập năm hiện tại:] và đợi đặt [năm hiện tại v] thành (trả lời) hỏi [Nhập năm sinh:] và đợi đặt [năm sinh v] thành (trả lời) đặt [tuổi v] thành ((năm hiện tại) - (năm sinh)) nói (kết hợp [Tuổi của bạn là: ] (tuổi))
Nhóm 2: Điều kiện - so sánh và rẽ nhánh
Phần tiêu đề “Nhóm 2: Điều kiện - so sánh và rẽ nhánh”Bài 9: Kiểm tra số chẵn/lẻ
Phần tiêu đề “Bài 9: Kiểm tra số chẵn/lẻ”Nhập một số nguyên, kiểm tra và thông báo đó là số chẵn hay số lẻ.
Xem lời giải
khi bấm vào @greenFlag hỏi [Nhập một số nguyên:] và đợi đặt [n v] thành (trả lời) nếu <((n) chia lấy dư (2)) = (0)> thì nói [Đây là số chẵn] nếu không thì nói [Đây là số lẻ]
(n) chia lấy dư (2) = 0 đúng khi và chỉ khi n chia hết cho 2 - đây là
cách kiểm tra chẵn/lẻ dùng được cho mọi số nguyên.
Bài 10: Kiểm tra số dương/âm/bằng 0
Phần tiêu đề “Bài 10: Kiểm tra số dương/âm/bằng 0”Nhập một số bất kỳ, kiểm tra và thông báo đó là số dương, số âm hay bằng 0.
Xem lời giải
khi bấm vào @greenFlag hỏi [Nhập một số:] và đợi đặt [n v] thành (trả lời) nếu <(n) > (0)> thì nói [Số dương] nếu không thì nếu <(n) < (0)> thì nói [Số âm] nếu không thì nói [Số 0]
Bài 11: Số lớn nhất trong hai số
Phần tiêu đề “Bài 11: Số lớn nhất trong hai số”Nhập 2 số, tìm và in ra số lớn hơn.
Xem lời giải
khi bấm vào @greenFlag hỏi [Nhập số thứ nhất:] và đợi đặt [số 1 v] thành (trả lời) hỏi [Nhập số thứ hai:] và đợi đặt [số 2 v] thành (trả lời) nếu <(số 1) > (số 2)> thì nói (kết hợp [Số lớn nhất là: ] (số 1)) nếu không thì nói (kết hợp [Số lớn nhất là: ] (số 2))
Bài 12: Số lớn nhất trong ba số
Phần tiêu đề “Bài 12: Số lớn nhất trong ba số”Nhập 3 số, tìm và in ra số lớn nhất.
Xem lời giải
Dùng một biến max lưu tạm số lớn nhất đã thấy: khởi tạo bằng số đầu
tiên, rồi lần lượt so sánh với từng số còn lại, thấy số nào lớn hơn thì
cập nhật lại max.
khi bấm vào @greenFlag hỏi [Nhập số thứ nhất:] và đợi đặt [số 1 v] thành (trả lời) hỏi [Nhập số thứ hai:] và đợi đặt [số 2 v] thành (trả lời) hỏi [Nhập số thứ ba:] và đợi đặt [số 3 v] thành (trả lời) đặt [max v] thành (số 1) nếu <(số 2) > (max)> thì đặt [max v] thành (số 2) end nếu <(số 3) > (max)> thì đặt [max v] thành (số 3) end nói (kết hợp [Số lớn nhất là: ] (max))
Bài 13: Kiểm tra năm nhuận
Phần tiêu đề “Bài 13: Kiểm tra năm nhuận”Nhập một năm, kiểm tra đó có phải năm nhuận không. Quy tắc: năm chia hết cho 4 và không chia hết cho 100 là năm nhuận, trừ khi năm đó cũng chia hết cho 400 (khi đó vẫn là năm nhuận).
Xem lời giải
khi bấm vào @greenFlag hỏi [Nhập năm:] và đợi đặt [năm v] thành (trả lời) nếu <<<((năm) chia lấy dư (4)) = (0)> và <không phải <((năm) chia lấy dư (100)) = (0)>>> hoặc <((năm) chia lấy dư (400)) = (0)>> thì nói [Năm nhuận] nếu không thì nói [Năm không nhuận]
Bài 14: Xếp loại học lực theo điểm trung bình
Phần tiêu đề “Bài 14: Xếp loại học lực theo điểm trung bình”Nhập điểm trung bình (0-10), xếp loại: trên 8 là Giỏi, trên 6.5 là Khá, trên 5 là Trung bình, còn lại là Yếu.
Xem lời giải
khi bấm vào @greenFlag hỏi [Nhập điểm trung bình:] và đợi đặt [điểm v] thành (trả lời) nếu <(điểm) > (8)> thì nói [Xếp loại: Giỏi] nếu không thì nếu <(điểm) > (6.5)> thì nói [Xếp loại: Khá] nếu không thì nếu <(điểm) > (5)> thì nói [Xếp loại: Trung bình] nếu không thì nói [Xếp loại: Yếu]
Các mốc điểm ở đây lấy đơn giản là “lớn hơn” để dễ hình dung - đề thi
thật có thể yêu cầu mốc chính xác hơn (ví dụ ≥ 8), khi đó đổi > thành
không phải <... < (8)> hoặc dùng thêm khối so sánh phù hợp.
Bài 15: Tính tiền mua hàng
Phần tiêu đề “Bài 15: Tính tiền mua hàng”Nhập đơn giá và số lượng, tính tổng tiền phải trả - nếu mua từ 5 sản phẩm trở lên thì được giảm giá 10% trên tổng tiền.
Xem lời giải
khi bấm vào @greenFlag hỏi [Nhập đơn giá:] và đợi đặt [đơn giá v] thành (trả lời) hỏi [Nhập số lượng:] và đợi đặt [số lượng v] thành (trả lời) đặt [tổng tiền v] thành ((đơn giá) * (số lượng)) nếu <(số lượng) > (4)> thì đặt [tổng tiền v] thành ((tổng tiền) - (((tổng tiền) * (10)) / (100))) end nói (kết hợp [Số tiền phải trả: ] (tổng tiền))
(số lượng) > (4) tức là “từ 5 trở lên” - giống cách viết mốc điểm ở
Bài 14. Giảm giá được tính bằng 10% của tổng tiền ban đầu, rồi trừ
ngược lại vào tổng tiền.
Nhóm 3: Vòng lặp - đếm và tính tổng
Phần tiêu đề “Nhóm 3: Vòng lặp - đếm và tính tổng”Bài 16: Đếm từ 1 đến N
Phần tiêu đề “Bài 16: Đếm từ 1 đến N”Nhập một số N, đếm và in lần lượt từ 1 đến N.
Xem lời giải
khi bấm vào @greenFlag hỏi [Đếm đến số:] và đợi đặt [n v] thành (trả lời) đặt [i v] thành (1) lặp lại cho đến khi <(i) > (n)> nói (i) trong (0.3) giây thay đổi [i v] một lượng (1)
Bài 17: Đếm ngược từ N về 1
Phần tiêu đề “Bài 17: Đếm ngược từ N về 1”Nhập một số N, đếm ngược và in lần lượt từ N về 1.
Xem lời giải
khi bấm vào @greenFlag hỏi [Đếm ngược từ số:] và đợi đặt [n v] thành (trả lời) đặt [i v] thành (n) lặp lại cho đến khi <(i) < (1)> nói (i) trong (0.3) giây thay đổi [i v] một lượng (-1)
Bài 18: Tính tổng các số từ 1 đến N
Phần tiêu đề “Bài 18: Tính tổng các số từ 1 đến N”Nhập một số N, tính tổng 1 + 2 + 3 + … + N.
Xem lời giải
khi bấm vào @greenFlag hỏi [Nhập n:] và đợi đặt [n v] thành (trả lời) đặt [tổng v] thành (0) đặt [i v] thành (1) lặp lại cho đến khi <(i) > (n)> thay đổi [tổng v] một lượng (i) thay đổi [i v] một lượng (1) end nói (kết hợp [Tổng từ 1 đến n: ] (tổng))
Bài 19: Tính tổng các số chẵn từ 1 đến N
Phần tiêu đề “Bài 19: Tính tổng các số chẵn từ 1 đến N”Nhập một số N, tính tổng các số chẵn trong đoạn từ 1 đến N.
Xem lời giải
khi bấm vào @greenFlag hỏi [Nhập n:] và đợi đặt [n v] thành (trả lời) đặt [tổng v] thành (0) đặt [i v] thành (1) lặp lại cho đến khi <(i) > (n)> nếu <((i) chia lấy dư (2)) = (0)> thì thay đổi [tổng v] một lượng (i) end thay đổi [i v] một lượng (1) end nói (kết hợp [Tổng các số chẵn: ] (tổng))
Chỉ cộng i vào tổng khi i là số chẵn - tái sử dụng đúng cách kiểm
tra chẵn/lẻ ở Bài 9, đặt vào bên trong vòng lặp.
Bài 20: Đếm số lượng số chẵn trong đoạn 1..N
Phần tiêu đề “Bài 20: Đếm số lượng số chẵn trong đoạn 1..N”Nhập một số N, đếm xem có bao nhiêu số chẵn trong đoạn từ 1 đến N.
Xem lời giải
khi bấm vào @greenFlag hỏi [Nhập n:] và đợi đặt [n v] thành (trả lời) đặt [đếm v] thành (0) đặt [i v] thành (1) lặp lại cho đến khi <(i) > (n)> nếu <((i) chia lấy dư (2)) = (0)> thì thay đổi [đếm v] một lượng (1) end thay đổi [i v] một lượng (1) end nói (kết hợp [Số lượng số chẵn: ] (đếm))
Giống Bài 19 nhưng đếm số lần (thay đổi ... một lượng (1)) thay vì
cộng dồn giá trị - hai biến thể này (đếm và tính tổng) sẽ gặp lại
rất nhiều trong các bài duyệt danh sách sau này.
Bài 21: Tính giai thừa N!
Phần tiêu đề “Bài 21: Tính giai thừa N!”Nhập một số N, tính N! = 1 × 2 × 3 × … × N.
Xem lời giải
khi bấm vào @greenFlag hỏi [Nhập n để tính n!:] và đợi đặt [n v] thành (trả lời) đặt [giai thừa v] thành (1) đặt [i v] thành (1) lặp lại cho đến khi <(i) > (n)> đặt [giai thừa v] thành ((giai thừa) * (i)) thay đổi [i v] một lượng (1) end nói (kết hợp [n! = ] (giai thừa))
giai thừa khởi tạo bằng 1 (không phải 0, vì đây là tích dồn chứ
không phải tổng dồn) rồi nhân dần với từng số từ 1 đến N.
Bài 22: Kiểm tra số nguyên tố
Phần tiêu đề “Bài 22: Kiểm tra số nguyên tố”Nhập một số nguyên N (lớn hơn 1), kiểm tra N có phải số nguyên tố không.
Xem lời giải
Số nguyên tố là số chỉ chia hết cho 1 và chính nó - cách kiểm tra đơn giản nhất: thử chia N cho lần lượt từng số từ 2 đến N - 1, hễ có một số chia hết thì N không phải số nguyên tố.
khi bấm vào @greenFlag hỏi [Nhập một số nguyên (lớn hơn 1):] và đợi đặt [n v] thành (trả lời) đặt [là số nguyên tố v] thành (1) đặt [i v] thành (2) lặp lại cho đến khi <(i) = (n)> nếu <((n) chia lấy dư (i)) = (0)> thì đặt [là số nguyên tố v] thành (0) end thay đổi [i v] một lượng (1) end nếu <(là số nguyên tố) = (1)> thì nói [Đây là số nguyên tố] nếu không thì nói [Đây không phải số nguyên tố]
Biến là số nguyên tố đóng vai trò một cờ đánh dấu (flag): khởi tạo
là 1 (coi như đúng), chỉ chuyển thành 0 khi tìm được một ước số - và sẽ
giữ nguyên 0 dù các vòng lặp sau còn tìm thấy thêm ước khác.
Bài 23: Tính tổng các chữ số của một số
Phần tiêu đề “Bài 23: Tính tổng các chữ số của một số”Nhập một số nguyên dương, tính tổng các chữ số của nó (ví dụ 123 → 1 + 2
- 3 = 6).
Xem lời giải
Coi số vừa nhập như một chuỗi ký tự, duyệt qua từng ký tự bằng
ký tự thứ (i) của chuỗi, rồi cộng dồn - Scratch tự hiểu mỗi ký tự số
đó là một con số khi cộng vào biến.
khi bấm vào @greenFlag hỏi [Nhập một số nguyên dương:] và đợi đặt [số v] thành (trả lời) đặt [tổng chữ số v] thành (0) đặt [i v] thành (1) lặp lại cho đến khi <(i) > (độ dài của (số))> thay đổi [tổng chữ số v] một lượng (ký tự thứ (i) của chuỗi (số)) thay đổi [i v] một lượng (1) end nói (kết hợp [Tổng các chữ số: ] (tổng chữ số))
Bài 24: In bảng cửu chương
Phần tiêu đề “Bài 24: In bảng cửu chương”Nhập một số N, in ra bảng nhân của N từ 1 đến 10 (N × 1, N × 2, …, N × 10).
Xem lời giải
khi bấm vào @greenFlag hỏi [Nhập một số để in bảng nhân:] và đợi đặt [n v] thành (trả lời) đặt [i v] thành (1) lặp lại cho đến khi <(i) > (10)> đặt [kết quả v] thành ((n) * (i)) nói (kết hợp (kết hợp (kết hợp (kết hợp (n) [ x ]) (i)) [ = ]) (kết quả)) trong (0.5) giây thay đổi [i v] một lượng (1)
Ghép chuỗi “n x i = kết quả” cần 4 lần kết hợp lồng nhau vì mỗi
khối kết hợp chỉ nối được 2 phần - nối dần từng mảnh nhỏ (n, ” x ”,
i, ” = ”, kết quả) lại với nhau từ trái sang phải.
Bài 25: Đoán số bí mật
Phần tiêu đề “Bài 25: Đoán số bí mật”Máy tự chọn ngẫu nhiên một số bí mật từ 1 đến 100. Người chơi nhập số đoán liên tục cho tới khi đoán đúng - mỗi lần đoán sai, máy gợi ý số bí mật lớn hơn hay nhỏ hơn số vừa đoán.
Xem lời giải
khi bấm vào @greenFlag đặt [số bí mật v] thành (lấy ngẫu nhiên từ (1) đến (100)) đặt [đoán v] thành (0) lặp lại cho đến khi <(đoán) = (số bí mật)> hỏi [Đoán một số từ 1 đến 100:] và đợi đặt [đoán v] thành (trả lời) nếu <(đoán) < (số bí mật)> thì nói [Số bí mật lớn hơn số bạn vừa đoán!] nếu không thì nếu <(đoán) > (số bí mật)> thì nói [Số bí mật nhỏ hơn số bạn vừa đoán!] end end end nói [Chúc mừng, bạn đã đoán đúng!]
lặp lại cho đến khi <(đoán) = (số bí mật)> tự lặp lại việc hỏi cho
tới khi trúng - kết hợp cả ngẫu nhiên, vòng lặp và điều kiện
đã học ở Phần 1 vào một bài duy nhất.
Nhóm 4: Chu vi và diện tích hình học cơ bản
Phần tiêu đề “Nhóm 4: Chu vi và diện tích hình học cơ bản”Bài 26: Chu vi và diện tích hình vuông
Phần tiêu đề “Bài 26: Chu vi và diện tích hình vuông”Nhập độ dài cạnh, tính chu vi và diện tích hình vuông.
Xem lời giải
khi bấm vào @greenFlag hỏi [Nhập độ dài cạnh hình vuông:] và đợi đặt [cạnh v] thành (trả lời) đặt [chu vi v] thành ((cạnh) * (4)) đặt [diện tích v] thành ((cạnh) * (cạnh)) nói (kết hợp [Chu vi: ] (chu vi)) trong (1.5) giây nói (kết hợp [Diện tích: ] (diện tích)) trong (1.5) giây
Bài 27: Chu vi và diện tích hình chữ nhật
Phần tiêu đề “Bài 27: Chu vi và diện tích hình chữ nhật”Nhập chiều dài và chiều rộng, tính chu vi và diện tích hình chữ nhật.
Xem lời giải
khi bấm vào @greenFlag hỏi [Nhập chiều dài:] và đợi đặt [dài v] thành (trả lời) hỏi [Nhập chiều rộng:] và đợi đặt [rộng v] thành (trả lời) đặt [chu vi v] thành (((dài) + (rộng)) * (2)) đặt [diện tích v] thành ((dài) * (rộng)) nói (kết hợp [Chu vi: ] (chu vi)) trong (1.5) giây nói (kết hợp [Diện tích: ] (diện tích)) trong (1.5) giây
Bài 28: Chu vi và diện tích hình tròn
Phần tiêu đề “Bài 28: Chu vi và diện tích hình tròn”Nhập bán kính, tính chu vi và diện tích hình tròn (lấy π ≈ 3.14).
Xem lời giải
khi bấm vào @greenFlag hỏi [Nhập bán kính:] và đợi đặt [bán kính v] thành (trả lời) đặt [chu vi v] thành (((2) * (3.14)) * (bán kính)) đặt [diện tích v] thành (((3.14) * (bán kính)) * (bán kính)) nói (kết hợp [Chu vi: ] (chu vi)) trong (1.5) giây nói (kết hợp [Diện tích: ] (diện tích)) trong (1.5) giây
Bài 29: Diện tích tam giác
Phần tiêu đề “Bài 29: Diện tích tam giác”Nhập độ dài đáy và chiều cao tương ứng, tính diện tích tam giác.
Xem lời giải
khi bấm vào @greenFlag hỏi [Nhập độ dài đáy:] và đợi đặt [đáy v] thành (trả lời) hỏi [Nhập chiều cao:] và đợi đặt [chiều cao v] thành (trả lời) đặt [diện tích v] thành (((đáy) * (chiều cao)) / (2)) nói (kết hợp [Diện tích tam giác: ] (diện tích))
Muốn tính chu vi tam giác cần biết đủ cả 3 cạnh (không chỉ đáy và chiều cao) - xem đây là một bài mở rộng thêm bên dưới.
Bài 30: Diện tích hình thang
Phần tiêu đề “Bài 30: Diện tích hình thang”Nhập đáy lớn, đáy nhỏ và chiều cao, tính diện tích hình thang.
Xem lời giải
khi bấm vào @greenFlag hỏi [Nhập đáy lớn:] và đợi đặt [đáy lớn v] thành (trả lời) hỏi [Nhập đáy nhỏ:] và đợi đặt [đáy nhỏ v] thành (trả lời) hỏi [Nhập chiều cao:] và đợi đặt [chiều cao v] thành (trả lời) đặt [diện tích v] thành ((((đáy lớn) + (đáy nhỏ)) * (chiều cao)) / (2)) nói (kết hợp [Diện tích hình thang: ] (diện tích))
Công thức diện tích hình thang - (đáy lớn + đáy nhỏ) × chiều cao ÷ 2 - tổng quát hơn công thức hình chữ nhật ở Bài 27 (khi đáy lớn = đáy nhỏ, hình thang trở thành hình chữ nhật).
Mở rộng thêm
Phần tiêu đề “Mở rộng thêm”- Thêm bước kiểm tra dữ liệu nhập vào (ví dụ số nhập phải lớn hơn 0
mới tính chu vi/diện tích), dùng
nếu ... thì ... nếu khôngbọc quanh toàn bộ phần tính toán. - Gói mỗi bài toán thành một khối tự tạo nhận tham số (ví dụ
tính diện tích hình tròn (bán kính)) để gọi lại nhiều lần không cần chép code. - Dùng danh sách để lưu nhiều kết quả liên tiếp (ví dụ tính tổng nhiều bộ số mà không cần chạy lại chương trình) - xem thêm ở bài Danh sách.
- Viết thêm bài tính chu vi tam giác khi biết đủ 3 cạnh, hoặc tính diện tích tam giác theo công thức Heron (khi chỉ biết 3 cạnh, không biết chiều cao).